[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