Commit graph

26873 commits

Author SHA1 Message Date
Vlad Zahorodnii
7710b44f1d plugins/screencast: Specify the effective drm format
Currently, the dmabuf format is hardcoded to DRM_FORMAT_ARGB8888, but
testCreateDmabuf() uses m_drmFormat.

Furthermore, if the shm buffers are used, it's preferred to use a buffer
format that's friendly to QImage and OpenGL, which is DRM_FORMAT_ARGB8888.
2024-05-16 10:59:35 +03:00
Vlad Zahorodnii
54f7079100 plugins/screencast: Use buffer format and modifier as specified in spa_video_info_raw
It appears like pipewire can ask kwin to allocate a drm buffer even
though m_dmabufParams has been reset. It's underspecified when pipewire
will start requesting new buffers after changing the stream params. So
use the last reported video info to allocate buffers. If even it is wrong,
then it's an issue somewhere in pipewire.
2024-05-16 07:38:38 +00:00
l10n daemon script
47484bb141 GIT_SILENT Sync po/docbooks with svn 2024-05-16 01:44:30 +00:00
Pau López
96c0d800b8 docs/contributing: Update windowswitchers location 2024-05-15 18:36:46 +02:00
Nate Graham
29a93a2e57 plugins/slidingpopups: use standard duration values
Right now the opening duration is 150ms, and the closing duration is
250ms. Neither are standard durations we use elsewhere, and it's also a
bit odd to be slower to close than to open--at least from a visual
perspective.

The average of these value happens to be 200ms, which happily is the
exact value of Kirigami.Units.longDuration.

As such, use that value instead, in the interests of visual consistency.
2024-05-15 09:06:05 -06:00
Vlad Zahorodnii
77794e1333 plugins/screencast: Call pw_deinit()
The constructor has a pw_init() function call, but the destructor lacks
the matching pw_deinit().
2024-05-15 12:16:40 +00:00
David Redondo
805435d157 xwayland: Enable xtest libei integration
Enabling this feature makes Xwayland send xtest events via
the remote desktop portal and libei.
XWayland will create a new session for each X client (it keeps
contexts around and reuses them if the cmdline matches, so not
every xdotool invocation produces a new portal prompt).
2024-05-15 09:31:53 +00:00
Vlad Zahorodnii
4ebb21e8c3 plugins/screencast: Refuse creating a dmabuf buffer if n_datas is wrong
n_datas must match the plane count in the graphics buffer. But apparently
pw buffers with wrong n_datas can still slip through somehow. It makes
the screen cast stream crash when filling in buffer data.

The crash is hard to reproduce, but on the other hand, according to
sentry, a substantial number of users is affected by this issue.

Taking the defensive approach is not great, there will likely be other
issues with screencasting, but it seems like the only feasible option
so far. Broken streams is better than kwin crashing. It also wouldn't
hurt to add some warning messages, that will be done in a follow up MR.
2024-05-15 08:58:27 +00:00
Vlad Zahorodnii
886f0e852b Disconnect Workspace::outputsChanged from InputPanelV1Window when it's closed
Otherwise the input panel window can be repositioned after it's closed,
which will crash.
2024-05-15 08:51:00 +00:00
l10n daemon script
0ce58c7cbf GIT_SILENT Sync po/docbooks with svn 2024-05-15 01:28:14 +00:00
Xaver Hugl
9fef6380d4 backends/drm: adapt the color factors to the target colorspace
Otherwise the effect of night color is much bigger in larger colorspaces.
This is mostly a workaround, but the better solution (adapting the color
temperature of the colorspace instead) will have to wait for 6.1

BUG: 483801
FIXED-IN: 6.0.5
2024-05-14 14:47:12 +02:00
Xaver Hugl
e04ec0ce29 opengl: make GLRenderTimeQuery::query non-destructive 2024-05-14 12:33:08 +00:00
Xaver Hugl
b167d1f56a core/renderbackend: improve handling of multiple render time queries
With multiple OpenGL render time queries, you can't just add the render
times together, because the GPUs execute commands asynchronously and you
may get a far too big result this way. Instead, this converts all timestamps
to steady_clock and correctly calculates the actual total time spent rendering
with the first and last timestamp.
2024-05-14 12:33:08 +00:00
Xaver Hugl
8d5ebb5e15 backends/drm: relax direct scanout rules for color management
The GL renderer currently doesn't apply any transformations except clipping,
so allowing direct scanout is okay as long as colorimetry and transfer
function match.
2024-05-14 08:08:08 +00:00
Xaver Hugl
22d0631b1b backends/drm: add support for an HDR brightness setting 2024-05-14 09:51:59 +02:00
l10n daemon script
589479c24a GIT_SILENT Sync po/docbooks with svn 2024-05-14 01:30:06 +00:00
Fushan Wen
7a2e6bb58e Constify Qt containers passed to ranges
This constifies a few mutable Qt containers passed to std::ranges to improve the efficiency.
2024-05-13 19:50:25 +00:00
Ismael Asensio
d2d92cdfd2 rules/RuleBook: Optimize saving discarded rules to config
After porting to KConfigXT settings some time ago, there was still an
inefficient and error-prone codepath between the `RuleBook` (which keeps
the runtime list of `Rules`) and the `RuleBookSettings` (responsible for
config reads and saves), in the form of the `setRules()` method.

