[arch-commits] Commit in metacity/trunk (PKGBUILD fix-crasher.patch)

Balló György bgyorgy at archlinux.org
Sun Aug 16 17:39:48 UTC 2015


    Date: Sunday, August 16, 2015 @ 19:39:48
  Author: bgyorgy
Revision: 138426

upgpkg: metacity 3.16.1-2

Fix crasher

Added:
  metacity/trunk/fix-crasher.patch
Modified:
  metacity/trunk/PKGBUILD

-------------------+
 PKGBUILD          |   15 ++++++-
 fix-crasher.patch |  103 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 115 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2015-08-16 16:47:17 UTC (rev 138425)
+++ PKGBUILD	2015-08-16 17:39:48 UTC (rev 138426)
@@ -4,7 +4,7 @@
 
 pkgname=metacity
 pkgver=3.16.1
-pkgrel=1
+pkgrel=2
 pkgdesc="Legacy GNOME window manager"
 arch=('i686' 'x86_64')
 license=('GPL')
@@ -12,9 +12,18 @@
 makedepends=('intltool' 'itstool')
 url="https://wiki.gnome.org/Projects/Metacity"
 install=metacity.install
-source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
-sha256sums=('7a2e4ab7e19bfa5e6fc75d80d66e79f7965b5a51435c9675b0e895179d256f86')
+source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
+        fix-crasher.patch)
+sha256sums=('7a2e4ab7e19bfa5e6fc75d80d66e79f7965b5a51435c9675b0e895179d256f86'
+            'eb2a6043ff1a2fc0207a65c2bee18ada509108354379ddc12ef04566cfd7a524')
 
+prepare() {
+  cd $pkgname-$pkgver
+
+  # Fix crasher
+  patch -Np1 -i ../fix-crasher.patch
+}
+
 build() {
   cd $pkgname-$pkgver
   ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/$pkgname \

Added: fix-crasher.patch
===================================================================
--- fix-crasher.patch	                        (rev 0)
+++ fix-crasher.patch	2015-08-16 17:39:48 UTC (rev 138426)
@@ -0,0 +1,103 @@
+From a9f28dbc26f5211ef08889109db3dc8c7ba76aca Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alberts=20Muktup=C4=81vels?= <alberts.muktupavels at gmail.com>
+Date: Tue, 7 Jul 2015 13:49:30 +0300
+Subject: compositor: fix possible crash closing/destroying window
+
+Partially restore call to destroy_win in compositor when calling
+meta_window_free. This is needed to ensure that we never call
+meta_window_get_frame_bounds while windows is destroying.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=751833
+
+diff --git a/src/compositor/compositor-private.h b/src/compositor/compositor-private.h
+index 11ed73b..a45fdc9 100644
+--- a/src/compositor/compositor-private.h
++++ b/src/compositor/compositor-private.h
+@@ -48,6 +48,9 @@ struct _MetaCompositor
+                              MetaScreen     *screen,
+                              MetaWindow     *window);
+ 
++  void (*free_window) (MetaCompositor *compositor,
++                       MetaWindow     *window);
++
+   void (*maximize_window)   (MetaCompositor *compositor,
+                              MetaWindow     *window);
+   void (*unmaximize_window) (MetaCompositor *compositor,
+diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c
+index 3bff70a..fbae9a7 100644
+--- a/src/compositor/compositor-xrender.c
++++ b/src/compositor/compositor-xrender.c
+@@ -2799,23 +2799,38 @@ xrender_end_move (MetaCompositor *compositor,
+ #ifdef HAVE_COMPOSITE_EXTENSIONS
+ #endif
+ }
++#endif /* 0 */
+ 
+ static void
+ xrender_free_window (MetaCompositor *compositor,
+                      MetaWindow     *window)
+ {
+ #ifdef HAVE_COMPOSITE_EXTENSIONS
+-  /* FIXME: When an undecorated window is hidden this is called,
+-     but the window does not get readded if it is subsequentally shown again
+-     See http://bugzilla.gnome.org/show_bug.cgi?id=504876
+-
+-     I don't *think* theres any need for this call anyway, leaving it out
+-     does not seem to cause any side effects so far, but I should check with
+-     someone who understands more. */
+-  /* destroy_win (compositor->display, window->xwindow, FALSE); */
++  MetaCompositorXRender *xrc;
++  MetaFrame *frame;
++  Window xwindow;
++
++  xrc = (MetaCompositorXRender *) compositor;
++  frame = meta_window_get_frame (window);
++  xwindow = None;
++
++  if (frame)
++    {
++      xwindow = meta_frame_get_xwindow (frame);
++    }
++  else
++    {
++      /* FIXME: When an undecorated window is hidden this is called, but the
++       * window does not get readded if it is subsequentally shown again. See:
++       * http://bugzilla.gnome.org/show_bug.cgi?id=504876
++       */
++      /* xwindow = meta_window_get_xwindow (window); */
++    }
++
++  if (xwindow != None)
++    destroy_win (xrc->display, xwindow, FALSE);
+ #endif
+ }
+-#endif /* 0 */
+ 
+ static void
+ xrender_process_event (MetaCompositor *compositor,
+@@ -3095,6 +3110,7 @@ static MetaCompositor comp_info = {
+   xrender_process_event,
+   xrender_get_window_pixmap,
+   xrender_set_active_window,
++  xrender_free_window,
+   xrender_maximize_window,
+   xrender_unmaximize_window,
+ };
+diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
+index 0dcf2b2..1fea362 100644
+--- a/src/compositor/compositor.c
++++ b/src/compositor/compositor.c
+@@ -154,6 +154,10 @@ void meta_compositor_end_move (MetaCompositor *compositor,
+ void meta_compositor_free_window (MetaCompositor *compositor,
+                                   MetaWindow     *window)
+ {
++#ifdef HAVE_COMPOSITE_EXTENSIONS
++  if (compositor && compositor->free_window)
++    compositor->free_window (compositor, window);
++#endif
+ }
+ 
+ void
+-- 
+cgit v0.10.2
+



More information about the arch-commits mailing list