[snappy] engine: loop correctly through subtitle streams



commit f61a31fb6651340234ec00aee807e5830671a05f
Author: Luis de Bethencourt <luis debethencourt com>
Date:   Fri Dec 14 15:15:40 2012 -0500

    engine: loop correctly through subtitle streams

 src/gst_engine.c |   15 +++++++++------
 src/gst_engine.h |    2 +-
 2 files changed, 10 insertions(+), 7 deletions(-)
---
diff --git a/src/gst_engine.c b/src/gst_engine.c
index 3e26927..8a5128e 100644
--- a/src/gst_engine.c
+++ b/src/gst_engine.c
@@ -632,7 +632,7 @@ change_state (GstEngine * engine, gchar * state)
 
 
 /*               Cycle through streams           */
-void
+gboolean
 cycle_streams (GstEngine * engine, guint streamid)
 {
   gboolean last_stream = FALSE;
@@ -665,8 +665,9 @@ cycle_streams (GstEngine * engine, guint streamid)
     current = 0;
     last_stream = TRUE;
   }
-
   g_object_set (G_OBJECT (engine->player), c, current, NULL);
+
+  return last_stream;
 }
 
 
@@ -944,16 +945,18 @@ gboolean
 toggle_subtitles (GstEngine * engine)
 {
   gint flags;
+  gboolean last_stream;
   gboolean sub_state;
 
   g_object_get (G_OBJECT (engine->player), "flags", &flags, NULL);
   sub_state = flags & (1 << 2);
 
   if (sub_state) {              // If subtitles on, cycle streams and if last turn off
-    cycle_streams (engine, STREAM_TEXT);
-    flags &= ~(1 << 2);
-    g_object_set (G_OBJECT (engine->player), "flags", flags, NULL);
-
+    last_stream = cycle_streams (engine, STREAM_TEXT);
+    if (last_stream) {
+      flags &= ~(1 << 2);
+      g_object_set (G_OBJECT (engine->player), "flags", flags, NULL);
+    }
   } else {                      // If subtitles off, turn them on
     flags |= (1 << 2);
     g_object_set (G_OBJECT (engine->player), "flags", flags, NULL);
diff --git a/src/gst_engine.h b/src/gst_engine.h
index bb720d4..c3a6044 100644
--- a/src/gst_engine.h
+++ b/src/gst_engine.h
@@ -63,7 +63,7 @@ gboolean add_uri_unfinished (GstEngine * engine);
 gboolean at_the_eos (GstEngine * engine);
 gboolean bus_call (GstBus * bus, GstMessage * msg, gpointer data);
 gboolean change_state (GstEngine * engine, gchar * state);
-void cycle_streams (GstEngine * engine, guint streamid);
+gboolean cycle_streams (GstEngine * engine, guint streamid);
 gboolean engine_init (GstEngine * engine, GstElement * sink);
 void engine_load_uri (GstEngine * engine, gchar * uri);
 void engine_open_uri (GstEngine * engine, gchar * uri);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]