def on_bus_acquired(self, connection, name, data=None): self.bus = connection self.interface = CScreensaver.ScreenSaverSkeleton.new() self.interface.connect("handle-lock", self.handle_lock) self.interface.connect("handle-quit", self.handle_quit) self.interface.connect("handle-set-active", self.handle_set_active) self.interface.connect("handle-get-active", self.handle_get_active) self.interface.connect("handle-get-active-time", self.handle_get_active_time) self.interface.connect("handle-simulate-user-activity", self.handle_simulate_user_activity) self.manager = ScreensaverManager() self.manager.connect("active-changed", self.on_active_changed) self.interface.export(self.bus, c.SS_PATH)
def __init__(self): super(ScreensaverService, self).__init__() try: self.bus = Gio.bus_get_sync(Gio.BusType.SESSION, None) except: print("Unable to get session connection, fatal!") exit(1) self.interface = CScreensaver.ScreenSaverSkeleton.new() self.interface.connect("handle-lock", self.handle_lock) self.interface.connect("handle-quit", self.handle_quit) self.interface.connect("handle-set-active", self.handle_set_active) self.interface.connect("handle-get-active", self.handle_get_active) self.interface.connect("handle-get-active-time", self.handle_get_active_time) self.interface.connect("handle-simulate-user-activity", self.handle_simulate_user_activity) self.manager = ScreensaverManager() self.manager.connect("active-changed", self.on_active_changed) """ The stage constructs itself and fades in asynchronously, and most importantly, as an idle callback. This can cause the screensaver to not be fully active when a call to suspend is made. Cinnamon-session calls to lock the screensaver synchronously, and if we don't completely finish construction before returning the dbus call completion, there's a chance the idle callback won't run until after the computer is resumed. We get an active-changed signal whenever the screensaver becomes completely active or inactive, so we'll queue up running iface.complete_lock() until we receive that signal. This allows the screensaver to be fully activated prior to cinnamon-session allowing the suspend/hibernate/whatever process to continue. For reference, this is called in cinnamon-session's csm-manager.c "manager_perhaps_lock" method. """ self.lock_queue = [] self.interface.export(self.bus, c.SS_PATH)
def on_bus_acquired(self, connection, name, data=None): """ Export our interface to the session bus. Creates the ScreensaverManager. We are now ready to respond to requests by cinnamon-session and cinnamon-screensaver-command. """ self.bus = connection self.interface = CScreensaver.ScreenSaverSkeleton.new() self.interface.connect("handle-lock", self.handle_lock) self.interface.connect("handle-quit", self.handle_quit) self.interface.connect("handle-set-active", self.handle_set_active) self.interface.connect("handle-get-active", self.handle_get_active) self.interface.connect("handle-get-active-time", self.handle_get_active_time) self.interface.connect("handle-simulate-user-activity", self.handle_simulate_user_activity) self.manager = ScreensaverManager() self.manager.connect("active-changed", self.on_active_changed) """ The stage constructs itself and fades in asynchronously, and most importantly, as an idle callback. This can cause the screensaver to not be fully active when a call to suspend is made. Cinnamon-session calls to lock the screensaver synchronously, and if we don't completely finish construction before returning the dbus call completion, there's a chance the idle callback won't run until after the computer is resumed. We get an active-changed signal whenever the screensaver becomes completely active or inactive, so we'll queue up running iface.complete_lock() until we receive that signal. This allows the screensaver to be fully activated prior to cinnamon-session allowing the suspend/hibernate/whatever process to continue. For reference, this is called in cinnamon-session's csm-manager.c "manager_perhaps_lock" method. """ self.lock_queue = [] self.interface.export(self.bus, c.SS_PATH)
def on_bus_acquired(self, connection, name, data=None): """ Export our interface to the session bus. Creates the ScreensaverManager. We are now ready to respond to requests by cinnamon-session and cinnamon-screensaver-command. """ self.bus = connection self.interface = CScreensaver.ScreenSaverSkeleton.new() self.interface.connect("handle-lock", self.handle_lock) self.interface.connect("handle-quit", self.handle_quit) self.interface.connect("handle-set-active", self.handle_set_active) self.interface.connect("handle-get-active", self.handle_get_active) self.interface.connect("handle-get-active-time", self.handle_get_active_time) self.interface.connect("handle-simulate-user-activity", self.handle_simulate_user_activity) self.manager = ScreensaverManager() self.manager.connect("active-changed", self.on_active_changed) self.interface.export(self.bus, c.SS_PATH)