Commit graph

24649 commits

Author SHA1 Message Date
Vlad Zahorodnii
35efeddb48 wayland: Fix sending org_kde_plasma_virtual_desktop.removed
If a virtual desktop is removed, the client will receive two removed
events.
2023-04-22 15:45:25 +00:00
Vlad Zahorodnii
ac74de22c7 autotests: Fix testPlasmaVirtualDesktop
The test fails because it incorrectly handles the server-side and the
client-side virtual desktops being removed within one event loop cycle.

In order to fix the test, this change makes the removal of server-side
virtual desktop object take effect immediately.
2023-04-22 15:45:25 +00:00
Vlad Zahorodnii
959bb661af autotests: Drop testBufferSizeChange
testXdgShellWindow already tests intricate subsurface size changes. The
surface pixmaps are handled differently now too, so the test is not
useful as it used to be 4 or 5 years ago.
2023-04-22 15:03:19 +00:00
Vlad Zahorodnii
c54a324e99 autotests: Make PointerInputTest::testUnfocusedModifiers() less flaky
While 50ms is enough on dev machines, CI runners can be more loaded and
some events can arrive after more time.
2023-04-22 15:01:20 +00:00
Vlad Zahorodnii
e0da725533 autotests: Fix Test::waitForWindowDestroyed
Before Deleted merge, it used to be equivalent to waiting until the
window is closed.

This fixes tests waiting until the window closing animation completes
and the Window object is destroyed.
2023-04-22 13:55:29 +00:00
Vlad Zahorodnii
9852748a84 autotests: Use software rendering in testPointerInput
testPointerInput requires OpenGL compositing because it wants to test
cursor push back in the window view effect and the window view effect is
available only if OpenGL is supported.

On the other hand, ScreenEdgesTest::testPushBack() already tests similar
scenario, so let's drop relevant test in testPointerInput to allow
running it when using software rendering.
2023-04-22 13:10:11 +00:00
Vlad Zahorodnii
c693450976 backends/virtual: Port to gbm
The virtual backend uses the surfaceless platform. On the other hand, we
move in a direction where the graphics buffer type is explicit, which
creates issues for the virtual backend.

This change ports the virtual backend to gbm so we could manually
allocate dmabuf buffers in order to unify buffer handling in kwin.

Its main drawback is that you won't be able to use the virtual backend
on setups without render nodes. On the other hand, given that the
compositor is meaningless without clients being able to share buffers
with it, it's reasonable to require some way to create and export prime
buffers.
2023-04-22 15:09:59 +03:00
Vlad Zahorodnii
15f6c910be autotests: Fix crash
If a test case is skipped, there will be no input devices.
2023-04-22 09:15:24 +00:00
Vlad Zahorodnii
7a1a1161cc ci: Bump to Qt 6.5 2023-04-22 08:11:15 +00:00
l10n daemon script
cf3ab7a0ab GIT_SILENT Sync po/docbooks with svn 2023-04-22 02:53:00 +00:00
Vlad Zahorodnii
0e676ceb93 autotests: Reduce execution time of testWaylandSeat
Currently the test spends a lot of time idling. This change speeds up
the test by removing QTest::qWait() calls.

The sync() helper was introduced to sync both client and server sides.
It lets us simplify some code and get rid of QTest::qWait()s.

With this change, the execution time will drop from 20s to about 300ms.
2023-04-21 19:33:23 +00:00
Markus Ebner
d86da339d1 plugins/screencast: Provide absolute timestamps
Pipewire's buffer meta structure apparently wants the presentation timestamp
to be absolute (where absolute means number of nanoseconds since computer was started).
So subtracting the timestamp of the buffer breaks the timestamps later on in the pipeline.
2023-04-21 21:43:51 +03:00
Xaver Hugl
9e3999dc5f backends/drm: remove support for transforming the scene with hardware rotation
This feature is no longer needed, as the scene can efficiently do its own
transformations now. Support for using hardware rotation to make direct scanout
work specifically can be added again later
2023-04-21 19:46:29 +02:00
Xaver Hugl
8ca38fb328 backends/drm: fix buffer orientation check for direct scanout
Without hardware rotation, the buffer transform with always be "normal",
so all "normal" client buffers would be accepted for direct scanout, which
is not correct.

