rpms/compiz/devel cow.patch,NONE,1.1 compiz.spec,1.22,1.23

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Wed Aug 30 02:31:51 UTC 2006


Author: krh

Update of /cvs/dist/rpms/compiz/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv8768

Modified Files:
	compiz.spec 
Added Files:
	cow.patch 
Log Message:
* Tue Aug 29 2006 Kristian Høgsberg <krh at redhat.com> - 0.0.13-0.20.20060817git.fc6
- Add cow.patch to make compiz use the composite overlay window.


cow.patch:
 include/compiz.h |    2 ++
 src/display.c    |    6 +++---
 src/event.c      |    7 ++++++-
 src/screen.c     |   27 +++++++++++++++++++++++++--
 4 files changed, 36 insertions(+), 6 deletions(-)

--- NEW FILE cow.patch ---
--- ./src/display.c.cow	2006-08-29 19:48:53.000000000 -0400
+++ ./src/display.c	2006-08-29 18:11:46.000000000 -0400
@@ -1998,7 +1998,7 @@
 					   PAINT_SCREEN_REGION_MASK |
 					   PAINT_SCREEN_FULL_MASK);
 
-			glXSwapBuffers (s->display->display, s->root);
+			glXSwapBuffers (s->display->display, s->output);
 		    }
 		    else if (s->damageMask & COMP_SCREEN_DAMAGE_REGION_MASK)
 		    {
@@ -2022,7 +2022,7 @@
 				    y = s->height - pBox->y2;
 
 				    (*s->copySubBuffer) (s->display->display,
-							 s->root,
+							 s->output,
 							 pBox->x1, y,
 							 pBox->x2 - pBox->x1,
 							 pBox->y2 - pBox->y1);
@@ -2071,7 +2071,7 @@
 					       &s->region,
 					       PAINT_SCREEN_FULL_MASK);
 
-			    glXSwapBuffers (s->display->display, s->root);
+			    glXSwapBuffers (s->display->display, s->output);
 			}
 		    }
 
--- ./src/screen.c.cow	2006-08-29 14:11:48.000000000 -0400
+++ ./src/screen.c	2006-08-29 18:19:32.000000000 -0400
@@ -40,6 +40,8 @@
 #include <X11/Xatom.h>
 #include <X11/Xproto.h>
 #include <X11/extensions/Xrandr.h>
+#include <X11/extensions/Xcomposite.h>
+#include <X11/extensions/shape.h>
 #include <X11/cursorfont.h>
 
 #include <compiz.h>
@@ -878,6 +880,25 @@
 		     (unsigned char *) data, 1);
 }
 
+static void
+makeOutputWindow (CompScreen *s)
+{
+    Display       *dpy = s->display->display;
+    XserverRegion region;
+
+    s->overlay   = XCompositeGetOverlayWindow (dpy, s->root);
+    s->output    = s->overlay;
+
+    region = XFixesCreateRegion (dpy, NULL, 0);
+
+    XFixesSetWindowShapeRegion (dpy,
+				s->output,
+				ShapeInput,
+				0, 0, region);
+
+    XFixesDestroyRegion (dpy, region);
+}
+
 Bool
 addScreen (CompDisplay *display,
 	   int	       screenNum,
@@ -1045,6 +1066,8 @@
 
     s->grabWindow = None;
 
+    makeOutputWindow (s);
+
     templ.visualid = XVisualIDFromVisual (s->attrib.visual);
 
     visinfo = XGetVisualInfo (dpy, VisualIDMask, &templ, &nvisinfo);
@@ -1174,7 +1197,7 @@
 	s->copySubBuffer = (GLXCopySubBufferProc)
 	    getProcAddress (s, "glXCopySubBufferMESA");
 
-    glXMakeCurrent (dpy, s->root, s->ctx);
+    glXMakeCurrent (dpy, s->output, s->ctx);
     currentRoot = s->root;
 
     glExtensions = (const char *) glGetString (GL_EXTENSIONS);
@@ -2844,7 +2867,7 @@
 {
     if (currentRoot != s->root)
     {
-	glXMakeCurrent (s->display->display, s->root, s->ctx);
+	glXMakeCurrent (s->display->display, s->output, s->ctx);
 	currentRoot = s->root;
 
 	s->pendingCommands = TRUE;
--- ./include/compiz.h.cow	2006-08-29 19:36:02.000000000 -0400
+++ ./include/compiz.h	2006-08-29 15:46:43.000000000 -0400
@@ -1288,6 +1288,8 @@
     Region	      damage;
     unsigned long     damageMask;
     Window	      root;
+    Window	      overlay;
+    Window	      output;
     XWindowAttributes attrib;
     Window	      grabWindow;
     CompFBConfig      glxPixmapFBConfigs[MAX_DEPTH + 1];
--- ./src/event.c.cow	2006-08-29 21:37:29.000000000 -0400
+++ ./src/event.c	2006-08-29 21:39:03.000000000 -0400
@@ -1145,7 +1145,12 @@
 	s = findScreenAtDisplay (d, event->xcreatewindow.parent);
 	if (s)
 	{
-	    addWindow (s, event->xcreatewindow.window, getTopWindow (s));
+	    /* The first time some client asks for the composite
+	     * overlay window, the X server creates it, which causes
+	     * an errorneous CreateNotify event.  We catch it and
+	     * ignore it. */
+	    if (s->overlay != event->xcreatewindow.window)
+		addWindow (s, event->xcreatewindow.window, getTopWindow (s));
 	}
 	break;
     case DestroyNotify:


Index: compiz.spec
===================================================================
RCS file: /cvs/dist/rpms/compiz/devel/compiz.spec,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- compiz.spec	25 Aug 2006 22:12:02 -0000	1.22
+++ compiz.spec	30 Aug 2006 02:31:49 -0000	1.23
@@ -10,7 +10,7 @@
 License:        X11/MIT/GPL
 Group:          User Interface/Desktops
 Version:        0.0.13
-Release:        0.19.%{snapshot}git%{?dist}
+Release:        0.20.%{snapshot}git%{?dist}
 
 Summary:        OpenGL window and compositing manager
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -41,6 +41,7 @@
 Patch104: fbconfig-depth-fix.patch
 Patch105: fedora-logo.patch
 Patch106: glfinish.patch
+Patch107: cow.patch
 
 # Patches already upstream
 Patch200: resize-move-keybindings.patch
@@ -78,6 +79,7 @@
 %patch104 -p1 -b .fbconfig-depth-fix
 %patch105 -p1 -b .fedora-logo
 %patch106 -p1 -b .glfinish
+%patch107 -p1 -b .cow
 
 %patch200 -p1 -b .resize-move-keybindings
 %patch201 -p1 -b .sync-override-redirect-windows
@@ -142,6 +144,9 @@
 %{_includedir}/compiz
 
 %changelog
+* Tue Aug 29 2006 Kristian Høgsberg <krh at redhat.com> - 0.0.13-0.20.20060817git.fc6
+- Add cow.patch to make compiz use the composite overlay window.
+
 * Fri Aug 25 2006 Soren Sandmann <sandmann at redhat.com> - 0.0.13-0.19-20060817git.fc6
 - Rebase to desktop-effects 0.6.41
 




More information about the fedora-cvs-commits mailing list