|
 |
b31db4 |
From 6dd67050554caf7e689a0de28807631b56d01b16 Mon Sep 17 00:00:00 2001
|
|
 |
b31db4 |
From: Wim Taymans <wtaymans@redhat.com>
|
|
 |
b31db4 |
Date: Tue, 19 May 2015 13:31:12 +0200
|
|
 |
b31db4 |
Subject: [PATCH] video-sink: clear buffer in flush
|
|
 |
b31db4 |
|
|
 |
b31db4 |
We need to release our refs to the buffer in FLUSH_START so that
|
|
 |
b31db4 |
upstream can free and reuse the memory.
|
|
 |
b31db4 |
---
|
|
 |
b31db4 |
clutter-gst/clutter-gst-video-sink.c | 26 ++++++++++++++++++++++++++
|
|
 |
b31db4 |
1 file changed, 26 insertions(+)
|
|
 |
b31db4 |
|
|
 |
b31db4 |
diff --git a/clutter-gst/clutter-gst-video-sink.c b/clutter-gst/clutter-gst-video-sink.c
|
|
 |
b31db4 |
index 63867d4..ef6d996 100644
|
|
 |
b31db4 |
--- a/clutter-gst/clutter-gst-video-sink.c
|
|
 |
b31db4 |
+++ b/clutter-gst/clutter-gst-video-sink.c
|
|
 |
b31db4 |
@@ -1971,6 +1971,31 @@ clutter_gst_video_sink_propose_allocation (GstBaseSink * base_sink, GstQuery * q
|
|
 |
b31db4 |
return TRUE;
|
|
 |
b31db4 |
}
|
|
 |
b31db4 |
|
|
 |
b31db4 |
+static gboolean
|
|
 |
b31db4 |
+clutter_gst_video_sink_event (GstBaseSink * basesink, GstEvent * event)
|
|
 |
b31db4 |
+{
|
|
 |
b31db4 |
+ ClutterGstVideoSink *sink = CLUTTER_GST_VIDEO_SINK (basesink);
|
|
 |
b31db4 |
+ ClutterGstVideoSinkPrivate *priv = sink->priv;
|
|
 |
b31db4 |
+ ClutterGstSource *gst_source = priv->source;
|
|
 |
b31db4 |
+
|
|
 |
b31db4 |
+ switch (GST_EVENT_TYPE (event)) {
|
|
 |
b31db4 |
+ case GST_EVENT_FLUSH_START:
|
|
 |
b31db4 |
+ g_mutex_lock (&gst_source->buffer_lock);
|
|
 |
b31db4 |
+ if (gst_source->buffer) {
|
|
 |
b31db4 |
+ GST_DEBUG ("Freeing existing buffer %p", gst_source->buffer);
|
|
 |
b31db4 |
+ gst_buffer_unref (gst_source->buffer);
|
|
 |
b31db4 |
+ gst_source->buffer = NULL;
|
|
 |
b31db4 |
+ }
|
|
 |
b31db4 |
+ g_mutex_unlock (&gst_source->buffer_lock);
|
|
 |
b31db4 |
+ break;
|
|
 |
b31db4 |
+
|
|
 |
b31db4 |
+ default:
|
|
 |
b31db4 |
+ break;
|
|
 |
b31db4 |
+ }
|
|
 |
b31db4 |
+
|
|
 |
b31db4 |
+ return GST_BASE_SINK_CLASS (parent_class)->event (basesink, event);
|
|
 |
b31db4 |
+}
|
|
 |
b31db4 |
+
|
|
 |
b31db4 |
static void
|
|
 |
b31db4 |
clutter_gst_video_sink_class_init (ClutterGstVideoSinkClass * klass)
|
|
 |
b31db4 |
{
|
|
 |
b31db4 |
@@ -2007,6 +2032,7 @@ clutter_gst_video_sink_class_init (ClutterGstVideoSinkClass * klass)
|
|
 |
b31db4 |
gstbase_sink_class->set_caps = clutter_gst_video_sink_set_caps;
|
|
 |
b31db4 |
gstbase_sink_class->get_caps = clutter_gst_video_sink_get_caps;
|
|
 |
b31db4 |
gstbase_sink_class->propose_allocation = clutter_gst_video_sink_propose_allocation;
|
|
 |
b31db4 |
+ gstbase_sink_class->event = clutter_gst_video_sink_event;
|
|
 |
b31db4 |
|
|
 |
b31db4 |
/**
|
|
 |
b31db4 |
* ClutterGstVideoSink:texture:
|
|
 |
b31db4 |
--
|
|
 |
b31db4 |
2.1.0
|
|
 |
b31db4 |
|