Commit graph

19221 commits

Author SHA1 Message Date
Xaver Hugl
49c650eed2 platforms/drm: don't ignore blob properties without valid blobs
Instead of deleting all blob properties without a valid
blob check for the blob existing before using it. This is
necessary because some properties are needed even without
currently valid blobs.

BUG: 435786
2021-04-22 12:40:48 +00:00
Aleix Pol
ee181ef7a5 layershell: Support virtual keyboards
Resize layershell-based clients to adapt to the keyboard when it
appears.
2021-04-22 10:36:36 +00:00
Aleix Pol
b3ddb11b7c drm: hide the cursor as we are setting dpms off
It seems to crash amdgpu and it's consistent with how we're cleaning all
our planes.

BUG: 435941
2021-04-22 10:18:15 +00:00
Aleix Pol
633136d228 drm: remove unused attribute in DrmOutput 2021-04-22 10:17:29 +00:00
Aleix Pol
f1a779d916 tests: clean outputManagement when cleaning interfaces
Otherwise we get crashes trying to access unexisting objects.
2021-04-22 10:16:36 +00:00
Alexander Lohnau
4ed0fe3182 kcmkwin: Port deprecated KNewStuff signals
This also avoids an unnecessary reload when the changedEntries
are cleared.
2021-04-22 07:22:31 +00:00
Vlad Zahorodnii
0d9185053c platforms/drm: Ignore udev events while session is inactive
While the session is inactive, the drm master permissions are revoked.
Therefore, we cannot perform things such as modesetting, etc. It also
makes no sense to create or destroy DrmOutput objects.

CCBUG: 435941
2021-04-21 23:17:54 +00:00
Aleix Pol
f7526f50fe build... 2021-04-21 17:42:55 +02:00
Aleix Pol
8d186efa08 drm: Do not check egl extensions before setting them up 2021-04-21 17:34:07 +02:00
Felipe Kinoshita
1a9b525970 [effects/presentwindows] Display window icons centered
Displaying them centered makes it a bit more visually appealing and
makes it easier to find which window belongs to what application
2021-04-21 15:10:05 +00:00
Xaver Hugl
5a2177a51c platforms/drm: use surfaceless context
On multi-gpu systems it could happen that the primary GPU
has no working outputs attached, yet we still need the
egl context.
2021-04-21 09:06:17 +00:00
Cyril Rossi
1fa66fb504 Remove KCModuleDataSignaling 2021-04-21 06:38:29 +00:00
Cyril Rossi
1e7428841e KCM KWinEffects : add default settings indicator at module level 2021-04-21 06:38:29 +00:00
Cyril Rossi
2870fb7484 KCM KWin VirtualDesktop add KCModuleData to show default indicator at module level 2021-04-21 06:37:42 +00:00
Felipe Kinoshita
16ae008104 [effects/presentwindows] change filterFrame position and text
Move filterFrame to the top of the screen and change it's text,
removing the "Filter: ".
2021-04-20 19:32:04 +00:00
Vlad Zahorodnii
700028b37d Fix build 2021-04-20 14:37:43 +03:00
Vlad Zahorodnii
15f1b9792b Revert "platforms/drm: Introduce DrmPipeline"
This reverts commit 5a22deda3b.

We still need more work to finish the DrmPipeline. At the moment, there
are a few major issues, e.g. some outputs not turning on, output
transforms not working correctly, a crash when changing dpms mode.

Let's merge this change back once all major issues are fixed and after
more testing.
2021-04-20 11:34:04 +00:00
Aleix Pol
d999aa6c6a drm: destroy the gbm device after we are done with all of the objects
Just in case they still need to interact with gbm
2021-04-20 13:02:46 +02:00
Aleix Pol
300f28a5a9 drm: remember to clean up DrmGpu's outputs when destroying 2021-04-20 13:02:46 +02:00
Aleix Pol
d5ac0cf919 drm: Also release the pipeline buffer when DrmOutput::releaseBuffers() 2021-04-20 13:02:46 +02:00
Aleix Pol
b82840d7e0 drm: Don't call virtual methods from a parent class destructor
We'd be relying on AbstractEglDrmBackend on calling cleanup but we'd be
doing it when cleanupSurfaces cannot be reached out anymore, turning it
into a half-baked cleanup.

Instead call cleanup from the leaf class destructors.
2021-04-20 13:02:46 +02:00
Aleix Pol
4c74a24059 Do not schedule further repaints when terminating
We'd hit a deleted options singleton and in any case it's not something
we need.
2021-04-20 13:00:28 +02:00
Xaver Hugl
7a9676dc0a Introduce the legacy flag for drm properties
There are properties like for example rotation
that don't have the atomic flag, yet work and
are needed in atomic mode setting.
2021-04-20 09:22:50 +02:00
Vlad Zahorodnii
5839e59e24 effects: Properly reset present times in coverswitch and flipswitch effects
The last presentation timestamps should be reset when all animations
finish rather than when the effect finishes. Otherwise, the calculated
time diff for the first animation frame will be too big.

