++ gnome-screensaver-2.28.0/debian/patches/10_legacy_scrsvr_inhibit.patch Description: Reintroduce legacy API for inhibiting the screensaver . This patch is backported from Lucid and adapted to minimize the autotools changes required, to make it easier to review - for example, the configure check for xtst has been removed. Author: Chris Coulson Bug-Ubuntu: https://bugs.launchpad.net/bugs/428884 Bug: https://bugzilla.gnome.org/show_bug.cgi?id=579430 Forwarded: https://bugzilla.gnome.org/show_bug.cgi?id=579430 diff -Nur -x '*.orig' -x '*~' gnome-screensaver-2.28.0/src/gs-monitor.c gnome-screensaver-2.28.0.new/src/gs-monitor.c --- gnome-screensaver-2.28.0/src/gs-monitor.c 2009-08-20 00:19:14.000000000 +0100 +++ gnome-screensaver-2.28.0.new/src/gs-monitor.c 2009-12-22 21:33:28.929850158 +0000 @@ -29,6 +29,10 @@ #include #include +#include +#include +#include + #include "gnome-screensaver.h" #include "gs-manager.h" @@ -56,6 +60,10 @@ GSFade *fade; GSGrab *grab; guint release_grab_id; + gboolean have_xtest; + int keycode1; + int keycode2; + int *keycode; }; #define FADE_TIMEOUT 10000 @@ -186,7 +194,19 @@ static void gs_monitor_simulate_user_activity (GSMonitor *monitor) { - /* FIXME: reset the xsync timer? */ + if (monitor->priv->have_xtest) { + XLockDisplay (GDK_DISPLAY ()); + XTestFakeKeyEvent (GDK_DISPLAY(), *monitor->priv->keycode, + True, CurrentTime); + XTestFakeKeyEvent (GDK_DISPLAY(), *monitor->priv->keycode, + False, CurrentTime); + XUnlockDisplay (GDK_DISPLAY()); + /* Swap the keycode */ + if (monitor->priv->keycode == &monitor->priv->keycode1) + monitor->priv->keycode = &monitor->priv->keycode2; + else + monitor->priv->keycode = &monitor->priv->keycode1; + } /* request that the manager unlock - will pop up a dialog if necessary */ @@ -416,6 +436,7 @@ static void gs_monitor_init (GSMonitor *monitor) { + int a, b, c, d; monitor->priv = GS_MONITOR_GET_PRIVATE (monitor); @@ -435,6 +456,25 @@ connect_manager_signals (monitor); _gs_monitor_update_from_prefs (monitor, monitor->priv->prefs); + + XLockDisplay (GDK_DISPLAY()); + monitor->priv->have_xtest = (XTestQueryExtension (GDK_DISPLAY(), &a, &b, &c, &d) == True); + if (monitor->priv->have_xtest != FALSE) + { + monitor->priv->keycode1 = XKeysymToKeycode (GDK_DISPLAY(), XK_Alt_L); + if (monitor->priv->keycode1 == 0) { + g_warning ("monitor->priv->keycode1 not existant"); + } + monitor->priv->keycode2 = XKeysymToKeycode (GDK_DISPLAY(), XK_Alt_R); + if (monitor->priv->keycode2 == 0) { + monitor->priv->keycode2 = XKeysymToKeycode (GDK_DISPLAY(), XK_Alt_L); + if (monitor->priv->keycode2 == 0) { + g_warning ("monitor->priv->keycode2 not existant"); + } + } + monitor->priv->keycode = &monitor->priv->keycode1; + } + XUnlockDisplay (GDK_DISPLAY()); } static void diff -Nur -x '*.orig' -x '*~' gnome-screensaver-2.28.0/src/Makefile.am gnome-screensaver-2.28.0.new/src/Makefile.am --- gnome-screensaver-2.28.0/src/Makefile.am 2009-08-20 00:19:14.000000000 +0100 +++ gnome-screensaver-2.28.0.new/src/Makefile.am 2009-12-22 21:32:22.769843081 +0000 @@ -213,6 +213,7 @@ gnome_screensaver_LDADD = \ $(GNOME_SCREENSAVER_LIBS) \ $(SAVER_LIBS) \ + -lXtst \ $(NULL) gnome_screensaver_LDFLAGS = -export-dynamic diff -Nur -x '*.orig' -x '*~' gnome-screensaver-2.28.0/src/Makefile.in gnome-screensaver-2.28.0.new/src/Makefile.in --- gnome-screensaver-2.28.0/src/Makefile.in 2009-08-26 17:06:16.000000000 +0100 +++ gnome-screensaver-2.28.0.new/src/Makefile.in 2009-12-22 21:32:22.769843081 +0000 @@ -550,6 +550,7 @@ gnome_screensaver_LDADD = \ $(GNOME_SCREENSAVER_LIBS) \ $(SAVER_LIBS) \ + -lXtst \ $(NULL) gnome_screensaver_LDFLAGS = -export-dynamic