diff --git a/po/xfwm4.pot b/po/xfwm4.pot index eb509e9594d1ac16d590526653bc527996b183e9..36057d2df30f895af8962bbab7c18bc8c51d3d67 100644 --- a/po/xfwm4.pot +++ b/po/xfwm4.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2004-09-27 00:12+0200\n" +"POT-Creation-Date: 2004-09-27 23:39+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -592,7 +592,7 @@ msgstr "" msgid "Compose shortcut for command :" msgstr "" -#: src/events.c:1707 +#: src/events.c:1704 #, c-format msgid "%s: Operation not supported (yet)\n" msgstr "" @@ -602,27 +602,27 @@ msgstr "" msgid "%s: Segmentation fault" msgstr "" -#: src/main.c:404 +#: src/main.c:414 #, c-format msgid "%s: Another Window Manager is already running" msgstr "" -#: src/main.c:409 +#: src/main.c:419 #, c-format msgid "%s: Missing data from default files" msgstr "" -#: src/main.c:419 +#: src/main.c:429 #, c-format msgid "%s: Failed to enter daemon mode: %s" msgstr "" -#: src/main.c:427 +#: src/main.c:437 #, c-format msgid "%s: Failed to create new process: %s" msgstr "" -#: src/main.c:448 +#: src/main.c:458 #, c-format msgid "%s: Unknown error occured" msgstr "" diff --git a/src/compositor.c b/src/compositor.c index c05c704f61a485a43a6101bfedb062c34e41742c..404d94d22f837d1b0256a30a98f6c4f9031df8fe 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -968,7 +968,7 @@ add_damage (ScreenInfo *screen_info, XserverRegion damage) } static void -free_win_data (CWindow *cw) +free_win_data (CWindow *cw, gboolean delete) { #if HAVE_NAME_WINDOW_PIXMAP if (cw->name_window_pixmap) @@ -995,7 +995,7 @@ free_win_data (CWindow *cw) XRenderFreePicture (myScreenGetXDisplay (cw->screen_info), cw->shadowPict); cw->shadowPict = None; } - if (cw->damage != None) + if ((delete) && (cw->damage != None)) { XDamageDestroy (myScreenGetXDisplay (cw->screen_info), cw->damage); cw->damage = None; @@ -1018,6 +1018,11 @@ free_win_data (CWindow *cw) XFixesDestroyRegion (myScreenGetXDisplay (cw->screen_info), cw->borderClip); cw->borderClip = None; } + + if (delete) + { + g_free (cw); + } } static void @@ -1168,7 +1173,7 @@ unmap_win (CWindow *cw) add_damage (screen_info, cw->extents); cw->extents = None; } - free_win_data (cw); + free_win_data (cw, FALSE); screen_info->clipChanged = TRUE; } @@ -1351,9 +1356,8 @@ destroy_win (ScreenInfo *screen_info, Window id, gboolean gone) { unmap_win (cw); } - free_win_data (cw); screen_info->cwindows = g_list_remove (screen_info->cwindows, (gconstpointer) cw); - g_free (cw); + free_win_data (cw, TRUE); TRACE ("window 0x%lx removed", id); } } @@ -1862,8 +1866,7 @@ compositorUnmanageScreen (ScreenInfo *screen_info) for (index = screen_info->cwindows; index; index = g_list_next (index)) { CWindow *cw2 = (CWindow *) index->data; - free_win_data (cw2); - g_free (cw2); + free_win_data (cw2, TRUE); i++; } g_list_free (screen_info->cwindows);