xfwm4: patch to fix locks with gtk 2.12, thanks Predrag Ivanovic
This commit is contained in:
parent
e2e688fd67
commit
96eae00456
@ -1 +1,2 @@
|
||||
a1355e653eb52399aa736c483e4af09b xfwm4-4.4.1.patch
|
||||
c531edad76c909001acccc02936404f2 xfwm4-4.4.1.tar.bz2
|
||||
|
@ -6,11 +6,13 @@
|
||||
|
||||
name=xfwm4
|
||||
version=4.4.1
|
||||
release=1
|
||||
source=(http://www.xfce.org/archive/xfce-$version/src/$name-$version.tar.bz2)
|
||||
release=2
|
||||
source=(http://www.xfce.org/archive/xfce-$version/src/$name-$version.tar.bz2 \
|
||||
$name-$version.patch)
|
||||
|
||||
build () {
|
||||
cd $name-$version
|
||||
patch -p1 -i $SRC/$name-$version.patch
|
||||
./configure --prefix=/usr \
|
||||
--disable-static \
|
||||
--disable-debug
|
||||
|
169
xfwm4/xfwm4-4.4.1.patch
Normal file
169
xfwm4/xfwm4-4.4.1.patch
Normal file
@ -0,0 +1,169 @@
|
||||
diff -Naur xfwm4-4.4.1/src/client.c xfwm4-4.4.1.new/src/client.c
|
||||
--- xfwm4-4.4.1/src/client.c 2007-04-02 21:48:20.000000000 +0200
|
||||
+++ xfwm4-4.4.1.new/src/client.c 2007-09-21 17:52:04.000000000 +0200
|
||||
@@ -4868,21 +4868,19 @@
|
||||
|
||||
if (passdata.c)
|
||||
{
|
||||
- GdkPixbuf *icon;
|
||||
-
|
||||
TRACE ("entering cycle loop");
|
||||
passdata.wireframe = wireframeCreate (passdata.c);
|
||||
- icon = getAppIcon (display_info, passdata.c->window, 32, 32);
|
||||
passdata.tabwin = tabwinCreate (passdata.c->screen_info->gscr, c,
|
||||
passdata.c, passdata.cycle_range,
|
||||
screen_info->params->cycle_workspaces);
|
||||
eventFilterPush (display_info->xfilter, clientCycleEventFilter, &passdata);
|
||||
gtk_main ();
|
||||
eventFilterPop (display_info->xfilter);
|
||||
- wireframeDelete (screen_info, passdata.wireframe);
|
||||
TRACE ("leaving cycle loop");
|
||||
tabwinDestroy (passdata.tabwin);
|
||||
g_free (passdata.tabwin);
|
||||
+ wireframeDelete (screen_info, passdata.wireframe);
|
||||
+ updateXserverTime (display_info);
|
||||
}
|
||||
|
||||
if (passdata.c)
|
||||
diff -Naur xfwm4-4.4.1/src/display.c xfwm4-4.4.1.new/src/display.c
|
||||
--- xfwm4-4.4.1/src/display.c 2007-04-02 21:32:01.000000000 +0200
|
||||
+++ xfwm4-4.4.1.new/src/display.c 2007-09-21 17:52:30.000000000 +0200
|
||||
@@ -178,6 +178,19 @@
|
||||
FALSE, display_info->atoms) != 0);
|
||||
}
|
||||
|
||||
+static void
|
||||
+myDisplayCreateTimestampWin (DisplayInfo *display_info)
|
||||
+{
|
||||
+ XSetWindowAttributes attributes;
|
||||
+
|
||||
+ attributes.event_mask = PropertyChangeMask;
|
||||
+ attributes.override_redirect = TRUE;
|
||||
+ display_info->timestamp_win =
|
||||
+ XCreateWindow (display_info->dpy, DefaultRootWindow (display_info->dpy),
|
||||
+ -100, -100, 10, 10, 0, 0, CopyFromParent, CopyFromParent,
|
||||
+ CWEventMask | CWOverrideRedirect, &attributes);
|
||||
+}
|
||||
+
|
||||
DisplayInfo *
|
||||
myDisplayInit (GdkDisplay *gdisplay)
|
||||
{
|
||||
@@ -309,6 +322,8 @@
|
||||
display->resize_cursor[CORNER_COUNT + SIDE_BOTTOM] =
|
||||
XCreateFontCursor (display->dpy, XC_bottom_side);
|
||||
|
||||
+ myDisplayCreateTimestampWin (display);
|
||||
+
|
||||
display->xfilter = NULL;
|
||||
display->screens = NULL;
|
||||
display->clients = NULL;
|
||||
@@ -340,6 +355,8 @@
|
||||
display->move_cursor = None;
|
||||
XFreeCursor (display->dpy, display->root_cursor);
|
||||
display->root_cursor = None;
|
||||
+ XDestroyWindow (display->dpy, display->timestamp_win);
|
||||
+ display->timestamp_win = None;
|
||||
|
||||
if (display->hostname)
|
||||
{
|
||||
diff -Naur xfwm4-4.4.1/src/display.h xfwm4-4.4.1.new/src/display.h
|
||||
--- xfwm4-4.4.1/src/display.h 2007-04-02 21:32:01.000000000 +0200
|
||||
+++ xfwm4-4.4.1.new/src/display.h 2007-09-21 17:52:56.000000000 +0200
|
||||
@@ -226,6 +226,7 @@
|
||||
gboolean quit;
|
||||
gboolean reload;
|
||||
|
||||
+ Window timestamp_win;
|
||||
Cursor busy_cursor;
|
||||
Cursor move_cursor;
|
||||
Cursor root_cursor;
|
||||
diff -Naur xfwm4-4.4.1/src/hints.c xfwm4-4.4.1.new/src/hints.c
|
||||
--- xfwm4-4.4.1/src/hints.c 2007-03-11 14:44:43.000000000 +0100
|
||||
+++ xfwm4-4.4.1.new/src/hints.c 2007-09-21 18:05:26.000000000 +0200
|
||||
@@ -1167,27 +1167,18 @@
|
||||
return setXAtomManagerOwner(display_info, display_info->atoms[atom_id], root, w);
|
||||
}
|
||||
|
||||
-
|
||||
-static Bool
|
||||
-checkPropEvent (Display *display, XEvent *xevent, XPointer arg)
|
||||
+void
|
||||
+updateXserverTime (DisplayInfo *display_info)
|
||||
{
|
||||
- DisplayInfo *display_info;
|
||||
ScreenInfo *screen_info;
|
||||
+ char c = '\0';
|
||||
|
||||
- display_info = (DisplayInfo *) arg;
|
||||
- g_return_val_if_fail (display_info, FALSE);
|
||||
-
|
||||
- screen_info = myDisplayGetDefaultScreen (display_info);
|
||||
- g_return_val_if_fail (screen_info, FALSE);
|
||||
+ g_return_if_fail (display_info);
|
||||
|
||||
- if ((xevent->type == PropertyNotify) &&
|
||||
- (xevent->xproperty.window == screen_info->xfwm4_win) &&
|
||||
- (xevent->xproperty.atom == display_info->atoms[XFWM4_TIMESTAMP_PROP]))
|
||||
- {
|
||||
- return TRUE;
|
||||
- }
|
||||
-
|
||||
- return FALSE;
|
||||
+ XChangeProperty (display_info->dpy, display_info->timestamp_win,
|
||||
+ display_info->atoms[XFWM4_TIMESTAMP_PROP],
|
||||
+ display_info->atoms[XFWM4_TIMESTAMP_PROP],
|
||||
+ 8, PropModeReplace, (unsigned char *) &c, 1);
|
||||
}
|
||||
|
||||
Time
|
||||
@@ -1196,7 +1187,6 @@
|
||||
ScreenInfo *screen_info;
|
||||
XEvent xevent;
|
||||
Time timestamp;
|
||||
- char c = '\0';
|
||||
|
||||
g_return_val_if_fail (display_info, (Time) CurrentTime);
|
||||
timestamp = myDisplayGetCurrentTime (display_info);
|
||||
@@ -1206,12 +1196,8 @@
|
||||
g_return_val_if_fail (screen_info, (Time) CurrentTime);
|
||||
|
||||
TRACE ("getXServerTime: Using X server roundtrip");
|
||||
- XChangeProperty (display_info->dpy, screen_info->xfwm4_win,
|
||||
- display_info->atoms[XFWM4_TIMESTAMP_PROP],
|
||||
- display_info->atoms[XFWM4_TIMESTAMP_PROP],
|
||||
- 8, PropModeReplace, (unsigned char *) &c, 1);
|
||||
- XIfEvent (display_info->dpy, &xevent, checkPropEvent, (XPointer) display_info);
|
||||
-
|
||||
+ updateXserverTime (display_info);
|
||||
+ XWindowEvent (display_info->dpy, display_info->timestamp_win, PropertyChangeMask, &xevent);
|
||||
timestamp = (Time) myDisplayUpdateCurrentTime (display_info, &xevent);
|
||||
}
|
||||
|
||||
diff -Naur xfwm4-4.4.1/src/hints.h xfwm4-4.4.1.new/src/hints.h
|
||||
--- xfwm4-4.4.1/src/hints.h 2007-03-11 14:44:43.000000000 +0100
|
||||
+++ xfwm4-4.4.1.new/src/hints.h 2007-09-21 17:55:26.000000000 +0200
|
||||
@@ -269,6 +269,7 @@
|
||||
int,
|
||||
Window ,
|
||||
Window);
|
||||
+void updateXserverTime (DisplayInfo *);
|
||||
Time getXServerTime (DisplayInfo *);
|
||||
|
||||
#ifdef ENABLE_KDE_SYSTRAY_PROXY
|
||||
diff -Naur xfwm4-4.4.1/src/mypixmap.c xfwm4-4.4.1.new/src/mypixmap.c
|
||||
--- xfwm4-4.4.1/src/mypixmap.c 2007-03-11 14:44:43.000000000 +0100
|
||||
+++ xfwm4-4.4.1.new/src/mypixmap.c 2007-09-21 17:54:00.000000000 +0200
|
||||
@@ -941,12 +941,7 @@
|
||||
g_return_val_if_fail (dir != NULL, FALSE);
|
||||
g_return_val_if_fail (file != NULL, FALSE);
|
||||
|
||||
- pm->screen_info = screen_info;
|
||||
- pm->pixmap = None;
|
||||
- pm->mask = None;
|
||||
- pm->width = 1;
|
||||
- pm->height = 1;
|
||||
-
|
||||
+ xfwmPixmapInit (screen_info, pm);
|
||||
/*
|
||||
* Always try to load the XPM first, using our own routine
|
||||
* that supports XPM color symbol susbstitution (used to
|
Loading…
x
Reference in New Issue
Block a user