We can eliminate the `setRules()` codepath, reducing unnecessary
runtime process and file access operations, and instead:
- Keep track of the config `id` in the `Rules` objects
- Keep a single `RuleBookSettings` object as a member
- Modify or delete the discarded rules settings directly
- Save when necessary

This also fixes two bugs/pitfalls of the previous solution:
- the config group id for each rule is now preserved instead of creating
  new ones
- no leftovers on the config file for the discarded groups and entries

Setting custom configs for the integration tests still works unchanged.

BUG: 446381
FIXED-IN: 6.1
2024-05-13 20:18:09 +02:00
Xaver Hugl
a3c763b8ef backends/drm: ensure that ctm and gamma_lut are always unset with color management
Otherwise night color will be applied twice
2024-05-13 08:32:03 +00:00
Xaver Hugl
dcda15e5e3 core/renderlayer: don't implicitly truncate width and height of the geometry
Otherwise, repaint regions will be limited to a pixel less than it should be
in some cases

BUG: 482987
FIXED-IN: 6.0.5
2024-05-13 08:07:38 +00:00
Jan Grulich
653938e456 plugins/screencast: fix damage region position
Damage reported from the output is output-local and therefore doesn't
need to be translated.

I tested this with Chromium, where the damage region on my 3-monitor
setup was always -4k something on the right screen, -2k on the middle
one and correct on the left screen. With this change I can confirm that
the position is now correctly reported for the right screen.
2024-05-13 09:52:27 +02:00
l10n daemon script
26a0038d0c GIT_SILENT Sync po/docbooks with svn 2024-05-13 01:31:07 +00:00
Ismael Asensio
b1ed2bb3e7 kcms/rules: Handle Escape key to exit Export mode
This avoids unexpectedly exiting the whole KCM when just trying
to cancel the Export mode (based on a true story)
2024-05-12 23:38:49 +02:00
l10n daemon script
200e46bec6 GIT_SILENT Sync po/docbooks with svn 2024-05-12 01:36:34 +00:00
l10n daemon script
325daecace 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-05-12 01:20:22 +00:00
Nate Graham
43c21c390b kcms/desktop: re-add separator line between scrollview and controls
The extraFooterTopPadding property used to do this is now somewhat
incoherent, but we're stuck with it until KF7.
2024-05-11 14:19:57 -06:00
David Edmundson
013e69988f Reconnect Pipewire on Failure
Our connection to pipewire can go down if the pipewire service restarts, it's on us to tear down and reconnect.
To ensure Streams can tear down on their own properly, this patch leaves existing streams with a defunct connection
and creates a new connection for new streams, sharing the connection between them.

This also implicitly fixes the case for distributions without working socket activation.

BUG: 483137
2024-05-10 14:35:11 +00:00
Kai Uwe Broulik
ba8c52564e workspace: Don't activate desktop window when it gets added
Unless there is no focus window. Matches X11 behavior.

