Bug 359251 - kwin Effect "Dim Inactive" flickers in steam menus
Summary: kwin Effect "Dim Inactive" flickers in steam menus
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: effects-various (show other bugs)
Version: 5.5.4
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-02-10 22:05 UTC by FabiB
Modified: 2018-08-21 08:59 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 5.14.0
Sentry Crash Report:


Attachments
vidoe thats shows buggy behavior of steam with dim-inective-effect (1.34 MB, video/x-matroska)
2016-02-11 13:34 UTC, FabiB
Details

Note You need to log in before you can comment on or make changes to this bug.
Description FabiB 2016-02-10 22:05:24 UTC
when you enable this effect all inactive windows are drawn a little darker. for normal windows the menu doesnt interact with this effect. -> a menu will not change the brightness of a window

with steam its differen. every menu will darken the steam window itself. so this effect let steam flicker in this case.

maybe stem menus arend real menus and are handled as normal windows but i cant get a windowid with all the known tools -> xwininfo, kwins doalog to get infos

Reproducible: Always

Steps to Reproduce:
1. enable the "Dim Inactive" effect
2. start steam (and login)
3. use the menus of steam

Actual Results:  
it will flicker with every menu

Expected Results:  
steam should stay the same.
Comment 1 Martin Flöser 2016-02-11 07:21:49 UTC
I don't have steam installed, but that sounds like a bug in steam. A menu should be an override redirect window and not an actual window which can be active.

xwininfo probably doesn't work because steam grabs the pointer. You can though use
xwininfo -tree -root

