mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
fix memory leaks in x_display_fix.h (from Valgrind)
This commit is contained in:
@@ -670,7 +670,8 @@ static void video_renderer_destroy_instance(video_renderer_t *renderer) {
|
||||
gst_object_unref(renderer->bus);
|
||||
gst_object_unref(renderer->pipeline);
|
||||
#ifdef X_DISPLAY_FIX
|
||||
if (renderer->gst_window) {
|
||||
if (renderer->gst_window){
|
||||
free_X11_Display(renderer->gst_window);
|
||||
free(renderer->gst_window);
|
||||
renderer->gst_window = NULL;
|
||||
}
|
||||
|
||||
@@ -48,15 +48,23 @@ static void get_X11_Display(X11_Window_t * X11, char *display_name) {
|
||||
X11->window = (Window) NULL;
|
||||
}
|
||||
|
||||
static int free_X11_Display(X11_Window_t *X11) {
|
||||
XCloseDisplay(X11->display);
|
||||
}
|
||||
|
||||
|
||||
static Window enum_windows(const char * str, Display * display, Window window, int depth) {
|
||||
int i;
|
||||
XTextProperty text;
|
||||
XGetWMName(display, window, &text);
|
||||
char* name = NULL;
|
||||
XFetchName(display, window, &name);
|
||||
if (name != 0 && strcmp(str, name) == 0) {
|
||||
return window;
|
||||
if (name) {
|
||||
if (strcmp(str, name) == 0) {
|
||||
XFree(name);
|
||||
return window;
|
||||
}
|
||||
XFree(name);
|
||||
}
|
||||
|
||||
Window _root, parent;
|
||||
Window* children = NULL;
|
||||
unsigned int n;
|
||||
@@ -64,7 +72,10 @@ static Window enum_windows(const char * str, Display * display, Window window, i
|
||||
if (children != NULL) {
|
||||
for (i = 0; i < n; i++) {
|
||||
Window w = enum_windows(str, display, children[i], depth + 1);
|
||||
if (w) return w;
|
||||
if (w) {
|
||||
XFree(children);
|
||||
return w;
|
||||
}
|
||||
}
|
||||
XFree(children);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user