CCBUG: 467138
2023-04-21 15:35:11 +00:00
Alexander Lohnau
3ff7a527e3 kcms: Port to org.kde.config QML module from KConfig
The implementation in KDeclarative will be removed
2023-04-21 16:30:30 +02:00
Vlad Zahorodnii
ee31581006 autotests: Remove WAYLAND_ONLY tests
WAYLAND_ONLY will create two tests: one with Xwayland, the other without
Xwayland. This is somewhat wasteful and it results in higher CI times.

On the other hand, Xwayland is started on demand. If a test doesn't need
Xwayland, it won't start.

So let's remove WAYLAND_ONLY in order to lighten kwin on CI resources.
If wayland only tests are needed, we can consider passing the operation
mode to the WAYLANDTEST_MAIN helper, but there aren't such tests afaik.
2023-04-21 14:25:23 +03:00
Vlad Zahorodnii
67b898b803 Move DmaBufAttributes struct to GraphicsBuffer header
The main motivation is to avoid scattering graphics buffer things around
kwin.

DmaBufParams struct has been moved to the OutputBackend, but with the
introduction of buffer allocators, we need to port screencasting code to
the new abstractions some time in the future.
2023-04-21 06:38:58 +00:00
l10n daemon script
22b10c4055 GIT_SILENT Sync po/docbooks with svn 2023-04-21 02:37:10 +00:00
l10n daemon script
6f16d9b273 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-04-21 02:32:52 +00:00
l10n daemon script
60b3f492d9 GIT_SILENT Sync po/docbooks with svn 2023-04-20 02:47:31 +00:00
Xaver Hugl
9915cfc6df wayland: send modifiers to clients under the mouse 2023-04-19 14:19:52 +02:00
Xaver Hugl
ca9eb3d87d wayland/autotests/client: don't assume pointer enter and leave only increment serial by one 2023-04-19 14:19:30 +02:00
Vlad Zahorodnii
232bcc5d82 wayland: Drop support for linux dmabuf buffer flags
A client can specify the following flags when creating a linux dmabuf
client buffer:

- y_invert
- interlaced
- bottom_first

Only the y_invert flag is supported by kwin. The interlaced and the
bottom_first flags are ignored. On the other hand, most clients don't
specify the dmabuf flags. For example, neither EGL nor Vulkan WSIs
use the y_invert flag.

The y_invert flag is undesired because it also blocks optimizations such
as direct scanout because DRM assumes that the origin is in the top left
corner.

Therefore, this change drops the support for linux dmabuf flags. From
the protocol perspective, this is fine. It can be viewed as buffer
import failing with the specified flags.
2023-04-19 12:29:33 +03:00
Vlad Zahorodnii
99af2aa726 core: Move DmaBufAttributes getter to GraphicsBuffer
LinuxDmaBufV1ClientBuffer contains properties (formats, and flags) that
are not available in the base GraphicsBuffer type and there's no reason
to move it there.

In order to get rid of those properties (and eventually hide the
LinuxDmaBufV1ClientBuffer type from the public api), this change adds a
DmaBufAttributes getter in the GraphicsBuffer.
2023-04-19 07:29:38 +00:00
Vlad Zahorodnii
27b27696e8 {effects,scripts,plugins}: Use kwin translation domain
It makes it easier to handle translations when the plugins are stored in
the same directory.
2023-04-19 07:10:14 +00:00
Vlad Zahorodnii
64dca07d48 Remove Messages.sh in libkwineffects
It's unused.
2023-04-19 07:10:14 +00:00
Vlad Zahorodnii
e82e9b9f30 Move genericscriptedconfig to kcms directory
The kcms tree suits genericscriptedconfig better as the scripting
directory primarily contains the scripting api.
2023-04-19 07:10:14 +00:00
l10n daemon script
da13fe9c08 GIT_SILENT Sync po/docbooks with svn 2023-04-19 02:42:34 +00:00
Vlad Zahorodnii
07f6713a18 scene: Add pixel grid snapping debug pass
The debug shader is targeted to help with debugging blurriness when
using fractional scaling.

The shader works as follows:

- if the vertex coordinate has fractional part, the item will be
  highlighted with blue color
- if the texture coordinate (in device pixels) has fractional part,
  the item will be highlighted with red color

The shader can be toggled by setting the KWIN_SCENE_VISUALIZE=fractional
environment variable.
2023-04-18 08:16:11 +00:00
Hongfei Shang
6f5aa9e4f3 x11: only managed window need readTransient
X11Window::readTransient should not call setTransient for override-redirect windows.

