Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


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


Log Message:
Do full composite repaint on VT switch.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/desktops.c,v
retrieving revision 1.218
retrieving revision 1.219
diff -u -3 -r1.218 -r1.219
--- desktops.c  10 Jan 2006 18:58:15 -0000      1.218
+++ desktops.c  14 Jan 2006 14:30:51 -0000      1.219
@@ -451,7 +451,7 @@
        desks.current = dsk;
 #if !USE_BG_WIN_ON_ALL_DESKS   /* TBD - Use per virtual root bg window? */
        /* Add background window */
-       eo = EobjWindowCreate(EOBJ_TYPE_MISC_NR, 0, 0, VRoot.w, VRoot.h,
+       eo = EobjWindowCreate(EOBJ_TYPE_ROOT_BG, 0, 0, VRoot.w, VRoot.h,
                              0, "Root-bg");
        eo->floating = 0;
        eo->fade = eo->shadow = 0;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/desktops.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- desktops.h  8 Jan 2006 23:44:13 -0000       1.21
+++ desktops.h  14 Jan 2006 14:30:51 -0000      1.22
@@ -38,6 +38,7 @@
    EObj                o;
    unsigned int        num;
    char                viewable;
+   char                visible;
    struct _button     *tag;
    int                 current_area_x;
    int                 current_area_y;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ecompmgr.c,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -3 -r1.95 -r1.96
--- ecompmgr.c  12 Jan 2006 21:37:33 -0000      1.95
+++ ecompmgr.c  14 Jan 2006 14:30:51 -0000      1.96
@@ -47,7 +47,10 @@
 #include <X11/extensions/Xdamage.h>
 #include <X11/extensions/Xrender.h>
 
-#define ENABLE_SHADOWS 1
+#define ENABLE_SHADOWS      1
+
+#define USE_DESK_EXPOSE     0
+#define USE_DESK_VISIBILITY 1
 
 #define ENABLE_DEBUG   1
 #if ENABLE_DEBUG
@@ -245,7 +248,7 @@
    return rgn;
 }
 
-#if USE_EXPOSE                 /* FIXME - Need this? */
+#if USE_DESK_EXPOSE
 static              XserverRegion
 ERegionCreateFromRects(XRectangle * rectangles, int nrectangles)
 {
@@ -542,6 +545,42 @@
 }
 #endif
 
+#if USE_DESK_VISIBILITY
+static void
+ECompMgrDeskVisibility(EObj * eo, XEvent * ev)
+{
+   Desk               *dsk;
+   int                 visible;
+
+   switch (eo->type)
+     {
+     default:
+       return;
+     case EOBJ_TYPE_DESK:
+       dsk = (Desk *) eo;
+       break;
+     case EOBJ_TYPE_ROOT_BG:
+       dsk = DeskGet(0);
+       break;
+     }
+
+   visible = dsk->viewable && ev->xvisibility.state != VisibilityFullyObscured;
+   if (dsk->visible == visible)
+      return;
+   dsk->visible = visible;
+   if (!visible)
+      return;
+
+   /*
+    * A viewable desk is no longer fully obscured. Assume this happened due
+    * to a VT switch to our display and repaint all. This may happen in other
+    * situations as well, but most likely when we must repaint everything
+    * anyway.
+    */
+   ECompMgrDamageAll();
+}
+#endif
+
 /*
  * Root (?)
  */
@@ -1392,6 +1431,11 @@
    if (eo->opacity == 0)
       eo->opacity = 0xFFFFFFFF;
 
+   if (eo->type == EOBJ_TYPE_DESK || eo->type == EOBJ_TYPE_ROOT_BG)
+     {
+       ESelectInputAdd(eo->win, VisibilityChangeMask);
+     }
+
    cw->picture = None;
    cw->pixmap = None;
 
@@ -2038,7 +2082,7 @@
    return;
 }
 
-#if USE_EXPOSE                 /* FIXME - Need this? */
+#if USE_DESK_EXPOSE            /* FIXME - Remove? */
 static void
 ECompMgrRootExpose(void *prm __UNUSED__, XEvent * ev)
 {
@@ -2154,14 +2198,14 @@
      {
      case ECM_MODE_ROOT:
        XCompositeRedirectSubwindows(disp, VRoot.win, CompositeRedirectManual);
-       ESelectInputAdd(VRoot.win,
-                       SubstructureNotifyMask |
-                       ExposureMask | StructureNotifyMask);
+#if USE_DESK_EXPOSE            /* FIXME - Remove? */
+       ESelectInputAdd(VRoot.win, ExposureMask);
+#endif
        break;
      case ECM_MODE_WINDOW:
-       ESelectInputAdd(VRoot.win,
-                       SubstructureNotifyMask |
-                       ExposureMask | StructureNotifyMask);
+#if USE_DESK_EXPOSE            /* FIXME - Remove? */
+       ESelectInputAdd(VRoot.win, ExposureMask);
+#endif
        break;
      case ECM_MODE_AUTO:
        XCompositeRedirectSubwindows(disp, VRoot.win,
@@ -2335,6 +2379,12 @@
        break;
 #endif
 
+#if USE_DESK_VISIBILITY
+     case VisibilityNotify:
+       ECompMgrDeskVisibility(eo, ev);
+       break;
+#endif
+
      case EX_EVENT_DAMAGE_NOTIFY:
        ECompMgrWinDamage(eo, ev);
        break;
@@ -2437,7 +2487,7 @@
           ECompMgrWinCirculate(eo, ev);
        break;
 
-#if USE_EXPOSE                 /* FIXME - Need this? */
+#if USE_DESK_EXPOSE            /* FIXME - Remove? */
      case Expose:
        if (Conf_compmgr.shadows.mode != ECM_SHADOWS_OFF)
           ECompMgrRootExpose(prm, ev);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/eobj.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -3 -r1.62 -r1.63
--- eobj.c      7 Jan 2006 07:20:58 -0000       1.62
+++ eobj.c      14 Jan 2006 14:30:51 -0000      1.63
@@ -165,6 +165,7 @@
    switch (type)
      {
      case EOBJ_TYPE_MISC_NR:
+     case EOBJ_TYPE_ROOT_BG:
        eo->noredir = 1;
        break;
      }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/eobj.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- eobj.h      7 Jan 2006 07:20:58 -0000       1.21
+++ eobj.h      14 Jan 2006 14:30:51 -0000      1.22
@@ -57,9 +57,10 @@
 #define EOBJ_TYPE_BUTTON    1
 #define EOBJ_TYPE_DESK      2
 #define EOBJ_TYPE_MISC      3
-#define EOBJ_TYPE_MISC_NR   4  /* Unredirected */
-#define EOBJ_TYPE_EVENT     5
-#define EOBJ_TYPE_EXT       6
+#define EOBJ_TYPE_EVENT     4  /* Unredirected */
+#define EOBJ_TYPE_EXT       5
+#define EOBJ_TYPE_MISC_NR   6  /* Unredirected */
+#define EOBJ_TYPE_ROOT_BG   7
 
 #define EobjGetWin(eo)          ((eo)->win)
 #define EobjGetDesk(eo)         ((eo)->desk)
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/setup.c,v
retrieving revision 1.170
retrieving revision 1.171
diff -u -3 -r1.170 -r1.171
--- setup.c     7 Jan 2006 07:20:58 -0000       1.170
+++ setup.c     14 Jan 2006 14:30:51 -0000      1.171
@@ -268,9 +268,7 @@
    mask =
       ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask |
       ButtonMotionMask | PropertyChangeMask | SubstructureRedirectMask |
-      PointerMotionMask | SubstructureNotifyMask;
-   if (Mode.wm.window)
-      mask |= StructureNotifyMask;
+      PointerMotionMask | StructureNotifyMask | SubstructureNotifyMask;
    XSelectInput(disp, VRoot.win, mask);
 
    ESync();




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