media-factory: unref old clock when setting new clock
authorTim-Philipp Müller <tim@centricular.com>
Thu, 12 Jul 2018 18:01:54 +0000 (19:01 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 12 Jul 2018 18:02:40 +0000 (19:02 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=796724

gst/rtsp-server/rtsp-media-factory.c

index 6df726f..a4f10dd 100644 (file)
@@ -1380,13 +1380,14 @@ void
 gst_rtsp_media_factory_set_clock (GstRTSPMediaFactory * factory,
     GstClock * clock)
 {
-  GstRTSPMediaFactoryPrivate *priv;
+  GstClock **clock_p;
 
+  g_return_if_fail (GST_IS_RTSP_MEDIA_FACTORY (factory));
   g_return_if_fail (GST_IS_CLOCK (clock) || clock == NULL);
 
   GST_RTSP_MEDIA_FACTORY_LOCK (factory);
-  priv = factory->priv;
-  priv->clock = clock ? gst_object_ref (clock) : NULL;
+  clock_p = &factory->priv->clock;
+  gst_object_replace ((GstObject **) clock_p, (GstObject *) clock);
   GST_RTSP_MEDIA_FACTORY_UNLOCK (factory);
 }
 
@@ -1407,6 +1408,8 @@ gst_rtsp_media_factory_get_clock (GstRTSPMediaFactory * factory)
   GstRTSPMediaFactoryPrivate *priv;
   GstClock *ret;
 
+  g_return_val_if_fail (GST_IS_RTSP_MEDIA_FACTORY (factory), NULL);
+
   GST_RTSP_MEDIA_FACTORY_LOCK (factory);
   priv = factory->priv;
   ret = priv->clock ? gst_object_ref (priv->clock) : NULL;