[gtk+] Hack that works around firefox plugin crash



commit 0e07d8b189e731b9d1c9e3b3eb7781b04a00a0f9
Author: Alexander Larsson <alexl redhat com>
Date:   Sat Jul 4 20:13:43 2009 +0200

    Hack that works around firefox plugin crash
    
    It turns out that mozilla, as per the gtk2xt code selects for input on
    the socket with a mask of 0x0fffff (for god knows why) which includes
    ButtonPressMask, causing a BadAccess if someone else also selects for
    this. As per the client-side windows merge we always normally selects
    for button press so we can emulate it on client side children that
    selects for button press. However, we don't need this for GtkSocket,
    so we unselect it here, fixing the crashes in firefox.

 gtk/gtksocket-x11.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtksocket-x11.c b/gtk/gtksocket-x11.c
index bbeb8af..f6f3a3d 100644
--- a/gtk/gtksocket-x11.c
+++ b/gtk/gtksocket-x11.c
@@ -70,9 +70,17 @@ _gtk_socket_windowing_realize_window (GtkSocket *socket)
 			GDK_WINDOW_XWINDOW (window),
 			&xattrs);
 
+  /* Sooooo, it turns out that mozilla, as per the gtk2xt code selects
+     for input on the socket with a mask of 0x0fffff (for god knows why)
+     which includes ButtonPressMask causing a BadAccess if someone else
+     also selects for this. As per the client-side windows merge we always
+     normally selects for button press so we can emulate it on client
+     side children that selects for button press. However, we don't need
+     this for GtkSocket, so we unselect it here, fixing the crashes in
+     firefox. */
   XSelectInput (GDK_WINDOW_XDISPLAY (window),
 		GDK_WINDOW_XWINDOW (window), 
-		xattrs.your_event_mask | 
+		(xattrs.your_event_mask & ~ButtonPressMask) |
 		SubstructureNotifyMask | SubstructureRedirectMask);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]