Commit graph

26721 commits

Author SHA1 Message Date
l10n daemon script
38694bbe1a GIT_SILENT Sync po/docbooks with svn 2024-04-23 01:34:47 +00:00
Xaver Hugl
c14c61f745 backends/drm: use dumb buffers for the cursor on virtual machines
Apparently not all VM drivers handle dmabufs on the cursor plane correctly

BUG: 485827
2024-04-22 12:33:42 +00:00
Vlad Zahorodnii
1f32171ac9 ci: Switch to suse_tumbleweed_qt67 2024-04-22 15:26:22 +03:00
l10n daemon script
1da8b61864 GIT_SILENT Sync po/docbooks with svn 2024-04-22 01:34:05 +00:00
Xaver Hugl
fba948b39f scene/workspacescene: don't check direct scanout candidates for a pixmap
We don't need a pixmap for direct scanout, and the drm backend destroys the pixmap
when direct scanout is successful... so this check created a loop of direct scanout
working and not working, and worse, the client reallocating its buffers each time.

BUG: 485639
BUG: 485730
BUG: 485712
CCBUG: 477016
2024-04-19 23:06:56 +02:00
Xaver Hugl
48197a4f5b backends: don't duplicate file descriptors as often
Instead, move them when possible
2024-04-19 19:32:43 +00:00
l10n daemon script
7bd6b92110 GIT_SILENT Sync po/docbooks with svn 2024-04-19 01:29:00 +00:00
Xaver Hugl
eed7943939 wayland/surface: fix the change signal for release points not being emitted 2024-04-17 13:59:43 +02:00
l10n daemon script
09b32a1e68 GIT_SILENT Sync po/docbooks with svn 2024-04-17 01:29:07 +00:00
Erik Kurzinger
9ca7b9b1cf core/syncobjtimeline: import release fence at correct timeline point
SyncTimeline::moveInto imports the provided fence to the syncobj by
calling drmSyncobjImportSyncFile. However, that function assumes the
syncobj a binary syncobj, meaning the fence will be imported at timeline
point 0, not at the intended timeline point.

Since there is no timeline equivalent of drmSyncobjImportSyncFile, to
achieve the correct behavior we create a temporary binary syncobj,
import the fence into that, and then use drmSyncobjTransfer to transfer
the fence to the desired timeline point on the destination syncobj.

Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com>
2024-04-16 14:45:48 -07:00
Xaver Hugl
26afbfb6fa wayland_server: guard against DRM_IOCTL_SYNCOBJ_EVENTFD being broken
...either because it's not implemented, or because it's buggy.
2024-04-16 13:51:42 +02:00
Fabian Vogt
01d224fa22 Fall back to breeze_cursors if neither configured nor default can be loaded
Try harder to get some cursor theme loaded, otherwise the cursor is
invisible, which also makes it hard to fix the configuration.

Also add some warnings instead of failing silently.
2024-04-16 11:50:48 +02:00
l10n daemon script
98747246cd GIT_SILENT Sync po/docbooks with svn 2024-04-16 01:31:06 +00:00
David Edmundson
3ed535dd67 Remove superfluous wake in dpmsinputeventfilter destruction
Workspace already makes sure to only dynamically delete the
dpmsinputeventfilter if all screens are currently on. This line to wake
all screens is therefore redundant.

It's problematic as it can cause a crash on final teardown when
workspace is destroyed.

BUG: 484861
2024-04-15 22:03:51 +00:00
David Redondo
bca99d0b4c Add missing license header
Amends 499d006e3a
GIT_SILENT
2024-04-15 16:13:00 +02:00
David Redondo
499d006e3a Add a libeis input backend plugin
This adds a libeis backend via plugin which supports clients sending
emulated input events. No public listening socket is exposed,
clients are expected to go through the RemoteDesktop portal.
In order to restrict the device types available to clients
according to what was approved via the portal a separate eis
context per portal request is created. The communication with
the portal happens through a simple dbus interface where cookies
are  handed out for each eis context so the portal can inform KWin
when the portal session is closed/should end.
2024-04-15 13:05:15 +00:00
David Redondo
2120e18729 Make InputRedirection::addInputBackend public
This allows plugins to register additional input backends.
2024-04-15 13:05:15 +00:00
David Redondo
9ba95ecd5d Export KeyboardLayout 2024-04-15 13:05:15 +00:00
Marco Martin
52b92904de Quick tiling double buffereing
The quicktileMode member now is just for the requested tile mode, base the "real" mode only on m_tile.

