[beryl-commits] compiz mirror: Changes to 'master' (22481bc09476cb0d9271f119eb9e8ef7a10fbc1e)

compiz at server.beryl-project.org compiz at server.beryl-project.org
Fri Jun 1 06:55:16 CEST 2007


New commits:
commit 22481bc09476cb0d9271f119eb9e8ef7a10fbc1e
Author: David Reveman <davidr at novell.com>
Date:   Fri Jun 1 00:47:27 2007 -0400

    Bump ABIVERSION.

commit 4c5fa70c3f083711851020029ca12043907c387d
Author: David Reveman <davidr at novell.com>
Date:   Fri Jun 1 00:46:48 2007 -0400

    Move lastViewport into CompScreen struct as it's GL context
    dependent.

commit 465a0c1f5e64d92d12d8e9c38aa993d06f45d01d
Author: David Reveman <davidr at novell.com>
Date:   Fri Jun 1 00:38:49 2007 -0400

    Clean up last viewport check.

commit a998c19e41d0f7b33002edd6d372c2a8aadf4398
Author: David Reveman <davidr at novell.com>
Date:   Fri Jun 1 00:31:13 2007 -0400

    Use output id.

commit b958103af339be101ec518a3ad6cb801421d6069
Author: David Reveman <davidr at novell.com>
Date:   Fri Jun 1 00:31:03 2007 -0400

    Use output id.

commit 10210f88ac94c6ee89b854ec0d6f571f1e15a435
Author: David Reveman <davidr at novell.com>
Date:   Fri Jun 1 00:30:35 2007 -0400

    Add output id. The id is always set to the output's index in the
    screen outputs list. The id must be set to ~0 if the output is
    not a real screen output.


 include/compiz.h |    5 ++++-
 plugins/cube.c   |   14 +++-----------
 plugins/zoom.c   |   11 +++--------
 src/display.c    |   31 +++++++++++++------------------
 src/screen.c     |   14 ++++++++++----
 5 files changed, 33 insertions(+), 42 deletions(-)


Modified: compiz/include/compiz.h
===================================================================
--- compiz/include/compiz.h
+++ compiz/include/compiz.h
@@ -26,7 +26,7 @@
 #ifndef _COMPIZ_H
 #define _COMPIZ_H
 
-#define ABIVERSION 20070601
+#define ABIVERSION 20070602
 
 #include <stdio.h>
 #include <sys/time.h>
