Commit graph

25981 commits

Author SHA1 Message Date
l10n daemon script
daa8785e34 GIT_SILENT Sync po/docbooks with svn 2024-01-21 01:19:39 +00:00
l10n daemon script
2b684146c7 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-01-21 01:12:31 +00:00
Tino Lorenz
adbf69aab4 plugins/buttonrebinds: Support rebinding to modifier keys
Allow rebinding buttons to send modifier keys (Control, Alt, Meta,
Shift) without any other key.
This is part of restoring the functionality kcm-wacomtablet had under
X11 for wayland.
CCBUG: 461259
2024-01-20 15:49:42 +00:00
l10n daemon script
39a5489bde GIT_SILENT Sync po/docbooks with svn 2024-01-20 01:19:39 +00:00
Aki Sakurai
ab41bcf3ad Accepting the tablet serial for the xdg_toplevel move/resize function 2024-01-19 20:06:49 +00:00
Xaver Hugl
9822e75fbf core/renderjournal: improve render time heuristics
Instead of giving the rolling average for render times a special case for
when render time suddenly increases, detect how stable render times are.
If they're volatile and increase a lot, increase the predicated render time
beyond the spike, as more render time spikes are likely to follow.

CCBUG: 477959
2024-01-19 20:26:20 +01:00
Vlad Zahorodnii
7ba7ddfee8 opengl: Let OpenGL implementation handle if preprocessor directive
It's less error prone and handles cases like if/elif/else better, etc.

CCBUG: 479279
2024-01-19 16:57:50 +02:00
Vlad Zahorodnii
0284610eff opengl: Fix parsing of the else branch
`it` points to `#else`. We need to move to the next line.

BUG: 479279
2024-01-19 14:44:39 +00:00
Vlad Zahorodnii
7e8230a596 plugins/colorblindnesscorrection: Ensure that error and correction are fully initialized
vec3() will complain if the vector is not fully initialized. Also if the
type of these variables is changed to vec4 and some miss alpha values,
the glsl compiler will complain again.
2024-01-19 14:23:57 +00:00
Vlad Zahorodnii
4cc94e9462 plugins/colorblindnesscorrection: Fix screen becoming white on intel machines
correction.a is uninitialized. It creates problems on intel machines.

BUG: 479749
2024-01-19 14:23:57 +00:00
Aleix Pol
0ce01ac30f screencasting: Fix CI
It seems on the CI the dataFrame is null at times
2024-01-19 14:05:51 +00:00
Stefan Hoffmeister
d563bc6c86 Fix mishandling of output configuration if output monitor EDID is missing
This functionally fixes
* duplication of output configuration in ~/.config/kwinoutputconfig.json
* _wrong_ ouput configuration - in particular the scale - being restored (i.e. scale would never be restored)
2024-01-19 13:52:28 +00:00
Vlad Zahorodnii
cffacc514d opengl: Correct order of transforms in GLTexturePrivate::updateMatrix
The textureToTransformMatrix should be applied first, otherwise the scale
transform is going to change the winding order of rotations.

In practice though, it shouldn't matter because these matrices are used
to downscale or upscale uv coordinates.
2024-01-19 07:43:30 +00:00
l10n daemon script
428758d33a GIT_SILENT Sync po/docbooks with svn 2024-01-19 01:22:42 +00:00
Aleix Pol
0b36919b7c screencasting_test: Adapt to KPipeWire change 2024-01-19 01:41:47 +01:00
Xaver Hugl
36bec2d941 colors/colordevice: make channel factors linear
The redshift table is in gamma 2.2 encoding and not linear, which means
that it only yields correct results with 1.0 pixel values. It also means
that when it's being applied in linear space in the color management shaders,
the result is quite wrong.

To fix that, this commit makes the channel factors linear and the backend
calculates the nonlinear factors where needed.
2024-01-18 21:51:40 +01:00
Vlad Zahorodnii
788c186701 plugins/shakecursor: Ensure that cursor is magnificated for at least certain amount of time
If the cursor is magnificated and it's slightly moved so the shake
detector returns std::nullopt, the cursor scale will be set back to 1.0
as soon as possible. This is not ideal. Immediately resetting doesn't
help with locating the cursor.

Also the cursor scale reset delay has been increased to two seconds to
provide more time to see the cursor.
2024-01-18 18:03:15 +00:00
Vlad Zahorodnii
f6d9b8a0b4 plugins/screenshot: Use SmoothPixmapTransform when stitching area screenshots
CCBUG: 478426
2024-01-18 14:56:33 +00:00
Vlad Zahorodnii
f23e0ef05b opengl: Correct transformation order in GLTexture::render()
First, the texture-to-buffer transform has to be applied, then the y
axis should be flipped. Doing it vice versa changes the winding order
of rotation transforms.

