[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