Commit graph

26958 commits

Author SHA1 Message Date
Aleix Pol Gonzalez
70231f2431 backends/drm: Complain when we are issuing an invalid drm property
The alternative is silent failures and KWin rendering nothing. The
kernel will only be telling us that something went wrong which makes it
hard to debug.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2024-06-10 17:23:42 +02:00
Vlad Zahorodnii
cd2d5b07d5 Prevent potentially adding closed windows to the attention chain
CCBUG: 486693
2024-06-10 16:21:16 +03:00
Vlad Zahorodnii
cfbee55c2a wayland: Initialize xdg-toplevel size hints to 0,0
QSize() initializes the width and the height to -1x-1 by default.
2024-06-10 15:29:49 +03:00
Vlad Zahorodnii
61332caa20 wayland: Fix one dimensional size constraints
QSize::isEmpty() will return true if either dimension is 0. On the other
hand, given the current language in the spec, it seems like the client
is allowed to set size constraints per dimension.

BUG: 488260
2024-06-10 15:29:49 +03:00
Xaver Hugl
0c5ee47892 core/renderbackend: check for the renderloop being deleted
Output frames can outlive the output they were created for, so the render loop
might also be deleted by the time the output frame is destroyed or presented

BUG: 487701
2024-06-10 13:46:33 +02:00
David Edmundson
4b58f6c207 wayland: Drop unused global from interface blacklist
This was deleted when we added pipewire support
2024-06-10 07:46:33 +00:00
l10n daemon script
57d8bd6856 GIT_SILENT Sync po/docbooks with svn 2024-06-10 01:43:24 +00:00
l10n daemon script
57f862eb4d GIT_SILENT Sync po/docbooks with svn 2024-06-09 01:27:11 +00:00
l10n daemon script
fa5b3e920b GIT_SILENT Sync po/docbooks with svn 2024-06-08 01:31:30 +00:00
l10n daemon script
cfca23f9b3 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"
2024-06-08 01:20:05 +00:00
Xaver Hugl
65b4968c80 remove the HideUtilityWindowsForInactive option
It caused bugs and doesn't seem to work anymore, with no complaints about it
not working or an obvious reason for it to exist, so it almost certainly
isn't needed at all.
2024-06-07 21:14:41 +02:00
Xaver Hugl
a6a85466cd workspace: restrict showing windows because HideUtilityWindowsForInactive=false to actual utility windows
BUG: 413549
2024-06-07 21:05:52 +02:00
Xaver Hugl
f6540283d5 placement: if a window can't be placed maximized, place it centered
It's closer to what maximized does than minimal overlapping

BUG: 438572
2024-06-07 19:59:49 +02:00
Vlad Zahorodnii
83502e29a9 plugins/nightlight: Fix current time changing after updating transitions
When the slow update timer fires, it's going to pass m_next.first as the
current time in order to calculate the next transition timings. After
the timings have been calculated, the slow update timer will be started
with an interval of "todayNow.msecsTo(m_next.first)". Since todayNow
is a reference to m_next.first, the time diff will be 0, which will
throw off the night light manager. To fix that, make a copy of m_next.first
and then pass the copy as the current date time to resetSlowUpdateTimers().

BUG: 487901
2024-06-07 15:16:48 +00:00
Xaver Hugl
b2ff465490 workspace,window: don't elevate windows during electric border tiling / maximizing
Instead, move the outline below the window, so that the visual order of things stays the
same. This also fixes a visual glitch, where the outline is visible for a moment after
maximization, and is above the no-longer-elevated window

BUG: 436466
BUG: 354741
2024-06-07 14:46:10 +02:00
Xaver Hugl
bffae41983 remove Workspace::sendWindowToOutput
It just calls Window::sendToOutput...

BUG: 329980
2024-06-07 00:44:24 +00:00
Xaver Hugl
3bf97e87e5 backends/x11/standalone: add a nullptr check in the vblank handler
It can be called without a previous presentation in some cases

