summaryrefslogtreecommitdiffstats
path: root/kwin/workspace.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-08-11 22:17:04 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-08-11 22:17:04 +0000
commita3d5ebbdd70583289b96a74e86dd88f602bea31a (patch)
tree0543b38ce89c6e73e68a038ef933dfa1b965b417 /kwin/workspace.cpp
parent4f1f76a2d336f560ddc6aa5c01f67ceb42ddcbee (diff)
downloadtdebase-a3d5ebbdd70583289b96a74e86dd88f602bea31a.tar.gz
tdebase-a3d5ebbdd70583289b96a74e86dd88f602bea31a.zip
Fix major kompmgr flickering on sesson startup
Note that there is still a (small) single flicker that occurs as the composition is engaged, however this is an Xorg design defect and can only be fixed by loading composition support in kdm git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1246526 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kwin/workspace.cpp')
-rw-r--r--kwin/workspace.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/kwin/workspace.cpp b/kwin/workspace.cpp
index acd3387da..6829b3ccb 100644
--- a/kwin/workspace.cpp
+++ b/kwin/workspace.cpp
@@ -2564,9 +2564,24 @@ void Workspace::helperDialog( const TQString& message, const Client* c )
// kompmgr stuff
-
+
void Workspace::startKompmgr()
{
+ // See if the desktop is loaded yet
+ Atom type;
+ int format;
+ unsigned long length, after;
+ unsigned char* data_root;
+ Atom prop_root;
+ prop_root = XInternAtom(qt_xdisplay(), "_XROOTPMAP_ID", False);
+ if( XGetWindowProperty( qt_xdisplay(), qt_xrootwin(), prop_root, 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data_root) == Success && data_root != NULL ) {
+ // Root pixmap is available; OK to load...
+ }
+ else {
+ // Try again a bit later!
+ TQTimer::singleShot( 200, this, TQT_SLOT(startKompmgr()) );
+ return;
+ }
if (!kompmgr || kompmgr->isRunning())
return;
if (!kompmgr->start(KProcess::OwnGroup, KProcess::Stderr))