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