Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: backgrounds.c backgrounds.h desktops.c desktops.h iclass.c startup.c Log Message: Fix incorrect or invalid background pixmaps in certain situations. =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/backgrounds.c,v retrieving revision 1.52 retrieving revision 1.53 diff -u -3 -r1.52 -r1.53 --- backgrounds.c 22 Nov 2005 23:21:47 -0000 1.52 +++ backgrounds.c 27 Nov 2005 11:02:05 -0000 1.53 @@ -27,7 +27,6 @@ #include "desktops.h" #include "dialog.h" #include "emodule.h" -#include "hints.h" /* FIXME - Should not be here */ #include "iclass.h" #include "tclass.h" #include "xwin.h" @@ -55,11 +54,12 @@ ColorModifierClass *cmclass; #endif char keepim; - unsigned int ref_count; + unsigned int ref_count; /* bg */ + unsigned int use_count; /* pmap */ }; char * -BackgroundGetUniqueString(Background * bg) +BackgroundGetUniqueString(const Background * bg) { char s[256]; const char *chmap = @@ -147,17 +147,50 @@ } void +BackgroundPixmapSet(Background * bg, Pixmap pmap) +{ + if (bg->pmap != pmap) + { + if (bg->use_count || bg->pmap != None) + Eprintf("*** BackgroundPixmapSet %s: pmap mismatch %#lx/%#lx\n", + bg->name, bg->pmap, pmap); + bg->pmap = pmap; + } + bg->use_count++; +} + +void +BackgroundPixmapUnset(Background * bg, Pixmap pmap) +{ + if (bg->pmap != pmap || !bg->use_count) + { + Eprintf("*** BackgroundPixmapUnset %s: pmap mismatch %#lx/%#lx\n", + bg->name, bg->pmap, pmap); + } + if (bg->use_count) + bg->use_count--; +} + +static void BackgroundPixmapFree(Background * bg) { - if (bg && bg->pmap) + if (!bg) + return; + + if (bg->use_count) + { + Eprintf("*** BackgroundPixmapFree %s: still referenced(%d)\n", + bg->name, bg->use_count); + } + if (bg->pmap) { imlib_free_pixmap_and_mask(bg->pmap); - bg->pmap = 0; + bg->pmap = None; } } -void -BackgroundImagesFree(Background * bg, int free_pmap) +static void +BackgroundImagesFree(Background * bg) { if (bg->bg.im) { @@ -171,8 +204,6 @@ imlib_free_image(); bg->top.im = NULL; } - if (free_pmap && bg->pmap) - BackgroundPixmapFree(bg); } static void @@ -185,12 +216,12 @@ else { bg->keepim = 0; - BackgroundImagesFree(bg, 0); + BackgroundImagesFree(bg); } } static void -BackgroundImagesRemove(Background * bg) +BackgroundFilesRemove(Background * bg) { if (bg->bg.file) Efree(bg->bg.file); @@ -208,7 +239,7 @@ Efree(bg->top.real_file); bg->top.real_file = NULL; - BackgroundImagesFree(bg, 1); + BackgroundImagesFree(bg); bg->keepim = 0; } @@ -227,7 +258,8 @@ } RemoveItemByPtr(bg, LIST_TYPE_BACKGROUND); - BackgroundImagesRemove(bg); + BackgroundFilesRemove(bg); + BackgroundPixmapFree(bg); if (bg->name) Efree(bg->name); @@ -311,6 +343,19 @@ BackgroundDestroy(FindItem(name, 0, LIST_FINDBY_NAME, LIST_TYPE_BACKGROUND)); } +static void +BackgroundInvalidate(Background * bg, int refresh) +{ + int used; + + used = bg->ref_count; + if (used) + DesksBackgroundFree(bg, 1); + BackgroundPixmapFree(bg); + if (used && refresh) + DesksBackgroundRefresh(bg); +} + static int BackgroundModify(Background * bg, XColor * solid, const char *bgn, char tile, char keep_aspect, int xjust, int yjust, int xperc, @@ -383,7 +428,7 @@ bg->top.yperc = typerc; if (updated) - BackgroundPixmapFree(bg); + BackgroundInvalidate(bg, 1); return updated; } @@ -734,7 +779,7 @@ done: if (!bg->keepim) - BackgroundImagesFree(bg, 0); + BackgroundImagesFree(bg); imlib_context_set_dither(rt); @@ -763,15 +808,20 @@ BackgroundRealize(bg, win, w, h, 1, &pmap, &pixel); if (pmap != None) - ESetWindowBackgroundPixmap(win, pmap); + { + ESetWindowBackgroundPixmap(win, pmap); + imlib_free_pixmap_and_mask(pmap); + } else - ESetWindowBackground(win, pixel); + { + ESetWindowBackground(win, pixel); + } EClearWindow(win); } /* * Apply a background to window. - * The (scaled) BG pixmap is stored in bg->pmap. + * The BG pixmap is stored in bg->pmap. */ void BackgroundSet(Background * bg, Window win, unsigned int w, unsigned int h) @@ -935,6 +985,12 @@ bg->last_viewed = time(NULL); } +static time_t +BackgroundGetTimestamp(const Background * bg) +{ + return bg->last_viewed; +} + const char * BackgroundGetName(const Background * bg) { @@ -971,12 +1027,6 @@ return (bg) ? !strcmp(bg->name, "NONE") : 1; } -static time_t -BackgroundGetTimestamp(const Background * bg) -{ - return bg->last_viewed; -} - static Imlib_Image * BackgroundCacheMini(Background * bg, int keep, int nuke) { @@ -1056,18 +1106,16 @@ } void -BackgroundsInvalidate(void) +BackgroundsInvalidate(int refresh) { int i, num; - Desk *dsk; + Background **lst; - num = DesksGetNumber(); + lst = (Background **) ListItemType(&num, LIST_TYPE_BACKGROUND); for (i = 0; i < num; i++) - { - dsk = DeskGet(i); - BackgroundPixmapFree(DeskBackgroundGet(dsk)); - DeskRefresh(dsk); - } + BackgroundInvalidate(lst[i], refresh); + if (lst) + Efree(lst); } /* @@ -1395,8 +1443,7 @@ time_t now; int i, num; unsigned int j; - Background **lst; - Window win; + Background **lst, *bg; Desk *dsk; now = time(NULL); @@ -1411,38 +1458,16 @@ lst = (Background **) ListItemType(&num, LIST_TYPE_BACKGROUND); for (i = 0; i < num; i++) { + bg = lst[i]; + /* Skip if no pixmap or not timed out */ - if ((BackgroundGetPixmap(lst[i]) == 0) || - ((now - BackgroundGetTimestamp(lst[i])) <= - Conf.backgrounds.timeout)) + if ((bg->pmap == None) || + ((now - BackgroundGetTimestamp(bg)) <= Conf.backgrounds.timeout)) continue; - /* Skip if associated with any viewable desktop */ - for (j = 0; j < DesksGetNumber(); j++) - { - dsk = DeskGet(j); - if (lst[i] == DeskBackgroundGet(dsk) && DeskIsViewable(dsk)) - goto next; - } - - for (j = 0; j < DesksGetNumber(); j++) - { - dsk = DeskGet(j); - if (lst[i] != DeskBackgroundGet(dsk) || DeskIsViewable(dsk)) - continue; - - /* Unviewable desktop - update the virtual root hints */ - win = EoGetWin(dsk); - if (!Conf.hints.set_xroot_info_on_root_window) - HintsSetRootInfo(win, 0, 0); - ESetWindowBackground(win, 0); - EClearWindow(win); - } - - BackgroundPixmapFree(lst[i]); - - next: - ; + if (bg->ref_count) + DesksBackgroundFree(bg, 0); + BackgroundPixmapFree(bg); } if (lst) Efree(lst); @@ -1453,7 +1478,8 @@ { BackgroundsAccounting(); /* RemoveTimerEvent("BACKGROUND_ACCOUNTING_TIMEOUT"); */ - DoIn("BACKGROUND_ACCOUNTING_TIMEOUT", 30.0, BackgroundsTimeout, 0, NULL); + DoIn("BACKGROUND_ACCOUNTING_TIMEOUT", 1.0 * Conf.backgrounds.timeout, + BackgroundsTimeout, 0, NULL); } static void @@ -1518,8 +1544,6 @@ static void CB_ConfigureBG(Dialog * d __UNUSED__, int val, void *data __UNUSED__) { - unsigned int i; - if (val < 0) { BackgroundImagesKeep(tmp_bg, 0); @@ -1543,20 +1567,13 @@ tmp_bg->bg.yjust = 1024 - tmp_bg_yjust; tmp_bg->bg.xperc = tmp_bg_xperc; tmp_bg->bg.yperc = 1024 - tmp_bg_yperc; + if (!tmp_bg_image) + BackgroundFilesRemove(tmp_bg); - for (i = 0; i < DesksGetNumber(); i++) - { - Desk *dsk = DeskGet(i); - - if (DeskBackgroundGet(dsk) == tmp_bg) - DeskBackgroundSet(dsk, tmp_bg, 1); - } + BackgroundInvalidate(tmp_bg, 1); BackgroundCacheMini(tmp_bg, 0, 1); BG_RedrawView(); - - if (!tmp_bg_image) - BackgroundImagesRemove(tmp_bg); } autosave(); @@ -1705,7 +1722,7 @@ DialogItemSliderSetVal(bg_sel_slider, 0); DialogDrawItems(bg_sel_dialog, bg_sel_slider, 0, 0, 99999, 99999); - DeskBackgroundSet(DesksGetCurrent(), tmp_bg, 0); + DeskBackgroundSet(DesksGetCurrent(), tmp_bg); BG_RedrawView(); @@ -1743,7 +1760,7 @@ } } - DeskBackgroundSet(DesksGetCurrent(), bg, 0); + DeskBackgroundSet(DesksGetCurrent(), bg); if (val == 0) BackgroundDestroy(tmp_bg); else @@ -1899,7 +1916,7 @@ if ((tmp_bg_selected >= 0) && (tmp_bg_selected < num)) { BgDialogSetNewCurrent(bglist[tmp_bg_selected]); - DeskBackgroundSet(DesksGetCurrent(), tmp_bg, 0); + DeskBackgroundSet(DesksGetCurrent(), tmp_bg); autosave(); } Efree(bglist); @@ -1963,7 +1980,7 @@ if ((bglist[i] == tmp_bg) && (i > 0)) { BGSettingsGoTo(bglist[i - 1]); - DeskBackgroundSet(DesksGetCurrent(), bglist[i - 1], 0); + DeskBackgroundSet(DesksGetCurrent(), bglist[i - 1]); break; } } @@ -1983,7 +2000,7 @@ if ((bglist[i] == tmp_bg) && (i < (num - 1))) { BGSettingsGoTo(bglist[i + 1]); - DeskBackgroundSet(DesksGetCurrent(), bglist[i + 1], 0); + DeskBackgroundSet(DesksGetCurrent(), bglist[i + 1]); break; } } @@ -2511,7 +2528,7 @@ unsigned int i; int r, g, b; char bgf[FILEPATH_LEN_MAX], topf[FILEPATH_LEN_MAX]; - int updated, tile, keep_aspect, tkeep_aspect; + int tile, keep_aspect, tkeep_aspect; int xjust, yjust, xperc, yperc; int txjust, tyjust, txperc, typerc; @@ -2530,19 +2547,9 @@ bg = FindItem(name, 0, LIST_FINDBY_NAME, LIST_TYPE_BACKGROUND); if (bg) { - updated = BackgroundModify(bg, &xclr, bgf, tile, keep_aspect, xjust, - yjust, xperc, yperc, topf, tkeep_aspect, - txjust, tyjust, txperc, typerc); - if (updated) - { - for (i = 0; i < DesksGetNumber(); i++) - { - Desk *dsk = DeskGet(i); - - if (DeskBackgroundGet(dsk) == bg) - DeskBackgroundSet(dsk, bg, 0); - } - } + BackgroundModify(bg, &xclr, bgf, tile, keep_aspect, xjust, + yjust, xperc, yperc, topf, tkeep_aspect, + txjust, tyjust, txperc, typerc); } else { @@ -2648,7 +2655,7 @@ num = DesksGetCurrentNum(); sscanf(p, "%d %n", &num, &len); - DeskBackgroundSet(DeskGet(num), bg, 1); + DeskBackgroundSet(DeskGet(num), bg); autosave(); } else if (!strncmp(cmd, "xget", 2)) @@ -2694,7 +2701,7 @@ if (!w[0]) break; i = atoi(w); - DeskBackgroundSet(DeskGet(i), bg, 1); + DeskBackgroundSet(DeskGet(i), bg); } autosave(); } @@ -2727,13 +2734,7 @@ bg->cmclass = cm; } - BackgroundPixmapFree(bg); - - for (i = 0; i < DesksGetNumber(); i++) - { - if ((desks.desk[i].bg == bg) && (desks.desk[i].viewable)) - DeskRefresh(DeskGet(i)); - } + BackgroundInvalidate(bg, 1); } } =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/backgrounds.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- backgrounds.h 22 Nov 2005 23:21:47 -0000 1.3 +++ backgrounds.h 27 Nov 2005 11:02:05 -0000 1.4 @@ -26,9 +26,9 @@ #define _BACKGROUNDS_H_ /* backgrounds.c */ -char *BackgroundGetUniqueString(Background * bg); -void BackgroundPixmapFree(Background * bg); -void BackgroundImagesFree(Background * bg, int free_pmap); +char *BackgroundGetUniqueString(const Background * bg); +void BackgroundPixmapSet(Background * bg, Pixmap pmap); +void BackgroundPixmapUnset(Background * bg, Pixmap pmap); void BackgroundDestroyByName(const char *name); void BackgroundRealize(Background * bg, Drawable draw, unsigned int rw, unsigned int rh, @@ -40,6 +40,7 @@ unsigned int rh); void BackgroundIncRefcount(Background * bg); void BackgroundDecRefcount(Background * bg); + void BackgroundTouch(Background * bg); const char *BackgroundGetName(const Background * bg); int BackgroundGetColor(const Background * bg); @@ -49,7 +50,7 @@ const char *file, char *thumb, int thlen); -void BackgroundsInvalidate(void); +void BackgroundsInvalidate(int refresh); int BackgroundsConfigLoad(FILE * fs); #endif /* _BACKGROUNDS_H_ */ =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/desktops.c,v retrieving revision 1.200 retrieving revision 1.201 diff -u -3 -r1.200 -r1.201 --- desktops.c 21 Nov 2005 17:48:44 -0000 1.200 +++ desktops.c 27 Nov 2005 11:02:05 -0000 1.201 @@ -406,7 +406,7 @@ Efree(lst); } } - DeskBackgroundSet(dsk, bg, 0); + DeskBackgroundSet(dsk, bg); if (dsk->num > 0) { @@ -473,7 +473,11 @@ DeskControlsDestroy(dsk, 2); if (dsk->bg) - BackgroundDecRefcount(dsk->bg); + { + if (dsk->pmap != None) + BackgroundPixmapUnset(dsk->bg, dsk->pmap); + BackgroundDecRefcount(dsk->bg); + } EoFini(dsk); @@ -481,6 +485,163 @@ Efree(dsk); } +void +DeskBackgroundAssign(unsigned int desk, Background * bg) +{ + if (desk >= ENLIGHTENMENT_CONF_NUM_DESKTOPS) + return; + + desks.bg[desk] = bg; +} + +Background * +DeskBackgroundGet(const Desk * dsk) +{ + return (dsk) ? dsk->bg : NULL; +} + +static void +DeskBackgroundFree(Desk * dsk, int force) +{ + Window win; + + if (!dsk->bg_isset) + return; + + dsk->bg_isset = 0; + + if (EventDebug(EDBUG_TYPE_DESKS)) + Eprintf("DeskBackgroundFree %d v=%d force=%d\n", dsk->num, + dsk->viewable, force); + + if (!dsk->viewable || force) + { + if (dsk->pmap != None) + { + BackgroundPixmapUnset(dsk->bg, dsk->pmap); + dsk->pmap = None; + } + } + + if (!dsk->viewable) + { + win = EoGetWin(dsk); + if (!Conf.hints.set_xroot_info_on_root_window) + HintsSetRootInfo(win, None, 0); + ESetWindowBackgroundPixmap(win, None); + } +} + +static void +DeskBackgroundRefresh(Desk * dsk) +{ + Background *bg; + Pixmap pmap; + unsigned long pixel; + + if (!dsk->viewable) + return; + + if (EventDebug(EDBUG_TYPE_DESKS)) + Eprintf("DeskBackgroundRefresh %d v=%d - %dx%d\n", dsk->num, + dsk->viewable, EoGetW(dsk), EoGetH(dsk)); + + bg = dsk->bg; + if (!bg) + return; + + pmap = BackgroundGetPixmap(bg); + pixel = 0; + if (dsk->bg_isset && dsk->pmap == pmap) + return; + + if (pmap == None) + BackgroundRealize(bg, EoGetWin(dsk), EoGetW(dsk), EoGetH(dsk), 1, + &pmap, &pixel); + + if (pmap != None) + { + ESetWindowBackgroundPixmap(EoGetWin(dsk), pmap); + BackgroundPixmapSet(dsk->bg, pmap); + } + else + { + ESetWindowBackground(EoGetWin(dsk), pixel); + } + EClearWindow(EoGetWin(dsk)); + + HintsSetRootInfo(EoGetWin(dsk), pmap, pixel); + dsk->pmap = pmap; + dsk->bg_isset = 1; +} + +static void +DeskBackgroundUpdate(Desk * dsk) +{ + if (dsk->viewable) + DeskBackgroundRefresh(dsk); + else + DeskBackgroundFree(dsk, 0); +} + +void +DeskBackgroundSet(Desk * dsk, Background * bg) +{ + if (!dsk) + return; + + if (bg && BackgroundIsNone(bg)) + bg = NULL; + + if (dsk->bg != bg) + { + if (dsk->bg) + { + DeskBackgroundFree(dsk, 1); + BackgroundDecRefcount(dsk->bg); + } + if (bg) + BackgroundIncRefcount(bg); + } + + dsk->bg = bg; + + if (dsk->viewable) + DeskBackgroundRefresh(dsk); + + ModulesSignal(ESIGNAL_BACKGROUND_CHANGE, dsk); +} + +void +DesksBackgroundFree(Background * bg, int force) +{ + Desk *dsk; + unsigned int i; + + for (i = 0; i < Conf.desks.num; i++) + { + dsk = _DeskGet(i); + if (dsk->bg != bg) + continue; + DeskBackgroundFree(dsk, force); + } +} + +void +DesksBackgroundRefresh(Background * bg) +{ + Desk *dsk; + unsigned int i; + + for (i = 0; i < Conf.desks.num; i++) + { + dsk = _DeskGet(i); + if (dsk->bg != bg) + continue; + DeskBackgroundUpdate(dsk); + } +} + static void DeskResize(int desk, int w, int h) { @@ -498,8 +659,7 @@ x = (dsk->viewable) ? EoGetX(dsk) : VRoot.w; EoMoveResize(dsk, x, 0, w, h); } - BackgroundPixmapFree(dsk->bg); - DeskRefresh(dsk); + DeskBackgroundUpdate(dsk); DeskControlsDestroy(dsk, 1); DeskControlsCreate(dsk); DeskControlsShow(dsk, 1); @@ -526,12 +686,6 @@ return _DeskGet(desk); } -Background * -DeskBackgroundGet(const Desk * dsk) -{ - return (dsk) ? dsk->bg : NULL; -} - void DeskGetArea(const Desk * dsk, int *ax, int *ay) { @@ -629,6 +783,8 @@ { unsigned int i; + BackgroundsInvalidate(0); + for (i = 0; i < Conf.desks.num; i++) DeskResize(i, w, h); @@ -829,68 +985,6 @@ } } -void -DeskRefresh(Desk * dsk) -{ - Background *bg; - - if (!dsk || !dsk->viewable) - return; - - if (EventDebug(EDBUG_TYPE_DESKS)) - Eprintf("DeskRefresh %d - %dx%d\n", dsk->num, EoGetW(dsk), EoGetH(dsk)); - - bg = dsk->bg; - if (!bg) - return; - - if (dsk->bg_isset && dsk->pmap == BackgroundGetPixmap(bg)) - return; - - BackgroundSet(bg, EoGetWin(dsk), EoGetW(dsk), EoGetH(dsk)); - dsk->bg_isset = 1; - dsk->pmap = BackgroundGetPixmap(bg); - HintsSetRootInfo(EoGetWin(dsk), - BackgroundGetPixmap(bg), BackgroundGetColor(bg)); -} - -void -DeskBackgroundAssign(unsigned int desk, Background * bg) -{ - if (desk >= ENLIGHTENMENT_CONF_NUM_DESKTOPS) - return; - - desks.bg[desk] = bg; -} - -void -DeskBackgroundSet(Desk * dsk, Background * bg, int refresh) -{ - if (!dsk) - return; - - if (refresh) - BackgroundPixmapFree(dsk->bg); - - if (bg && BackgroundIsNone(bg)) - bg = NULL; - - if (dsk->bg != bg) - { - if (dsk->bg) - BackgroundDecRefcount(dsk->bg); - if (bg) - BackgroundIncRefcount(bg); - } - - dsk->bg = bg; - - if (dsk->viewable) - DeskRefresh(dsk); - - ModulesSignal(ESIGNAL_BACKGROUND_CHANGE, dsk); -} - Desk * DesktopAt(int x, int y) { @@ -969,7 +1063,7 @@ if (!dd->viewable && v) { dd->viewable = 1; - DeskRefresh(_DeskGet(desks.order[i])); + DeskBackgroundRefresh(_DeskGet(desks.order[i])); } else if (dd->viewable && !v) { @@ -1021,7 +1115,7 @@ EGrabServer(); dsk->viewable = 1; - DeskRefresh(dsk); + DeskBackgroundRefresh(dsk); MoveToDeskTop(dsk->num); desks.previous = desks.current = dsk; @@ -1156,7 +1250,7 @@ dsk = _DeskGet(desk); dsk->viewable = 1; - DeskRefresh(dsk); + DeskBackgroundRefresh(dsk); } static void @@ -1226,7 +1320,7 @@ dsk = _DeskGet(desk); dsk->viewable = 1; - DeskRefresh(dsk); + DeskBackgroundRefresh(dsk); MoveToDeskTop(desk); if (desk == 0) =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/desktops.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- desktops.h 21 Nov 2005 17:48:44 -0000 1.13 +++ desktops.h 27 Nov 2005 11:02:05 -0000 1.14 @@ -57,14 +57,15 @@ void DeskSetArea(Desk * dsk, int ax, int ay); int DeskIsViewable(const Desk * dsk); void DeskSetDirtyStack(Desk * dsk, EObj * eo); -void DeskRefresh(Desk * dsk); void DeskGoto(Desk * dsk); void DeskGotoNum(unsigned int desk); void DeskRestack(Desk * dsk); void DeskBackgroundAssign(unsigned int desk, Background * bg); Background *DeskBackgroundGet(const Desk * dsk); -void DeskBackgroundSet(Desk * dsk, Background * bg, int refresh); +void DeskBackgroundSet(Desk * dsk, Background * bg); +void DesksBackgroundFree(Background * bg, int force); +void DesksBackgroundRefresh(Background * bg); void DeskCurrentGetArea(int *ax, int *ay); void DeskCurrentGotoArea(int ax, int ay); =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/iclass.c,v retrieving revision 1.84 retrieving revision 1.85 diff -u -3 -r1.84 -r1.85 --- iclass.c 22 Nov 2005 23:21:47 -0000 1.84 +++ iclass.c 27 Nov 2005 11:02:05 -0000 1.85 @@ -163,7 +163,7 @@ if (prev_alpha == 0) { /* Hack to get tiled backgrounds regenerated at full size */ - BackgroundsInvalidate(); + BackgroundsInvalidate(1); } ModulesSignal(ESIGNAL_THEME_TRANS_CHANGE, NULL); } =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/startup.c,v retrieving revision 1.65 retrieving revision 1.66 diff -u -3 -r1.65 -r1.66 --- startup.c 30 Oct 2005 19:40:49 -0000 1.65 +++ startup.c 27 Nov 2005 11:02:05 -0000 1.66 @@ -108,7 +108,8 @@ BackgroundSet(bg, win1, VRoot.w, VRoot.h); BackgroundSet(bg, win2, VRoot.w, VRoot.h); - BackgroundImagesFree(bg, 1); + BackgroundDestroyByName("STARTUP_BACKGROUND_SIDEWAYS"); + BackgroundDestroyByName("STARTUP_BACKGROUND"); EobjMap(init_win1, 0); EobjMap(init_win2, 0); @@ -173,9 +174,6 @@ EobjWindowDestroy(init_win2); init_win1 = NULL; init_win2 = NULL; - - BackgroundDestroyByName("STARTUP_BACKGROUND_SIDEWAYS"); - BackgroundDestroyByName("STARTUP_BACKGROUND"); } void ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs