Updating branch refs/heads/master
         to 6d836941fb5c382e4338fd00bf993ffbd6959e89 (commit)
       from f59afa18f12be9aead59324f50f2e91d832b17c6 (commit)

commit 6d836941fb5c382e4338fd00bf993ffbd6959e89
Author: Sean Davis <smd.seanda...@gmail.com>
Date:   Wed Dec 19 05:44:05 2012 -0500

    Fix screensaver bug (7407).  Thanks Tekk

 src/common/parole-screensaver.c |   51 +++++++++++++--------------------------
 src/common/parole-screensaver.h |    8 ++----
 src/parole-player.c             |    8 +++---
 3 files changed, 24 insertions(+), 43 deletions(-)

diff --git a/src/common/parole-screensaver.c b/src/common/parole-screensaver.c
index 1f35fff..880785e 100644
--- a/src/common/parole-screensaver.c
+++ b/src/common/parole-screensaver.c
@@ -37,23 +37,12 @@
 #define PAROLE_SCREEN_SAVER_GET_PRIVATE(o) \
 (G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_SCREENSAVER, 
ParoleScreenSaverPrivate))
 
-struct ParoleScreenSaverPrivate
-{
-    gulong reset_id;
-};
-
 G_DEFINE_TYPE (ParoleScreenSaver, parole_screen_saver, G_TYPE_OBJECT)
 
 
 static void
 parole_screen_saver_finalize (GObject *object)
 {
-    ParoleScreenSaver *saver;
-
-    saver = PAROLE_SCREEN_SAVER (object);
-    
-    parole_screen_saver_uninhibit (saver);
-
     G_OBJECT_CLASS (parole_screen_saver_parent_class)->finalize (object);
 }
 
@@ -64,22 +53,12 @@ parole_screen_saver_class_init (ParoleScreenSaverClass 
*klass)
 
     object_class->finalize = parole_screen_saver_finalize;
 
-    g_type_class_add_private (klass, sizeof (ParoleScreenSaverPrivate));
 }
 
 static void
 parole_screen_saver_init (ParoleScreenSaver *saver)
 {
-    saver->priv = PAROLE_SCREEN_SAVER_GET_PRIVATE (saver);
-    
-    saver->priv->reset_id = 0;
-}
-
-static gboolean
-parole_screen_saver_reset_timeout (gpointer data)
-{
-    XResetScreenSaver (GDK_DISPLAY ());
-    return TRUE;
+    return;
 }
 
 ParoleScreenSaver *
@@ -90,24 +69,28 @@ parole_screen_saver_new (void)
     return saver;
 }
 
-void parole_screen_saver_inhibit (ParoleScreenSaver *saver)
+void parole_screen_saver_inhibit (ParoleScreenSaver *saver, GtkWindow *window)
 {
-    g_return_if_fail (PAROLE_IS_SCREENSAVER (saver));
+    gchar *cmd;
     
-    parole_screen_saver_uninhibit (saver);
+    g_return_if_fail (PAROLE_IS_SCREENSAVER (saver));
 
-    saver->priv->reset_id = g_timeout_add_seconds (RESET_SCREENSAVER_TIMEOUT, 
-                                                  (GSourceFunc) 
parole_screen_saver_reset_timeout,
-                                                  NULL);
+    cmd = g_strdup_printf("xdg-screensaver suspend %d", 
(int)GDK_WINDOW_XID(GDK_WINDOW(GTK_WIDGET(window)->window)));
+    //cmd = g_strdup_printf("xdg-screensaver suspend %d", 
(int)GDK_WINDOW_XID(GDK_WINDOW( 
gtk_widget_get_parent_window(GTK_WIDGET(window)) )));
+    system(cmd);
+
+    g_free(cmd);
 }
 
