[Xfce4-commits] <parole:master> Also inhibit screen saver in the browser media plugin when playing video

Ali Abdallah noreply at xfce.org
Fri Nov 20 12:08:01 CET 2009


Updating branch refs/heads/master
         to 2bd4ac6fa8aa87f4a7d9f966529d6152dfa375e9 (commit)
       from ce034f45349dadfc6595f2eee734d8681b51c7eb (commit)

commit 2bd4ac6fa8aa87f4a7d9f966529d6152dfa375e9
Author: Ali Abdallah <ali at ali-xfce.org>
Date:   Fri Nov 20 11:42:51 2009 +0100

    Also inhibit screen saver in the browser media plugin when playing video

 browser-plugin/media-plugin/Makefile.am            |    2 +
 browser-plugin/media-plugin/parole-plugin-player.c |   25 ++++++++++++++++++++
 common/Makefile.am                                 |   10 +++++++-
 {src => common}/parole-screensaver.c               |    0
 {src => common}/parole-screensaver.h               |    0
 src/Makefile.am                                    |    3 +-
 6 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/browser-plugin/media-plugin/Makefile.am b/browser-plugin/media-plugin/Makefile.am
index f9a2421..d488ee4 100644
--- a/browser-plugin/media-plugin/Makefile.am
+++ b/browser-plugin/media-plugin/Makefile.am
@@ -12,6 +12,7 @@ parole_media_plugin_CFLAGS =			\
         -I$(top_srcdir)/data/mime               \
 	-I$(top_srcdir)/dbus               	\
 	-I$(top_srcdir)/gst               	\
+	-I$(top_srcdir)/common               	\
         -DLOCALEDIR=\"$(localedir)\"            \
         -DG_LOG_DOMAIN=\"parole-media-plugin\"  \
 	$(GTHREAD_CFLAGS)                       \
@@ -24,6 +25,7 @@ parole_media_plugin_CFLAGS =			\
 parole_media_plugin_LDADD =			\
 	$(top_builddir)/dbus/libparoledbus.la 	\
 	$(top_builddir)/gst/libparolegst.la 	\
+	$(top_builddir)/common/libparolescreensaver.la\
 	$(GTHREAD_LIBS)                       	\
 	$(GTK_LIBS)				\
 	$(GST_VIDEO_LIBS)                     	\
diff --git a/browser-plugin/media-plugin/parole-plugin-player.c b/browser-plugin/media-plugin/parole-plugin-player.c
index 7f508f9..34537c2 100644
--- a/browser-plugin/media-plugin/parole-plugin-player.c
+++ b/browser-plugin/media-plugin/parole-plugin-player.c
@@ -32,6 +32,7 @@
 
 #include "gst/parole-gst.h"
 #include "dbus/parole-dbus.h"
+#include "common/parole-screensaver.h"
 
 #define RESOURCE_FILE 	"xfce4/parole/browser-plugin.rc"
 
@@ -64,6 +65,8 @@ struct ParolePluginPlayerPrivate
     GtkWidget	 *range;
     GtkWidget    *full_screen;
     GtkWidget    *volume;
+
+    ParoleScreenSaver *saver;
     
     ParoleMediaState state;
     
@@ -71,6 +74,7 @@ struct ParolePluginPlayerPrivate
     gboolean      internal_range_change;
     gboolean      user_seeking;
     gboolean      terminate;
+    gboolean	  finished;
     gchar        *url;
     gulong        sig;
 };
@@ -150,6 +154,8 @@ parole_plugin_player_play_clicked_cb (ParolePluginPlayer *player)
 	parole_gst_pause (player->priv->gst);
     else if ( player->priv->state == PAROLE_MEDIA_STATE_PAUSED )
 	parole_gst_resume (player->priv->gst);
+    else if ( player->priv->finished )
+	parole_plugin_player_play (player);
 }
 
 static void
