compiz team mailing list archive
-
compiz team
-
Mailing list archive
-
Message #23636
[Bug 807487] Re: unity-window-decorator crashed with SIGSEGV in g_datalist_id_set_data_full()
=== added file 'debian/patches/rev_2821_fix_807487.patch'
--- debian/patches/rev_2821_fix_807487.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/rev_2821_fix_807487.patch 2011-10-17 07:02:55 +0000
@@ -0,0 +1,91 @@
+bzr+ssh://bazaar.launchpad.net/~compiz-team/compiz-core/oneiric/
+=== modified file 'plugins/opengl/include/opengl/opengl.h'
+Index: compiz-0.9.6+bzr20110929/plugins/opengl/include/opengl/opengl.h
+===================================================================
+--- compiz-0.9.6+bzr20110929.orig/plugins/opengl/include/opengl/opengl.h 2011-10-17 14:35:33.867415820 +0800
++++ compiz-0.9.6+bzr20110929/plugins/opengl/include/opengl/opengl.h 2011-10-17 14:35:56.703529052 +0800
+@@ -398,6 +398,7 @@
+ WRAPABLE_HND (4, GLScreenInterface, void, glDisableOutputClipping);
+
+ friend class GLTexture;
++ friend class GLWindow;
+ friend class SpewScreen;
+ friend class SpewWindow;
+
+Index: compiz-0.9.6+bzr20110929/plugins/opengl/src/privates.h
+===================================================================
+--- compiz-0.9.6+bzr20110929.orig/plugins/opengl/src/privates.h 2011-10-17 14:35:33.879415881 +0800
++++ compiz-0.9.6+bzr20110929/plugins/opengl/src/privates.h 2011-10-17 14:35:56.703529052 +0800
+@@ -121,6 +121,9 @@
+ bool hasCompositing;
+
+ GLIcon defaultIcon;
++
++ Window saveWindow; // hack for broken applications, see:
++ // https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/807487
+ };
+
+ class PrivateGLWindow :
+Index: compiz-0.9.6+bzr20110929/plugins/opengl/src/screen.cpp
+===================================================================
+--- compiz-0.9.6+bzr20110929.orig/plugins/opengl/src/screen.cpp 2011-10-17 14:35:33.895415963 +0800
++++ compiz-0.9.6+bzr20110929/plugins/opengl/src/screen.cpp 2011-10-17 14:35:56.703529052 +0800
+@@ -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;
++ XSetWindowAttributes attrib;
+ const char *glRenderer;
+ CompOption::Vector o (0);
+
+@@ -114,6 +115,10 @@
+ setenv ("LIBGL_ALWAYS_INDIRECT", "1", True);
+ }
+
++ attrib.override_redirect = 1;
++
++ priv->saveWindow = XCreateWindow (dpy, screen->root (), -100, -100, 1, 1, 0, CopyFromParent, InputOutput, CopyFromParent, CWOverrideRedirect, &attrib);
++
+ if (!XGetWindowAttributes (dpy, s->root (), &attr))
+ {
+ screen->handleCompizEvent ("opengl", "fatal_fallback", o);
+Index: compiz-0.9.6+bzr20110929/plugins/opengl/src/window.cpp
+===================================================================
+--- compiz-0.9.6+bzr20110929.orig/plugins/opengl/src/window.cpp 2011-10-17 14:35:33.907416017 +0800
++++ compiz-0.9.6+bzr20110929/plugins/opengl/src/window.cpp 2011-10-17 14:35:56.703529052 +0800
+@@ -105,6 +105,21 @@
+ compLogMessage ("opengl", CompLogLevelInfo,
+ "Couldn't bind redirected window 0x%x to "
+ "texture\n", (int) priv->window->id ());
++
++ if (priv->cWindow->size ().width () > GL::maxTextureSize ||
++ priv->cWindow->size ().height () > GL::maxTextureSize)
++ {
++ compLogMessage ("opengl", CompLogLevelWarn,
++ "Bug in window 0x%x (identifying as %s)", (int) priv->window->id (), priv->window->resName ().size () ? priv->window->resName ().c_str () : "(none available)");
++ 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::maxTextureSize);
++ 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->saveWindow, 0, 0);
++ }
+ }
+
+ priv->setWindowMatrix ();
+Index: compiz-0.9.6+bzr20110929/unity/unity_window_decorator/src/gtk-window-decorator.c
+===================================================================
+--- compiz-0.9.6+bzr20110929.orig/unity/unity_window_decorator/src/gtk-window-decorator.c 2011-10-17 14:35:33.919416082 +0800
++++ compiz-0.9.6+bzr20110929/unity/unity_window_decorator/src/gtk-window-decorator.c 2011-10-17 14:35:56.703529052 +0800
+@@ -432,8 +432,7 @@
+ }
+
+ decor_set_dm_check_hint (xdisplay, gdk_screen_get_number (gdkscreen),
+- WINDOW_DECORATION_TYPE_PIXMAP |
+- WINDOW_DECORATION_TYPE_WINDOW);
++ WINDOW_DECORATION_TYPE_PIXMAP);
+
+ update_default_decorations (gdkscreen);
+
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.
--
You received this bug notification because you are a member of compiz
packagers, which is subscribed to compiz in Ubuntu.
https://bugs.launchpad.net/bugs/807487
Title:
unity-window-decorator crashed with SIGSEGV in
g_datalist_id_set_data_full()
To manage notifications about this bug go to:
https://bugs.launchpad.net/unity/+bug/807487/+subscriptions