Commit graph

18423 commits

Author SHA1 Message Date
Andreas Haratzis
6c9026628c Fix DrmOutput sometimes being freed with a pending pageflip, often when waking from sleep.
It is possible for updateOutputs to be called when a pageflip is pending.
Freeing a DrmOutput with a pending pageflip is not allowed (see ~DrmOutput assert - the page flip handler will be called on the freed memory, possibly leading to use-after-free).
This works around the problem by delaying the destruction with teardown().

BUG: 422460
2020-07-07 18:33:28 -07:00
David Edmundson
9e1bb1f130 [autotests] Fix warning
DrmOutput is a class
2020-07-07 09:24:03 +00:00
Benjamin Port
84b8d866e6 Prevent move/resize event when handling a maximize event 2020-07-07 08:35:12 +00:00
Benjamin Port
2d13bc3aa8 Prevent move/resize event when handling set full screen event
BUG: 421232
2020-07-07 08:35:12 +00:00
Chaojiang Luo
0ef5ddfd47 [drm] Do not blank crtc in atomic mode
In atomic setting mode, when external display tears down, it will blank
crtc with dump buffer by legacy api, then re-plug the external display,
the blank can not be removed. We think the blank is not needed in atomic
mode setting.

Signed-off-by: Chaojiang Luo <chaojiangluo@163.com>
2020-07-03 12:09:34 +08:00
Vlad Zahorodnii
617650d440 [scene] Discard pixmaps on buffer size change
The surface size is a logical size, which renders it unsuitable for
deciding whether the window pixmap needs to be discarded.

We need to discard window pixmaps when the buffer size changes. That
has a drawback though, discarding textures is kind of an overkill with
linux-dmabuf. However, fixing that would involve changes in kwayland
server that are far from being trivial.

BUG: 422459
2020-07-01 09:43:27 +00:00
Vlad Zahorodnii
f7a67e0edc [wayland] Ignore decoration updates if initial state isn't committed yet
or else we might send an unexpected configure event.
2020-07-01 09:18:29 +00:00
Vlad Zahorodnii
1013ee1bd0 [wayland] Queue maximize and fullscreen requests if initial state isn't committed yet
In order to ensure that no configure events will be sent before the full
initial state is committed, we need to queue maximize and full screen
requests or else the client may receive an "unexpected" configure event
and we miss to call initialize().
2020-07-01 09:18:29 +00:00
David Edmundson
1b4c725d10 Update clientGeometry for Unmanaged windows
It was udpated when we received a configure event but not in the initial
track.

The symptom of this being missed out was that blur would not be applied
to the window.

BUG: 423405
CCBUG: 423297
2020-06-30 14:59:54 +01:00
David Edmundson
38691aa0e7 [xwl] Fix xcb to wayland clipboard
A seemingly unrelated change to cursors broke xwayland's clipboard
syncing, presumably because of a change in how startup is ordered with
regards to syncing between our internal wayland connection causing a
crash.

It was fixed with a flush, but ultimately guarding things coming up in
the natural order works better.

Long term plans are to finish removing the internal connection.

See xwayland_selections_test in autotests.
2020-06-29 15:06:33 +01:00
Nicolas Fella
fdbca44d3e Use monochrome icon for keyboard layout sni
All SNIs use monochrome icons, except for this one
2020-06-28 19:12:32 +00:00
Nate Graham
898bd496d8 Merge branch 'Plasma/5.19' 2020-06-25 09:46:22 -06:00
Ismael Asensio
ad3d2f5acf Provide a mask for flag-type properties (window types) 2020-06-25 15:44:11 +00:00
Ismael Asensio
8b9472e0bf [kcm/kwinrules] Fix types property for NET::AllTypesMask
When the user selects all of the types or none of them, the "types"
property must be set to a special value (`NET::AllTypesMask = -1`),
different than the sum of all the flags together.

This re-implements this behaviour as the old KCM, fixing some heuristics
that prevented finding the rule corresponding to the current window.

The enum name that handles this property has been changed to `NetTypes`
to make it more explicit.

BUG: 423214
FIXED-IN: 5.19.3