@@ -183,6 +189,11 @@ parole_plugin_player_media_state_cb (ParoleGst *gst, const ParoleStream *stream,
     player->priv->state = state;
     parole_plugin_player_set_play_button_image (player);
     
+    if ( has_video && state == PAROLE_MEDIA_STATE_PLAYING )
+	parole_screen_saver_inhibit (player->priv->saver);
+    else
+	parole_screen_saver_uninhibit (player->priv->saver);
+    
     if ( state == PAROLE_MEDIA_STATE_PLAYING )
     {
 	gdouble duration;
@@ -228,6 +239,7 @@ parole_plugin_player_media_state_cb (ParoleGst *gst, const ParoleStream *stream,
     else if ( state == PAROLE_MEDIA_STATE_FINISHED )
     {
 	parole_plugin_player_change_range_value (player, 0);
+	player->priv->finished = TRUE;
     }
 }
 
@@ -364,6 +376,12 @@ parole_plugin_player_gst_widget_button_release (GtkWidget *widget,
 }
 
 static void
+parole_plugin_player_error_cb (ParoleGst *gst, const gchar *error, ParolePluginPlayer *player)
+{
+    parole_screen_saver_uninhibit (player->priv->saver);
+}
+
+static void
 parole_plugin_player_construct (GObject *object)
 {
     ParolePluginPlayer *player;
@@ -393,6 +411,8 @@ parole_plugin_player_construct (GObject *object)
     g_signal_connect_after (G_OBJECT (player->priv->gst), "button-release-event",
 			    G_CALLBACK (parole_plugin_player_gst_widget_button_release), player);
 
+    g_signal_connect (G_OBJECT (player->priv->gst), "error",
+		      G_CALLBACK (parole_plugin_player_error_cb), player);
 
     hbox = gtk_hbox_new (FALSE, 0);
     /*
@@ -528,6 +548,7 @@ parole_plugin_player_init (ParolePluginPlayer *player)
     player->priv = PAROLE_PLUGIN_PLAYER_GET_PRIVATE (player);
     
     player->priv->gst  = NULL;
+    player->priv->saver = parole_screen_saver_new ();
     player->priv->plug = NULL;
     
     player->priv->reload = FALSE;
@@ -584,6 +605,8 @@ parole_plugin_player_finalize (GObject *object)
 
     player = PAROLE_PLUGIN_PLAYER (object);
 
+    g_object_unref (player->priv->saver);
+
     G_OBJECT_CLASS (parole_plugin_player_parent_class)->finalize (object);
 }
 
@@ -605,6 +628,8 @@ void parole_plugin_player_play (ParolePluginPlayer *player)
     if ( player->priv->terminate )
 	return;
 	
+    player->priv->reload = FALSE;
+    player->priv->finished = FALSE;
     parole_gst_play_uri (player->priv->gst, player->priv->url, NULL);
 }
 
diff --git a/common/Makefile.am b/common/Makefile.am
index 636d6f6..7aef2cf 100644
--- a/common/Makefile.am
+++ b/common/Makefile.am
@@ -1,9 +1,17 @@
 noinst_LTLIBRARIES = 			\
-	libparolecommon.la
+	libparolecommon.la		\
+	libparolescreensaver.la
 
 libparolecommon_la_SOURCES =		\
 	parole-common.c			\
 	parole-common.h
 	
 libparolecommon_la_CFLAGS =		\
+	$(GTK_CFLAGS)
+
+libparolescreensaver_la_SOURCES = 	\
+	parole-screensaver.c		\
+	parole-screensaver.h
+
+libparolescreensaver_la_CFLAGS =	\
 	$(GTK_CFLAGS)
\ No newline at end of file
diff --git a/src/parole-screensaver.c b/common/parole-screensaver.c
similarity index 100%
rename from src/parole-screensaver.c
rename to common/parole-screensaver.c
diff --git a/src/parole-screensaver.h b/common/parole-screensaver.h
similarity index 100%
rename from src/parole-screensaver.h
rename to common/parole-screensaver.h
diff --git a/src/Makefile.am b/src/Makefile.am
index 9a13c1a..4d30ca8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -31,6 +31,7 @@ PAROLE_LIBS = 					\
 	$(top_builddir)/dbus/libparoledbus.la 	\
 	$(top_builddir)/gst/libparolegst.la 	\
 	$(top_builddir)/common/libparolecommon.la\
+	$(top_builddir)/common/libparolescreensaver.la\
         $(GTHREAD_LIBS)                         \
 	$(GIO_LIBS)				\
         $(DBUS_GLIB_LIBS)                       \
@@ -53,7 +54,6 @@ NOINST_HFILES =					\
 	parole-statusbar.h			\
 	parole-mediachooser.h			\
 	parole-filters.h			\
-	parole-screensaver.h			\
 	parole-conf.h				\
 	parole-conf-dialog.h			\
 	parole-rc-utils.h			\
@@ -82,7 +82,6 @@ libparole_la_SOURCES =				\
 	parole-medialist.c			\
 	parole-mediachooser.c			\
 	parole-filters.c			\
-	parole-screensaver.c			\
 	parole-conf.c				\
 	parole-conf-dialog.c			\
 	parole-disc.c				\



More information about the Xfce4-commits mailing list