[Xfce4-commits] [apps/parole] 01/01: Add basic playback with the clutter-backend
noreply at xfce.org
noreply at xfce.org
Mon Jun 16 18:46:47 CEST 2014
This is an automated email from the git hooks/post-receive script.
ochosi pushed a commit to branch master
in repository apps/parole.
commit ba57c679df0f68be777a173d1a20603ab11845e5
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date: Mon Jun 16 18:46:43 2014 +0200
Add basic playback with the clutter-backend
---
configure.ac.in | 4 ++++
src/Makefile.am | 8 ++++++--
src/gst/parole-gst.c | 9 +++++++++
src/parole-player.c | 34 +++++++++++++++++++++++++++++++---
4 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/configure.ac.in b/configure.ac.in
index 869c895..adcc998 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -80,6 +80,8 @@ XDT_I18N([@LINGUAS@])
# ===================================================== #
m4_define([gtk_minimum_version], [3.2.0])
m4_define([glib_minimum_version], [2.32.0])
+m4_define([clutter_minimum_version], [1.16.4])
+m4_define([cluttergtk_minimum_version], [1.4.4])
m4_define([dbus_minimum_version], [0.60])
m4_define([dbus_glib_minimum_version], [0.70])
@@ -133,6 +135,8 @@ dnl *** Compile against GTK3 ***
dnl ************************************
XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [libxfce4ui_minimum_version])
XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [gtk_minimum_version])
+XDT_CHECK_PACKAGE([CLUTTER], [clutter-1.0], [clutter_minimum_version])
+XDT_CHECK_PACKAGE([CLUTTERGTK], [clutter-gtk-1.0], [cluttergtk_minimum_version])
XDT_CHECK_PACKAGE([GST], [gstreamer-${gstreamer_api_version}], [${gstreamer_minimum_version}])
XDT_CHECK_PACKAGE([GST_BASE], [gstreamer-base-${gstreamer_api_version}], [${gstreamer_minimum_version}])
diff --git a/src/Makefile.am b/src/Makefile.am
index c6ca711..d9646bb 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -29,7 +29,9 @@ INCLUDES = \
$(GST_VIDEO_CFLAGS) \
$(GST_INTERFACES_CFLAGS) \
$(TAGLIBC_CFLAGS) \
- $(LIBX11_CFLAGS)
+ $(LIBX11_CFLAGS) \
+ $(CLUTTER_CFLAGS) \
+ $(CLUTTERGTK_CFLAGS)
GENERATED_FILES = \
gmarshal.c \
@@ -90,7 +92,9 @@ parole_LDADD = \
$(GST_VIDEO_LIBS) \
$(GST_INTERFACES_LIBS) \
$(TAGLIBC_LIBS) \
- $(LIBX11_LIBS)
+ $(LIBX11_LIBS) \
+ $(CLUTTER_LIBS) \
+ $(CLUTTERGTK_LIBS)
parole_glib_enum_headers = \
parole-conf.h \
diff --git a/src/gst/parole-gst.c b/src/gst/parole-gst.c
index 1010e13..4c5a97d 100644
--- a/src/gst/parole-gst.c
+++ b/src/gst/parole-gst.c
@@ -3008,3 +3008,12 @@ const ParoleStream *parole_gst_get_stream (ParoleGst *gst)
return gst->priv->stream;
}
+
+const GstElement *parole_gst_video_sink (ParoleGst *gst)
+{
+ GstElement *video_sink;
+ g_object_get (G_OBJECT (gst->priv->playbin),
+ "video-sink", &video_sink,
+ NULL);
+ return video_sink;
+}
\ No newline at end of file
diff --git a/src/parole-player.c b/src/parole-player.c
index f84691b..26a2aca 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -46,6 +46,9 @@
#include <dbus/dbus-glib.h>
+#include <clutter/clutter.h>
+#include <clutter-gtk/clutter-gtk.h>
+
#include <src/misc/parole-file.h>
#include "parole-builder.h"
@@ -3078,6 +3081,8 @@ parole_player_init (ParolePlayer *player)
GtkWidget *controls_parent;
GtkWidget *play_box;
+ gchar *videosink = NULL;
+
GList *widgets;
GtkWidget *action_widget;
@@ -3531,9 +3536,32 @@ parole_player_init (ParolePlayer *player)
parole_player_set_wm_opacity_hint (player->priv->window);
- gtk_box_pack_start (GTK_BOX (player->priv->videobox),
- player->priv->gst,
- TRUE, TRUE, 0);
+ g_object_get (G_OBJECT (player->priv->conf),
+ "videosink", &videosink,
+ NULL);
+ if (g_strcmp0(videosink, "cluttersink") == 0)
+ {
+ GtkWidget *clutterbox;
+ ClutterActor *stage, *texture;
+ GstElement *video_sink;
+
+ clutterbox = gtk_clutter_embed_new();
+ gtk_box_pack_start (GTK_BOX (player->priv->videobox),
+ clutterbox,
+ TRUE, TRUE, 0);
+ stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (clutterbox));
+ texture = CLUTTER_ACTOR (g_object_new (CLUTTER_TYPE_TEXTURE, "disable-slicing", TRUE, NULL));
+ video_sink = parole_gst_video_sink (player->priv->gst);
+ g_object_set (video_sink, "texture", texture, NULL);
+ clutter_actor_add_child (stage, texture);
+ gtk_widget_show (clutterbox);
+ }
+ else
+ {
+ gtk_box_pack_start (GTK_BOX (player->priv->videobox),
+ player->priv->gst,
+ TRUE, TRUE, 0);
+ }
gtk_widget_realize (player->priv->gst);
gtk_widget_show (player->priv->gst);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list