BUG: 488112
2024-06-06 16:54:16 +00:00
Xaver Hugl
0cd6f5cd06 window: use the correct output when electric border quick tiling
BUG: 487844
2024-06-06 16:54:16 +02:00
l10n daemon script
6166060f9b GIT_SILENT Sync po/docbooks with svn 2024-06-06 01:30:28 +00:00
Xaver Hugl
76739f1f2f core/renderloop: don't do triple buffering with vrr or tearing
While in theory it could be useful with both, I'm not sure that it makes sense
in practice, and the current triple buffering logic doesn't support it.

BUG: 487605
2024-06-05 19:24:09 +00:00
Vlad Zahorodnii
54473f03ba Re-enable hardware cursor on intel devices
My recent testing has shown that screen freezes when moving the cursor
cannot be observed anymore. Maybe the issue has been fixed upstream by
some unrelated change. Either way, let's re-enable the hardware cursor
to gather some feedback.
2024-06-05 18:08:51 +00:00
Xaver Hugl
ecb6460277 backends/drm: re-enable buffer readability checks on i915
We're checking the egl fence fd now, instead of the dmabuf directly, which shouldn't
be affected by the same issue
2024-06-05 15:08:11 +00:00
Xaver Hugl
a167657214 backends/drm: enable pipelines for VR headsets
Otherwise, the pipeline state from an earlier hotplug scenario can leave
the pipeline disabled and without a CRTC, which means leasing the output
will fail

BUG: 487938
FIXED-IN: 6.1.0
2024-06-05 13:12:56 +00:00
Xaver Hugl
47d873db94 autotests/drm: disable testModeset
It only works with the assumption that outputs are enabled by default, which
is not the case anymore
2024-06-05 13:12:56 +00:00
l10n daemon script
3f48b22f1a GIT_SILENT Sync po/docbooks with svn 2024-06-05 01:43:49 +00:00
Xaver Hugl
8c25784070 outputconfigurationstore: split user configured and automatically set modes
If the mode the user has previously set through KScreen isn't available, this falls
back to a different mode without overwriting the user preference. If on the next
hotplug, the desired mode is available again, it then gets chosen instead of the
fallback

BUG: 484037
2024-06-04 13:52:54 +00:00
Xaver Hugl
c9627dc60f backends/drm: reset edid if the property is zero
Otherwise, a display without any EDID might be recognized as a display
that was previously connected to the same connector
2024-06-04 12:08:56 +00:00
Niccolò Venerandi
a56b16e2ff Remove orphan shortcuts for desktop grid and expose effects
BUG:487974
2024-06-04 10:09:08 +00:00
Vlad Zahorodnii
eea79bddd8 backends/libinput: Destroy Connection in correct thread 2024-06-04 10:00:17 +00:00
Vlad Zahorodnii
7622921de6 Explicitly destroy WaylandServer in ApplicationWayland destructor
Otherwise the WaylandServer will be destroyed when QCoreAppplication is
gone, which is too late.
2024-06-04 10:00:17 +00:00
Vlad Zahorodnii
b4822389c3 Create WaylandServer after backends
Move WaylandServer after backends so it's less tempting to use WaylandServer
in low level components.
2024-06-04 10:00:17 +00:00
David Edmundson
8c149bb6b7 effects: Do not call RHI QQuickRenderControl methods when using software rendering
As per the docs:
Note: This function does not need to be, and must not be, called when
using the software adaptation of Qt Quick.

This sets up RHI on the render control, which in turn sets RHI on the
window, which shouldn't exist when using software rendering.

BUG: 482663
BUG: 486078
2024-06-04 08:33:19 +00:00
l10n daemon script
fd746b46e5 GIT_SILENT Sync po/docbooks with svn 2024-06-04 01:24:29 +00:00
Vlad Zahorodnii
cadf16b12e Improve handling of closed windows
A layer shell window can request a screen edge without having a chance
to map the surface. In that case, no Workspace::windowRemoved() signal
is not going to be emitted because no surface has been mapped. Perhaps
it needs some re-wiring, but on the other hand, it is also more reasonable
to monitor Window::closed() signal.

With this change, the ScreenEdges manager will reject any request to
reserve a screen edge for a closed window. And in addition to that,
the ScreenEdges will unreserve screen edges when the window is closed
rather than when the window is unmapped.

