Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        ecompmgr.c eobj.h ewin-ops.c ewin-ops.h ipc.c windowmatch.c 


Log Message:
Composite manager - Prepare for handling unredirected windows, cleanups.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ecompmgr.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -3 -r1.50 -r1.51
--- ecompmgr.c  7 Aug 2005 10:51:07 -0000       1.50
+++ ecompmgr.c  10 Aug 2005 19:23:58 -0000      1.51
@@ -37,9 +37,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <math.h>
-#include <sys/poll.h>
-#include <sys/time.h>
-#include <time.h>
 #include <unistd.h>
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
@@ -83,7 +80,6 @@
    struct
    {
       int                 class;       /* FIXME - Remove? */
-      int                 map_state;   /* FIXME - Remove? */
       int                 depth;       /* FIXME - Remove? */
       Visual             *visual;      /* FIXME - Remove? */
       int                 border_width;
@@ -168,9 +164,10 @@
 
 #define OPAQUE          0xffffffff
 
-#define WINDOW_SOLID    0
-#define WINDOW_TRANS    1
-#define WINDOW_ARGB     2
+#define WINDOW_UNREDIR  0
+#define WINDOW_SOLID    1
+#define WINDOW_TRANS    2
+#define WINDOW_ARGB     3
 
 static void         ECompMgrWinSetPicts(EObj * eo);
 static void         ECompMgrDamageAll(void);
@@ -972,7 +969,9 @@
    /* Invalidate stuff changed by opacity */
    ECompMgrWinInvalidate(eo, INV_OPACITY);
 
-   if (EVisualIsARGB(cw->a.visual))
+   if (eo->noredir)
+      mode = WINDOW_UNREDIR;
+   else if (EVisualIsARGB(cw->a.visual))
       mode = WINDOW_ARGB;
    else if (cw->opacity != OPAQUE)
       mode = WINDOW_TRANS;
@@ -996,9 +995,6 @@
 
    D1printf("ECompMgrWinMap %#lx\n", eo->win);
 
-   cw->a.map_state = IsViewable;
-   cw->visible = 1;
-
 #if CAN_DO_USABLE
    cw->damage_bounds.x = cw->damage_bounds.y = 0;
    cw->damage_bounds.width = cw->damage_bounds.height = 0;
@@ -1017,8 +1013,6 @@
 
    D1printf("ECompMgrWinUnmap %#lx\n", eo->win);
 
-   cw->visible = 0;
-
    if (cw->extents != None)
       ECompMgrDamageMergeObject(eo, cw->extents, 0);
 
@@ -1090,12 +1084,14 @@
 #endif
 
    cw->a.class = attr.class;   /* FIXME - remove */
-   cw->a.map_state = attr.map_state;   /* FIXME - remove */
    cw->a.depth = attr.depth;
    cw->a.visual = attr.visual;
    cw->a.border_width = attr.border_width;
 
-   if (eo->type != EOBJ_TYPE_DESK)
+   if (eo->type == EOBJ_TYPE_DESK)
+      eo->noredir = 1;
+
+   if (!eo->noredir)
      {
        if (Conf_compmgr.mode == ECM_MODE_WINDOW)
           XCompositeRedirectWindow(disp, eo->win, CompositeRedirectManual);
@@ -1292,21 +1288,22 @@
        DeskBackgroundPictureFree((Desk *) eo);
        cw->pixmap = None;
      }
-   else
+
+   if (!eo->noredir)
      {
        if (!eo->gone && Conf_compmgr.mode == ECM_MODE_WINDOW)
           XCompositeUnredirectWindow(disp, eo->win, CompositeRedirectManual);
+     }
 
-       ECompMgrWinInvalidate(eo, INV_ALL);
+   ECompMgrWinInvalidate(eo, INV_ALL);
 
-       if (!eo->gone)
-         {
-            if (cw->picture != None)
-               XRenderFreePicture(disp, cw->picture);
+   if (!eo->gone)
+     {
+       if (cw->picture != None)
+          XRenderFreePicture(disp, cw->picture);
 
-            if (cw->damage != None)
-               XDamageDestroy(disp, cw->damage);
-         }
+       if (cw->damage != None)
+          XDamageDestroy(disp, cw->damage);
      }
 
    _EFREE(eo->cmhook);
@@ -1465,12 +1462,9 @@
        if (!cw)
           continue;
 
-       D4printf(" - %#lx desk=%d shown=%d vis=%d dam=%d pict=%#lx\n",
-                eo->win, eo->desk, eo->shown, cw->visible, cw->damaged,
-                cw->picture);
+       D4printf(" - %#lx desk=%d shown=%d dam=%d pict=%#lx\n",
+                eo->win, eo->desk, eo->shown, cw->damaged, cw->picture);
 
-       if (!cw->visible)
-          continue;
 #if CAN_DO_USABLE
        if (!cw->usable)
           continue;
@@ -1569,6 +1563,7 @@
 
        switch (cw->mode)
          {
+         case WINDOW_UNREDIR:
          case WINDOW_SOLID:
             D2printf(" * solid pict=%#lx d=%d l=%d\n",
                      cw->picture, eo->desk, eo->ilayer);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/eobj.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- eobj.h      7 Aug 2005 14:06:51 -0000       1.2
+++ eobj.h      10 Aug 2005 19:23:58 -0000      1.3
@@ -41,6 +41,7 @@
    char                gone;
 #if USE_COMPOSITE
    char                shadow; /* Enable shadows */
+   char                noredir;        /* Do not redirect */
    unsigned int        opacity;
    void               *cmhook;
 #endif
@@ -80,11 +81,12 @@
 #define EoChangeOpacity(eo, _o) EobjChangeOpacity(EoObj(eo), _o)
 #define EoSetShadow(eo, _x)     (eo)->o.shadow = (_x)
 #define EoGetShadow(eo)         ((eo)->o.shadow)
+#define EoSetNoRedirect(eo, _x) (eo)->o.noredir = (_x)
+#define EoGetNoRedirect(eo)     ((eo)->o.noredir)
 #else
 #define EoSetOpacity(eo, _o)
 #define EoChangeOpacity(eo, _o)
 #define EoSetShadow(eo, _x)
-#define EoGetShadow(eo)         0
 #endif
 
 #define EoMap(eo, raise)                EobjMap(EoObj(eo), raise)
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewin-ops.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -3 -r1.58 -r1.59
--- ewin-ops.c  4 Aug 2005 16:01:52 -0000       1.58
+++ ewin-ops.c  10 Aug 2005 19:23:58 -0000      1.59
@@ -68,6 +68,7 @@
    {"skiplists", 4, 1, 1, EWIN_OP_SKIP_LISTS},
    {"zoom", 2, 1, 0, EWIN_OP_ZOOM},
    {"snap", 0, 1, 0, EWIN_OP_SNAP},
+   {"noredir", 4, 1, 1, EWIN_OP_NO_REDIRECT},
    {NULL, 0, 0, 0, EWIN_OP_INVALID}    /* Terminator */
 };
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewin-ops.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- ewin-ops.h  31 Mar 2005 19:04:35 -0000      1.2
+++ ewin-ops.h  10 Aug 2005 19:23:58 -0000      1.3
@@ -57,6 +57,7 @@
    EWIN_OP_SKIP_LISTS,
    EWIN_OP_ZOOM,
    EWIN_OP_SNAP,
+   EWIN_OP_NO_REDIRECT,
 } winop_e;
 
 typedef struct
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v
retrieving revision 1.226
retrieving revision 1.227
diff -u -3 -r1.226 -r1.227
--- ipc.c       7 Aug 2005 20:33:16 -0000       1.226
+++ ipc.c       10 Aug 2005 19:23:58 -0000      1.227
@@ -465,6 +465,13 @@
        if (SetEwinBoolean("shadow", &on, param1, 0))
           EoSetShadow(ewin, !on);
        break;
