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=d3688d90ef2ac74632997a421a042e44534af9d9;hp=1990b0c11b5069978dc5b7d0dabce3693f5fc286;hpb=8ac50cf59cc976bd26bcb5575a4443d0319463ba;p=evince.git diff --git a/cut-n-paste/totem-screensaver/totem-scrsaver.c b/cut-n-paste/totem-screensaver/totem-scrsaver.c index 1990b0c1..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,14 +24,20 @@ #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 #include #define GS_SERVICE "org.gnome.ScreenSaver" @@ -44,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); @@ -68,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) @@ -126,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); @@ -149,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); } } @@ -188,16 +196,13 @@ gs_proxy_destroy_cb (GObject *proxy, } #endif -#ifdef ENABLE_DBUS static void -screensaver_init_dbus (TotemScrsaver *scr, DBusGConnection *connection) +screensaver_init_dbus (TotemScrsaver *scr) { +#ifdef ENABLE_DBUS GError *error = NULL; - if (!connection) - scr->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - else - scr->priv->connection = connection; + scr->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); if (! scr->priv->connection) { if (error) { @@ -220,9 +225,8 @@ screensaver_init_dbus (TotemScrsaver *scr, DBusGConnection *connection) 0); } - -} #endif /* ENABLE_DBUS */ +} static void screensaver_finalize_dbus (TotemScrsaver *scr) @@ -234,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; @@ -283,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, @@ -292,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; @@ -322,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) { @@ -347,6 +351,7 @@ screensaver_finalize_x11 (TotemScrsaver *scr) { g_source_remove_by_user_data (scr); } +#endif static void totem_scrsaver_class_init (TotemScrsaverClass *klass) @@ -358,40 +363,30 @@ totem_scrsaver_class_init (TotemScrsaverClass *klass) object_class->finalize = totem_scrsaver_finalize; } -#ifdef ENABLE_DBUS -TotemScrsaver * -totem_scrsaver_new (DBusGConnection *connection) -{ - TotemScrsaver * scr; - scr = TOTEM_SCRSAVER (g_object_new (TOTEM_TYPE_SCRSAVER, NULL)); - - screensaver_init_dbus (scr, connection); - screensaver_init_x11 (scr); - - return scr; -} -#else TotemScrsaver * -totem_scrsaver_new() +totem_scrsaver_new (void) { - TotemScrsaver * scr; - scr = TOTEM_SCRSAVER (g_object_new (TOTEM_TYPE_SCRSAVER, NULL)); - - screensaver_init_x11 (scr); - - return scr; + return TOTEM_SCRSAVER (g_object_new (TOTEM_TYPE_SCRSAVER, NULL)); } -#endif static void 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; @@ -400,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; @@ -414,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 @@ -423,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);