TEST PLAN:
1. Open the `Application specific settings` on a window via menu
2. Select every "Window Type" (or none of them)
3. Give the rule a different name than the default and save
4. Open it again and check that the same rule is found
2020-06-25 15:44:11 +00:00
Vlad Zahorodnii
fa7fe79825 Merge branch 'Plasma/5.19' 2020-06-25 16:14:12 +03:00
Vlad Zahorodnii
578ede2dd7 Merge branch 'Plasma/5.18' into Plasma/5.19 2020-06-25 16:13:57 +03:00
Vlad Zahorodnii
a0c4a8e766 [x11] Force FocusIn events for already focused windows
Depending on the current focus stealing prevention level, it's possible
for kwin to call XSetInputFocus() on a window that already has the input
focus. In which case, we won't receive the corresponding FocusIn event
and the client will remain inactive from kwin's perspective even though
it isn't.

In order to work around this issue, we can move the input focus to the
null window. By doing so, it's guaranteed that we're going to receive
the matching FocusIn event for the client.

This commit indirectly fixes a bug where fullscreen games are displayed
below panels.
2020-06-25 13:12:44 +00:00
l10n daemon script
6a42eccfec 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"
2020-06-25 09:53:28 +02:00
l10n daemon script
b62f687c37 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"
2020-06-25 09:00:40 +02:00
l10n daemon script
4248f4d9ac 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"
2020-06-25 05:49:56 +02:00
Ismael Asensio
eb6e439335 Merge branch 'Plasma/5.19' 2020-06-24 21:22:43 +02:00
Ismael Asensio
3bfc750a79 [kcm/kwinrules] Fix detection of wmclass property
Property `wmclass` of a window rule works in a special way, as it can have
two meanings depending on `wmclasscomplete` flag:
- false: only matches `resourceClass`
- true: matches `resourceName` and `resourceClass`

This MR fixes two subtle bugs when detecting the properties of a window:

In the first case, `resourceName` was being wrongly set instead, which
prevented window matching for windows where those two values differ.

Also, the `wmclass` field was always set to `resourceName` independently
of `wmclasscomplete` property.

BUG: 423138
FIXED-IN: 5.19.3
2020-06-24 18:13:42 +00:00
Vlad Zahorodnii
c03b4879f0 Merge branch 'Plasma/5.19' 2020-06-24 17:26:19 +03:00
Vlad Zahorodnii
ec5a0249e2 [x11] Hold a passive grab on buttons only when needed
Due to a bug in the XI2 protocol, clients have to reset scroll valuators
on XI_Enter because the scroll valuators might have changed while the
pointer was elsewhere. The XI_Enter event is usually sent when an input
device enters the window, but it can also be generated by a passive grab.

If an XI_Enter event has been generated by a passive grab, the client
should not reset scroll valuators. Unfortunately, there is no any
reliable way for the client to determine if an XI_Enter event has been
sent in response to a deactivated passive grab. A correct fix for the
scroll issues in GTK apps would involve changes in the XI2 protocol.

As a work around, we can hold a passive grab only if the current mouse
wheel action is either "Activate and scroll" or "Activate, raise, and
scroll."

BUG: 394772
FIXED-IN: 5.19.3
2020-06-24 13:48:54 +00:00
Méven Car
61b55732ae Tests: Add outputmanagement to test helper 2020-06-24 11:17:42 +02:00
Cyril Rossi
170741c499 KCM KWin Decoration : kcfgc File attribute should point to kcfg file
BUG: 423398
FIXED-IN: 5.19.3
2020-06-24 09:48:40 +02:00
Vlad Zahorodnii
ad73e13478 [wayland] Switch to SurfaceInterface::bufferScale()
SurfaceInterface::scale() has been renamed to SurfaceInterface::bufferScale().
2020-06-24 06:59:15 +00:00
Chris Holland
e1b5fc9fac The old behavior before D28224 was (X + Y) instead of (X + X) 2020-06-24 06:54:44 +00:00
Aleix Pol
e459c8bf54 No need to recalculate the matrix if yInverted doesn't change 2020-06-23 14:58:48 +02:00
Jonathan Riddell
c1b1fb0b21 Update version number for 5.19.2
GIT_SILENT
2020-06-23 11:18:17 +01:00
David Edmundson
34c1bccdb7 Fix build with loadThemeCursor templates
WaylandCursorImage::loadThemeCursor(const T &shape) uses templates.
These templates are used by input.cpp but the deifnition is in
pointer_input.cpp

On some setups this creates a compilation problem.

This patch introduces an explicit non-templated declaration with the
defintion explicitly complied into the same class.

In master this has been refactored away anyway, so this is a minimal
patch to make things working in the least invasive way.

