Blob Blame History Raw
--- trunk/KDE/kdebase/workspace/kwin/composite.cpp	2008/07/24 13:00:06	837331
+++ trunk/KDE/kdebase/workspace/kwin/composite.cpp	2008/07/28 11:49:43	838646
@@ -253,6 +253,9 @@
         }
     delete popup; // force re-creation of the Alt+F3 popup (opacity option)
     popup = NULL;
+    // discard all Deleted windows (#152914)
+    while( !deleted.isEmpty())
+        deleted.first()->discard( Allowed );
 #endif
     }
 
--- trunk/KDE/kdebase/workspace/kwin/deleted.cpp	2008/05/20 22:01:49	810520
+++ trunk/KDE/kdebase/workspace/kwin/deleted.cpp	2008/07/28 11:49:43	838646
@@ -48,6 +48,13 @@
     return d;
     }
 
+// to be used only from Workspace::finishCompositing()
+void Deleted::discard( allowed_t )
+    {
+    delete_refcount = 0;
+    delete this;
+    }
+
 void Deleted::copyToDeleted( Toplevel* c )
     {
     assert( dynamic_cast< Deleted* >( c ) == NULL );
--- trunk/KDE/kdebase/workspace/kwin/deleted.h	2007/11/27 19:40:25	742302
+++ trunk/KDE/kdebase/workspace/kwin/deleted.h	2008/07/28 11:49:43	838646
@@ -35,6 +35,7 @@
         // used by effects to keep the window around for e.g. fadeout effects when it's destroyed
         void refWindow();
         void unrefWindow( bool delay = false );
+        void discard( allowed_t );
         virtual int desktop() const;
         virtual QPoint clientPos() const;
         virtual QSize clientSize() const;