Also the screenshot plugin uses incorrect render transform. Since
convertFromGLImage() undoes the render target's transform, the color
space transformation pass should use the same transform, not the
inverted one.

BUG: 479934
2024-01-18 14:15:28 +00:00
Niccolò Venerandi
69f8bee0b1 kcms/screenedges: Hardcode the Overview as an option in the touchscreen KCM
You can now select "Overview" in the touch KCM to use it as a touch edge gesture again!
2024-01-18 14:08:34 +00:00
Xaver Hugl
d5ca429627 wayland: consider every commit a "content update" for presentation time
The protocol doesn't have a definition of what it means, but damage is a
flawed interpretation. Color management changes are arguably content updates,
so are viewporter changes, so are blur changes and so on.

Also see https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/36
for an upstream discussion of this
2024-01-18 13:45:18 +00:00
Vlad Zahorodnii
da4f4d7e69 Rename UnmanagedLayer to OverlayLayer
The UnmanagedLayer layer is used for placing overlay content so
rename it to match how it's used in practice.
2024-01-18 13:13:55 +00:00
l10n daemon script
9f10d5d79f GIT_SILENT Sync po/docbooks with svn 2024-01-18 01:20:12 +00:00
Fushan Wen
f79886765d plugins/colorblindnesscorrection: remove duplicate definition in Tritanopia shader 2024-01-17 23:42:58 +00:00
Vlad Zahorodnii
176ae6e692 Drop window type rule
Practically all code assumes that the window type is static and fixing
it would bring extra complexity, which may not be worth given that there
are window rules to control position, focus, layer, etc.

BUG: 466016
2024-01-17 23:05:53 +00:00
Vlad Zahorodnii
5c4acbdddd Introduce layer window rule
The new window rule allows to overwrite the stack layer. It can be
useful on wayland to force picture-in-picture surfaces (which are
xdg-toplevels at the moment) to be placed above fullscreen windows.
Keep above flag is unsuitable because fullscreen windows are placed
higher "above" windows.

CCBUG: 466016
2024-01-17 23:05:53 +00:00
Vlad Zahorodnii
74a193d383 plugins/shakecursor: Use std::deque to store history
It's more suitable for the task. The ShakeDetector constantly adds new
items at the end of the list and pops old items at the front.
2024-01-17 22:00:30 +02:00
Yifan Zhu
597753047d window: use QRect to calculate visiblePixels
If QRectF is used, the exact comparison several lines down will fail.
2024-01-17 18:05:54 +00:00
Yifan Zhu
2dba3d30af window: don't use exact comparison for QRectFs
With fractional geometries, we can only guarantee that
nextMoveResizeGeom eventually is within one unit of
currentMoveResizeGeom.

BUG: 479786
FIXED-IN: 6.0
2024-01-17 18:05:54 +00:00
Nate Graham
e963ae09cc screenedge: reduce default activation delay
Currently there is a 150ms delay before screen edge actions and
hotcorners are triggered; the cursor has to spend that much time there
before they'll activate. This is good for preventing accidental
activations, but also prevents and delays deliberate activations, which
are likely to be more annoying for the user.

To alleviate this, the delay is reduced to 75ms, which still prevents
most of the accidental activations in my testing, while making
deliberate activations faster and easier.
2024-01-17 14:52:05 +00:00
Xaver Hugl
7007599b3f backends/drm: ensure commits are done before vblank
If a commit is applied during vblank, the kernel delays it to the next vblank,
for X11 reasons. To ensure that doesn't happen with KWin, read how long
vblank is for the current mode and adjust the safety margin accordingly.

CCBUG: 477959
2024-01-17 13:47:58 +00:00
David Edmundson
42c61dc6a3 plugins/screencast: Don't recreate the core every stream
Loading pipewire is noticably slow with libpipewire loading a bunch of
internals.

Change from a singleton pattern to being managed by the
ScreencastManager

This is still unloaded if the plugin is explicitly stopped.
2024-01-17 13:27:00 +00:00
Vlad Zahorodnii
9c2f12f98f backends/drm: Provide a way to force color management
It can be handy if kwin runs on a setup not capable of HDR or without an
ICC profile. The output management protocol has not been touched because
the long term goal is to have color management enabled by default. This
is rather for testing purposes.
2024-01-17 13:23:15 +02:00
Xaver Hugl
e9db9cd7d3 plugins/fullscreen: retarget the animation instead of restarting it
BUG: 474488
FIXED-IN: 6.0
2024-01-17 11:18:35 +01:00
Jie Liu
1a1eaee13f Only precompute the geometry restore when m_interactiveMoveResize.initialQuickTileMode is None
If the user wants to move a tiled window but changes their mind and tiles the window back to the previous
position, quickTileGeometryRestore() will return an error value beacause m_electricMaximizing is true and
the m_electricGeometryRestore is the same as the geometry of the window in the last tiled mode.

