[Xfce4-commits] <parole:master> Fix screensaver bug (7407). Thanks Tekk
Sean Davis
noreply at xfce.org
Wed Dec 19 11:46:01 CET 2012
Updating branch refs/heads/master
to 6d836941fb5c382e4338fd00bf993ffbd6959e89 (commit)
from f59afa18f12be9aead59324f50f2e91d832b17c6 (commit)
commit 6d836941fb5c382e4338fd00bf993ffbd6959e89
Author: Sean Davis <smd.seandavis at 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);
}
More information about the Xfce4-commits
mailing list