[fusion-commits] compiz mirror: Changes to 'master' (8498de3b0053dd5e777b0c485b16de613d4f222e)

compiz at server.beryl-project.org compiz at server.beryl-project.org
Thu Jul 12 01:12:18 CEST 2007


New commits:
commit 8498de3b0053dd5e777b0c485b16de613d4f222e
Merge: a5fbfa5647e709786ca5d81575905990d37b1287 ec32ff563fa1c67cdba1f9cde164ea16b33f382d
Author: David Reveman <davidr at novell.com>
Date:   Wed Jul 11 18:55:06 2007 -0400

    Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/app/compiz

commit a5fbfa5647e709786ca5d81575905990d37b1287
Author: David Reveman <davidr at novell.com>
Date:   Wed Jul 11 13:02:19 2007 -0400

    Clean up and avoid some unnecessary heap allocation in
    addDataOpToFunctionData and addBlendOpToFunctionData.

commit 8af1b5a06eb8fff1b5fcb87790c60c7b04df9c03
Author: David Reveman <davidr at novell.com>
Date:   Tue Jul 10 23:22:34 2007 -0400

    More clean up. Setting d to compDisplays when it's NULL
    doesn't make sense. Always using the default logMessage
    function when d parameter is NULL is more appropriate
    if it should be allowed to call compLogMessage
    with d parameter set to NULL at all.

commit dd375d53bf4f009d0918f78bc7d7cda2eaff1471
Author: David Reveman <davidr at novell.com>
Date:   Tue Jul 10 23:08:29 2007 -0400

    Clean up.

commit f3d450b9147c58cd3810f4b94f750aa30a9585e2
Author: David Reveman <davidr at novell.com>
Date:   Tue Jul 10 23:06:43 2007 -0400

    Have logLevelToString return a constant string and not
    a buffer that needs to be freed. Fixes logging memory leak.

commit 72831592f1eb4148854b695b178029d272b19ca3
Author: David Reveman <davidr at novell.com>
Date:   Tue Jul 10 22:57:24 2007 -0400

    Make sure logMessage function is initialized before
    compLogMessage is called.

commit a771bdf436ee7ca3bda51f200ff0b2f917249b91
Author: David Reveman <davidr at novell.com>
Date:   Tue Jul 10 19:05:50 2007 -0400

    Fix typo.

commit 0f731e9fb28f484493ca75545c9b9ec223eeab2e
Author: David Reveman <davidr at novell.com>
Date:   Tue Jul 10 19:05:10 2007 -0400

    Update video interface by adding source dimensions.

commit 5938a207fdc097ea616fcf5d711309c1983e7e3d
Author: David Reveman <davidr at novell.com>
Date:   Tue Jul 10 17:06:27 2007 -0400

    Fix so that escape can be used again to terminate
    "snap top"-functionality.

commit 08317f7ab812a07b1fd0b3c12a58a9c478521be5
Author: David Reveman <davidr at novell.com>
Date:   Tue Jul 10 17:04:13 2007 -0400

    Clean up.

commit 3c39c285fe5ea1f6d3c249be94d5e5a02021cd64
Author: David Reveman <davidr at novell.com>
Date:   Tue Jul 10 15:34:04 2007 -0400

    Clean up.

commit f7dcb4022ab7ae30366725252fd74276848c3ef2
Author: David Reveman <davidr at novell.com>
Date:   Tue Jul 10 15:30:37 2007 -0400

    Select for Expose events on output window.


 include/compiz.h |    2 +-
 plugins/cube.c   |   46 +++++++++++++++++----------------
 plugins/rotate.c |   39 ++++++++++++++++-----------
 plugins/video.c  |   18 +++++++------
 src/display.c    |    4 +-
 src/event.c      |    5 +++-
 src/fragment.c   |   74 +++++++++++++++++++++++++++--------------------------
 src/main.c       |   46 ++++++++++++---------------------
 src/screen.c     |    2 +
 9 files changed, 121 insertions(+), 115 deletions(-)


Modified: compiz/include/compiz.h
===================================================================
--- compiz/include/compiz.h
+++ compiz/include/compiz.h
@@ -998,7 +998,7 @@ logMessage (CompDisplay  *d,
 	    CompLogLevel level,
 	    char         *message);
 
