[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kwin
Subject:    KDE/kdebase/workspace/ksmserver
From:       Lucas Murray <lmurray () undefinedfire ! com>
Date:       2010-02-01 7:40:52
Message-ID: 1265010052.996854.29455.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1083334 by lmurray:

Provide more information about the logout status to the compositor so it
can do nicer logout effects.
CCMAIL: kwin@kde.org


 M  +3 -0      shutdown.cpp  
 M  +19 -1     shutdowndlg.cpp  
 M  +1 -0      shutdowndlg.h  


--- trunk/KDE/kdebase/workspace/ksmserver/shutdown.cpp #1083333:1083334
@@ -220,6 +220,8 @@
         }
         if ( clients.isEmpty() )
             completeShutdownOrCheckpoint();
+    } else {
+        KSMShutdownFeedback::logoutCanceled(); // make the screen become normal again
     }
     dialogActive = false;
 }
@@ -369,6 +371,7 @@
 {
     Solid::PowerManagement::stopSuppressingSleep(inhibitCookie);
     kDebug( 1218 ) << "Client " << c->program() << " (" << c->clientId() << ") canceled shutdown.";
+    KSMShutdownFeedback::logoutCanceled(); // make the screen become normal again
     KNotification::event( "cancellogout" , i18n( "Logout canceled by '%1'", c->program()),
         QPixmap() , 0l , KNotification::DefaultEvent  );
     clientInteracting = 0;
--- trunk/KDE/kdebase/workspace/ksmserver/shutdowndlg.cpp #1083333:1083334
@@ -120,8 +120,16 @@
             if( props != NULL )
                 XFree( props );
         }
-        if( wmsupport )
+        if( wmsupport ) {
+            // Announce that the user MAY be logging out (Intended for the compositor)
+            Atom announce = XInternAtom(dpy, "_KDE_LOGGING_OUT", False);
+            unsigned char dummy = 0;
+            XChangeProperty(dpy, QX11Info::appRootWindow(), announce, announce, 8, PropModeReplace,
+                &dummy, 1);
+
+            // Don't show our own effect
             return;
+        }
     }
     s_pSelf = new KSMShutdownFeedback();
     s_pSelf->show();
@@ -133,6 +141,16 @@
     s_pSelf = NULL;
 }
 
+void KSMShutdownFeedback::logoutCanceled()
+{
+    if( KWindowSystem::compositingActive()) {
+        // We are no longer logging out, announce (Intended for the compositor)
+        Display* dpy = QX11Info::display();
+        Atom announce = XInternAtom(dpy, "_KDE_LOGGING_OUT", False);
+        XDeleteProperty(QX11Info::display(), QX11Info::appRootWindow(), announce);
+    }
+}
+
 ////////////
 
 KSMPushButton::KSMPushButton( const QString &text, QWidget *parent, bool smallButton )
--- trunk/KDE/kdebase/workspace/ksmserver/shutdowndlg.h #1083333:1083334
@@ -49,6 +49,7 @@
 public:
     static void start();
     static void stop();
+    static void logoutCanceled();
 
 protected:
     ~KSMShutdownFeedback() {}
_______________________________________________
kwin mailing list
kwin@kde.org
https://mail.kde.org/mailman/listinfo/kwin
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic