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

Reply via email to