@@ -1773,6 +1773,7 @@ struct _CompIcon {
 
 struct _CompOutput {
     char       *name;
+    int        id;
     REGION     region;
     int        width;
     int        height;
@@ -1866,6 +1867,8 @@ struct _CompScreen {
     int	       currentOutputDev;
     CompOutput fullscreenOutput;
 
+    XRectangle lastViewport;
+
     CompActiveWindowHistory history[ACTIVE_WINDOW_HISTORY_NUM];
     int			    currentHistory;
 

Modified: compiz/plugins/cube.c
===================================================================
--- compiz/plugins/cube.c
+++ compiz/plugins/cube.c
@@ -802,7 +802,6 @@ cubePaintOutput (CompScreen		 *s,
 		 unsigned int		 mask)
 {
     Bool status;
-    int i;
 
     CUBE_SCREEN (s);
 
@@ -812,10 +811,7 @@ cubePaintOutput (CompScreen		 *s,
 	mask |= PAINT_SCREEN_TRANSFORMED_MASK;
     }
 
-    cs->srcOutput = 0;
-    for (i = 0; i < s->nOutputDev; i++)
-	if (!memcmp (output, &s->outputDev[i], sizeof (CompOutput)))
-	    cs->srcOutput = i;
+    cs->srcOutput = (output->id != ~0) ? output->id : 0;
 
     UNWRAP (cs, s, paintOutput);
     status = (*s->paintOutput) (s, sAttrib, transform, region, output, mask);
@@ -845,14 +841,10 @@ cubeMoveViewportAndPaint (CompScreen		  *s,
 			  unsigned int		  mask,
 			  int			  dx)
 {
-    int i, output = 0;
-    
+    int output = (outputPtr->id != ~0) ? outputPtr->id : 0;
+
     CUBE_SCREEN (s);
 
-    for (i = 0; i < s->nOutputDev; i++)
-	if (!memcmp (outputPtr, &s->outputDev[i], sizeof (CompOutput)))
-	    output = i;
-    
     if (cs->nOutput > 1)
     {
 	int cubeOutput, dView;

Modified: compiz/plugins/zoom.c
===================================================================
--- compiz/plugins/zoom.c
+++ compiz/plugins/zoom.c
@@ -255,15 +255,10 @@ zoomPaintOutput (CompScreen		 *s,
 {
     CompTransform zTransform = *transform;
     Bool	  status;
-    int		  i, outputNum = -1;
 
     ZOOM_SCREEN (s);
 
-    for (i = 0; i < s->nOutputDev; i++)
-	if (output == &s->outputDev[i])
-	    outputNum = i;
-
-    if (outputNum >= 0 && (zs->zoomed & (1 << outputNum)))
+    if (output->id != ~0 && (zs->zoomed & (1 << output->id)))
     {
 	int	saveFilter;
 	ZoomBox	box;
@@ -273,7 +268,7 @@ zoomPaintOutput (CompScreen		 *s,
 
 	mask &= ~PAINT_SCREEN_REGION_MASK;
 
-	zoomGetCurrentZoom (s, outputNum, &box);
+	zoomGetCurrentZoom (s, output->id, &box);
 
 	x1 = box.x1 - output->region.extents.x1;
 	y1 = box.y1 - output->region.extents.y1;
@@ -293,7 +288,7 @@ zoomPaintOutput (CompScreen		 *s,
 
 	saveFilter = s->filter[SCREEN_TRANS_FILTER];
 
-	if ((zs->zoomOutput != outputNum || !zs->adjust) && scale > 3.9f)
+	if ((zs->zoomOutput != output->id || !zs->adjust) && scale > 3.9f)
 	    s->filter[SCREEN_TRANS_FILTER] = COMP_TEXTURE_FILTER_FAST;
 
 	UNWRAP (zs, s, paintOutput);

Modified: compiz/src/display.c
===================================================================
--- compiz/src/display.c
+++ compiz/src/display.c
@@ -79,10 +79,6 @@ static CompFileWatchHandle lastFileWatchHandle = 1;
 static CompScreen *targetScreen = NULL;
 static CompOutput *targetOutput;
 static Region	  tmpRegion, outputRegion;
-static int        curViewportX = 0;
-static int        curViewportY = 0;
-static int        curViewportW = 0;
-static int        curViewportH = 0;
 
 static Bool inHandleEvent = FALSE;
 
@@ -1456,27 +1452,26 @@ paintScreen (CompScreen   *s,
 	     int          numOutput,
 	     unsigned int mask)
 {
-    int i;
+    XRectangle r;
+    int	       i;
 
     for (i = 0; i < numOutput; i++)
     {
 	targetScreen = s;
 	targetOutput = &outputs[i];
 
-	if (curViewportX != outputs[i].region.extents.x1 ||
-	    curViewportY != s->height - outputs[i].region.extents.x2 ||
-	    curViewportW != outputs[i].width ||
-	    curViewportH != outputs[i].height)
+	r.x	 = outputs[i].region.extents.x1;
+	r.y	 = s->height - outputs[i].region.extents.y2;
+	r.width  = outputs[i].width;
+	r.height = outputs[i].height;
+
+	if (s->lastViewport.x	   != r.x     ||
+	    s->lastViewport.y	   != r.y     ||
+	    s->lastViewport.width  != r.width ||
+	    s->lastViewport.height != r.height)
 	{
-	    glViewport (outputs[i].region.extents.x1,
-			s->height -
-			outputs[i].region.extents.y2,
-			outputs[i].width,
-			outputs[i].height);
-	    curViewportX = outputs[i].region.extents.x1;
-	    curViewportY = s->height - outputs[i].region.extents.x2;
-	    curViewportW = outputs[i].width;
-	    curViewportH = outputs[i].height;
+	    glViewport (r.x, r.y, r.width, r.height);
+	    s->lastViewport = r;
 	}
 
 	if (mask & COMP_SCREEN_DAMAGE_ALL_MASK)

Modified: compiz/src/screen.c
===================================================================
--- compiz/src/screen.c
+++ compiz/src/screen.c
@@ -281,6 +281,7 @@ updateOutputDevices (CompScreen	*s)
 	output[i].workArea.width  = output[i].width;
 	output[i].workArea.height = output[i].height;
 
+	output[i].id = i;
     }
 
     if (s->outputDev)
@@ -3601,10 +3602,15 @@ getWorkareaForOutput (CompScreen *s,
 void
 setDefaultViewport (CompScreen *s)
 {
-    glViewport (s->outputDev->region.extents.x1,
-		s->height - s->outputDev->region.extents.y2,
-		s->outputDev->width,
-		s->outputDev->height);
+    s->lastViewport.x	   = s->outputDev->region.extents.x1;
+    s->lastViewport.y	   = s->height - s->outputDev->region.extents.y2;
+    s->lastViewport.width  = s->outputDev->width;
+    s->lastViewport.height = s->outputDev->height;
+
+    glViewport (s->lastViewport.x,
+		s->lastViewport.y,
+		s->lastViewport.width,
+		s->lastViewport.height);
 }
 
 void



More information about the commits mailing list