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.
This commit is contained in:
Sebastian Dröge 2019-02-15 13:20:27 +02:00
parent 2276336621
commit 8de3344ecc

View file

@ -1052,7 +1052,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;
@ -1063,7 +1069,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;