CM: Skip windows with empty shape.

Windows with empty shape seem to cause rendering artifacts, e.g.
in pager hiwin when the small pager tooltip images have empty shape.

AFAICT windows with empty shape should be handled properly by the
CM... server bug? Anyway, might as well skip them entirely.

SVN revision: 47921
This commit is contained in:
Kim Woelders 2010-04-11 11:43:00 +00:00
parent 0cc43fd186
commit 8551c41582
3 changed files with 6 additions and 0 deletions

View File

@ -1627,6 +1627,9 @@ ECompMgrDetermineOrder(EObj * const *lst, int num, EObj ** first,
if ((!eo->shown && !eo->fading) || eo->desk != dsk)
continue;
if (EobjHasEmptyShape(eo))
continue;
/* Region of shaped window in screen coordinates */
if (!cw->have_shape)
ECompMgrWinSetShape(eo);

View File

@ -79,6 +79,8 @@ struct _eobj {
#define EobjGetW(eo) WinGetW(EobjGetWin(eo))
#define EobjGetH(eo) WinGetH(EobjGetWin(eo))
#define EobjGetBW(eo) WinGetBorderWidth(EobjGetWin(eo))
#define EobjHasEmptyShape(eo) (WinGetNumRect(EobjGetWin(eo)) < 0)
#define EobjGetType(eo) ((eo)->type)
#define EobjGetDesk(eo) ((eo)->desk)
#define EobjGetName(eo) ((eo)->icccm.wm_name)

View File

@ -129,6 +129,7 @@ Win ELookupXwin(Window xwin);
#define WinGetDepth(win) ((win)->depth)
#define WinGetVisual(win) ((win)->visual)
#define WinGetCmap(win) ((win)->cmap)
#define WinGetNumRect(win) ((win)->num_rect)
#define WinIsMapped(win) ((win)->mapped != 0)
#define WinIsShaped(win) ((win)->num_rect != 0)