Signed-off-by: Hongfei Shang <shanghongfei@kylinos.cn>
2023-04-18 06:43:26 +00:00
l10n daemon script
cfe656e506 GIT_SILENT Sync po/docbooks with svn 2023-04-18 02:34:50 +00:00
Bharadwaj Raju
8e7aab901b Don't create Plasma activation feedback if StartupNotify is false
Prevents a spinning circle in the task manager for such tasks.

cc @nicolasfella
2023-04-17 14:56:09 +00:00
l10n daemon script
28c2dd9afe GIT_SILENT Sync po/docbooks with svn 2023-04-17 03:48:30 +00:00
Vlad Zahorodnii
ce1e957181 backends/x11: Use EGL_KHR_platform_gbm
We provide own window system integration bits, so use the
EGL_KHR_platform_gbm extension to get the EGLDisplay for the consistency
sake.
2023-04-16 19:55:08 +00:00
Vlad Zahorodnii
285aa072e9 backends/wayland: Use EGL_KHR_platform_gbm
We provide own window system integration bits, so use the
EGL_KHR_platform_gbm extension to get the EGLDisplay for the consistency
sake.
2023-04-16 19:55:08 +00:00
Vlad Zahorodnii
0dea46548b backends/drm: Drop support for EGL_MESA_platform_gbm
Most platforms nowadays should support EGL_KHR_platform_gbm.
2023-04-16 19:55:08 +00:00
Xaver Hugl
56b2d8d8aa platformsupport/scenes/opengl: pass the correct arguments into eglDestroyImageKHR 2023-04-16 21:17:00 +02:00
Xaver Hugl
86635abe2b platformsupport/scenes/opengl: actually use externalOnly array
It was accidentally dropped in a refactor
2023-04-16 20:16:31 +02:00
l10n daemon script
f327f8e514 GIT_SILENT Sync po/docbooks with svn 2023-04-16 02:36:19 +00:00
Vlad Zahorodnii
e9614f030c Move vsync monitor helpers to utils/
There was no utils directory when they had been introduced.
2023-04-15 17:51:28 +00:00
Vlad Zahorodnii
dca1268187 backends/x11: Port to the new gbm buffer allocator 2023-04-15 14:44:02 +00:00
Xaver Hugl
f8bf89e267 wayland/clientbuffer: use std::unique_ptr properly
Taking the address of a reference that's a dereference of a newly created
object is the most possibly confusing way to initialize a std::unique_ptr.
Instead, just pass a std::unique_ptr around to take ownership of
2023-04-15 16:03:04 +02:00
Vlad Zahorodnii
9f7517a55c backends/wayland: Minor code cleanup 2023-04-15 14:00:32 +03:00
Vlad Zahorodnii
103d8d8abe {core,backends/wayland}: Refactor gbm buffer allocator 2023-04-15 10:21:42 +00:00
Vlad Zahorodnii
3ac4f8a7dc core: Introduce base GraphicsBuffer
Currently, there exists the separation between the buffers provided by
the clients and the buffers created by the compositor.

In hindsight, this separation is not great because it leads to
specialized code paths in the output backend. For example, we have a
separate code path for direct scanout and presenting composited frame.
But you could view the latter case as "direct scanout of a compositor
buffer".

The main idea behind the buffer type is to provide a base buffer type
for client buffers and composited frame buffers (not drm fbs) that we
could pass around, import as textures, etc.
2023-04-15 10:21:42 +00:00
l10n daemon script
c77b5909de GIT_SILENT Sync po/docbooks with svn 2023-04-15 02:40:15 +00:00
l10n daemon script
c987f5da82 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-04-15 02:34:38 +00:00
Nicolas Fella
8c9c45b8f1 Add option to do nothing when activating window on another desktop
Some users prefer this over the existing options. It e.g. allows to open
a bunch of links and only then switch to the browser on a different desktop

BUG: 464283
2023-04-14 19:06:21 +00:00
Nicolas Fella
653681ac40 Allow activating windows on other desktops regardless of focus stealing protection
Currently, on X11, when activating a window that is not on the current desktop we allow this
only if focus stealing protection is set to none.

If any focus stealing protection is set then activation is denied. That behavior is
unintiutive to the user. When I e.g. click on a notification from a chat app I expect
something to happen, regardless of focus stealing protection.

Remove the special handling of windows on different desktops and only apply the usual
focus stealing prevention checks (based on timestamps etc). This also matches the behavior
on Wayland.
2023-04-14 19:06:21 +00:00
Vlad Zahorodnii
c8c021a780 Remove some unused functions
Format querying logic has been moved to EglDisplay.
2023-04-14 14:28:45 +00:00