From 8b8407b9510012071daf5e56130d7355f74599fc Mon Sep 17 00:00:00 2001 From: "F. Duncanh" Date: Mon, 17 Nov 2025 14:46:23 -0500 Subject: [PATCH] callling XCloseDisplay causes coredump: remove call --- renderers/video_renderer.c | 2 +- renderers/x_display_fix.h | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/renderers/video_renderer.c b/renderers/video_renderer.c index 5ed202f..023e8c6 100644 --- a/renderers/video_renderer.c +++ b/renderers/video_renderer.c @@ -684,7 +684,7 @@ static void video_renderer_destroy_instance(video_renderer_t *renderer) { gst_object_unref(renderer->pipeline); #ifdef X_DISPLAY_FIX if (renderer->gst_window){ - //free_X11_Display(renderer->gst_window); without this, a memory leak; with it, a coredump + // free_X11_Display(renderer->gst_window); without this, a memory leak; with it, a coredump free(renderer->gst_window); renderer->gst_window = NULL; } diff --git a/renderers/x_display_fix.h b/renderers/x_display_fix.h index 93efa27..0bb3aed 100644 --- a/renderers/x_display_fix.h +++ b/renderers/x_display_fix.h @@ -49,9 +49,12 @@ static void get_X11_Display(X11_Window_t * X11, char *display_name) { } static int free_X11_Display(X11_Window_t *X11) { - XCloseDisplay(X11->display); + if (X11->display) { + XCloseDisplay(X11->display); + X11->display = NULL; + X11->window = (Window) NULL; + } } - static Window enum_windows(const char * str, Display * display, Window window, int depth) { int i;