device, elementfactory: don't enforce floating status
authorMathieu Duponchelle <mathieu@centricular.com>
Wed, 4 Dec 2019 19:12:02 +0000 (20:12 +0100)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 5 Dec 2019 01:44:35 +0000 (01:44 +0000)
The reference we receive when calling g_object_new should be
floating, but we can't force it at our level.

Switch from g_object_force_floating() to a simple assertion.

See https://gitlab.freedesktop.org/gstreamer/gst-python/issues/27

gst/gstdevice.c
gst/gstelementfactory.c

index 64f5ba5309fd8f5102cd3b7c2b86c8ba0d5ceb5c..bb7f303b535fc7c5a68eff21c976b0106c239dea 100644 (file)
@@ -212,11 +212,12 @@ gst_device_create_element (GstDevice * device, const gchar * name)
   if (klass->create_element)
     element = klass->create_element (device, name);
 
-  /* Ensure that the reference is floating. Bindings might have a hard time
-   * making sure that the reference is indeed still floating after returning
-   * here */
-  if (element)
-    g_object_force_floating ((GObject *) element);
+  if (element) {
+    /* The reference we receive here should be floating, but we can't force
+     * it at our level. Simply assert to make the issue obvious to bindings
+     * developers */
+    g_assert (g_object_is_floating ((GObject *) element));
+  }
 
   return element;
 }
index 547fbd5a1ed6949ff539e108b76f0ffa7808dc88..5d457f10909c97ecf1661cf93b3f4e5b96ac7ac5 100644 (file)
@@ -386,11 +386,10 @@ gst_element_factory_create (GstElementFactory * factory, const gchar * name)
     /* This ref will never be dropped as the class is never destroyed */
     GST_OBJECT_FLAG_SET (factory, GST_OBJECT_FLAG_MAY_BE_LEAKED);
 
-  /* Ensure that the reference is floating. Bindings might have a hard time
-   * making sure that the reference is indeed still floating after returning
-   * here */
-  if (element)
-    g_object_force_floating ((GObject *) element);
+  /* The reference we receive here should be floating, but we can't force
+   * it at our level. Simply assert to make the issue obvious to bindings
+   * developers */
+  g_assert (g_object_is_floating ((GObject *) element));
 
   GST_DEBUG ("created element \"%s\"", GST_OBJECT_NAME (factory));