-char *
+const char *
 logLevelToString (CompLogLevel level);
 
 int

Modified: compiz/plugins/cube.c
===================================================================
--- compiz/plugins/cube.c
+++ compiz/plugins/cube.c
@@ -277,7 +277,7 @@ cubeUpdateOutputs (CompScreen *s)
 	cs->nOutput = 1;
 	return;
     }
-    
+
     if (k != s->nOutputDev)
     {
 	cs->fullscreenOutput = FALSE;
@@ -881,7 +881,8 @@ cubePreparePaintScreen (CompScreen *s,
     else if (cs->desktopOpacity != cs->toOpacity)
     {
 	float steps = (msSinceLastPaint * OPAQUE / 1000.0) /
-	              cs->opt[CUBE_SCREEN_OPTION_FADE_TIME].value.f;
+	    cs->opt[CUBE_SCREEN_OPTION_FADE_TIME].value.f;
+
 	if (steps < 12)
 	    steps = 12;
 
@@ -946,8 +947,8 @@ cubeDonePaintScreen (CompScreen *s)
 
 static Bool
 cubeCheckOrientation (CompScreen              *s,
-        	      const ScreenPaintAttrib *sAttrib,
-        	      const CompTransform     *transform,
+		      const ScreenPaintAttrib *sAttrib,
+		      const CompTransform     *transform,
 		      CompOutput              *outputPtr,
 		      float                   points[3][3])
 {
@@ -1010,7 +1011,6 @@ cubeCheckOrientation (CompScreen              *s,
     ortho[1] = vecA[2] * vecB[0] - vecA[0] * vecB[2];
     ortho[2] = vecA[0] * vecB[1] - vecA[1] * vecB[0];
 
-	
     if (ortho[2] > 0.0f)
 	rv = !rv;
 
@@ -1038,7 +1038,7 @@ cubeMoveViewportAndPaint (CompScreen		  *s,
     ftb = cs->checkOrientation (s, sAttrib, transform, outputPtr, vPoints);
 
     if ((paintOrder == FTB && !ftb) ||
-        (paintOrder == BTF && ftb))
+	(paintOrder == BTF && ftb))
 	return;
 
     output = (outputPtr->id != ~0) ? outputPtr->id : 0;
@@ -1091,18 +1091,16 @@ cubeMoveViewportAndPaint (CompScreen		  *s,
 
 static void
 cubePaintAllViewports (CompScreen          *s,
-                       ScreenPaintAttrib   *sAttrib,
-	               const CompTransform *transform,
-                       Region              region,
-                       CompOutput          *outputPtr,
-                       unsigned int        mask,
-                       int                 xMove,
-                       float               size,
-                       int                 hsize,
-                       PaintOrder          paintOrder)
+		       ScreenPaintAttrib   *sAttrib,
+		       const CompTransform *transform,
+		       Region              region,
+		       CompOutput          *outputPtr,
+		       unsigned int        mask,
+		       int                 xMove,
+		       float               size,
+		       int                 hsize,
+		       PaintOrder          paintOrder)
 {
-    CUBE_SCREEN(s);
-
     ScreenPaintAttrib sa = *sAttrib;
 
     int i;
@@ -1112,6 +1110,8 @@ cubePaintAllViewports (CompScreen          *s,
     int iFirstSign;       /* 1 if we do xMove += i first and
 			     -1 if we do xMove -= i first. */
 
+    CUBE_SCREEN (s);
+
     if (cs->invert == 1)
     {
 	/* xMove ==> dx for the viewport which is the
@@ -1161,7 +1161,7 @@ cubePaintAllViewports (CompScreen          *s,
 
 	sa.yRotate -= cs->invert * xMoveAdd * 360.0f / size;
 	cubeMoveViewportAndPaint (s, &sa, transform, outputPtr, mask,
-	                          paintOrder, xMove);
+				  paintOrder, xMove);
 	sa.yRotate += cs->invert * xMoveAdd * 360.0f / size;
 
 	xMove -= xMoveAdd;
@@ -1184,7 +1184,7 @@ cubePaintAllViewports (CompScreen          *s,
 
 	sa.yRotate -= cs->invert * xMoveAdd * 360.0f / size;
 	cubeMoveViewportAndPaint (s, &sa, transform, outputPtr, mask,
-	                          paintOrder, xMove);
+				  paintOrder, xMove);
 	sa.yRotate += cs->invert * xMoveAdd * 360.0f / size;
 
 	xMove -= xMoveAdd;
@@ -1349,7 +1349,9 @@ cubePaintInside (CompScreen		 *s,
 		 const ScreenPaintAttrib *sAttrib,
 		 const CompTransform	 *transform,
 		 CompOutput		 *output,
-		 int			 size) {}
+		 int			 size)
+{
+}
 
 static void
 cubePaintTransformedOutput (CompScreen		    *s,
@@ -1508,7 +1510,7 @@ cubePaintTransformedOutput (CompScreen		    *s,
 	    glNormal3f (0.0f, -1.0f, 0.0f);
 	    if (cs->desktopOpacity != OPAQUE)
 	    {
-	    	(*cs->paintBottom) (s, &sa, transform, outputPtr, hsize);
+		(*cs->paintBottom) (s, &sa, transform, outputPtr, hsize);
 		glNormal3f (0.0f, 0.0f, -1.0f);
 		(*cs->paintInside) (s, &sa, transform, outputPtr, hsize);
 		glNormal3f (0.0f, -1.0f, 0.0f);
@@ -1520,7 +1522,7 @@ cubePaintTransformedOutput (CompScreen		    *s,
 	    glNormal3f (0.0f, 1.0f, 0.0f);
 	    if (cs->desktopOpacity != OPAQUE)
 	    {
-	    	(*cs->paintTop) (s, &sa, transform, outputPtr, hsize);
+		(*cs->paintTop) (s, &sa, transform, outputPtr, hsize);
 		glNormal3f (0.0f, 0.0f, -1.0f);
 		(*cs->paintInside) (s, &sa, transform, outputPtr, hsize);
 		glNormal3f (0.0f, 1.0f, 0.0f);

Modified: compiz/plugins/rotate.c
===================================================================
--- compiz/plugins/rotate.c
+++ compiz/plugins/rotate.c
@@ -225,7 +225,7 @@ adjustVelocity (RotateScreen *rs,
 
     rs->xVelocity = (amount * rs->xVelocity + adjust) / (amount + 2.0f);
 
-    if (rs->opt[ROTATE_SCREEN_OPTION_SNAP_TOP].value.b && rs->yrot > 50.0f)
+    if (rs->snapTop && rs->yrot > 50.0f)
 	yrot = -(90.f - rs->yrot);
     else
 	yrot = rs->yrot;
@@ -414,37 +414,43 @@ rotatePreparePaintScreen (CompScreen *s,
 
     if (rs->moving && cs->invert == 1 && !cs->unfolded)
     {
-	if (fabs(rs->xrot + rs->baseXrot + rs->moveTo) <=
+	if (fabs (rs->xrot + rs->baseXrot + rs->moveTo) <=
 	    (360.0 / (s->hsize * 2.0)))
+	{
 	    rs->zoomTranslate = rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f *
-		fabs(rs->xrot + rs->baseXrot + rs->moveTo) /
+		fabs (rs->xrot + rs->baseXrot + rs->moveTo) /
 		(360.0 / (s->hsize * 2.0));
-	else if (fabs(rs->xrot + rs->baseXrot) <= (360.0 / (s->hsize * 2.0)))
+	}
+	else if (fabs (rs->xrot + rs->baseXrot) <= (360.0 / (s->hsize * 2.0)))
+	{
 	    rs->zoomTranslate = rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f *
-		fabs(rs->xrot + rs->baseXrot) /
+		fabs (rs->xrot + rs->baseXrot) /
 		(360.0 / (s->hsize * 2.0));
+	}
 	else
 	{
 	    rs->zoomTranslate += fabs (rs->xrot + rs->baseXrot - oldXrot) /
 		(360.0 / (s->hsize * 2.0)) *
 		rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f;
-	    rs->zoomTranslate = MIN (rs->zoomTranslate,
-		rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f);
+	    rs->zoomTranslate =
+		MIN (rs->zoomTranslate,
+		     rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f);
 	}
     }
     else if ((rs->zoomTranslate != 0.0f || rs->grabbed) && cs->invert == 1 &&
 	     !cs->unfolded)
     {
-	int steps, stepsCount;
+	int   steps, stepsCount;
 	float amount, chunk;
-	
+
 	amount = msSinceLastPaint * 0.05f *
-		 rs->opt[ROTATE_SCREEN_OPTION_SPEED].value.f;
-	steps = stepsCount = amount / (0.5f *
-		rs->opt[ROTATE_SCREEN_OPTION_TIMESTEP].value.f);
+	    rs->opt[ROTATE_SCREEN_OPTION_SPEED].value.f;
+	steps = stepsCount = amount /
+	    (0.5f * rs->opt[ROTATE_SCREEN_OPTION_TIMESTEP].value.f);
 	if (!steps)
-		steps = stepsCount = 1;
-	chunk = amount / (float)steps;
+	    steps = stepsCount = 1;
+
+	chunk = amount / (float) steps;
 
 	while (steps--)
 	{
@@ -457,7 +463,7 @@ rotatePreparePaintScreen (CompScreen *s,
 		dt = 0.0f - rs->zoomTranslate;
 
 	    adjust = dt * 0.15f;
-	    tamount = fabs(dt) * 1.5f;
+	    tamount = fabs (dt) * 1.5f;
 	    if (tamount < 0.2f)
 		tamount = 0.2f;
 	    else if (tamount > 2.0f)
@@ -466,13 +472,14 @@ rotatePreparePaintScreen (CompScreen *s,
 	    rs->zoomVelocity = (tamount * rs->zoomVelocity + adjust) /
 			       (tamount + 1.0f);
 
-	    if (fabs(dt) < 0.1f && fabs(rs->zoomVelocity) < 0.0005f)
+	    if (fabs (dt) < 0.1f && fabs (rs->zoomVelocity) < 0.0005f)
 	    {
 		if (rs->grabbed)
 		    rs->zoomTranslate =
 			rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f;
 		else
 		    rs->zoomTranslate = 0.0f;
+
 		break;
 	    }
 	    rs->zoomTranslate += rs->zoomVelocity * chunk;

Modified: compiz/plugins/video.c
===================================================================
--- compiz/plugins/video.c
+++ compiz/plugins/video.c
@@ -440,7 +440,7 @@ videoDrawWindowTexture (CompWindow	     *w,
 		(*s->programEnvParameter4f) (GL_FRAGMENT_PROGRAM_ARB, param,
 					     minX, minY, maxX, maxY);
 
-		/* need tp provide plane offsets when texture coordinates
+		/* need to provide plane offsets when texture coordinates
 		   are not normalized */
 		if (texture->target != GL_TEXTURE_2D)
 		{
@@ -791,6 +791,8 @@ videoWindowUpdate (CompWindow *w)
     int		  aspectX = 0;
     int		  aspectY = 0;
     int		  panScan = 0;
+    int		  width = 0;
+    int		  height = 0;
 
     VIDEO_DISPLAY (w->screen->display);
     VIDEO_SCREEN (w->screen);
@@ -799,19 +801,22 @@ videoWindowUpdate (CompWindow *w)
     memset (p, 0, sizeof (p));
 
     result = XGetWindowProperty (w->screen->display->display, w->id,
-				 vd->videoAtom, 0L, 11L, FALSE,
+				 vd->videoAtom, 0L, 13L, FALSE,
 				 XA_INTEGER, &actual, &format,
 				 &n, &left, &propData);
 
     if (result == Success && n && propData)
     {
-	if (n == 11)
+	if (n == 13)
 	{
 	    long *data = (long *) propData;
 
 	    pixmap	= *data++;
 	    imageFormat = *data++;
 
+	    width  = *data++;
+	    height = *data++;
+
 	    aspectX = *data++;
 	    aspectY = *data++;
 	    panScan = *data++;
@@ -867,17 +872,14 @@ videoWindowUpdate (CompWindow *w)
 	vw->source->format  = i;
 	vw->source->p1	    = p[0];
 	vw->source->p2	    = p[1];
-	vw->source->width   = texture->width;
-	vw->source->height  = texture->height;
+	vw->source->width   = width;
+	vw->source->height  = height;
 	vw->source->aspect  = aspectX && aspectY;
 	vw->source->panScan = panScan / 65536.0f;
 
 	if (vw->source->aspect)
 	    vw->source->aspectRatio = (float) aspectX / aspectY;
 
-	if (i == IMAGE_FORMAT_YV12)
-	    vw->source->height -= texture->height / 3;
-
 	updateWindowVideoContext (w, vw->source);
     }
     else

Modified: compiz/src/display.c
===================================================================
--- compiz/src/display.c
+++ compiz/src/display.c
@@ -1979,6 +1979,8 @@ addDisplay (char *name)
     d->autoRaiseHandle = 0;
     d->autoRaiseWindow = None;
 
+    d->logMessage = logMessage;
+
     d->display = dpy = XOpenDisplay (name);
     if (!d->display)
     {
@@ -2025,8 +2027,6 @@ addDisplay (char *name)
     d->matchExpHandlerChanged = matchExpHandlerChanged;
     d->matchPropertyChanged   = matchPropertyChanged;
 
-    d->logMessage = logMessage;
-
     d->supportedAtom	     = XInternAtom (dpy, "_NET_SUPPORTED", 0);
     d->supportingWmCheckAtom = XInternAtom (dpy, "_NET_SUPPORTING_WM_CHECK", 0);
 

Modified: compiz/src/event.c
===================================================================
--- compiz/src/event.c
+++ compiz/src/event.c
@@ -1183,7 +1183,10 @@ handleEvent (CompDisplay *d,
 
     switch (event->type) {
     case Expose:
-	s = findScreenAtDisplay (d, event->xexpose.window);
+	for (s = d->screens; s; s = s->next)
+	    if (s->output == event->xexpose.window)
+		break;
+
 	if (s)
 	{
 	    int more = event->xexpose.count + 1;

Modified: compiz/src/fragment.c
===================================================================
--- compiz/src/fragment.c
+++ compiz/src/fragment.c
@@ -34,8 +34,6 @@
 #define COMP_FUNCTION_ARB_MASK (1 << 0)
 #define COMP_FUNCTION_MASK     (COMP_FUNCTION_ARB_MASK)
 
-#define BUFFER_SIZE 1024
-
 struct _CompProgram {
     struct _CompProgram *next;
 
@@ -1037,7 +1035,7 @@ addDataOpToFunctionData (CompFunctionData *data,
 			 ...)
 {
     int     ===================================================================
-    int     size  = BUFFER_SIZE;
+    int     size  = strlen (str) + 1;
     int     n;
     char    *fStr;
     char    *tmp;
@@ -1046,39 +1044,41 @@ addDataOpToFunctionData (CompFunctionData *data,
     if (!allocBodyOpInFunctionData (data))
 	return FALSE;
 
-    if ((fStr = malloc (size)) == NULL)
+    fStr = malloc (size);
+    if (!fStr)
 	return FALSE;
 
     while (1)
     {
 	/* Try to print in the allocated space. */
-	va_start(ap, str);
+	va_start (ap, str);
 	n = vsnprintf (fStr, size, str, ap);
-	va_end(ap);
-	
+	va_end (ap);
+
 	/* If that worked, leave the loop. */
 	if (n > -1 && n < size)
 	    break;
-	
+
 	/* Else try again with more space. */
-	if (n > -1)     /* glibc 2.1 */
-	    size = n+1; /* precisely what is needed */
-	else            /* glibc 2.0 */
-	    size *= 2;  /* twice the old size */
-	
-	if ((tmp = realloc (fStr, size)) == NULL)
+	if (n > -1)       /* glibc 2.1 */
+	    size = n + 1; /* precisely what is needed */
+	else              /* glibc 2.0 */
+	    size++;       /* one more than the old size */
+
+	tmp = realloc (fStr, size);
+	if (!tmp)
 	{
-	    free(fStr);
+	    free (fStr);
 	    return FALSE;
-	} else {
+	}
+	else
+	{
 	    fStr = tmp;
 	}
     }
 
     data->body[index].type	= CompOpTypeData;
-    data->body[index].data.data = strdup (fStr);
-
-    free (fStr);
+    data->body[index].data.data = fStr;
 
     return TRUE;
 }
@@ -1089,7 +1089,7 @@ addBlendOpToFunctionData (CompFunctionData *data,
 			  ...)
 {
     int     ===================================================================
-    int     size  = BUFFER_SIZE;
+    int     size  = strlen (str) + 1;
     int     n;
     char    *fStr;
     char    *tmp;
@@ -1098,39 +1098,41 @@ addBlendOpToFunctionData (CompFunctionData *data,
     if (!allocBodyOpInFunctionData (data))
 	return FALSE;
 
-    if ((fStr = malloc (size)) == NULL)
+    fStr = malloc (size);
+    if (!fStr)
 	return FALSE;
 
     while (1)
     {
 	/* Try to print in the allocated space. */
-	va_start(ap, str);
+	va_start (ap, str);
 	n = vsnprintf (fStr, size, str, ap);
-	va_end(ap);
-	
+	va_end (ap);
+
 	/* If that worked, leave the loop. */
 	if (n > -1 && n < size)
 	    break;
-	
+
 	/* Else try again with more space. */
-	if (n > -1)     /* glibc 2.1 */
-	    size = n+1; /* precisely what is needed */
-	else            /* glibc 2.0 */
-	    size *= 2;  /* twice the old size */
-	
-	if ((tmp = realloc (fStr, size)) == NULL)
+	if (n > -1)       /* glibc 2.1 */
+	    size = n + 1; /* precisely what is needed */
+	else              /* glibc 2.0 */
+	    size++;       /* one more than the old size */
+
+	tmp = realloc (fStr, size);
+	if (!tmp)
 	{
-	    free(fStr);
+	    free (fStr);
 	    return FALSE;
-	} else {
+	}
+	else
+	{
 	    fStr = tmp;
 	}
     }
 
     data->body[index].type	= CompOpTypeDataBlend;
-    data->body[index].data.data = strdup (fStr);
-
-    free (fStr);
+    data->body[index].data.data = fStr;
 
     return TRUE;
 }

Modified: compiz/src/main.c
===================================================================
--- compiz/src/main.c
+++ compiz/src/main.c
@@ -100,73 +100,61 @@ usage (void)
 
 void
 compLogMessage (CompDisplay *d,
-		char *componentName,
+		char	     *componentName,
 		CompLogLevel level,
-		char *format,
+		char	     *format,
 		...)
 {
     va_list args;
     char    message[2048];
 
-    if (!d)
-	d = compDisplays;
-
     va_start (args, format);
 
     vsnprintf (message, 2048, format, args);
 
-    if (!d)
-	logMessage (d, componentName, level, message);
-    else
+    if (d)
 	(*d->logMessage) (d, componentName, level, message);
+    else
+	logMessage (d, componentName, level, message);
 
     va_end (args);
 }
 
 void
-logMessage (CompDisplay *d,
-	    char *componentName,
+logMessage (CompDisplay	 *d,
+	    char	 *componentName,
 	    CompLogLevel level,
-	    char *message)
+	    char	 *message)
 {
     char defaultMessage[2048];
 
     snprintf (defaultMessage, 2048, "%s (%s) - %s: %s",
-	      programName, componentName, 
+	      programName, componentName,
 	      logLevelToString (level), message);
 
     fprintf (stderr, defaultMessage);
     fprintf (stderr, "\n");
 }
 
-char *
+const char *
 logLevelToString (CompLogLevel level)
 {
-    char *logStr;
-
-    switch (level)
-    {
+    switch (level) {
     case CompLogLevelFatal:
-	logStr = strdup ("Fatal");
-	break;
+	return "Fatal";
     case CompLogLevelError:
-	logStr = strdup ("Error");
-	break;
+	return "Error";
     case CompLogLevelWarn:
-	logStr = strdup ("Warn");
-	break;
+	return "Warn";
     case CompLogLevelInfo:
-	logStr = strdup ("Info");
-	break;
+	return "Info";
     case CompLogLevelDebug:
-	logStr = strdup ("Debug");
-	break;
+	return "Debug";
     default:
-	logStr = strdup ("Unknown");
 	break;
     }
 
-    return logStr;
+    return "Unknown";
 }
 
 static void

Modified: compiz/src/screen.c
===================================================================
--- compiz/src/screen.c
+++ compiz/src/screen.c
@@ -1269,6 +1269,8 @@ makeOutputWindow (CompScreen *s)
     {
 	s->overlay = XCompositeGetOverlayWindow (s->display->display, s->root);
 	s->output  = s->overlay;
+
+	XSelectInput (s->display->display, s->output, ExposureMask);
     }
     else
 #endif


More information about the commits mailing list