From 739c58187ccd9b2e0a14e62f070fd753464f4eb8 Mon Sep 17 00:00:00 2001 From: fryshorts Date: Tue, 13 May 2014 21:53:13 +0200 Subject: [PATCH 1/2] Remove output from encoder when output is destroyed. This fixes an issue reported by valgrind where a destroyed output is still referenced by the encoder. --- libobs/obs-output.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libobs/obs-output.c b/libobs/obs-output.c index 08020ce7b..a864f4915 100644 --- a/libobs/obs-output.c +++ b/libobs/obs-output.c @@ -118,6 +118,15 @@ void obs_output_destroy(obs_output_t output) if (output->context.data) output->info.destroy(output->context.data); + if (output->video_encoder) { + obs_encoder_remove_output(output->video_encoder, + output); + } + if (output->audio_encoder) { + obs_encoder_remove_output(output->audio_encoder, + output); + } + pthread_mutex_destroy(&output->interleaved_mutex); obs_context_data_free(&output->context); bfree(output); From 944c2dc9f7ddc4ba296f4ab3025310b3110ed008 Mon Sep 17 00:00:00 2001 From: fryshorts Date: Tue, 13 May 2014 22:44:49 +0200 Subject: [PATCH 2/2] Destroy swapchain before removing the window info This fixes an issue reported by valgrind where cleaning up the swapchain fails because the window info is destroyed before. --- libobs-opengl/gl-x11.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libobs-opengl/gl-x11.c b/libobs-opengl/gl-x11.c index b2a966198..11a8591f4 100644 --- a/libobs-opengl/gl-x11.c +++ b/libobs-opengl/gl-x11.c @@ -276,9 +276,9 @@ void gl_platform_destroy(struct gl_platform *platform) Display *dpy = platform->swap.wi->display; glXMakeCurrent(dpy, None, NULL); + gl_platform_cleanup_swapchain(&platform->swap); glXDestroyContext(dpy, platform->context); gl_windowinfo_destroy(platform->swap.wi); - gl_platform_cleanup_swapchain(&platform->swap); bfree(platform); }