Bug 356561

Summary: [REGRESSION] [bisected] Rendering delays, slowdown
Product: [Plasma] Breeze Reporter: Peter Wu <peter>
Component: QStyleAssignee: Hugo Pereira Da Costa <hugo.pereira.da.costa>
Status: RESOLVED FIXED    
Severity: normal CC: grawity, hugo.pereira.da.costa
Priority: NOR    
Version: 5.5.0   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Peter Wu 2015-12-12 14:59:34 UTC
Since upgrading from breeze 5.4.3-2 to 5.5.0-2 on Arch Linux, starting Wireshark is 500% slower (5 seconds instead of 1).

Bisection points to 6d852f30a1f2c1988359d4e0cdb21e2f1714a6bd (bug 344425). Reverting this on 5.5.0 (or master, c327915) restores the previous sane behavior.

Reproducible: Always

Steps to Reproduce:
1. Install wireshark-qt (which uses Qt5) on Arch Linux
Start it with:

time echo 'os.exit()' | HOME=/tmp/wshome2 /usr/bin/wireshark -X lua_script:/dev/stdin

Actual Results:  
The screen stays transparant for some seconds, then finally shows the progress bar and then exits after five seconds.

Expected Results:  
It should immediately show the progress bar and then exit in one second.

Relevant package versions:
breeze        5.5.0-2
wireshark-qt  2.0.0-2
qt5-base      5.5.1-5
Comment 1 Peter Wu 2015-12-12 15:07:16 UTC
Forgot to mention that this does not just impact the startup, it also affects runtime. When scrolling through the packet list, the packet detail view is updated after a delay (the packet byte view and packet list view instead update immediately).
Comment 2 Hugo Pereira Da Costa 2015-12-12 20:03:10 UTC
Hi Peter,

Thanks for reporting ! 

I'll investigate. So far I have not seen any regression on my side concerning rendering/startup time with this change, but have not tested the same apps as you yet.

In any case, most probably this whole section of code will go, rather sooner than later:
- it is not bullet proofed,
- the reason why it fixes the bug it fixed is not clear at all,
- it causes other super weird issues (see bug #356343), which I in fact would be interested to know if you could reproduce.

Will keep you posted

best,

Hugo
Comment 3 Peter Wu 2015-12-12 21:15:42 UTC
I cannot reproduce the persistent from-behind rendering as shown on the screenshot, but I do notice a delay in rendering (the konsole window appears with window decorations, but the contents of the window is empty for a second, showing the image of the programs behind it). My Konsole theme has opacity enabled, I don't know if that matters here.

Additional hardware/software details:
integrated Intel GPU from i5-560M using AccelMethod uxa (not sna)
xf86-video-intel 1:2.99.917+478+gdf72bc5-3
linux 4.3.0
Comment 4 Hugo Pereira Da Costa 2015-12-15 23:41:32 UTC
Git commit c5e48d765ab7ea71b0a4e30fe6482ed7e7be026f by Hugo Pereira Da Costa.
Committed on 15/12/2015 at 23:40.
Pushed by hpereiradacosta into branch 'master'.

- Removed palette helper.
Special background for groupboxes, menus, etc is now handled directly in the painting routine rather than adjusting
the palette. This was indeed breaking palette inheritance, and requiring hacks that apparently posed some performance
regressions.
- check documentMode to decide tab background color.
Related: bug 356343

M  +0    -1    kstyle/CMakeLists.txt
M  +2    -37   kstyle/breezehelper.cpp
M  +0    -13   kstyle/breezehelper.h
D  +0    -188  kstyle/breezepalettehelper.cpp
D  +0    -94   kstyle/breezepalettehelper.h
M  +43   -15   kstyle/breezestyle.cpp
M  +0    -4    kstyle/breezestyle.h

http://commits.kde.org/breeze/c5e48d765ab7ea71b0a4e30fe6482ed7e7be026f
Comment 5 Hugo Pereira Da Costa 2015-12-15 23:44:46 UTC
Ok. Commit from previous comment should fix it
(by removing the guilty code alltogether)
would be nice if you could double check (compiling "breeze" from git master, which is really not a big deal).
also, please report if you uncover any "visual regression". 
I'll double check myself for a couple of days, before backporting to the 5.5 branch.
Comment 6 Hugo Pereira Da Costa 2016-01-11 19:20:55 UTC
Git commit 2cae9359188af85ac884e2709c17592bc67b0e73 by Hugo Pereira Da Costa.
Committed on 11/01/2016 at 19:20.
Pushed by hpereiradacosta into branch 'Plasma/5.5'.

- Removed palette helper.
Special background for groupboxes, menus, etc is now handled directly in the painting routine rather than adjusting
the palette. This was indeed breaking palette inheritance, and requiring hacks that apparently posed some performance
regressions.
- check documentMode to decide tab background color.
Related: bug 356343

M  +0    -1    kstyle/CMakeLists.txt
M  +2    -37   kstyle/breezehelper.cpp
M  +0    -13   kstyle/breezehelper.h
D  +0    -188  kstyle/breezepalettehelper.cpp
D  +0    -94   kstyle/breezepalettehelper.h
M  +43   -15   kstyle/breezestyle.cpp
M  +0    -4    kstyle/breezestyle.h

http://commits.kde.org/breeze/2cae9359188af85ac884e2709c17592bc67b0e73