BUG: 423052
2020-06-22 16:51:38 +01:00
Nate Graham
2af16f1ee0 Merge branch 'Plasma/5.19' 2020-06-22 07:49:27 -06:00
Aleix Pol
e1bf133de7 Fix support for systems with age disabled
If no damage is supported, repaint all the output rather than nothing.
2020-06-22 09:46:27 +00:00
Benjamin Port
a8979aa4e4 KCM Compositing: Fix save state
use settings objects to track state instead of a class member that will need to be synchronized.

BUG: 423223
2020-06-22 09:24:11 +02:00
l10n daemon script
b5040fe425 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"
2020-06-20 07:42:21 +02:00
l10n daemon script
7a30443322 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"
2020-06-20 05:13:31 +02:00
David Edmundson
c567d51749 Apply suggestion to xdgshellclient.cpp 2020-06-19 08:56:14 +00:00
David Edmundson
3f1fb873dd Apply suggestion to xdgshellclient.cpp 2020-06-19 08:56:14 +00:00
David Edmundson
e02fe34e17 [wayland] Avoid debug recursion in XdgShellClients
QDebug& operator<<(QDebug& stream, TopLevel*)
calls TopLevel::debug(stream)

So our implementation has to provide something custom not call the base
class.

Debug here is loosely based on X11Client. It probably can be expanded on
in time, but at least it won't crash.
2020-06-19 08:56:14 +00:00
David Edmundson
9bc65e8151 [autotests] Update PlasmaSurfaceTest to match recently changed behaviour
0c9e481577 changed the layer of
WindowsGoBelow. The relevant unit test was not updated.
2020-06-19 08:44:29 +00:00
David Edmundson
494b67d610 [autotests] Fix quick tile autotest race condition
We send two async actions via another process
We do a wait for one
We check that we received two events

This is racey. QTRY_COMPARE can allow both events to arrive separately.
2020-06-19 08:28:45 +00:00
Vlad Zahorodnii
4a681e3d47 [scene] Discard quads when the surface-to-buffer matrix is changed
The surface-to-buffer matrix provides a generic mechanism for mapping
things from the surface-local coordinate space to the buffer coordinate
space. If it changes, we know for sure that the texture coordinates
have to be re-computed.
2020-06-19 06:45:33 +00:00
Méven Car
1d34d29222 Merge branch 'Plasma/5.19' 2020-06-18 12:30:16 +02:00
Méven Car
396a9da557 KCMoptions: delay initialization after QObject creation in standalone
BUG: 423111
FIXED-IN: 5.19.2
2020-06-18 12:15:18 +02:00
Vlad Zahorodnii
23113d38c6 Update cached client size when the client geometry has changed
The usage of geometryShapeChanged() is highly discouraged because it is
emitted when geometry of any kind has been changed, e.g. buffer geometry,
frame geometry, etc.

This change ports DecoratedClientImpl to the clientGeometryChanged()
signal, so the cached client size will be updated only after the client
geometry has actually changed.
2020-06-18 07:40:58 +00:00
Vlad Zahorodnii
cc3eb54b32 Introduce the client geometry in Toplevel
In most cases, we don't need to react to client geometry changes, but in
code that deals with server-side window decorations, we need to react to
client geometry changes. The problem is that frame and client geometry
updates are not correlated even though there is a connection between the
frame geometry and the client geometry.

This change introduces the client geometry in the Toplevel class in order
to allow monitoring client geometry updates from DecoratedClientImpl.
2020-06-18 07:40:58 +00:00
Vlad Zahorodnii
68ec39f433 [xwayland] Ensure that DataBridge is initialized prior to PropertyNotify
Since WaylandCursorImage no longer flushes the internal connection
connection and dispatches events, the DataBridge must do it to ensure
that the selections are initialized prior to receiving a ProperyNotify
event.
2020-06-18 07:14:58 +00:00
Vlad Zahorodnii
cb7a9456c0 [wayland] Rework Xcursor theme loading code
Currently in order to load an Xcursor theme, kwin uses libwayland api,
which looks really awkward because of the way how the compositor talks
to itself via the internal connection.

The main motivation behind this change is to limit the usage of kwayland
client api in kwin.
2020-06-18 07:14:58 +00:00
Vlad Zahorodnii
317bc74c86 [wayland] Simplify WaylandCursorImage
Cached cursor lookup tables aren't used anywhere so drop relevant methods
that populate those tables in order to make the code simpler.
2020-06-18 07:14:58 +00:00
l10n daemon script
f3356b1f4f 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"
2020-06-18 09:05:32 +02:00