Otherwise (re)starting plasmashell would pull focus away from
whatever window is currently focussed.
2024-05-10 09:51:56 +02:00
l10n daemon script
ef41fa8e8f GIT_SILENT Sync po/docbooks with svn 2024-05-10 01:27:48 +00:00
l10n daemon script
4c144958c7 GIT_SILENT Sync po/docbooks with svn 2024-05-09 01:33:27 +00:00
l10n daemon script
2dd71603dd 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-05-09 01:18:28 +00:00
l10n daemon script
b2e1ede6e5 GIT_SILENT Sync po/docbooks with svn 2024-05-08 01:33:48 +00:00
l10n daemon script
ea5b79dbf6 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-05-08 01:18:43 +00:00
Xaver Hugl
01f3f185d8 backends/drm: allow using the EDID primaries and whitepoint as the color profile
They're usually close enough, so this allows users with wide color gamut screens to
get non-oversaturated colors without having to profile the screen
2024-05-07 13:52:35 +00:00
Pau López
c41315564c effect: Fix clip region in AnimationEffect 2024-05-07 10:45:00 +00:00
l10n daemon script
46f5951820 GIT_SILENT Sync po/docbooks with svn 2024-05-07 01:27:36 +00:00
Natalie Clarius
6ec7e919fb plugins/nightlight: clarify strings for inhibition
To clarify that the toggle action merely temporarily disables the blue light filter, rather than turning the schedule off permanently like the "Disbaled" setting in the KCM does, use "suspend/resume" terminology instead of "off/on" in the keyboard shortcut and OSD.

Follow-up on plasma-workspace!4262

CCBUG: 486647
2024-05-07 01:14:30 +02:00
Aleix Pol Gonzalez
24807dfa50 backends/drm: Also get the range for signed range properties
Otherwise these default to -1 which isn't helpful

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2024-05-06 16:06:32 +00:00
Aleix Pol Gonzalez
d55fa39ebf backends/drm: Add a check for ranged properties
Include a warning if we are ever setting an invalid value, this can save
some of us quite some time in the future, since failing to fall in the
range makes the whole pipeline become rejected.
2024-05-06 08:47:41 +00:00
Aleix Pol Gonzalez
0db46e3966 backends/drm: Make sure we respect the alpha property range
This is in part a workaround for an issue in Qualcomm drivers where the
range for alpha is 0-UINT8_MAX (255). We were setting a value too big
and this would make the whole pipeline fail.

Instead set the top of the property range which is what we were doing
after all, resulting in more explicit code to what we were trying to
achieve.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2024-05-06 08:47:41 +00:00
l10n daemon script
b3f7924539 GIT_SILENT Sync po/docbooks with svn 2024-05-06 01:28:47 +00:00
l10n daemon script
cac430fdbb GIT_SILENT Sync po/docbooks with svn 2024-05-04 01:37:13 +00:00
Vyacheslav Mayorov
4e01d2c8b7 workspace: fix syncing the stacking order with Xorg
Deleted windows have frameId zero, which makes Xorg stack other windows
below the bottom-most window instead of the correct one. To avoid that,
filter out deleted windows in Workspace::propagateWindows.

BUG: 478556
2024-05-03 20:00:19 +03:00
Xaver Hugl
33fe211471 placementtracker: fix restoring of windows in custom tiles
There were two problems preventing it from working:
1. The placement tracker didn't handle them correctly; now it sets the custom tile mode
after moving the window to its location
2. The window code used `output()` instead of `moveResizeOutput()`, which means when KWin
just moved the window to a different screen and immediately changes the tile mode
afterwards, it would tile the window on the wrong output
2024-05-03 16:47:47 +02:00
Xaver Hugl
14c08422ca placementtracker: fix quick tiled windows not being restored correctly
There were two problems:
1. Workspace interacted with the tile mode of windows before inhibiting
the placement tracker, so the wrong window state was stored in the placement
tracker
2. Window::setQuickTileMode is unintuitive and has some undesired side effects,
meant to handle quick tiling with keyboard shortcuts and by dragging the
window with a mouse specifically. This commit just works around that by
un-setting the tile mode first

BUG: 461886
2024-05-03 15:58:17 +02:00
Xaver Hugl
df9f8f8346 fix vertically maximized windows sometimes being moved out of the screen
...and add a test for it

BUG: 476037
2024-05-03 13:45:18 +00:00
Xaver Hugl
fb28d75ad8 placementtracker: fix vertically maximized windows being misplaced
...and extend the autotest to cover that situation.

CCBUG: 476037
2024-05-03 13:45:18 +00:00
l10n daemon script
6a44cce527 GIT_SILENT Sync po/docbooks with svn 2024-05-03 01:26:34 +00:00
Xaver Hugl
219f110093 backends: move render time queries into OutputFrame
This way, multiple OutputFrames can be pending at the same time, without
interfering in each other's render time queries
2024-05-02 13:03:27 +00:00
Vlad Zahorodnii
4470e82baa xwayland: Prevent kwin crashing when an xwayland socket cannot be created
If the X11 socket directory has wrong permissions, XwaylandSocket will
refuse to create sockets. Crashing in that case is undesired, just continue
executing without X.
2024-05-02 12:55:47 +00:00