[nanny] Close session with nanny-desktop-blocker on win32



commit 4aea102e717ab7c6eeefb29088e12f1cda0d0c32
Author: Roberto Majadas <roberto majadas openshine com>
Date:   Fri Oct 29 12:43:26 2010 +0200

    Close session with nanny-desktop-blocker on win32

 client/gnome/admin/src/DesktopBlocker.py |    5 +++++
 daemon/src/Win32SessionFiltering.py      |   16 ++++++----------
 2 files changed, 11 insertions(+), 10 deletions(-)
---
diff --git a/client/gnome/admin/src/DesktopBlocker.py b/client/gnome/admin/src/DesktopBlocker.py
index d89a3e1..0c62a04 100644
--- a/client/gnome/admin/src/DesktopBlocker.py
+++ b/client/gnome/admin/src/DesktopBlocker.py
@@ -24,6 +24,9 @@ import os
 import sys
 if os.name == "posix":
     import dbus
+elif os.name == "nt" :
+    from ctypes import *
+
 
 import gtk
 import gtk.gdk
@@ -97,6 +100,8 @@ class DesktopBlocker(gtk.Window):
         return False
         
     def __close_button_clicked_cb(self, widget, data):
+        if os.name == "nt" :
+            windll.user32.ExitWindowsEx(0)
         sys.exit(0)
         
     def __time_button_clicked_cb(self, widget, data):
diff --git a/daemon/src/Win32SessionFiltering.py b/daemon/src/Win32SessionFiltering.py
index 1a58cf4..54d0724 100644
--- a/daemon/src/Win32SessionFiltering.py
+++ b/daemon/src/Win32SessionFiltering.py
@@ -75,16 +75,7 @@ class Win32SessionBlocker(gobject.GObject) :
     def blocker_terminate_from_thread(self, user_id, ret):
         print "[W32SessionFiltering] self.blocker_terminate_from_thread %s %s" % (user_id, ret)
         if ret == 0:
-            self.block_status.pop(self.block_status.index(user_id))
-            print "[W32SessionFiltering] unblocking user %s" % user_id
-            try:
-                session_uid = self.quarterback.win32top.get_current_user_session()
-                print "s: %s == u: %s ->> %s" % (session_uid, user_id, int(session_uid) == int(user_id))
-                if int(session_uid) == int(user_id) :
-                    print "[W32SessionFiltering] Quiting session"
-                    windll.user32.ExitWindowsEx(0)
-            except:
-                print "[W32SessionFiltering] Something wrong quiting from session"
+            gobject.timeout_add(5000, self.__remove_block_status, user_id)
         else:
             print "[W32SessionFiltering] User or other try to kill blocker :)"
             gobject.timeout_add(5000, self.__launch_blocker_to_badboy, user_id)
@@ -100,6 +91,11 @@ class Win32SessionBlocker(gobject.GObject) :
             except:
                 pass
 
+    def __remove_block_status(self, user_id):
+        print "[W32SessionFiltering] Remove block status to user_id :  %s" % (user_id)
+        self.block_status.pop(self.block_status.index(user_id))
+        return False
+
     def __launch_blocker_to_badboy(self, user_id):
         session_uid = self.quarterback.win32top.get_current_user_session()
         if int(session_uid) == int(user_id) :



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]