]> www.fi.muni.cz Git - evince.git/blobdiff - cut-n-paste/totem-screensaver/totem-scrsaver.c
Add Malay translation. Fixes bug 611488.
[evince.git] / cut-n-paste / totem-screensaver / totem-scrsaver.c
index 392443043443c69b23d63ac3226ea26c24631529..6c0ba44cb8e2f3509ef7d6eb34a1cab718772f87 100644 (file)
@@ -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 <hadess@hadess.net>
  */
 #include "config.h"
 
 #include <glib/gi18n.h>
+
+#include <gdk/gdk.h>
+
+#ifdef GDK_WINDOWING_X11
 #include <gdk/gdkx.h>
+#include <X11/keysym.h>
 
 #ifdef HAVE_XTEST
 #include <X11/extensions/XTest.h>
 #endif /* HAVE_XTEST */
-#include <X11/keysym.h>
+#endif /* GDK_WINDOWING_X11 */
 
 #ifdef ENABLE_DBUS
+#include <dbus/dbus.h>
 #include <dbus/dbus-glib.h>
 
 #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,23 +297,12 @@ screensaver_disable_x11 (TotemScrsaver *scr)
                                &scr->priv->allow_exposures);
                XUnlockDisplay (GDK_DISPLAY());
 
-               if (scr->priv->timeout != 0)
-               {
-#if GLIB_CHECK_VERSION (2, 13, 0)
+               if (scr->priv->timeout != 0) {
                        g_timeout_add_seconds (scr->priv->timeout / 2,
                                               (GSourceFunc) fake_event, scr);
-#else
-                       g_timeout_add (scr->priv->timeout / 2 * 1000,
-                                      (GSourceFunc) fake_event, scr);
-#endif
                } else {
-#if GLIB_CHECK_VERSION (2, 13, 0)
                        g_timeout_add_seconds (XSCREENSAVER_MIN_TIMEOUT / 2,
-                                       (GSourceFunc) fake_event, scr);
-#else
-                       g_timeout_add (XSCREENSAVER_MIN_TIMEOUT / 2 * 1000,
-                                      (GSourceFunc) fake_event, scr);
-#endif
+                                              (GSourceFunc) fake_event, scr);
                }
 
                return;
@@ -332,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) {
@@ -357,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,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;
 
@@ -410,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;
 
@@ -424,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
@@ -433,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);