summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2004-08-15 19:05:01 +0000
committerKeith Packard <keithp@keithp.com>2004-08-15 19:05:01 +0000
commita68f350195c1c54034f98e2b78c2c3da70044884 (patch)
tree4f8f33ab22dfcdd1708ea8fbf5d6ac20ab4db016
parent5db70ae2575e3e8669d7a66e2218ba28e8bdfa68 (diff)
Remove debugging code which did a full tree walk on every window operation
Eliminate needless (and, it turns out, dangerous) call to ChangeGC on DestroyGCPrivate. in cwSetWindowPixmap, check if the pixmap is the screen pixmap and disable the wrapper by setting the private to NULL.
-rw-r--r--composite/compint.h16
-rw-r--r--composite/compwindow.c4
-rw-r--r--miext/cw/cw.c9
3 files changed, 16 insertions, 13 deletions
diff --git a/composite/compint.h b/composite/compint.h
index 78a138a74..81b4027ec 100644
--- a/composite/compint.h
+++ b/composite/compint.h
@@ -49,6 +49,12 @@
#include <X11/extensions/compositeproto.h>
#include <assert.h>
+/*
+ * enable this for debugging
+
+ #define COMPOSITE_DEBUG
+ */
+
typedef struct _CompClientWindow {
struct _CompClientWindow *next;
XID id;
@@ -118,10 +124,6 @@ typedef struct _CompScreen {
XID alternateVisuals[NUM_COMP_ALTERNATE_VISUALS];
} CompScreenRec, *CompScreenPtr;
-#define HasCompRedirect(w) (wPixmap(w) != wPixmap(w->parent))
-#define wScreen(w) ((w)->drawable.pScreen)
-#define wPixmap(w) (*(wScreen(w)->GetWindowPixmap) (w))
-
extern int CompScreenPrivateIndex;
extern int CompWindowPrivateIndex;
extern int CompSubwindowsPrivateIndex;
@@ -192,11 +194,11 @@ compScreenInit (ScreenPtr pScreen);
* compwindow.c
*/
-#ifdef NDEBUG
-#define compCheckTree(s)
-#else
+#ifdef COMPOSITE_DEBUG
void
compCheckTree (ScreenPtr pScreen);
+#else
+#define compCheckTree(s)
#endif
void
diff --git a/composite/compwindow.c b/composite/compwindow.c
index f630008a6..f8945bdc4 100644
--- a/composite/compwindow.c
+++ b/composite/compwindow.c
@@ -27,7 +27,7 @@
#endif
#include "compint.h"
-#ifndef NDEBUG
+#ifdef COMPOSITE_DEBUG
static int
compCheckWindow (WindowPtr pWin, pointer data)
{
@@ -151,8 +151,10 @@ compPositionWindow (WindowPtr pWin, int x, int y)
*
compCheckRedirect (pWin);
*/
+#ifdef COMPOSITE_DEBUG
if (pWin->redirectDraw != (pWin->viewable && (GetCompWindow(pWin) != NULL)))
abort ();
+#endif
if (pWin->redirectDraw)
{
PixmapPtr pPixmap = (*pScreen->GetWindowPixmap) (pWin);
diff --git a/miext/cw/cw.c b/miext/cw/cw.c
index aa32033de..c72db3809 100644
--- a/miext/cw/cw.c
+++ b/miext/cw/cw.c
@@ -164,11 +164,6 @@ cwDestroyGCPrivate(GCPtr pGC)
FreeGC(pPriv->pBackingGC, (XID)0);
setCwGC (pGC, pPriv->wrapFuncs);
xfree((pointer)pPriv);
- /* The ChangeGC and ValidateGCs on the window haven't been passed down the
- * stack, so report all state being changed.
- */
- pGC->stateChanges |= (1 << (GCLastBit + 1)) - 1;
- (*pGC->funcs->ChangeGC)(pGC, (1 << (GCLastBit + 1)) - 1);
}
/* GCFuncs wrappers. These only get used when the drawable is a window with a
@@ -747,6 +742,10 @@ cwGetWindowPixmap (WindowPtr pWin)
static void
cwSetWindowPixmap (WindowPtr pWindow, PixmapPtr pPixmap)
{
+ ScreenPtr pScreen = pWindow->drawable.pScreen;
+
+ if (pPixmap == (*pScreen->GetScreenPixmap) (pScreen))
+ pPixmap = NULL;
setCwPixmap (pWindow, pPixmap);
}