summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gst/liveadder/liveadder.c31
-rw-r--r--gst/liveadder/liveadder.h2
2 files changed, 24 insertions, 9 deletions
diff --git a/gst/liveadder/liveadder.c b/gst/liveadder/liveadder.c
index 59203769..f59415c7 100644
--- a/gst/liveadder/liveadder.c
+++ b/gst/liveadder/liveadder.c
@@ -1366,21 +1366,34 @@ gst_live_adder_change_state (GstElement * element, GstStateChange transition)
switch (transition) {
case GST_STATE_CHANGE_READY_TO_PAUSED:
- {
- GST_OBJECT_LOCK (adder);
- adder->segment_pending = TRUE;
- adder->peer_latency = 0;
- adder->next_timestamp = GST_CLOCK_TIME_NONE;
- g_list_foreach (adder->sinkpads, (GFunc) reset_pad_private, NULL);
- GST_OBJECT_UNLOCK (adder);
- break;
- }
+ GST_OBJECT_LOCK (adder);
+ adder->segment_pending = TRUE;
+ adder->peer_latency = 0;
+ adder->next_timestamp = GST_CLOCK_TIME_NONE;
+ g_list_foreach (adder->sinkpads, (GFunc) reset_pad_private, NULL);
+ GST_OBJECT_UNLOCK (adder);
+ break;
+ case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+ GST_OBJECT_LOCK (adder);
+ adder->playing = FALSE;
+ GST_OBJECT_UNLOCK (adder);
+ break;
default:
break;
}
ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+ switch (transition) {
+ case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+ GST_OBJECT_LOCK (adder);
+ adder->playing = TRUE;
+ GST_OBJECT_UNLOCK (adder);
+ break;
+ default:
+ break;
+ }
+
return ret;
}
diff --git a/gst/liveadder/liveadder.h b/gst/liveadder/liveadder.h
index 0ad93e54..564ff370 100644
--- a/gst/liveadder/liveadder.h
+++ b/gst/liveadder/liveadder.h
@@ -92,6 +92,8 @@ struct _GstLiveAdder {
GstClockTime peer_latency;
gboolean segment_pending;
+
+ gboolean playing;
};
struct _GstLiveAdderClass {