all repos — tint2 @ eae7223ddf50f329e2226b579b8960a945062c6b

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

*fix* valgrind invalid read/write and memleaks



git-svn-id: http://tint2.googlecode.com/svn/trunk@572 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
Andreas.Fink85 Andreas.Fink85@121b4492-b84c-0410-8b4c-0d4edfb3f3cc
commit

eae7223ddf50f329e2226b579b8960a945062c6b

parent

1161b0921b54458fe70b02c8063ff4b998e5c8b1

6 files changed, 33 insertions(+), 16 deletions(-)

jump to
M src/clock/clock.csrc/clock/clock.c

@@ -78,6 +78,7 @@ if (time2_timezone) g_free(time2_timezone);

if (time_tooltip_timezone) g_free(time_tooltip_timezone); if (clock_lclick_command) g_free(clock_lclick_command); if (clock_rclick_command) g_free(clock_rclick_command); + if (clock_timeout) stop_timeout(clock_timeout); }
M src/config.csrc/config.c

@@ -375,10 +375,13 @@ /* Clock */

else if (strcmp (key, "time1_format") == 0) { if (new_config_file == 0) { clock_enabled = 1; - if (panel_items_order) - panel_items_order = strcat(panel_items_order, "C"); + if (panel_items_order) { + char* tmp = g_strconcat(panel_items_order, "C", NULL); + g_free( panel_items_order ); + panel_items_order = tmp; + } else - panel_items_order = strdup("C"); + panel_items_order = g_strdup("C"); } if (strlen(value) > 0) { time1_format = strdup (value);

@@ -658,10 +661,13 @@ else if (strcmp(key, "systray") == 0) {

if (new_config_file == 0) { systray_enabled = atoi(value); if (systray_enabled) { - if (panel_items_order) - panel_items_order = strcat(panel_items_order, "S"); - else - panel_items_order = strdup("S"); + if (panel_items_order) { + char* tmp = g_strconcat(panel_items_order, "S", NULL); + g_free( panel_items_order ); + panel_items_order = tmp; + } + else + panel_items_order = g_strdup("S"); } } }

@@ -669,10 +675,13 @@ else if (strcmp(key, "battery") == 0) {

if (new_config_file == 0) { battery_enabled = atoi(value); if (battery_enabled) { - if (panel_items_order) - panel_items_order = strcat(panel_items_order, "B"); - else - panel_items_order = strdup("B"); + if (panel_items_order) { + char* tmp = g_strconcat(panel_items_order, "B", NULL); + g_free( panel_items_order ); + panel_items_order = tmp; + } + else + panel_items_order = g_strdup("B"); } } }

@@ -753,11 +762,12 @@ // append Taskbar item

if (new_config_file == 0) { taskbar_enabled = 1; if (panel_items_order) { - char *tmp = strdup("T"); - panel_items_order = strcat(tmp, panel_items_order); + char* tmp = g_strconcat( "T", panel_items_order, NULL ); + g_free(panel_items_order); + panel_items_order = tmp; } else - panel_items_order = strdup("T"); + panel_items_order = g_strdup("T"); } return 1;
M src/server.csrc/server.c

@@ -303,7 +303,7 @@ }

i++; } next: - for (j=i; j<server.nb_monitor; ++j) + for (j=i; j<nbmonitor; ++j) if (server.monitor[j].names) g_strfreev(server.monitor[j].names); server.nb_monitor = i;
M src/systray/systraybar.csrc/systray/systraybar.c

@@ -532,6 +532,11 @@ // we end up in this function only in real transparency mode or if systray_task_asb != 100 0 0

// we made also sure, that we always have a 32 bit visual, i.e. we can safely create 32 bit pixmaps here TrayWindow* traywin = t; traywin->render_timeout = 0; + if ( traywin->width == 0 || traywin->height == 0 ) { + // reschedule rendering since the geometry information has not yet been processed (can happen on slow cpu) + systray_render_icon(traywin); + return; + } // good systray icons support 32 bit depth, but some icons are still 24 bit. // We create a heuristic mask for these icons, i.e. we get the rgb value in the top left corner, and
M src/tint.csrc/tint.c

@@ -156,7 +156,6 @@

void cleanup() { - cleanup_timeout(); cleanup_systray(); cleanup_tooltip(); cleanup_clock();

@@ -174,6 +173,7 @@ }

imlib_context_disconnect_display(); cleanup_server(); + cleanup_timeout(); if (server.dsp) XCloseDisplay(server.dsp); }
M src/util/timer.csrc/util/timer.c

@@ -398,6 +398,7 @@ t->multi_timeout = 0;

if (g_slist_length(mth->timeout_list) == 1) { timeout* last_timeout = mth->timeout_list->data; + g_slist_remove(mth->timeout_list, last_timeout); free(last_timeout->multi_timeout); last_timeout->multi_timeout = 0; g_hash_table_remove(multi_timeouts, last_timeout);