This missing patch adds a workaround for applications that create absurdly large windows by hiding them rather than letting them break the desktop or cause problems on the graphics hardware. It also disables the "2D mode" of the window decorator which is unmaintained and unsupported.
=== added file 'debian/ patches/ rev_2821_ fix_807487. patch' patches/ rev_2821_ fix_807487. patch 1970-01-01 00:00:00 +0000 patches/ rev_2821_ fix_807487. patch 2011-10-17 07:02:55 +0000 //bazaar. launchpad. net/~compiz- team/compiz- core/oneiric/ opengl/ include/ opengl/ opengl. h' 0.9.6+bzr201109 29/plugins/ opengl/ include/ opengl/ opengl. h ======= ======= ======= ======= ======= ======= ======= ======= ===== 0.9.6+bzr201109 29.orig/ plugins/ opengl/ include/ opengl/ opengl. h 2011-10-17 14:35:33.867415820 +0800 0.9.6+bzr201109 29/plugins/ opengl/ include/ opengl/ opengl. h 2011-10-17 14:35:56.703529052 +0800 Clipping) ; 0.9.6+bzr201109 29/plugins/ opengl/ src/privates. h ======= ======= ======= ======= ======= ======= ======= ======= ===== 0.9.6+bzr201109 29.orig/ plugins/ opengl/ src/privates. h 2011-10-17 14:35:33.879415881 +0800 0.9.6+bzr201109 29/plugins/ opengl/ src/privates. h 2011-10-17 14:35:56.703529052 +0800 /bugs.launchpad .net/ubuntu/ +source/ compiz/ +bug/807487 0.9.6+bzr201109 29/plugins/ opengl/ src/screen. cpp ======= ======= ======= ======= ======= ======= ======= ======= ===== 0.9.6+bzr201109 29.orig/ plugins/ opengl/ src/screen. cpp 2011-10-17 14:35:33.895415963 +0800 0.9.6+bzr201109 29/plugins/ opengl/ src/screen. cpp 2011-10-17 14:35:56.703529052 +0800 butes attrib; ALWAYS_ INDIRECT" , "1", True); override_ redirect = 1; ributes (dpy, s->root (), &attr)) >handleCompizEv ent ("opengl", "fatal_fallback", o); 0.9.6+bzr201109 29/plugins/ opengl/ src/window. cpp ======= ======= ======= ======= ======= ======= ======= ======= ===== 0.9.6+bzr201109 29.orig/ plugins/ opengl/ src/window. cpp 2011-10-17 14:35:33.907416017 +0800 0.9.6+bzr201109 29/plugins/ opengl/ src/window. cpp 2011-10-17 14:35:56.703529052 +0800 cWindow- >size ().width () > GL::maxTextureSize || >resName ().size () ? priv->window- >resName ().c_str () : "(none available)"); ize); ->priv- >saveWindow, 0, 0); Matrix (); 0.9.6+bzr201109 29/unity/ unity_window_ decorator/ src/gtk- window- decorator. c ======= ======= ======= ======= ======= ======= ======= ======= ===== 0.9.6+bzr201109 29.orig/ unity/unity_ window_ decorator/ src/gtk- window- decorator. c 2011-10-17 14:35:33.919416082 +0800 0.9.6+bzr201109 29/unity/ unity_window_ decorator/ src/gtk- window- decorator. c 2011-10-17 14:35:56.703529052 +0800 dm_check_ hint (xdisplay, gdk_screen_ get_number (gdkscreen), DECORATION_ TYPE_PIXMAP | DECORATION_ TYPE_WINDOW) ; DECORATION_ TYPE_PIXMAP) ; default_ decorations (gdkscreen);
--- debian/
+++ debian/
@@ -0,0 +1,91 @@
+bzr+ssh:
+=== modified file 'plugins/
+Index: compiz-
+======
+--- compiz-
++++ compiz-
+@@ -398,6 +398,7 @@
+ WRAPABLE_HND (4, GLScreenInterface, void, glDisableOutput
+
+ friend class GLTexture;
++ friend class GLWindow;
+ friend class SpewScreen;
+ friend class SpewWindow;
+
+Index: compiz-
+======
+--- compiz-
++++ compiz-
+@@ -121,6 +121,9 @@
+ bool hasCompositing;
+
+ GLIcon defaultIcon;
++
++ Window saveWindow; // hack for broken applications, see:
++ // https:/
+ };
+
+ class PrivateGLWindow :
+Index: compiz-
+======
+--- compiz-
++++ compiz-
+@@ -99,6 +99,7 @@
+ GLfloat diffuseLight[] = { 0.9f, 0.9f, 0.9f, 0.9f };
+ GLfloat light0Position[] = { -0.5f, 0.5f, -9.0f, 1.0f };
+ XWindowAttributes attr;
++ XSetWindowAttri
+ const char *glRenderer;
+ CompOption::Vector o (0);
+
+@@ -114,6 +115,10 @@
+ setenv ("LIBGL_
+ }
+
++ attrib.
++
++ priv->saveWindow = XCreateWindow (dpy, screen->root (), -100, -100, 1, 1, 0, CopyFromParent, InputOutput, CopyFromParent, CWOverrideRedirect, &attrib);
++
+ if (!XGetWindowAtt
+ {
+ screen-
+Index: compiz-
+======
+--- compiz-
++++ compiz-
+@@ -105,6 +105,21 @@
+ compLogMessage ("opengl", CompLogLevelInfo,
+ "Couldn't bind redirected window 0x%x to "
+ "texture\n", (int) priv->window->id ());
++
++ if (priv->
++ priv->cWindow->size ().height () > GL::maxTextureSize)
++ {
++ compLogMessage ("opengl", CompLogLevelWarn,
++ "Bug in window 0x%x (identifying as %s)", (int) priv->window->id (), priv->window-
++ compLogMessage ("opengl", CompLogLevelWarn,
++ "This window tried to create an absurdly large window %i x %i\n", priv->cWindow->size ().width (), priv->cWindow->size ().height ());
++ compLogMessage ("opengl", CompLogLevelWarn,
++ "Unforunately, that's not supported on your hardware, because you have a maximum texture size of %i", GL::maxTextureS
++ compLogMessage ("opengl", CompLogLevelWarn, "you should probably file a bug against that application");
++ compLogMessage ("opengl", CompLogLevelWarn, "for now, we're going to hide tht window so that it doesn't break your desktop\n");
++
++ XReparentWindow (screen->dpy (), priv->window->id (), GLScreen::get (screen)
++ }
+ }
+
+ priv->setWindow
+Index: compiz-
+======
+--- compiz-
++++ compiz-
+@@ -432,8 +432,7 @@
+ }
+
+ decor_set_
+- WINDOW_
+- WINDOW_
++ WINDOW_
+
+ update_
+
This missing patch adds a workaround for applications that create absurdly large windows by hiding them rather than letting them break the desktop or cause problems on the graphics hardware. It also disables the "2D mode" of the window decorator which is unmaintained and unsupported.