Hello community, here is the log from the commit of package xfwm4 checked in at Tue Aug 14 03:10:00 CEST 2007. -------- --- xfwm4/xfwm4.changes 2007-05-30 10:28:28.000000000 +0200 +++ /mounts/work_src_done/STABLE/xfwm4/xfwm4.changes 2007-08-13 21:02:03.000000000 +0200 @@ -1,0 +2,10 @@ +Mon Aug 13 20:48:02 CEST 2007 - bwalle@suse.de + +- fix possible hangs with Gtk 2.11 (Xfce Bug #3346) + +------------------------------------------------------------------- +Sat Jun 23 23:12:06 CEST 2007 - bwalle@suse.de + +- replaced group 'System/GUI/Other' by 'System/GUI/Xfce' + +------------------------------------------------------------------- New: ---- xfwm4-fix-hang-gtk-211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xfwm4.spec ++++++ --- /var/tmp/diff_new_pack.k28029/_old 2007-08-14 03:09:21.000000000 +0200 +++ /var/tmp/diff_new_pack.k28029/_new 2007-08-14 03:09:21.000000000 +0200 @@ -16,12 +16,13 @@ BuildRequires: startup-notification startup-notification-devel Summary: Next generation window manager for xfce Version: 4.4.1 -Release: 19 -License: GNU General Public License (GPL) +Release: 42 +License: GPL v2 or later URL: http://www.xfce.org/ Source0: %{name}-%{version}.tar.bz2 Patch0: %{name}-%{version}-fix-typo.patch -Group: System/GUI/Other +Patch1: %{name}-4.0.2/xfwm4-fix-hang-gtk-211 +Group: System/GUI/XFCE BuildRoot: %{_tmppath}/%{name}-%{version}-build Provides: windowmanager Requires: xfce-mcs-manager >= 4.3.0 @@ -39,6 +40,7 @@ %prep %setup -q %patch0 +%patch1 %build export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" @@ -64,6 +66,10 @@ %{_datadir}/xf* %changelog +* Mon Aug 13 2007 - bwalle@suse.de +- fix possible hangs with Gtk 2.11 (Xfce Bug #3346) +* Sat Jun 23 2007 - bwalle@suse.de +- replaced group 'System/GUI/Other' by 'System/GUI/Xfce' * Wed May 30 2007 - bwalle@suse.de - disable KDE systray support, it's broken for applications that want to hide their application icon like the volume unmounter ++++++ xfwm4-fix-hang-gtk-211 ++++++ Index: src/display.c =================================================================== --- src/display.c (Revision 25830) +++ src/display.c (Revision 25831) @@ -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) { Index: src/display.h =================================================================== --- src/display.h (Revision 25830) +++ src/display.h (Revision 25831) @@ -226,6 +226,7 @@ gboolean quit; gboolean reload; + Window timestamp_win; Cursor busy_cursor; Cursor move_cursor; Cursor root_cursor; Index: src/client.c =================================================================== --- src/client.c (Revision 25830) +++ src/client.c (Revision 25831) @@ -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) Index: src/hints.c =================================================================== --- src/hints.c (Revision 25830) +++ src/hints.c (Revision 25831) @@ -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); + g_return_if_fail (display_info); - screen_info = myDisplayGetDefaultScreen (display_info); - g_return_val_if_fail (screen_info, FALSE); - - 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); } Index: src/hints.h =================================================================== --- src/hints.h (Revision 25830) +++ src/hints.h (Revision 25831) @@ -269,6 +269,7 @@ int, Window , Window); +void updateXserverTime (DisplayInfo *); Time getXServerTime (DisplayInfo *); #ifdef ENABLE_KDE_SYSTRAY_PROXY ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org