Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        desktops.c ecompmgr.c eobj.c eobj.h 


Log Message:
Clean up CM background handling.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/desktops.c,v
retrieving revision 1.207
retrieving revision 1.208
diff -u -3 -r1.207 -r1.208
--- desktops.c  1 Dec 2005 23:28:13 -0000       1.207
+++ desktops.c  4 Dec 2005 09:38:27 -0000       1.208
@@ -452,7 +452,7 @@
 
        desks.current = dsk;
 
-       eo = EobjWindowCreate(EOBJ_TYPE_MISC, 0, 0, VRoot.w, VRoot.h,
+       eo = EobjWindowCreate(EOBJ_TYPE_MISC_NR, 0, 0, VRoot.w, VRoot.h,
                              0, "Root-bg");
        eo->floating = 0;
        eo->fade = eo->shadow = 0;
@@ -529,7 +529,11 @@
 
    if (dsk->viewable)
      {
-       if (!ECompMgrDeskConfigure(dsk))
+       if (ECompMgrDeskConfigure(dsk))
+         {
+            ESetWindowBackgroundPixmap(win, None);
+         }
+       else
          {
             if (dsk->bg.pmap != None)
                ESetWindowBackgroundPixmap(win, dsk->bg.pmap);
@@ -545,10 +549,7 @@
        if (!Conf.hints.set_xroot_info_on_root_window)
           HintsSetRootInfo(EoGetWin(dsk), None, 0);
 
-       if (!ECompMgrDeskConfigure(dsk))
-         {
-            ESetWindowBackgroundPixmap(win, None);
-         }
+       ESetWindowBackgroundPixmap(win, None);
      }
 }
 
@@ -674,9 +675,11 @@
    for (i = 0; i < Conf.desks.num; i++)
      {
        dsk = _DeskGet(i);
+       if (!dsk)
+          continue;
        if (bg && dsk->bg.bg != bg)
           continue;
-       if (!bg)
+       if (!bg && dsk->viewable)       /* CM start/stop hack */
           dsk->bg.isset = 0;
        DeskBackgroundUpdate(dsk);
      }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ecompmgr.c,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -3 -r1.84 -r1.85
--- ecompmgr.c  1 Dec 2005 23:28:13 -0000       1.84
+++ ecompmgr.c  4 Dec 2005 09:38:28 -0000       1.85
@@ -194,6 +194,7 @@
 static void         ECompMgrHandleRootEvent(XEvent * ev, void *prm);
 static void         ECompMgrHandleWindowEvent(XEvent * ev, void *prm);
 static void         doECompMgrWinFade(int val, void *data);
+static void         ECompMgrWinInvalidate(EObj * eo, int what);
 static void         ECompMgrWinSetPicts(EObj * eo);
 static void         ECompMgrWinFadeOutEnd(EObj * eo);
 static int          ECompMgrDetermineOrder(EObj * const *lst, int num,
@@ -482,50 +483,50 @@
 int
 ECompMgrDeskConfigure(Desk * dsk)
 {
-   /* FIXME - To be implemented */
-   dsk = NULL;
-
-   return 0;
-}
-
-static              Picture
-DeskBackgroundPictureGet(Desk * dsk)
-{
-   ECmWinInfo         *cw = dsk->o.cmhook;
+   EObj               *eo;
+   ECmWinInfo         *cw;
    Picture             pict;
-   Pixmap              pmap;
-   Bool                fill;
    XRenderPictFormat  *pictfmt;
    XRenderPictureAttributes pa;
+   int                 fill = 0;
+   Pixmap              pmap;
+   unsigned long       pixel;
 
+   if (!Mode_compmgr.active)
+      return 0;
+
+   eo = (dsk->num) ? EoObj(dsk) : dsk->bg.o;
+   if (!eo)
+      return 1;
+   cw = eo->cmhook;
+
+#if 0
    if (!cw)
      {
-       ECompMgrWinNew(&dsk->o);
-       cw = dsk->o.cmhook;
+       ECompMgrWinNew(eo);
+       cw = eo->cmhook;
        if (!cw)
-          return None;
+          return 0;
      }
+#endif
 
-   fill = False;
-   pmap = BackgroundGetPixmap(DeskBackgroundGet(dsk));
-   if (pmap == None)
+   if (!dsk->viewable)
+     {
+       ECompMgrWinInvalidate(eo, INV_PICTURE);
+       return 1;
+     }
+
+   if (dsk->bg.pmap == None)
      {
-       if (cw->pixmap && cw->picture)
-          return cw->picture;
        pmap = XCreatePixmap(disp, VRoot.win, 1, 1, VRoot.depth);
-       fill = True;
+       fill = 1;
      }
-   else if (pmap == cw->pixmap)
+   else
      {
-       if (cw->picture != None)
-          return cw->picture;
+       pmap = dsk->bg.pmap;
      }
-   D1printf
-      ("DeskBackgroundPictureGet: Desk %d: using pixmap %#lx (%#lx %#lx)\n",
-       dsk->num, pmap, cw->pixmap, cw->picture);
 
-   if (cw->picture)
-      XRenderFreePicture(disp, cw->picture);
+   ECompMgrWinInvalidate(eo, INV_PICTURE);
 
    pa.repeat = True;
    pictfmt = XRenderFindVisualFormat(disp, VRoot.vis);
@@ -533,44 +534,27 @@
 
    if (fill)
      {
-       /* FIXME - use desk bg color */
        XRenderColor        c;
 
+       /* FIXME - use desk bg color */
+       pixel = 0;
+
        c.red = c.green = c.blue = 0x8080;
        c.alpha = 0xffff;
        XRenderFillRectangle(disp, PictOpSrc, pict, &c, 0, 0, 1, 1);
        XFreePixmap(disp, pmap);
      }
 
-#if 0                          /* FIXME - Not in window mode? */
    /* New background, all must be repainted */
    ECompMgrDamageAll();
-#endif
 
-   cw->pixmap = pmap;
    cw->picture = pict;
 
-   return pict;
-}
-
-static void
-DeskBackgroundPictureFree(Desk * dsk)
-{
-   ECmWinInfo         *cw = dsk->o.cmhook;
-   Picture             pict;
-
-   if (!cw)
-      return;
-
-   pict = cw->picture;
-   if (pict == None)
-      return;
-
-   D1printf("DeskBackgroundPictureFree: Desk %d: pict=%#lx\n", dsk->num, pict);
-
-   XRenderFreePicture(disp, pict);
+   D1printf
+      ("ECompMgrDeskConfigure: Desk %d: using pixmap %#lx picture=%#lx\n",
+       dsk->num, pmap, cw->picture);
 
-   cw->picture = None;
+   return 1;
 }
 
 /*
@@ -1332,18 +1316,6 @@
 {
    ECmWinInfo         *cw = eo->cmhook;
 
-   if (eo->type == EOBJ_TYPE_DESK)
-     {
-#if 0                          /* FIXME - Get this right */
-       if (cw->picture == None)
-#endif
-         {
-            cw->picture = DeskBackgroundPictureGet((Desk *) eo);
-            cw->damaged = 1;   /* FIXME - ??? */
-         }
-       return;
-     }
-
    if (cw->pixmap == None && eo->shown &&
        (Mode_compmgr.use_pixmap || (eo->fade && Conf_compmgr.fading.enable)))
      {
@@ -1409,9 +1381,6 @@
    cw->a.visual = attr.visual;
    cw->a.border_width = attr.border_width;
 
-   if (eo->type == EOBJ_TYPE_DESK)
-      eo->noredir = 1;
-
    if (!eo->noredir)
      {
        if (Conf_compmgr.mode == ECM_MODE_WINDOW)
@@ -1616,12 +1585,6 @@
 
    EventCallbackUnregister(eo->win, 0, ECompMgrHandleWindowEvent, eo);
 
-   if (eo->type == EOBJ_TYPE_DESK)
-     {
-       DeskBackgroundPictureFree((Desk *) eo);
-       cw->pixmap = None;
-     }
-
    if (!eo->noredir)
      {
        if (!eo->gone && Conf_compmgr.mode == ECM_MODE_WINDOW)
@@ -1984,7 +1947,7 @@
    Display            *dpy = disp;
    XserverRegion       region;
    EObj               *eo;
-   Picture             pict, pbuf;
+   Picture             pbuf;
    Desk               *dsk = DeskGet(0);
 
    if (!Mode_compmgr.active || allDamage == None)
@@ -2019,12 +1982,16 @@
    if (EventDebug(EDBUG_TYPE_COMPMGR2))
       ERegionShow("after opaque", region);
 
+#if 0                          /* FIXME - NoBg? */
+   Picture             pict;
+
    /* Repaint background, clipped by damage region and opaque windows */
-   pict = DeskBackgroundPictureGet(dsk);
+   pict = ((ECmWinInfo *) (dsk->o.cmhook))->picture;
    D1printf("ECompMgrRepaint desk picture=%#lx\n", pict);
    XFixesSetPictureClipRegion(dpy, pbuf, 0, 0, region);
    XRenderComposite(dpy, PictOpSrc, pict, None, pbuf,
                    0, 0, 0, 0, 0, 0, VRoot.w, VRoot.h);
+#endif
 
    /* Paint trans windows and shadows bottom up */
    for (eo = Mode_compmgr.eo_last; eo; eo = ((ECmWinInfo *) 
(eo->cmhook))->prev)
@@ -2109,18 +2076,6 @@
 }
 #endif
 
-static void
-ECompMgrDeskChanged(Desk * dsk)
-{
-   if (!dsk || !dsk->o.cmhook)
-      return;
-
-   D1printf("ECompMgrDeskChanged: desk=%d\n", dsk->num);
-
-   DeskBackgroundPictureFree(dsk);
-   ECompMgrDamageAll();
-}
-
 #if ENABLE_SHADOWS
 static void
 ECompMgrShadowsInit(int mode, int cleanup)
@@ -2215,6 +2170,9 @@
        if (lst[i]->shown)
           ECompMgrWinMap(lst[i]);
      }
+
+   DesksBackgroundRefresh(NULL);
+   _ECM_SET_CLIP_CHANGED();
 }
 
 static void
@@ -2235,8 +2193,6 @@
       XRenderFreePicture(disp, rootBuffer);
    rootBuffer = None;
 
-   DeskBackgroundPictureFree(DeskGet(0));
-
    ECompMgrShadowsInit(ECM_SHADOWS_OFF, 0);
 
    lst1 = EobjListStackGet(&num);
@@ -2270,8 +2226,7 @@
 
    EventCallbackUnregister(VRoot.win, 0, ECompMgrHandleRootEvent, NULL);
 
-   if (Conf_compmgr.shadows.mode != ECM_SHADOWS_OFF)
-      DesksClear();
+   DesksBackgroundRefresh(NULL);
 }
 
 void
@@ -2512,7 +2467,7 @@
 }
 
 static void
-ECompMgrSighan(int sig, void *prm)
+ECompMgrSighan(int sig, void *prm __UNUSED__)
 {
    if (sig != ESIGNAL_INIT && Conf_compmgr.mode == ECM_MODE_OFF)
       return;
@@ -2525,10 +2480,6 @@
           ECompMgrStart();
        break;
 
-     case ESIGNAL_BACKGROUND_CHANGE:
-       ECompMgrDeskChanged((Desk *) prm);
-       break;
-
      case ESIGNAL_IDLE:
        /* Do we get here on auto? */
        if (!allDamage /* || Conf_compmgr.mode == ECM_MODE_AUTO */ )
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/eobj.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -3 -r1.59 -r1.60
--- eobj.c      12 Nov 2005 15:11:07 -0000      1.59
+++ eobj.c      4 Dec 2005 09:38:28 -0000       1.60
@@ -156,6 +156,12 @@
 #if USE_COMPOSITE
    eo->fade = 1;
    eo->shadow = 1;
+   switch (type)
+     {
+     case EOBJ_TYPE_MISC_NR:
+       eo->noredir = 1;
+       break;
+     }
    ECompMgrWinNew(eo);
 #endif
    if (eo->win != VRoot.win)
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/eobj.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- eobj.h      1 Dec 2005 23:45:27 -0000       1.19
+++ eobj.h      4 Dec 2005 09:38:28 -0000       1.20
@@ -57,8 +57,9 @@
 #define EOBJ_TYPE_BUTTON    1
 #define EOBJ_TYPE_DESK      2
 #define EOBJ_TYPE_MISC      3
-#define EOBJ_TYPE_EVENT     4
-#define EOBJ_TYPE_EXT       5
+#define EOBJ_TYPE_MISC_NR   4  /* Unredirected */
+#define EOBJ_TYPE_EVENT     5
+#define EOBJ_TYPE_EXT       6
 
 #define EobjGetWin(eo)          ((eo)->win)
 #define EobjGetDesk(eo)         ((eo)->desk)




-------------------------------------------------------
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