Преглед на файлове

linux-pipewire: Close sessions as we are done with them

This way the stream can be cleaned up. Otherwise, we closed them all
when OBS closes which works but is not entirely correct.
Aleix Pol преди 3 години
родител
ревизия
e52ad554aa
променени са 1 файла, в които са добавени 14 реда и са изтрити 0 реда
  1. 14 0
      plugins/linux-pipewire/screencast-portal.c

+ 14 - 0
plugins/linux-pipewire/screencast-portal.c

@@ -627,6 +627,20 @@ static bool reload_session_cb(obs_properties_t *properties,
 	g_clear_pointer(&capture->restore_token, bfree);
 	g_clear_pointer(&capture->obs_pw, obs_pipewire_destroy);
 
+	if (capture->session_handle) {
+		blog(LOG_DEBUG, "[pipewire] Cleaning previous session %s",
+		     capture->session_handle);
+		g_dbus_connection_call(portal_get_dbus_connection(),
+				       "org.freedesktop.portal.Desktop",
+				       capture->session_handle,
+				       "org.freedesktop.portal.Session",
+				       "Close", NULL, NULL,
+				       G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL,
+				       NULL);
+
+		g_clear_pointer(&capture->session_handle, g_free);
+	}
+
 	init_screencast_capture(capture);
 
 	return false;