Skip to content

Commit dec542c

Browse files
committed
libcscreensaver/service.py: fix xdg-screensaver suspend
The old c code called xlib's XResetScreenSaver when the SimulateUserActivity dbus method was called, and xdg-screensaver depends on this in Cinnamon to reset the screensaver timeout.
1 parent 222feaa commit dec542c

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

libcscreensaver/cs-screen-x11.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,20 @@ cs_screen_get_mouse_monitor (CsScreen *screen)
627627
return ret;
628628
}
629629

630+
/**
631+
* cs_screen_reset_screensaver:
632+
*
633+
* Resets the screensaver idle timer. If called when the screensaver is active
634+
* it will stop it.
635+
*
636+
*/
637+
638+
void
639+
cs_screen_reset_screensaver (void)
640+
{
641+
XResetScreenSaver (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
642+
}
643+
630644
void
631645
cs_screen_nuke_focus (void)
632646
{

libcscreensaver/cs-screen.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ gint cs_screen_get_n_monitors (CsScreen *screen);
6464

6565
gint cs_screen_get_mouse_monitor (CsScreen *screen);
6666

67+
void cs_screen_reset_screensaver (void);
68+
6769
void cs_screen_nuke_focus (void);
6870

6971
G_END_DECLS

src/service.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ def handle_get_active_time(self, iface, inv):
131131
def handle_simulate_user_activity(self, iface, inv):
132132
if self.manager.is_locked():
133133
self.manager.simulate_user_activity()
134+
else:
135+
CScreensaver.Screen.reset_screensaver()
134136

135137
iface.complete_simulate_user_activity(inv)
136138

0 commit comments

Comments
 (0)