From d75fb18bf86d5b08742e1c0303108f98711aedcf Mon Sep 17 00:00:00 2001 From: Nikolas Garofil Date: Tue, 14 Jul 2009 17:43:27 +0200 Subject: [PATCH 1/3] Fix building with strict compilers --- src/x11.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/x11.c b/src/x11.c index 95e1acd7..6da619e7 100644 --- a/src/x11.c +++ b/src/x11.c @@ -560,7 +560,7 @@ void create_gc(void) } //Get current desktop number -static inline void get_x11_desktop_current(Display *display, Window root, Atom atom) +static inline void get_x11_desktop_current(Display *current_display, Window root, Atom atom) { Atom actual_type; int actual_format; @@ -569,7 +569,7 @@ static inline void get_x11_desktop_current(Display *display, Window root, Atom a unsigned char *prop = NULL; struct information *current_info = &info; - if ( (XGetWindowProperty( display, root, atom, + if ( (XGetWindowProperty( current_display, root, atom, 0, 1L, False, XA_CARDINAL, &actual_type, &actual_format, &nitems, &bytes_after, &prop ) == Success ) && @@ -583,7 +583,7 @@ static inline void get_x11_desktop_current(Display *display, Window root, Atom a } //Get total number of available desktops -static inline void get_x11_desktop_number(Display *display, Window root, Atom atom) +static inline void get_x11_desktop_number(Display *current_display, Window root, Atom atom) { Atom actual_type; int actual_format; @@ -592,7 +592,7 @@ static inline void get_x11_desktop_number(Display *display, Window root, Atom at unsigned char *prop = NULL; struct information *current_info = &info; - if ( (XGetWindowProperty( display, root, atom, + if ( (XGetWindowProperty( current_display, root, atom, 0, 1L, False, XA_CARDINAL, &actual_type, &actual_format, &nitems, &bytes_after, &prop ) == Success ) && @@ -606,7 +606,7 @@ static inline void get_x11_desktop_number(Display *display, Window root, Atom at } //Get all desktop names -static inline void get_x11_desktop_names(Display *display, Window root, Atom atom) +static inline void get_x11_desktop_names(Display *current_display, Window root, Atom atom) { Atom actual_type; int actual_format; @@ -615,7 +615,7 @@ static inline void get_x11_desktop_names(Display *display, Window root, Atom ato unsigned char *prop = NULL; struct information *current_info = &info; - if ( (XGetWindowProperty( display, root, atom, + if ( (XGetWindowProperty( current_display, root, atom, 0, (~0L), False, ATOM(UTF8_STRING), &actual_type, &actual_format, &nitems, &bytes_after, &prop ) == Success ) && @@ -659,31 +659,31 @@ static inline void get_x11_desktop_current_name(char *names) } } -void get_x11_desktop_info(Display *display, Atom atom) +void get_x11_desktop_info(Display *current_display, Atom atom) { Window root; static Atom atom_current, atom_number, atom_names; struct information *current_info = &info; - root = RootWindow(display, current_info->x11.monitor.current); + root = RootWindow(current_display, current_info->x11.monitor.current); //Check if we initialise else retrieve changed property if (atom == 0) { - atom_current = XInternAtom(display, "_NET_CURRENT_DESKTOP", True); - atom_number = XInternAtom(display, "_NET_NUMBER_OF_DESKTOPS", True); - atom_names = XInternAtom(display, "_NET_DESKTOP_NAMES", True); - get_x11_desktop_current(display, root, atom_current); - get_x11_desktop_number(display, root, atom_number); - get_x11_desktop_names(display, root, atom_names); + atom_current = XInternAtom(current_display, "_NET_CURRENT_DESKTOP", True); + atom_number = XInternAtom(current_display, "_NET_NUMBER_OF_DESKTOPS", True); + atom_names = XInternAtom(current_display, "_NET_DESKTOP_NAMES", True); + get_x11_desktop_current(current_display, root, atom_current); + get_x11_desktop_number(current_display, root, atom_number); + get_x11_desktop_names(current_display, root, atom_names); get_x11_desktop_current_name(current_info->x11.desktop.all_names); } else { if (atom == atom_current) { - get_x11_desktop_current(display, root, atom_current); + get_x11_desktop_current(current_display, root, atom_current); get_x11_desktop_current_name(current_info->x11.desktop.all_names); } else if (atom == atom_number) { - get_x11_desktop_number(display, root, atom_number); + get_x11_desktop_number(current_display, root, atom_number); } else if (atom == atom_names) { - get_x11_desktop_names(display, root, atom_names); + get_x11_desktop_names(current_display, root, atom_names); get_x11_desktop_current_name(current_info->x11.desktop.all_names); } } From cfa94a967b6b92f7ece350a0a06d529aacd61bbf Mon Sep 17 00:00:00 2001 From: Nikolas Garofil Date: Tue, 14 Jul 2009 18:05:49 +0200 Subject: [PATCH 2/3] Fix memleaks introduced by g7bbde2b --- src/conky.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/conky.c b/src/conky.c index b2e5f391..354bf1a8 100644 --- a/src/conky.c +++ b/src/conky.c @@ -7486,6 +7486,14 @@ void clean_up(void) destroy_window(); XClearWindow(display, RootWindow(display, screen)); XCloseDisplay(display); + if(info.x11.desktop.all_names) { + free(info.x11.desktop.all_names); + info.x11.desktop.all_names = NULL; + } + if (info.x11.desktop.name) { + free(info.x11.desktop.name); + info.x11.desktop.name = NULL; + } }else{ free(fonts); //in set_default_configurations a font is set but not loaded } From cd92949e6704b38241666e26dc38eae6c9ba6d9c Mon Sep 17 00:00:00 2001 From: Nikolas Garofil Date: Tue, 14 Jul 2009 18:10:43 +0200 Subject: [PATCH 3/3] Fix strange effects on desktop caused by 4a14668772a37b18a9aceb8951ece260084bc96e --- src/conky.c | 2 +- src/x11.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/conky.c b/src/conky.c index 354bf1a8..9d5f064d 100644 --- a/src/conky.c +++ b/src/conky.c @@ -7478,12 +7478,12 @@ void clean_up(void) } #ifdef X11 if (x_initialised == YES) { + destroy_window(); free_fonts(); if(x11_stuff.region) { XDestroyRegion(x11_stuff.region); x11_stuff.region = NULL; } - destroy_window(); XClearWindow(display, RootWindow(display, screen)); XCloseDisplay(display); if(info.x11.desktop.all_names) { diff --git a/src/x11.c b/src/x11.c index 6da619e7..5364dce8 100644 --- a/src/x11.c +++ b/src/x11.c @@ -194,7 +194,6 @@ void set_transparent_background(Window win) void destroy_window(void) { - XDestroyWindow(display, window.window); XFreeGC(display, window.gc); memset(&window, 0, sizeof(struct conky_window)); }