+
+     case EWIN_OP_NO_REDIRECT:
+       on = EoGetNoRedirect(ewin);
+       on = ewin->o.noredir;
+       if (SetEwinBoolean("noredir", &on, param1, 0))
+          EoSetNoRedirect(ewin, !on);
+       break;
 #endif
 
      case EWIN_OP_SHADE:
@@ -1087,7 +1094,7 @@
             "State        %i   Shown        %i   Visibility   %i   Active      
 %i\n"
             "Member of groups        %i\n"
 #if USE_COMPOSITE
-            "Opacity    %3i(%x)  Shadow       %i\n"
+            "Opacity    %3i(%x)  Shadow       %i   NoRedirect   %i\n"
 #else
             "Opacity    %3i\n"
 #endif
@@ -1131,9 +1138,9 @@
             ewin->state.iconified, EoIsSticky(ewin), ewin->state.shaded,
             ewin->state.docked, ewin->state.state, EoIsShown(ewin),
             ewin->state.visibility, ewin->state.active, ewin->num_groups,
-            ewin->ewmh.opacity
+            ewin->ewmh.opacity >> 24
 #if USE_COMPOSITE
-            , EoGetOpacity(ewin), EoGetShadow(ewin)
+            , EoGetOpacity(ewin), EoGetShadow(ewin), EoGetNoRedirect(ewin)
 #endif
       );
 }
@@ -1208,19 +1215,19 @@
 
    lst = EobjListStackGet(&num);
 
-   IpcPrintf("Num   window T V  D   L     pos       size    S F C Name\n");
+   IpcPrintf("Num   window T V  D S F   L     pos       size    C R Name\n");
    for (i = 0; i < num; i++)
      {
        eo = lst[i];
-       IpcPrintf(" %2d %#lx %d %d %2d %3d %5d,%5d %4dx%4d %d %d %d %s\n", i,
-                 eo->win, eo->type, eo->shown, eo->desk, eo->ilayer,
-                 eo->x, eo->y, eo->w, eo->h, eo->sticky, eo->floating,
+       IpcPrintf(" %2d %#lx %d %d %2d %d %d %3d %5d,%5d %4dx%4d %d %d %s\n",
+                 i, eo->win, eo->type, eo->shown, eo->desk, eo->sticky,
+                 eo->floating, eo->ilayer, eo->x, eo->y, eo->w, eo->h,
 #if USE_COMPOSITE
                  (eo->cmhook) ? 1 : 0,
 #else
                  0,
 #endif
-                 eo->name);
+                 !eo->noredir, eo->name);
      }
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/windowmatch.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -3 -r1.34 -r1.35
--- windowmatch.c       1 Aug 2005 17:34:53 -0000       1.34
+++ windowmatch.c       10 Aug 2005 19:23:58 -0000      1.35
@@ -717,6 +717,10 @@
      case EWIN_OP_SHADOW:
        WINOP_GET_BOOL(ewin->o.shadow, args);
        break;
+
+     case EWIN_OP_NO_REDIRECT:
+       WINOP_GET_BOOL(ewin->o.noredir, args);
+       break;
 #endif
 
      case EWIN_OP_TITLE:




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to