Now the geometry restore of the tiled window is true when starting interactive move, so we no longer need
to precompute it.

Changes for testQuickTilingPointerMove:

We need to attach a new image after the tiling window, so that updateElectricGeometryRestore can obtain
the same framegeometry as the framegeometry obtained during actual runtime.

Now testQuickTilingPointerMove can detect the error:If the user wants to move a tiled window but changes
their mind and tiles the window back to the previous position, quickTileGeometryRestore() will return an
error value beacause m_electricMaximizing is true and the m_electricGeometryRestore is the same as the
geometry of the window in the last tiled mode.

Signed-off-by: Jie Liu <liujie01@kylinos.cn>
2024-01-17 01:03:27 +00:00
Xaver Hugl
fd2e77317f wayland/surface: store subsurface transaction in a unique_ptr 2024-01-17 00:12:38 +00:00
Xaver Hugl
6ab8f179a7 backends/drm: apply the ICC profile without premultiplication
As a side effect, this ensures that when alpha is zero, rgb is zero as well.
This is needed because the ICC profile may contain transformations where zero
brightness gets mapped to a non-zero value.

BUG: 479380
2024-01-16 19:42:12 +01:00
Xaver Hugl
ed339de953 opengl/glshadermanager: add missing newline
BUG: 479279
2024-01-16 14:42:27 +01:00
David Redondo
203c4998bc Make sure window thumbnails and Qt Quick resources are destroyed properly
Drops the doneCurrent as it was preventing proper cleanUp
because no context was current when textures were deleted.
Also avoid manipulating the context when Qt has the current
one, as various Qt classes have guards around their cleanup
handlers which rely on a current Qt context.
Despite the comment the order of render control and view destruction
needs to be switched as the QQuickWindow destructor calls into
the render control to notify if of window destruction.
BUG:478770
BUG:479846
FIXED-IN:6.0
2024-01-16 13:45:52 +01:00
l10n daemon script
3dd18a543b GIT_SILENT Sync po/docbooks with svn 2024-01-16 01:21:56 +00:00
Xaver Hugl
4433fb48dc backends/drm: make icc profiles work with OpenGL ES
OpenGL doesn't support 1D textures, and has some special requirements in
the shaders, like no implicit conversion from int to float
2024-01-15 18:56:54 +00:00
Joshua Goins
c3d3d83b56 Add missing find_dependency for epoxy
This is required by the KWin target, but was missing a find_dependency
call. If any downstream project tried to link to the KWin::kwin target,
it would fail because epoxy couldn't be found.
2024-01-15 18:02:44 +00:00
David Edmundson
2e6619f3d0 screencasting: Resume streams after buffer renegotiation
When we start renegotiation the stream is pasused. This is not restarted
when the format has been renegotiated.

This occurred when a streaming window was resized
2024-01-15 16:53:01 +00:00
Vlad Zahorodnii
f665dda192 scene: Remove warning message about older presentation timestamps
Outputs present frames at different pace, some can present new content
later, some sooner. If the scene gets a slightly older presentation
timestamp, it's okay.
2024-01-15 15:55:06 +00:00
Vlad Zahorodnii
af39179446 Break show desktop mode if a new window is added
BUG: 479424
2024-01-15 15:41:57 +00:00
Vlad Zahorodnii
359f36d6ab autotests: Add a test to verify that show desktop mode quits after activating a window 2024-01-15 15:41:57 +00:00
Vlad Zahorodnii
3b67edf20d backends/drm: Fix a crash in VirtualEglGbmLayer::texture()
If nothing has been rendered yet, m_currentSlot will be null.

BUG: 475296
BUG: 479558
2024-01-15 15:07:39 +00:00
Vlad Zahorodnii
72c391ebc8 effect: Remove const refs in EffectFrame
It's a micro optimization.
2024-01-15 14:42:27 +00:00
Vlad Zahorodnii
09f97c8037 plugins/mouseclick: Fix glitches
Effect frame geometry is not properly synchronized with the quick
scene geometry.

BUG: 477892
2024-01-15 14:42:27 +00:00
Vlad Zahorodnii
b98607c689 Fix cleanup of forced window shortcuts
XdgToplevelWindow doesn't call finishWindowRules(). It creates a problem
for Workspace::removeWindow() because it calls setShortcut() to release
the window shortcut.

While one way to fix the bug would be to add a finishWindowRules() call
in XdgToplevelWindow, it would perhaps be not the best one because it
would change the appearance of decoration when the window is closed.

Instead, this change makes the workspace release the shortcut when the
window is closed. It has a couple of advantages: the appearance of the
decoration won't change, shortcut cleanup is better encapsulated.

BUG: 478647
2024-01-15 14:24:59 +00:00