BUG: 433471
2021-04-19 17:03:36 +00:00
Xaver Hugl
0292c4a74c platforms/drm: Add support for setting overscan
BUG: 428201
2021-04-19 18:46:41 +02:00
Felipe Kinoshita
ff3cb59967 [effects/presentwindows] Show Panels by default
Showing the panels makes this effect a little bit more integrated
with the desktop. With the panels disabled it creates a separate state,
with the panels enabled it creates a more friendly state with
the effect adding to the already existing experience.
2021-04-19 15:17:32 +00:00
Vlad Zahorodnii
9719d6c5a2 wayland: Fix handling of exclusive zone of -1
We cannot use Workspace::clientArea() to get the geometry of the screen
as the clientArea() method needs a valid frame geometry. This is not the
case if the layer shell surface is being configured for the first time.
2021-04-19 13:16:17 +00:00
Xaver Hugl
7dddcf202b platforms/drm: Don't create outputs without primary plane in AMS 2021-04-19 12:12:26 +00:00
Vlad Zahorodnii
d6cca178f7 wayland: Pick better initial window class string
With ksplash migrating to the layer-shell protocol, it no longer
provides an app id. This means that the window class string will be
different, e.g. "ksplashqml " instead of "ksplashqml ksplashqml", and
some effects (login, etc) will stop working as expected.

In order to keep effects working as before, this change adjusts the
window class initialization in WaylandClient so both the resource class
and the resource name are set to the executable file name.
2021-04-19 09:53:03 +00:00
Vlad Zahorodnii
675d5c4216 effects: Remove outdated ksplash window class strings
ksplash nowadays has only "ksplashqml ksplashqml" window class.
2021-04-19 10:42:58 +03:00
Ömer Fadıl Usta
94f558356b Add missing include for errno 2021-04-16 20:32:50 +00:00
Xaver Hugl
5a22deda3b platforms/drm: Introduce DrmPipeline
DrmPipeline is what now contains all the drm bits related to
modesetting and presentation, instead of that being in DrmOutput.
This gives a lot more freedom for managing drm resources and
enables far better usage of the atomic API with guaranteed
immutability for failed tests.
2021-04-16 20:26:34 +02:00
Aleix Pol
b68cd3110a Fix streaming of windows when we are using a mix of scales
At the moment a streamed screen when the screen scale was differnt
buffer scale would render wrong. This change addresses it by
compensating it.

This change compensates it resizing the rendered viewport to their
difference.

BUG: 428594
2021-04-16 17:18:56 +02:00
Aleix Pol
a8867e292d tablet: Show a default cursor when the cursor has not been set
In this context, the cursor will (almost) always be defined as we set it
as soon as an application is bound to it. We need to show the default
cursor if set_cursor hasn't been called yet. The way to do that is to
check whether the serial is still.
2021-04-15 15:25:55 +00:00
Aleix Pol Gonzalez
bd7300215e Apply 1 suggestion(s) to 1 file(s) 2021-04-15 15:00:52 +00:00
Aleix Pol
ca1e4a255a udev: never construct UdevDevices with a null device
It allows to trust the device we have as it's referenced. We were
already checking for pointer validity when getting them so it still
makes sense.
2021-04-15 15:00:52 +00:00
Aleix Pol
bec580f3c5 udev: Add a method to get all properties of an UdevDevice
It's useful for debugging.
2021-04-15 15:00:52 +00:00
Aleix Pol
01f7ef35e7 drm: Make sure we read all pending udev events 2021-04-15 15:00:52 +00:00
Aleix Pol
d216e74cfc udev@drm: Acknowledge that udev_monitor_receive_device can return NULL
Do not build UDevDevice unless the device itself is valid.
2021-04-15 15:00:52 +00:00
Aleix Pol
97b9e516d1 tablet: account for the activeClient to occasionally being nullptr
Instead use the device assigned output.

 #0  KWin::Toplevel::screen() const (this=0x0) at /home/apol/devel/frameworks/kwin/src/toplevel.cpp:409
 #1  0x00007fe60ad9bef9 in KWin::LibInput::Connection::processEvents() (this=0x55d9efc155f0) at kwin/src/libinput/connection.cpp:579
 #2  0x00007fe60ad4987c in KWin::InputRedirection::setupLibInput()::$_3::operator()() const (this=0x55d9efc29a70) at kwin/src/input.cpp:2315
2021-04-15 15:00:15 +00:00
Aleix Pol
b49c7497fa --warning: remove unused class member 2021-04-15 16:40:38 +02:00
Xaver Hugl
888a08530e Make DrmObject::Property flags const 2021-04-15 11:16:18 +00:00
David Edmundson
ab34fa348c Follow kwindoweffects::windowSizes deprecation 2021-04-15 05:55:46 +00:00
l10n daemon script
82723be8db 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"
2021-04-15 01:16:21 +00:00
Alois Wohlschlager
59f6b77612
Fix crash when stopping PipeWire streaming
The stream object was deleted from a slot connected to its stopStreaming
signal. This is unsafe and can lead to memory corruption and ultimately
crashes when PipWwire streaming is stopped. Use deleteLater instead.

BUG: 428268 435588
2021-04-13 10:28:15 +02:00
Xaver Hugl
68f58076f4 Fix sendToScreen for fullscreen apps
screen() only gets updated after AbstractClient::sendToScreen if invoked
by a shortcut or menu (as opposed to moveresize), so we can't use it in
AbstractClient::updateGeometryRestoresForFullscreen as it points to the
old screen.
2021-04-12 20:47:29 +00:00
Xaver Hugl
a461ff918d platforms/drm: replace dpms property hack with proper check
Instead of marking the dpms property as immutable, read the
DRM_MODE_PROP_ATOMIC flag and only add atomic properties to
atomic requests.
2021-04-12 19:30:17 +02:00
Xaver Hugl
18f857b1f3 platforms/drm: fix crash with multi-gpu 2021-04-11 20:52:08 +02:00
l10n daemon script
fbdcdaf125 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"
2021-04-11 01:15:44 +00:00
Yuri Chornoivan
60d12b91f2 Add touch screen KCM docs 2021-04-10 18:59:20 +03:00