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->bus);
|
||||||
gst_object_unref(renderer->pipeline);
|
gst_object_unref(renderer->pipeline);
|
||||||
#ifdef X_DISPLAY_FIX
|
#ifdef X_DISPLAY_FIX
|
||||||
if (renderer->gst_window) {
|
if (renderer->gst_window){
|
||||||
|
free_X11_Display(renderer->gst_window);
|
||||||
free(renderer->gst_window);
|
free(renderer->gst_window);
|
||||||
renderer->gst_window = NULL;
|
renderer->gst_window = NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,15 +48,23 @@ static void get_X11_Display(X11_Window_t * X11, char *display_name) {
|
|||||||
X11->window = (Window) NULL;
|
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) {
|
static Window enum_windows(const char * str, Display * display, Window window, int depth) {
|
||||||
int i;
|
int i;
|
||||||
XTextProperty text;
|
|
||||||
XGetWMName(display, window, &text);
|
|
||||||
char* name = NULL;
|
char* name = NULL;
|
||||||
XFetchName(display, window, &name);
|
XFetchName(display, window, &name);
|
||||||
if (name != 0 && strcmp(str, name) == 0) {
|
if (name) {
|
||||||
return window;
|
if (strcmp(str, name) == 0) {
|
||||||
|
XFree(name);
|
||||||
|
return window;
|
||||||
|
}
|
||||||
|
XFree(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
Window _root, parent;
|
Window _root, parent;
|
||||||
Window* children = NULL;
|
Window* children = NULL;
|
||||||
unsigned int n;
|
unsigned int n;
|
||||||
@@ -64,7 +72,10 @@ static Window enum_windows(const char * str, Display * display, Window window, i
|
|||||||
if (children != NULL) {
|
if (children != NULL) {
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Window w = enum_windows(str, display, children[i], depth + 1);
|
Window w = enum_windows(str, display, children[i], depth + 1);
|
||||||
if (w) return w;
|
if (w) {
|
||||||
|
XFree(children);
|
||||||
|
return w;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
XFree(children);
|
XFree(children);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user