to get all windows. That way you should be able to find the window and also use xprop on it (accepts id). If you can get xprop of a steam menu please attach it to this bug report.
Comment 2 Thomas Lübking 2016-02-11 11:08:46 UTC
run "xprop -root -spy _NET_ACTIVE_WINDOW", if that updates when opening the popup, it's a managed client - and you likely just got it's WId to pass "-id <WID>" to xprop/xwininfo (the popup could activate some dummy window, but that's the less likely explanation)
Comment 3 FabiB 2016-02-11 13:34:06 UTC
Created attachment 97150 [details]
vidoe thats shows buggy behavior of steam with dim-inective-effect

with xprop:
xprop -root -spy _NET_ACTIVE_WINDOW
_NET_ACTIVE_WINDOW(WINDOW): window id # 0x0

xwininfo (i really dont know what the 'menu' could be ...)
sleep 3 && xwininfo -tree -root

xwininfo: Window id: 0x4c3 (the root window) (has no name)

  Root window id: 0x4c3 (the root window) (has no name)
  Parent window id: 0x0 (none)
     127 children:
     0xa00037 (has no name): ("Steam" "Steam")  160x168+772+140  +772+140
     0x1e02e16 "KWin": ("kwin_x11" "kwin")  300x1092+0+0  +0+0
     0x1e02d42 (has no name): ()  1x1+0+0  +0+0
     0x8800001 (has no name): ()  1x1+0+0  +0+0
     0xa00033 (has no name): ("Steam" "Steam")  132x144+484+294  +484+294
     0xa000b2 (has no name): ("Steam" "Steam")  197x249+568+294  +568+294
     0xa00035 (has no name): ("Steam" "Steam")  153x144+724+294  +724+294
     0x200012 (has no name): ()  3x3+0+0  +0+0
     0x200006 (has no name): ()  1x1+0+0  +0+0
     0x200004 (has no name): ()  1x1+0+0  +0+0
     0x200003 (has no name): ()  3x3+0+0  +0+0
     0x7800001 (has no name): ()  1x1+0+0  +0+0
     0xa00073 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00071 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0006f (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0006d (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0006b (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00069 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00067 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00065 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00063 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00061 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0005f (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0005d (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0005b (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00059 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00057 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00055 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00053 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00051 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0004f (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0004d (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0004b (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00049 "Server": ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00047 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00045 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00043 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00041 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0003f (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0003d (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0003b (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00031 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0002f (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0002d (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0002b (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00029 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00027 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00023 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00021 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0001f (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xa0001d "Freunde": ("Steam" "Steam")  64x24+0+0  +0+0
     0xa00005 (has no name): ("Steam" "Steam")  64x24+0+0  +0+0
     0xe00001 "steam": ("steam" "Steam")  10x10+10+10  +10+10
        1 child:
        0xe00002 (has no name): ()  1x1+-1+-1  +9+9
     0x1400011 "krunner": ("krunner" "krunner")  586x689+667+43  +667+43
     0x1400015 (has no name): ()  3x3+0+0  +0+0
     0x7400001 (has no name): ()  1x1+0+0  +0+0
     0x7200004 (has no name): ()  1x1+0+0  +0+0
     0x7200003 (has no name): ()  3x3+0+0  +0+0
     0x6e00003 (has no name): ()  3x3+0+0  +0+0
     0x6a00003 (has no name): ()  3x3+0+0  +0+0
     0x6800003 (has no name): ()  3x3+0+0  +0+0
     0x6200003 (has no name): ()  3x3+0+0  +0+0
     0x6600003 (has no name): ()  3x3+0+0  +0+0
     0x6000003 (has no name): ()  3x3+0+0  +0+0
     0x6400003 (has no name): ()  3x3+0+0  +0+0
     0x5e00003 (has no name): ()  3x3+0+0  +0+0
     0x5c00003 (has no name): ()  3x3+0+0  +0+0
     0x5800003 (has no name): ()  3x3+0+0  +0+0
     0x5a00003 (has no name): ()  3x3+0+0  +0+0
     0x5600003 (has no name): ()  3x3+0+0  +0+0
     0x5000003 (has no name): ()  3x3+0+0  +0+0
     0x5200003 (has no name): ()  3x3+0+0  +0+0
     0x5400003 (has no name): ()  3x3+0+0  +0+0
     0x4e00003 (has no name): ()  3x3+0+0  +0+0
     0x4c00003 (has no name): ()  3x3+0+0  +0+0
     0x4a00003 (has no name): ()  3x3+0+0  +0+0
     0x4800003 (has no name): ()  3x3+0+0  +0+0
     0x1e00034 (has no name): ()  306x419+0+0  +0+0
     0x4600003 (has no name): ()  3x3+0+0  +0+0
     0x4400003 (has no name): ()  3x3+0+0  +0+0
     0x4200003 (has no name): ()  3x3+0+0  +0+0
     0x4000003 (has no name): ()  3x3+0+0  +0+0
     0x3c00001 "solaar": ("solaar" "Solaar")  10x10+10+10  +10+10
     0x3a0000a "kwalletd": ("kwalletd" "Kwalletd")  960x432+0+0  +0+0
     0x3a00004 (has no name): ()  1x1+0+0  +0+0
     0x3a00002 "kwalletd": ("kwalletd" "Kwalletd")  960x432+0+0  +0+0
     0x380000a "kded4": ("kded4" "Kded4")  960x432+0+0  +0+0
     0x3800004 (has no name): ()  1x1+0+0  +0+0
     0x3800002 "kded4": ("kded4" "Kded4")  960x432+0+0  +0+0
     0x3200003 (has no name): ()  3x3+0+0  +0+0
     0x1e0001c (has no name): ()  1x1+0+0  +0+0
     0x1e0001b (has no name): ()  1x1+0+0  +0+0
     0x800009 (has no name): ()  1x1+0+0  +0+0
     0x2e00003 (has no name): ()  3x3+0+0  +0+0
     0x1400014 (has no name): ()  1x1+0+0  +0+0
     0x2400004 (has no name): ()  1x1+0+0  +0+0
     0x2c00003 (has no name): ()  3x3+0+0  +0+0
     0x2a00003 (has no name): ()  3x3+0+0  +0+0
     0x2800003 (has no name): ()  3x3+0+0  +0+0
     0x1e00009 (has no name): ()  1x1+0+0  +0+0
     0x2400003 (has no name): ()  3x3+0+0  +0+0
     0x1e00007 (has no name): ()  1x1+-1+-1  +-1+-1
     0x1400012 (has no name): ()  1x1+0+0  +0+0
     0x2200003 (has no name): ()  3x3+0+0  +0+0
     0x1e00004 (has no name): ()  1x1+0+0  +0+0
     0x1e00003 (has no name): ()  3x3+0+0  +0+0
     0x1400003 (has no name): ()  3x3+0+0  +0+0
     0x1200005 (has no name): ()  1x1+0+0  +0+0
     0x1a00004 (has no name): ()  1x1+0+0  +0+0
     0x1a00003 (has no name): ()  3x3+0+0  +0+0
     0x1600004 (has no name): ()  1x1+0+0  +0+0
     0xc00004 (has no name): ()  1x1+0+0  +0+0
     0x1800003 (has no name): ()  3x3+0+0  +0+0
     0x1600003 (has no name): ()  3x3+0+0  +0+0
     0x1200003 (has no name): ()  3x3+0+0  +0+0
     0xc00003 (has no name): ()  3x3+0+0  +0+0
     0x600001 (has no name): ()  1x1+0+0  +0+0
     0x800003 (has no name): ()  3x3+0+0  +0+0
     0x400003 (has no name): ()  3x3+0+0  +0+0
     0x1e00008 "KWin": ()  1x1+0+0  +0+0
     0x1e00012 (has no name): ()  1x1+0+0  +0+0
     0x1e00013 (has no name): ()  32x32+0+0  +0+0
     0x1e00019 (has no name): ()  1x1+1919+0  +1919+0
     0x1e0001a (has no name): ()  32x32+1888+0  +1888+0
     0x1e019e4 (has no name): ()  1286x660+293+73  +293+73
        1 child:
        0x1e019e5 (has no name): ()  1286x660+0+0  +293+73
           1 child:
           0xa00025 "Steam": ("Steam" "Steam")  1286x660+0+0  +293+73
     0x1e01aab (has no name): ()  1193x639+561+453  +561+453
     0x1e01aa8 (has no name): ()  1169x627+573+453  +573+453
        1 child:
        0x1e01aa9 (has no name): ()  1169x590+0+37  +573+490
           1 child:
           0x200005 "fabi : sleep — Konsole": ("konsole" "konsole")  1169x590+0+0  +573+490
Comment 4 Thomas Lübking 2016-02-11 16:06:30 UTC
These ones make splendid candidates:
     0xa00033 (has no name): ("Steam" "Steam")  132x144+484+294  +484+294
     0xa000b2 (has no name): ("Steam" "Steam")  197x249+568+294  +568+294
     0xa00035 (has no name): ("Steam" "Steam")  153x144+724+294  +724+294

It however seems they simply deactivate their main window (if the property turns to 0x0 and nothing else afterwards when showing such popup)

An inspection of the windows might stil show up interesting things, but clients are free to deactivate themselves whenever it pleases them.

Is the steam client written in Qt5 (sorry for my ignorance ;-)
Comment 5 Martin Flöser 2016-02-11 16:13:42 UTC
(In reply to Thomas Lübking from comment #4)
> Is the steam client written in Qt5 (sorry for my ignorance ;-)

AFAIK it's sdl
Comment 6 Vlad Zahorodnii 2018-08-21 08:50:49 UTC
Git commit 5165ee45b5e3448f46490edfe9326375ffa91a29 by Vlad Zagorodniy.
Committed on 21/08/2018 at 08:50.
Pushed by vladz into branch 'master'.

[effects] Rewrite the Dim Inactive effect

Summary:
The Dim Inactive effect was rewritten mostly to fix most of issues with
it, e.g. after leaving a full screen effect(e.g. Desktop Grid) windows
sometimes are not dimmed back, or when a window becomes inactive there
is no smooth transition, etc.

{F5956124}
//Before: the window is not smoothly dimmed.//

{F5956127}
//After: the window is smoothly dimmed.//

In combination with an effect that animates the disappearing of windows,
e.g. Glide, the rewritten Dim Inactive effect doesn't "flash" windows.
If an active window has been closed, it will stay bright. If an inactive
window has been closed, it will stay dimmed.

Among other changes, the KCM has been re-designed to follow common KCM
design in Plasma:

{F5956128, layout=center, size=full}

The way the rewritten Dim Inactive effect handles flashing/flickering problem can be
reused in the Dialog Parent effect.

### Demo

{F5959885}
//Before: dimming of a window group.//

{F5959886}
//After: Dimming of a window group.//

Depends on D13740

Test Plan:
Test plan #1
* Activated the Desktop Grid effect
* Dimmed windows smoothly brightened
* Left desktop grid
* Windows dimmed back

Test plan #2
* Opened Dolphin and its Preferences window
* Clicked on desktop, both Dolphin and the Preferences window dimmed
* Clicked on Dolphin, both windows smoothly brightened back

Reviewers: #kwin, #plasma, #vdg, davidedmundson

Reviewed By: #kwin, #plasma, #vdg, davidedmundson

Subscribers: davidedmundson, abetts, ngraham, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D13720

M  +329  -81   effects/diminactive/diminactive.cpp
M  +91   -48   effects/diminactive/diminactive.h
M  +11   -20   effects/diminactive/diminactive_config.cpp
M  +8    -12   effects/diminactive/diminactive_config.h
M  +39   -107  effects/diminactive/diminactive_config.ui

https://commits.kde.org/kwin/5165ee45b5e3448f46490edfe9326375ffa91a29
Comment 7 Vlad Zahorodnii 2018-08-21 08:58:45 UTC
The rewritten effect has a fix for this bug, so marking it as fixed.

Also, maybe we have to report bug upstream.