The requested tile mode is used for double buffering, to look and behave just like requestedMAximizeMode() which is updated immediately, but needs to acknowledge the configure request and render for quickTileMode() (and the right tile() instanced to be associated) to be updated accordingly
2024-04-15 12:18:09 +00:00
Xaver Hugl
36001e5ee0 increase minimum libdrm version to 2.4.116
It's required for drmSyncobjEventfd
2024-04-15 09:22:00 +00:00
Aleix Pol
1ab5453a90 EffectLoader: Warn about trying to load an invalid effect
If the metadata of the effect is invalid, loadEffect will complain
rather than failing silently, making debugging issues a bit harder and
it's something that we are already checking for and shouldn't
realistically be happening.
2024-04-15 00:47:33 +02:00
l10n daemon script
5e94f5429a GIT_SILENT Sync po/docbooks with svn 2024-04-14 01:22:41 +00:00
l10n daemon script
f7a36a43d9 GIT_SILENT Sync po/docbooks with svn 2024-04-13 01:28:05 +00:00
ivan tkachenko
344e56dd77
plugins/dialogparent: Disable darkening while picking colors
Integrate with colorpicker effect to disable window darkening while
color picker effect is active. Unfortunately, this solution has couple
of limitations:
- active state of effects is not an observable property, so a new
  property had to be added to the effects singleton;
- consequently, list of active effects is not an observable property, so
  the whole thing could not be implemented in pure QML in the dialog
  parent effects;
- actual isActive() state of the color picker for whatever reason
  required that m_scheduledPosition is not an invalid point,
  effectively making it always inactive except for a brief moment
  between addRepaintFull() call and paintScreen() callback. That check
  had to be removed.
- QColorDialog windows are still modal and darkened by default;
- QColorDialog on X11 does not use portals/KWin, so this trick does not
  apply at all;
- effects->isScreenLocked() which isActive() depends on is not an
  observable property either.

BUG: 172921
2024-04-12 22:39:01 +06:00
Nate Graham
99324c12fd plugins/overview: remove middle click to close virtual desktop
This is a hidden destructive action[1] in a context where users are not
primed to expect it. It's also largely unnecessary since the delegates
already show a delete button on hover, and deleting virtual desktops
isn't such a common task that it benefits from an accelerator. Let's
remove it for safety.

[1] It's destructive because user-created state on the deleted virtual
desktop is lost--with no confirmation or undo, to boot.

BUG: 484999
FIXED-IN: 6.1
2024-04-12 13:25:58 +00:00
Xaver Hugl
64e0b693c7 core/output: remove direct scanout inhibition
It's not used anywhere
2024-04-12 12:58:55 +00:00
Carl Schwan
b2f181fe80 Update kirigami target
Since kf6, FindKirigami2Config is deprecated in favor of
FindKirigamiConfig
2024-04-12 10:22:48 +00:00
l10n daemon script
89b6a67232 GIT_SILENT Sync po/docbooks with svn 2024-04-12 01:26:17 +00:00
Xaver Hugl
749b80ab49 backends/wayland: rename framePending to setPendingFrame
It's more clear about what the method does
2024-04-11 22:36:59 +00:00
Aleix Pol Gonzalez
881858f8dd Remove a number of unused forward declarations of gbm_* structs
Found this while debugging something else, seems like it's a good
cleanup.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2024-04-11 22:05:21 +00:00
Yifan Zhu
1a4606d990 scripting/windowmodel: match screen closest to center for filter
When filtering windows by screen, match the screen closest to the window
center, instead of testing whether the window is visible on the current
screen. The new method guarantees that when filtering by screen, the
window appears for exactly one screen. Previously windows spanning
multiple screens appear on all of them, and off-screen windows are not
shown in any screen.

BUG: 480028
BUG: 485337

FIXED-IN: 6.0.4
2024-04-11 09:36:26 -07:00
Vlad Zahorodnii
bf4c5241a0 backends/x11: Use correct allocator when using software rendering
The drm device will be null when using software rendering.
2024-04-11 16:36:46 +03:00
Vlad Zahorodnii
ab1350b6a6 wayland: Send data offer source actions only for dnd
It makes sense only with dnd and sending the source_actions events for
selections and primary selections tricks gtk into thinking that there
are drag motion events.

BUG: 464196
2024-04-11 08:21:06 +00:00
Yifan Zhu
9ca69cf50c screenedge: reset timer when pointer leaves edge
Currently the edge erroneously triggers when the pointer repeatedly
enters and leaves the edge in short durations. Send all events to edges,
and reset the timer when pointer leaves edge. Add corresponding test.