-void parole_screen_saver_uninhibit (ParoleScreenSaver *saver)
+void parole_screen_saver_uninhibit (ParoleScreenSaver *saver, GtkWindow 
*window)
 {
+    gchar *cmd;
+    
     g_return_if_fail (PAROLE_IS_SCREENSAVER (saver));
     
-    if ( saver->priv->reset_id != 0 )
-    {
-       g_source_remove (saver->priv->reset_id);
-       saver->priv->reset_id = 0;
-    }
+    cmd = g_strdup_printf("xdg-screensaver resume %d", 
(int)GDK_WINDOW_XID(GDK_WINDOW(GTK_WIDGET(window)->window)));
+    //cmd = g_strdup_printf("xdg-screensaver resume %d", 
(int)GDK_WINDOW_XID(GDK_WINDOW( 
gtk_widget_get_parent_window(GTK_WIDGET(window)) )));
+    system(cmd);
+    
+    g_free(cmd);
 }
diff --git a/src/common/parole-screensaver.h b/src/common/parole-screensaver.h
index 8fe6f1f..c4188c0 100644
--- a/src/common/parole-screensaver.h
+++ b/src/common/parole-screensaver.h
@@ -22,6 +22,7 @@
 #define __PAROLE_SCREEN_SAVER_H
 
 #include <glib-object.h>
+#include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
@@ -29,12 +30,9 @@ G_BEGIN_DECLS
 #define PAROLE_SCREEN_SAVER(o)         (G_TYPE_CHECK_INSTANCE_CAST ((o), 
PAROLE_TYPE_SCREENSAVER, ParoleScreenSaver))
 #define PAROLE_IS_SCREENSAVER(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), 
PAROLE_TYPE_SCREENSAVER))
 
-typedef struct ParoleScreenSaverPrivate ParoleScreenSaverPrivate;
-
 typedef struct
 {
     GObject                      parent;
-    ParoleScreenSaverPrivate     *priv;
     
 } ParoleScreenSaver;
 
@@ -47,9 +45,9 @@ typedef struct
 GType                            parole_screen_saver_get_type        (void) 
G_GNUC_CONST;
 ParoleScreenSaver               *parole_screen_saver_new             (void);
 
-void                             parole_screen_saver_inhibit         
(ParoleScreenSaver *saver);
+void                             parole_screen_saver_inhibit         
(ParoleScreenSaver *saver, GtkWindow *window);
 
-void                             parole_screen_saver_uninhibit       
(ParoleScreenSaver *saver);
+void                             parole_screen_saver_uninhibit       
(ParoleScreenSaver *saver, GtkWindow *window);
 
 G_END_DECLS
 
diff --git a/src/parole-player.c b/src/parole-player.c
index 49dd235..6d6b651 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -1489,7 +1489,7 @@ parole_player_reset_saver_changed (ParolePlayer *player, 
const ParoleStream *str
                  NULL);
                  
     if ( !reset_saver )
-       parole_screen_saver_uninhibit (player->priv->screen_saver);
+       parole_screen_saver_uninhibit (player->priv->screen_saver, GTK_WINDOW 
(player->priv->window));
     else if ( player->priv->state ==  PAROLE_STATE_PLAYING )
     {
        gboolean has_video;
@@ -1500,11 +1500,11 @@ parole_player_reset_saver_changed (ParolePlayer 
*player, const ParoleStream *str
                      
        if ( has_video )
        {
-           parole_screen_saver_inhibit (player->priv->screen_saver);
+           parole_screen_saver_inhibit (player->priv->screen_saver, GTK_WINDOW 
(player->priv->window));
        }
     }
     else
-       parole_screen_saver_uninhibit (player->priv->screen_saver);
+       parole_screen_saver_uninhibit (player->priv->screen_saver, GTK_WINDOW 
(player->priv->window));
 }
 
 static void
@@ -1646,7 +1646,7 @@ static void
 parole_player_error_cb (ParoleGst *gst, const gchar *error, ParolePlayer 
*player)
 {
     parole_dialog_error (GTK_WINDOW (player->priv->window), _("GStreamer 
backend error"), error);
-    parole_screen_saver_uninhibit (player->priv->screen_saver);
+    parole_screen_saver_uninhibit (player->priv->screen_saver, GTK_WINDOW 
(player->priv->window));
     parole_player_stopped (player);
 }
 
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to