CCBUG: 485318
2024-06-03 14:54:40 +00:00
Vlad Zahorodnii
01a9eb2327 plugins/screencast: Stop frame rate throttling timer when stream is paused
Hypothetically, m_pendingFrame can be armed when the stream is paused.
It is undesired to call recordFrame() in that case.
2024-06-03 12:54:39 +00:00
Vlad Zahorodnii
d048f9aad8 autotests: Destroy WaylandServer before Application 2024-06-03 11:22:13 +00:00
Vlad Zahorodnii
79238b06cf core: Check that GraphicsBuffer references change on the main thread 2024-06-03 11:22:13 +00:00
David Edmundson
79ef1be57b xwayland: Avoid crash if processing keys after xwayland is disconnected
Whilst the XWayland input filter only runs whilst XWayland is running
there is hypothetical window between the wayland connection to xwayland
being disconnected and handleXwaylandFinished, the process exiting. This
should be guarded correctly.

BUG: 480925
2024-06-03 10:23:57 +00:00
Vlad Zahorodnii
8b843e647c xwayland: Initiate x-to-wayland dnd only if the seat permits it
This is mainly to avoid creating lingering m_currentDrag object if
SeatInterface::startDrag() refuses to start a dnd session.
2024-06-03 09:54:32 +00:00
Vlad Zahorodnii
ee4cf67371 wayland: Refuse starting dnd if there's another dnd session in progress
If a new drag and drop session is started while there is already one
existing, it's possible to end up in a situation where the
SeatInterface::dragEnded signal is emitted the second time when one of
the data sources is destroyed.

CCBUG: 460374
2024-06-03 09:54:32 +00:00
David Edmundson
1c3a987d74 wayland: Only load HiddenPreviews options in X11
HiddenPreviews was a hack to not inform X11 that windows were minimised,
so that their previews kept working.

On wayland the user facing setting is not visible but the value is
loaded which is a bad combination.

CCBUG: 415286
2024-06-03 08:36:53 +00:00
Aleix Pol Gonzalez
26d9361695 core,backends/drm: Improve error logging
Write something into the logs when a call goes awry, it can save some
time to the next person porting kwin to a dysfunctional driver.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2024-06-03 08:14:32 +00:00
Sam James
31a3961c4c
watchdog: add includes for geteuid
05a3e2bad9 added `geteuid` use but didn't
add the needed headers. This works by chance on libstdc++ systems via
transitive includes, but it doesn't work on libc++ systems, as reported
downstream in Gentoo at https://bugs.gentoo.org/933120.
2024-06-02 00:25:26 +01:00
l10n daemon script
a1f30edaf6 GIT_SILENT Sync po/docbooks with svn 2024-06-01 01:25:57 +00:00
l10n daemon script
e84ca82c9a 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"
2024-06-01 01:18:54 +00:00
David Edmundson
f700de56f8 core: Disable Qt RHI pipeline cache
The Qt pipeline cache causes a disk sync on every load and save of a
QQuickWindow. This causes a stutter under high disk usage.

The gains from this cache are minimal on our simple scenes on PC
hardware. Especially given mesa has it's own cache, profiling on my
personal laptop showed the pipeline as being 0ms.

There is an upstream patch at
https://codereview.qt-project.org/c/qt/qtdeclarative/+/564411 .
QSaveFile still has a sync, but that should only be hit for the first
non-cached run. I'm also adding a flag to QSaveFile to fix the QML cache
and first run case. 

Tested via running kwin with `strace -e
inject=fdatasync:delay_enter=10000000` to simulate a slow flush.

BUG: 487043
2024-05-31 15:28:09 +00:00
Vlad Zahorodnii
40839e3347 plugins/startupfeedback: Don't show bouncing cursor if cursor is invisible
BUG: 482566
2024-05-31 15:00:10 +00:00
Vlad Zahorodnii
2ca81bbe32 kcms/decoration: Use "grab" and "grabbing" cursor to communicate dnd state 2024-05-31 14:24:51 +00:00
Vlad Zahorodnii
d7772031b1 Use "grabbing" cursor during interactive move
BUG: 483305
2024-05-31 14:24:51 +00:00
Xaver Hugl
1195936a68 opengl/openglcontext: correct the check for glMapBufferRange support
It's also supported with OpenGL ES 3.0
2024-05-31 12:11:39 +00:00