diff options
Diffstat (limited to 'gst')
-rw-r--r-- | gst/liveadder/liveadder.c | 31 | ||||
-rw-r--r-- | gst/liveadder/liveadder.h | 2 |
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 { |