BUG: 441892
FIXED-IN: 6.0.4
2024-04-10 20:55:29 +00:00
Xaver Hugl
4c6000b3e1 core/syncobjtimeline: make explicit sync use SYNC_IOC_MERGE instead of waiting on the CPU side
This brings some performance benefits, because the application can potentially reuse
the buffer earlier, and it simplifies the code a bit
2024-04-10 19:06:01 +02:00
Xaver Hugl
32addf4d59 wayland: implement linux-drm-syncobj-v1
linux-drm-syncobj-v1 allows drivers and apps to synchronize KWin's buffer access
to their rendering, and synchronize their rendering to KWin's buffer release. This
fixes severe glitches with the proprietary NVidia driver and allows for some
performance improvements with Mesa too.
2024-04-10 19:06:00 +02:00
Natalie Clarius
672b662dd2 plugins/nightlight: add todo comment to rename config group key 2024-04-10 14:37:22 +00:00
David Redondo
1573d04b5a Mark windows for offsceen rendering in WindowThumbnailSource
This way if an effect wants to show such  window  that is for example
on a different virtual desktop it is updated live.
BUG:456280
FIXED-IN:6.0.4
2024-04-10 13:50:57 +00:00
Xaver Hugl
485769ddd9 plugins/zoom: limit the maximum zoom value to 100
Accidental changes in zoom can become very time consuming to undo otherwise.
With a value of 100, you can still zoom in far enough to only see a few pixels
on the screen, so it shouldn't break any actual use cases

BUG: 485192
2024-04-10 13:26:20 +02:00
l10n daemon script
cfe001df6f GIT_SILENT Sync po/docbooks with svn 2024-04-10 01:28:24 +00:00
Vlad Zahorodnii
2014f9a382 plugins/screencast: Remove irrelevant code
testCreateDmaBuf() is going to use the GbmGraphicsBufferAllocator under
the hood.

The GbmGraphicsBufferAllocator works as follows: if you pass it the
DRM_FORMAT_MOD_INVALID modifier, the resulting GraphicsBuffer is going
to have the invalid modifier as well. So the receivedModifiers check
is unnecessary.
2024-04-09 08:54:11 +00:00
Vlad Zahorodnii
00c1e9850b plugins/screencast: Clean up cursor metadata
Every caller of sendCursorData() is required to retrieve the
spa_meta_cursor object. But there's no good reason to do it, this can
be done by the sendCursorData() function.

Also, sendCursorData() is not a good name, it doesn't send anything.
Instead, it adds cursor metadata to the buffer.
2024-04-09 08:40:49 +00:00
l10n daemon script
f9e746dff6 GIT_SILENT Sync po/docbooks with svn 2024-04-09 01:28:17 +00:00
Vlad Zahorodnii
7d557784a1 plugins/screencast: Fix sizeof() of SPA_META_Header
At the moment, the sizeof the pointer is passed, but the size of the
struct must be passed instead.
2024-04-08 22:28:32 +00:00
Zack Rusin
15e23b825e backends/drm: Force software cursor on vmwgfx
The hardware cursor on vmware virtual machines is missing. This is
likely related to issues with importing DRM dumb buffers through
prime on vmwgfx.
Force software cursor on vmwgfx to make sure cursor is visible and
working properly until the hardware cursor is fixed.
2024-04-08 21:07:39 +00:00
Zack Rusin
17029cd54f backends/drm: Fix redraw issues on vmwgfx
Disable the readability checks when running on vmwgfx. The DMABuf syncs
seem broken on vmwgfx and until they're fixed disable the readablity
checks to actually let KDE propertly redraw when running on vmwgfx.
2024-04-08 21:07:39 +00:00
Zack Rusin
d20d84cfa3 backends/drm: Fix the closefb ioctl
The DRM_IOCTL_MODE_CLOSEFB ioctl takes a struct drm_mode_closefb as
argument and not the framebuffer id as integer.

That distinction is important because the kernel side explicitly
checks whether the padding in drm_mode_closefb has been correctly
initialized to zero:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/drm_framebuffer.c#n494

Use drm_mode_closefb and thus make sure the kernel side is not reading
garbage when testing the padding.
2024-04-08 21:07:39 +00:00
Nate Graham
61ca42cd2c Round all the things consistently
Now that we have Kirigami.Units.cornerRadius, there's a central source
of truth for corner radius so don't have to use random numbers for
these anymore.

Part of https://invent.kde.org/teams/vdg/issues/-/issues/45.
2024-04-08 16:56:50 +00:00
Xaver Hugl
c26101a9fe backends/drm: use a swapchain instead of an OpenGL texture for the shadow buffer(s)
This seems to have better performance on Intel GPUs, and allows us to implement damage
tracking for the shadow "buffer" in the future

CCBUG: 477223
2024-04-08 17:19:01 +02:00
l10n daemon script
786dc09704 GIT_SILENT Sync po/docbooks with svn 2024-04-08 01:27:19 +00:00