diff --git a/gst/gstpipeline.c b/gst/gstpipeline.c index 8da8d6abcc..b6a7244d9d 100644 --- a/gst/gstpipeline.c +++ b/gst/gstpipeline.c @@ -123,10 +123,7 @@ gst_pipeline_dispose (GObject *object) G_OBJECT_CLASS (parent_class)->dispose (object); - if (GST_ELEMENT_SCHED (pipeline)) { - gst_object_unref (GST_OBJECT (GST_ELEMENT_SCHED (pipeline))); - GST_ELEMENT_SCHED (pipeline) = NULL; - } + gst_object_swap ((GstObject **)&GST_ELEMENT_SCHED (pipeline), NULL); } /** diff --git a/gst/gstscheduler.c b/gst/gstscheduler.c index e160165a4d..daca1a6007 100644 --- a/gst/gstscheduler.c +++ b/gst/gstscheduler.c @@ -807,7 +807,7 @@ gst_scheduler_factory_new (const gchar *name, const gchar *longdesc, GType type) { GstSchedulerFactory *factory; - g_return_val_if_fail(name != NULL, NULL); + g_return_val_if_fail (name != NULL, NULL); factory = gst_scheduler_factory_find (name); @@ -851,7 +851,7 @@ gst_scheduler_factory_find (const gchar *name) { GstPluginFeature *feature; - g_return_val_if_fail(name != NULL, NULL); + g_return_val_if_fail (name != NULL, NULL); GST_DEBUG (0,"gstscheduler: find \"%s\"", name); @@ -880,7 +880,8 @@ gst_scheduler_factory_create (GstSchedulerFactory *factory, GstElement *parent) GstScheduler *new = NULL; g_return_val_if_fail (factory != NULL, NULL); - g_return_val_if_fail (parent != NULL, NULL); + g_return_val_if_fail (GST_IS_ELEMENT (parent), NULL); + g_return_val_if_fail (GST_ELEMENT_SCHED (parent) == NULL, NULL); if (gst_plugin_feature_ensure_loaded (GST_PLUGIN_FEATURE (factory))) { g_return_val_if_fail (factory->type != 0, NULL); diff --git a/gst/gstthread.c b/gst/gstthread.c index c8b4e00d17..fb6ab5f02a 100644 --- a/gst/gstthread.c +++ b/gst/gstthread.c @@ -209,11 +209,9 @@ gst_thread_dispose (GObject *object) g_cond_free (thread->cond_t); g_cond_free (thread->cond_m); - G_OBJECT_CLASS (parent_class)->dispose (object); + gst_object_swap ((GstObject **)&GST_ELEMENT_SCHED (thread), NULL); - if (GST_ELEMENT_SCHED (thread)) { - gst_object_unref (GST_OBJECT (GST_ELEMENT_SCHED (thread))); - } + G_OBJECT_CLASS (parent_class)->dispose (object); } /**