Review Request: Improve Style KCM loading time by delaying the Desktop (Plasma) Themes load

Darío Andrés andresbajotierra at gmail.com
Sat Mar 20 14:16:12 CET 2010


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.kde.org/r/3322/
-----------------------------------------------------------

Review request for kdelibs and Plasma.


Summary
-------

Currently the Style KCM takes a few seconds to be started because it loads (from start, and twice) the Workspace (Plasma Themes)
As I sometimes want to only change the Application Widget Style, this load doesn't seem necessary and it consumes time. (it also causes a delay when loading "Appearance" on SystemSettings)

In order to avoid that I propose to load the desktop themes only after the "Workspace" tab is clicked.

I have tested different approaches to not block the UI, but they don't seem to be nice code.
So, the GUI will be blocked for a while, but as we are using QTimer::singleShot(100, ..., loadDesktopTheme), the GUI will be draw a first time, and then the themes will be loaded.
To improve the situation a bit more, I also set the cursor to "waiting" until the themes are loaded and appear on the list
(I was wondering if we could add a label or something saying "Loading themes" .. or if the whole situation is self-explanatory (busy cursor))

I also removed a call which loaded the themes when ThemeModel was created, because that will cause the themes to be loaded twice (taking 1.5~2x time)

[[In our future plans we wanted to split the Workspace theme to its own KCM, but until we do this (and if we ever do it), this seems like a nice improvement]]


Diffs
-----

  svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase/workspace/kcontrol/style/kcmstyle.h 1105269 
  svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase/workspace/kcontrol/style/kcmstyle.cpp 1105269 

Diff: http://reviewboard.kde.org/r/3322/diff


Testing
-------

No regressions so far
The overall KCM startup time decreased a lot
The blocked UI doesn't seem "blocked" as it is properly drawn a first time, and the busy cursor is shown

Was there an alternative to "QTimer::singleShot" just to perform a queued slot call ?


Thanks,

Darío



More information about the Plasma-devel mailing list