GstQuery *oldquery;
GstGLMixerPrivate *priv = mix->priv;
+ GST_DEBUG ("storing allocation query");
+
GST_OBJECT_LOCK (mix);
oldpool = priv->pool;
priv->pool = pool;
walk = walk->next;
}
+ if (mix->priv->query) {
+ gst_query_unref (mix->priv->query);
+ mix->priv->query = NULL;
+ }
+
+ if (mix->priv->pool) {
+ gst_object_unref (mix->priv->pool);
+ mix->priv->pool = NULL;
+ }
+
if (mix->display) {
gst_object_unref (mix->display);
mix->display = NULL;
static void gst_glimage_sink_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * param_spec);
+static gboolean gst_glimage_sink_stop (GstBaseSink * bsink);
+
static gboolean gst_glimage_sink_query (GstBaseSink * bsink, GstQuery * query);
static GstStateChangeReturn
gstbasesink_class->preroll = gst_glimage_sink_render;
gstbasesink_class->render = gst_glimage_sink_render;
gstbasesink_class->propose_allocation = gst_glimage_sink_propose_allocation;
+ gstbasesink_class->stop = gst_glimage_sink_stop;
}
static void
glimage_sink = GST_GLIMAGE_SINK (object);
- if (glimage_sink->pool) {
- gst_object_unref (glimage_sink->pool);
- glimage_sink->pool = NULL;
- }
-
g_mutex_clear (&glimage_sink->drawing_lock);
g_free (glimage_sink->display_name);
* GstElement methods
*/
+static gboolean
+gst_glimage_sink_stop (GstBaseSink * bsink)
+{
+ GstGLImageSink *glimage_sink = GST_GLIMAGE_SINK (bsink);
+
+ if (glimage_sink->pool) {
+ gst_object_unref (glimage_sink->pool);
+ glimage_sink->pool = NULL;
+ }
+
+ return TRUE;
+}
+
static GstStateChangeReturn
gst_glimage_sink_change_state (GstElement * element, GstStateChange transition)
{