Commit 90e03113 authored by Sebastian Dröge's avatar Sebastian Dröge 🍵 Committed by Tim-Philipp Müller

bus: Don't allow removing signal watches with gst_bus_remove_watch()

Signal watches are reference counted and gst_bus_remove_watch() would
immediately remove it, breaking the reference counting. Only
gst_bus_remove_signal_watch() should be used for removing signal
watches.
parent fd06d56d
...@@ -1054,7 +1054,13 @@ gst_bus_remove_watch (GstBus * bus) ...@@ -1054,7 +1054,13 @@ gst_bus_remove_watch (GstBus * bus)
if (bus->priv->signal_watch == NULL) { if (bus->priv->signal_watch == NULL) {
GST_ERROR_OBJECT (bus, "no bus watch was present"); GST_ERROR_OBJECT (bus, "no bus watch was present");
goto no_watch; goto error;
}
if (bus->priv->num_signal_watchers > 0) {
GST_ERROR_OBJECT (bus,
"trying to remove signal watch with gst_bus_remove_watch()");
goto error;
} }
watch_id = bus->priv->signal_watch; watch_id = bus->priv->signal_watch;
...@@ -1065,7 +1071,7 @@ gst_bus_remove_watch (GstBus * bus) ...@@ -1065,7 +1071,7 @@ gst_bus_remove_watch (GstBus * bus)
return TRUE; return TRUE;
no_watch: error:
GST_OBJECT_UNLOCK (bus); GST_OBJECT_UNLOCK (bus);
return FALSE; return FALSE;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment