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