diff --git a/plugins/linux-pipewire/camera-portal.c b/plugins/linux-pipewire/camera-portal.c index 94684c79f..105334c77 100644 --- a/plugins/linux-pipewire/camera-portal.c +++ b/plugins/linux-pipewire/camera-portal.c @@ -280,6 +280,8 @@ static void on_registry_global_cb(void *user_data, uint32_t id, registry = obs_pipewire_get_registry(connection->obs_pw); device_id = spa_dict_lookup(props, SPA_KEY_NODE_NAME); + blog(LOG_INFO, "[camera-portal] Found device %s", device_id); + device = camera_device_new(id, props); device->proxy = pw_registry_bind(registry, id, type, version, 0); if (!device->proxy) { @@ -292,6 +294,13 @@ static void on_registry_global_cb(void *user_data, uint32_t id, &proxy_events, device); g_hash_table_insert(connection->devices, bstrdup(device_id), device); + + for (size_t i = 0; i < connection->sources->len; i++) { + struct camera_portal_source *camera_source = + g_ptr_array_index(connection->sources, i); + if (strcmp(camera_source->device_id, device_id) == 0) + stream_camera(camera_source); + } } static void on_registry_global_remove_cb(void *user_data, uint32_t id) @@ -355,12 +364,6 @@ static void on_pipewire_remote_opened_cb(GObject *source, GAsyncResult *res, pipewire_fd, ®istry_events, connection); obs_pipewire_roundtrip(connection->obs_pw); - - for (size_t i = 0; i < connection->sources->len; i++) { - struct camera_portal_source *camera_source = - g_ptr_array_index(connection->sources, i); - stream_camera(camera_source); - } } static void open_pipewire_remote(void)