esjeon created this revision.
Herald added a project: Plasma.
Herald added a subscriber: plasma-devel.
esjeon requested review of this revision.
REVISION SUMMARY
This is an attempt to resolve bug 362857. A number of users have complained
about restored application not supporting desktop effects, like transparency
and blurring. This is caused by a race condition where restored applications
start before KWin (and its compositor) finishes its initialization. Under this
condition, applications fail to detect compositor and disable desktop effect on
themselves.
This patch tries to avoid this race condition by inserting delay b/w
initialization of KSM server, which starts KWin (or user-designated WM), and
start-up phase 0. At the same time, the patch also tries to minimize the actual
delay by detecting KWin and compositors using D-Bus and KWindowSystem
repectively.
TEST PLAN
The nature of this bug (graphics!) forces the use of physical machines for
testing, but not every machine can reproduce this. Old hardware w/ proprietary
graphics driver is recommended.
- Pre-requisite:
1. "Restore previous session" option enabled under "Desktop Session".
2. Konsole set up w/ transparent window
3. Verify that the bug is reproducible on your machine (Reboot might be
required)
- Test 1: session restores normally
1. Login, open Konsole, logout, and re-login
2. Konsole should be restored.
- Test 2: KWin w/ compositor, restore w/ desktop effect.
1. Login, open Konsole, reboot, and login.
2. Konsole should be restored w/ transparent background.
- Test 3: Other WM w/ compositor, restore w/ desktop effect.
1. Put the following into `~/.xinitrc` (edit it to fit your env.): `export
KDEWM=/usr/bin/dwm; picom & exec startplasma-x11`
2. From Linux console, run `xinit`.
3. Konsole should be restored w/ transparent background.
REPOSITORY
R120 Plasma Workspace
REVISION DETAIL
https://phabricator.kde.org/D26338
AFFECTED FILES
startkde/plasma-session/CMakeLists.txt
startkde/plasma-session/main.cpp
startkde/plasma-session/startup.cpp
startkde/plasma-session/startup.h
To: esjeon
Cc: plasma-devel, LeGast00n, The-Feren-OS-Dev, jraleigh, zachus, fbampaloukas,
GB_2, ragreen, ZrenBot, ngraham, alexeymin, himcesjf, lesliezhai, ali-mohamed,
jensreuterberg, abetts, sebas, apol, ahiemstra, mart