linux-capture: Deinit pipewire only if we init'ed

If you don't have a xdg-desktop-portal backend then pipewire wont init,
however on exit we unconditionally deinit which can crash in pipewire
which does not handle this gracefully.
This commit is contained in:
Kurt Kartaltepe 2021-12-08 21:07:17 -08:00 committed by Matt Gajownik
parent 2c7b14bc37
commit 26f4d85398

View File

@ -110,6 +110,8 @@ static void pipewire_capture_video_render(void *data, gs_effect_t *effect)
obs_pipewire_video_render(data, effect);
}
static bool initialized = false;
void pipewire_capture_load(void)
{
uint32_t available_capture_types = portal_get_available_capture_types();
@ -173,9 +175,11 @@ void pipewire_capture_load(void)
obs_register_source(&pipewire_window_capture_info);
pw_init(NULL, NULL);
initialized = true;
}
void pipewire_capture_unload(void)
{
pw_deinit();
if (initialized)
pw_deinit();
}