X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=cut-n-paste%2Ftotem-screensaver%2Ftotem-scrsaver.c;h=6c0ba44cb8e2f3509ef7d6eb34a1cab718772f87;hb=761de5f5ba44cc94c98adf2b68809ea453d6bdfa;hp=5d5a1f26743db23296f09aff202a1b10982e88a3;hpb=949bd66322de613217672824798fbc7973c8b314;p=evince.git diff --git a/cut-n-paste/totem-screensaver/totem-scrsaver.c b/cut-n-paste/totem-screensaver/totem-scrsaver.c index 5d5a1f26..6c0ba44c 100644 --- a/cut-n-paste/totem-screensaver/totem-scrsaver.c +++ b/cut-n-paste/totem-screensaver/totem-scrsaver.c @@ -14,8 +14,8 @@ You should have received a copy of the GNU Library General Public License along with the Gnome Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA. Author: Bastien Nocera */ @@ -24,12 +24,17 @@ #include "config.h" #include + +#include + +#ifdef GDK_WINDOWING_X11 #include +#include #ifdef HAVE_XTEST #include #endif /* HAVE_XTEST */ -#include +#endif /* GDK_WINDOWING_X11 */ #ifdef ENABLE_DBUS #include @@ -45,8 +50,6 @@ #define XSCREENSAVER_MIN_TIMEOUT 60 static GObjectClass *parent_class = NULL; -static void totem_scrsaver_class_init (TotemScrsaverClass *class); -static void totem_scrsaver_init (TotemScrsaver *parser); static void totem_scrsaver_finalize (GObject *object); @@ -69,7 +72,7 @@ struct TotemScrsaverPrivate { /* For use with XTest */ int keycode1, keycode2; int *keycode; - Bool have_xtest; + gboolean have_xtest; }; G_DEFINE_TYPE(TotemScrsaver, totem_scrsaver, G_TYPE_OBJECT) @@ -127,10 +130,12 @@ screensaver_inhibit_dbus (TotemScrsaver *scr, /* try the old API */ res = dbus_g_proxy_call (scr->priv->gs_proxy, "InhibitActivation", - &error, + NULL, G_TYPE_STRING, reason, G_TYPE_INVALID, G_TYPE_INVALID); + if (res) + g_error_free (error); } g_free (reason); @@ -150,9 +155,11 @@ screensaver_inhibit_dbus (TotemScrsaver *scr, /* try the old API */ res = dbus_g_proxy_call (scr->priv->gs_proxy, "AllowActivation", - &error, + NULL, G_TYPE_INVALID, G_TYPE_INVALID); + if (res) + g_error_free (error); } } @@ -218,7 +225,6 @@ screensaver_init_dbus (TotemScrsaver *scr) 0); } - #endif /* ENABLE_DBUS */ } @@ -232,12 +238,13 @@ screensaver_finalize_dbus (TotemScrsaver *scr) #endif /* ENABLE_DBUS */ } +#ifdef GDK_WINDOWING_X11 static void screensaver_enable_x11 (TotemScrsaver *scr) { #ifdef HAVE_XTEST - if (scr->priv->have_xtest == True) + if (scr->priv->have_xtest != FALSE) { g_source_remove_by_user_data (scr); return; @@ -281,7 +288,7 @@ screensaver_disable_x11 (TotemScrsaver *scr) { #ifdef HAVE_XTEST - if (scr->priv->have_xtest == True) + if (scr->priv->have_xtest != FALSE) { XLockDisplay (GDK_DISPLAY()); XGetScreenSaver(GDK_DISPLAY(), &scr->priv->timeout, @@ -290,13 +297,12 @@ screensaver_disable_x11 (TotemScrsaver *scr) &scr->priv->allow_exposures); XUnlockDisplay (GDK_DISPLAY()); - if (scr->priv->timeout != 0) - { - g_timeout_add (scr->priv->timeout / 2 * 1000, - (GSourceFunc) fake_event, scr); + if (scr->priv->timeout != 0) { + g_timeout_add_seconds (scr->priv->timeout / 2, + (GSourceFunc) fake_event, scr); } else { - g_timeout_add (XSCREENSAVER_MIN_TIMEOUT / 2 * 1000, - (GSourceFunc) fake_event, scr); + g_timeout_add_seconds (XSCREENSAVER_MIN_TIMEOUT / 2, + (GSourceFunc) fake_event, scr); } return; @@ -320,8 +326,8 @@ screensaver_init_x11 (TotemScrsaver *scr) int a, b, c, d; XLockDisplay (GDK_DISPLAY()); - scr->priv->have_xtest = XTestQueryExtension (GDK_DISPLAY(), &a, &b, &c, &d); - if(scr->priv->have_xtest == True) + scr->priv->have_xtest = (XTestQueryExtension (GDK_DISPLAY(), &a, &b, &c, &d) == True); + if (scr->priv->have_xtest != FALSE) { scr->priv->keycode1 = XKeysymToKeycode (GDK_DISPLAY(), XK_Alt_L); if (scr->priv->keycode1 == 0) { @@ -345,6 +351,7 @@ screensaver_finalize_x11 (TotemScrsaver *scr) { g_source_remove_by_user_data (scr); } +#endif static void totem_scrsaver_class_init (TotemScrsaverClass *klass) @@ -368,12 +375,18 @@ totem_scrsaver_init (TotemScrsaver *scr) scr->priv = g_new0 (TotemScrsaverPrivate, 1); screensaver_init_dbus (scr); +#ifdef GDK_WINDOWING_X11 screensaver_init_x11 (scr); +#else +#warning Unimplemented +#endif } void totem_scrsaver_disable (TotemScrsaver *scr) { + g_return_if_fail (TOTEM_SCRSAVER (scr)); + if (scr->priv->disabled != FALSE) return; @@ -382,12 +395,19 @@ totem_scrsaver_disable (TotemScrsaver *scr) if (screensaver_is_running_dbus (scr) != FALSE) screensaver_disable_dbus (scr); else +#ifdef GDK_WINDOWING_X11 screensaver_disable_x11 (scr); +#else +#warning Unimplemented + {} +#endif } void totem_scrsaver_enable (TotemScrsaver *scr) { + g_return_if_fail (TOTEM_SCRSAVER (scr)); + if (scr->priv->disabled == FALSE) return; @@ -396,7 +416,26 @@ totem_scrsaver_enable (TotemScrsaver *scr) if (screensaver_is_running_dbus (scr) != FALSE) screensaver_enable_dbus (scr); else +#ifdef GDK_WINDOWING_X11 screensaver_enable_x11 (scr); +#else +#warning Unimplemented + {} +#endif +} + +void +totem_scrsaver_set_state (TotemScrsaver *scr, gboolean enable) +{ + g_return_if_fail (TOTEM_SCRSAVER (scr)); + + if (scr->priv->disabled == !enable) + return; + + if (enable == FALSE) + totem_scrsaver_disable (scr); + else + totem_scrsaver_enable (scr); } static void @@ -405,7 +444,12 @@ totem_scrsaver_finalize (GObject *object) TotemScrsaver *scr = TOTEM_SCRSAVER (object); screensaver_finalize_dbus (scr); +#ifdef GDK_WINDOWING_X11 screensaver_finalize_x11 (scr); +#else +#warning Unimplemented + {} +#endif g_free (scr->priv);