]> Dogcows Code - chaz/tint2/blobdiff - src/tint.c
*fix* 2 memleaks
[chaz/tint2] / src / tint.c
index 5b042a87e4aef59df8a6d1bd3d30378271ea961a..609a8d7cea645406314785276a21e4367098fbee 100644 (file)
@@ -157,7 +157,7 @@ void cleanup()
        if (snapshot_path) g_free(snapshot_path);
 
        cleanup_server();
-       XCloseDisplay(server.dsp);
+       if (server.dsp) XCloseDisplay(server.dsp);
 }
 
 
@@ -310,6 +310,7 @@ void event_button_release (XEvent *e)
 
        if (wm_menu && !tint2_handles_click(panel, &e->xbutton)) {
                forward_click(e);
+               XLowerWindow (server.dsp, panel->main_win);
                task_drag = 0;
                return;
        }
@@ -587,7 +588,7 @@ void event_configure_notify (Window win)
        Panel *p = tsk->area.panel;
        if (p->monitor != window_get_monitor (win)) {
                remove_task (tsk);
-               add_task (win);
+               tsk = add_task (win);
                if (win == window_get_active ()) {
                        set_task_state(tsk, TASK_ACTIVE);
                        task_active = tsk;
@@ -800,9 +801,11 @@ int main (int argc, char *argv[])
 
                                        default:
                                                if (e.type == XDamageNotify+damage_event) {
+                                                       // union needed to avoid strict-aliasing warnings by gcc
+                                                       union { XEvent e; XDamageNotifyEvent de; } event_union = {.e=e};
                                                        TrayWindow *traywin;
                                                        GSList *l;
-                                                       XDamageNotifyEvent* de = (XDamageNotifyEvent*)&e;
+                                                       XDamageNotifyEvent* de = &event_union.de;
                                                        for (l = systray.list_icons; l ; l = l->next) {
                                                                traywin = (TrayWindow*)l->data;
                                                                if ( traywin->id == de->drawable && !de->more ) {
This page took 0.024406 seconds and 4 git commands to generate.