From 3483026bf4fcaa06ab147302148c5527d7dff0a6 Mon Sep 17 00:00:00 2001 From: Mukundan Ragavan Date: Jul 01 2019 22:41:22 +0000 Subject: Update to 4.13.3 --- diff --git a/.gitignore b/.gitignore index dfc4fdf..1564e4b 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ xfwm4-4.6.2.tar.bz2 /xfwm4-4.12.5.tar.bz2 /xfwm4-4.13.1.tar.bz2 /xfwm4-4.13.2.tar.bz2 +/xfwm4-4.13.3.tar.bz2 diff --git a/fix_screen_size.patch b/fix_screen_size.patch deleted file mode 100644 index f2df410..0000000 --- a/fix_screen_size.patch +++ /dev/null @@ -1,207 +0,0 @@ -From 27aa2c7a6f978b2b4485b3241daa3580eb2edd63 Mon Sep 17 00:00:00 2001 -From: Olivier Fourdan -Date: Tue, 16 Apr 2019 21:18:38 +0200 -Subject: screen: Remove logical size - -Bug: 15085 - -We used to keep a logical screen size based on whatever Xlib would -provide, and an actual size based on what we compute based on the actual -monitor layout. - -There might be some discrepancies between the two, so let's just get rid -of the logical size. ---- - src/client.c | 8 ++++---- - src/netwm.c | 20 ++++++++++---------- - src/placement.c | 8 ++++---- - src/screen.c | 18 +++--------------- - src/screen.h | 2 -- - src/workspaces.c | 4 ++-- - 6 files changed, 23 insertions(+), 37 deletions(-) - -diff --git a/src/client.c b/src/client.c -index b6552ad6..6d9fed46 100644 ---- a/src/client.c -+++ b/src/client.c -@@ -3228,9 +3228,9 @@ clientNewTileSize (Client *c, XWindowChanges *wc, GdkRectangle *rect, tilePositi - - full_x = MAX (screen_info->params->xfwm_margins[STRUTS_LEFT], rect->x); - full_y = MAX (screen_info->params->xfwm_margins[STRUTS_TOP], rect->y); -- full_w = MIN (screen_info->logical_width - screen_info->params->xfwm_margins[STRUTS_RIGHT], -+ full_w = MIN (screen_info->width - screen_info->params->xfwm_margins[STRUTS_RIGHT], - rect->x + rect->width) - full_x; -- full_h = MIN (screen_info->logical_height - screen_info->params->xfwm_margins[STRUTS_BOTTOM], -+ full_h = MIN (screen_info->height - screen_info->params->xfwm_margins[STRUTS_BOTTOM], - rect->y + rect->height) - full_y; - clientMaxSpace (screen_info, &full_x, &full_y, &full_w, &full_h); - -@@ -3302,9 +3302,9 @@ clientNewMaxSize (Client *c, XWindowChanges *wc, GdkRectangle *rect) - - full_x = MAX (screen_info->params->xfwm_margins[STRUTS_LEFT], rect->x); - full_y = MAX (screen_info->params->xfwm_margins[STRUTS_TOP], rect->y); -- full_w = MIN (screen_info->logical_width - screen_info->params->xfwm_margins[STRUTS_RIGHT], -+ full_w = MIN (screen_info->width - screen_info->params->xfwm_margins[STRUTS_RIGHT], - rect->x + rect->width) - full_x; -- full_h = MIN (screen_info->logical_height - screen_info->params->xfwm_margins[STRUTS_BOTTOM], -+ full_h = MIN (screen_info->height - screen_info->params->xfwm_margins[STRUTS_BOTTOM], - rect->y + rect->height) - full_y; - clientMaxSpace (screen_info, &full_x, &full_y, &full_w, &full_h); - -diff --git a/src/netwm.c b/src/netwm.c -index 732414c1..241f8e86 100644 ---- a/src/netwm.c -+++ b/src/netwm.c -@@ -969,29 +969,29 @@ clientValidateNetStrut (Client * c) - screen_info = c->screen_info; - valid = TRUE; - -- if (c->struts[STRUTS_TOP] > screen_info->logical_height - screen_info->margins[STRUTS_BOTTOM]) -+ if (c->struts[STRUTS_TOP] > screen_info->height - screen_info->margins[STRUTS_BOTTOM]) - { -- c->struts[STRUTS_TOP] = screen_info->logical_height - screen_info->margins[STRUTS_BOTTOM]; -+ c->struts[STRUTS_TOP] = screen_info->height - screen_info->margins[STRUTS_BOTTOM]; - g_warning ("Top strut value for application window 0x%lx confined to %d", c->window, c->struts[STRUTS_TOP]); - valid = FALSE; - } - -- if (c->struts[STRUTS_BOTTOM] > screen_info->logical_height - screen_info->margins[STRUTS_TOP]) -+ if (c->struts[STRUTS_BOTTOM] > screen_info->height - screen_info->margins[STRUTS_TOP]) - { -- c->struts[STRUTS_BOTTOM] = screen_info->logical_height - screen_info->margins[STRUTS_TOP]; -+ c->struts[STRUTS_BOTTOM] = screen_info->height - screen_info->margins[STRUTS_TOP]; - g_warning ("Bottom strut value for application window 0x%lx confined to %d", c->window, c->struts[STRUTS_BOTTOM]); - valid = FALSE; - } - -- if (c->struts[STRUTS_LEFT] > screen_info->logical_width - screen_info->margins[STRUTS_RIGHT]) -+ if (c->struts[STRUTS_LEFT] > screen_info->width - screen_info->margins[STRUTS_RIGHT]) - { -- c->struts[STRUTS_LEFT] = screen_info->logical_height - screen_info->margins[STRUTS_RIGHT]; -+ c->struts[STRUTS_LEFT] = screen_info->height - screen_info->margins[STRUTS_RIGHT]; - g_warning ("Left strut value for application window 0x%lx confined to %d", c->window, c->struts[STRUTS_LEFT]); - valid = FALSE; - } -- if (c->struts[STRUTS_RIGHT] > screen_info->logical_width - screen_info->margins[STRUTS_LEFT]) -+ if (c->struts[STRUTS_RIGHT] > screen_info->width - screen_info->margins[STRUTS_LEFT]) - { -- c->struts[STRUTS_RIGHT] = screen_info->logical_height - screen_info->margins[STRUTS_LEFT]; -+ c->struts[STRUTS_RIGHT] = screen_info->height - screen_info->margins[STRUTS_LEFT]; - g_warning ("Right strut value for application window 0x%lx confined to %d", c->window, c->struts[STRUTS_RIGHT]); - valid = FALSE; - } -@@ -1088,10 +1088,10 @@ clientGetNetStruts (Client * c) - /* Fill(in values as for partial struts */ - c->struts[STRUTS_TOP_START_X] = c->struts[STRUTS_BOTTOM_START_X] = 0; - c->struts[STRUTS_TOP_END_X] = c->struts[STRUTS_BOTTOM_END_X] = -- c->screen_info->logical_width; -+ c->screen_info->width; - c->struts[STRUTS_LEFT_START_Y] = c->struts[STRUTS_RIGHT_START_Y] = 0; - c->struts[STRUTS_LEFT_END_Y] = c->struts[STRUTS_RIGHT_END_Y] = -- c->screen_info->logical_height; -+ c->screen_info->height; - - XFree (struts); - } -diff --git a/src/placement.c b/src/placement.c -index a643ef08..15975b39 100644 ---- a/src/placement.c -+++ b/src/placement.c -@@ -114,7 +114,7 @@ strutsToRectangles (Client *c, - if (right) - { - set_rectangle (right, -- screen_info->logical_width - c->struts[STRUTS_RIGHT], -+ screen_info->width - c->struts[STRUTS_RIGHT], - c->struts[STRUTS_RIGHT_START_Y], - c->struts[STRUTS_RIGHT], - c->struts[STRUTS_RIGHT_END_Y] - c->struts[STRUTS_RIGHT_START_Y]); -@@ -133,7 +133,7 @@ strutsToRectangles (Client *c, - { - set_rectangle (bottom, - c->struts[STRUTS_BOTTOM_START_X], -- screen_info->logical_height - c->struts[STRUTS_BOTTOM], -+ screen_info->height - c->struts[STRUTS_BOTTOM], - c->struts[STRUTS_BOTTOM_END_X] - c->struts[STRUTS_BOTTOM_START_X], - c->struts[STRUTS_BOTTOM]); - } -@@ -278,8 +278,8 @@ clientConstrainPos (Client * c, gboolean show_full) - cy = win.y + (win.height / 2); - myScreenFindMonitorAtPoint (screen_info, cx, cy, &monitor); - -- screen_width = screen_info->logical_width; -- screen_height = screen_info->logical_height; -+ screen_width = screen_info->width; -+ screen_height = screen_info->height; - - if (FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN)) - { -diff --git a/src/screen.c b/src/screen.c -index f112432c..2536a302 100644 ---- a/src/screen.c -+++ b/src/screen.c -@@ -647,23 +647,11 @@ myScreenComputeSize (ScreenInfo *screen_info) - height = MAX (monitor.y + monitor.height, height); - } - -- screen_info->logical_width = WidthOfScreen (screen_info->xscreen); -- screen_info->logical_height = HeightOfScreen (screen_info->xscreen); -- if ((width != screen_info->logical_width) || (height != screen_info->logical_height)) -- { -- g_warning ("output size (%dx%d) and logical screen size (%dx%d) do not match", -- width, height, screen_info->logical_width, screen_info->logical_height); -- } -- - /* If we failed to compute the size, use whatever xlib reports */ -- if (width == 0) -- { -- width = screen_info->logical_width; -- } -- -- if (height == 0) -+ if (width == 0 || height == 0) - { -- height = screen_info->logical_height; -+ width = WidthOfScreen (screen_info->xscreen); -+ height = HeightOfScreen (screen_info->xscreen); - } - - changed = ((screen_info->width != width) | (screen_info->height != height)); -diff --git a/src/screen.h b/src/screen.h -index 3c8a8435..60490f3b 100644 ---- a/src/screen.h -+++ b/src/screen.h -@@ -117,8 +117,6 @@ struct _ScreenInfo - gint depth; - gint width; /* Size of all output combined */ - gint height; /* Size of all output combined */ -- gint logical_width; /* Xorg reported size */ -- gint logical_height; /* Xorg reported size */ - Visual *visual; - - GtkWidget *gtk_win; -diff --git a/src/workspaces.c b/src/workspaces.c -index e4f4f2c5..d8aa4ede 100644 ---- a/src/workspaces.c -+++ b/src/workspaces.c -@@ -456,7 +456,7 @@ workspaceSetCount (ScreenInfo * screen_info, guint count) - workspaceSwitch (screen_info, count - 1, NULL, TRUE, myDisplayGetCurrentTime (display_info)); - } - setNetWorkarea (display_info, screen_info->xroot, screen_info->workspace_count, -- screen_info->logical_width, screen_info->logical_height, screen_info->margins); -+ screen_info->width, screen_info->height, screen_info->margins); - /* Recompute the layout based on the (changed) number of desktops */ - getDesktopLayout (display_info, screen_info->xroot, screen_info->workspace_count, - &screen_info->desktop_layout); -@@ -598,7 +598,7 @@ workspaceUpdateArea (ScreenInfo *screen_info) - { - TRACE ("margins have changed, updating net_workarea"); - setNetWorkarea (display_info, screen_info->xroot, screen_info->workspace_count, -- screen_info->logical_width, screen_info->logical_height, screen_info->margins); -+ screen_info->width, screen_info->height, screen_info->margins); - /* Also prevent windows from being off screen, just like when screen is resized */ - clientScreenResize(screen_info, FALSE); - } --- -cgit v1.2.1 - diff --git a/fix_shaded_windows.patch b/fix_shaded_windows.patch deleted file mode 100644 index 47e7f55..0000000 --- a/fix_shaded_windows.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 8cd915228bafb9792fd5d3e7e778db8ed51578d1 Mon Sep 17 00:00:00 2001 -From: Olivier Fourdan -Date: Sat, 1 Dec 2018 21:12:58 +0100 -Subject: compositor: Shaded windows have no height - -Bug: 14899 - -Trying to get the pixmap with a height of zero will lead to an XError -and further trouble down the line. - -Signed-off-by: Olivier Fourdan ---- - src/compositor.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/compositor.c b/src/compositor.c -index 500f68fd..81264550 100644 ---- a/src/compositor.c -+++ b/src/compositor.c -@@ -3752,6 +3752,12 @@ compositorScaleWindowPixmap (CWindow *cw, guint *width, guint *height) - } - src_size = MAX (src_w, src_h); - -+ /* Shaped windows have no height */ -+ if (src_w == 0 || src_h == 0) -+ { -+ return None; -+ } -+ - /*/ - * Caller may pass either NULL or 0. - * If 0, we return the actual unscalled size. --- -cgit v1.2.1 - diff --git a/fix_windows_cycling_breakage.patch b/fix_windows_cycling_breakage.patch deleted file mode 100644 index 25cbb9c..0000000 --- a/fix_windows_cycling_breakage.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 61e3055874184a5590fe7070faf0032e5a25b2c8 Mon Sep 17 00:00:00 2001 -From: Olivier Fourdan -Date: Tue, 23 Apr 2019 21:27:39 +0200 -Subject: cycling: Remove client if destroyed while cycling - -Bug: 15318 - -Fix a regression where the client would remain visible if closed while -cycling. - -Fixes: ef33ff7 "Replace XEvent with XfwmEvent + add xfwm_device..." -Signed-off-by: Olivier Fourdan ---- - src/cycle.c | 25 +++++++++++++++++-------- - 1 file changed, 17 insertions(+), 8 deletions(-) - -diff --git a/src/cycle.c b/src/cycle.c -index 164024d5..5b092f5e 100644 ---- a/src/cycle.c -+++ b/src/cycle.c -@@ -251,7 +251,7 @@ clientCycleEventFilter (XfwmEvent *event, gpointer data) - eventFilterStatus status; - KeyCode cancel, left, right, up, down; - int key, modifiers; -- gboolean cycling, gone; -+ gboolean cycling; - GList *li; - - TRACE ("entering"); -@@ -275,7 +275,6 @@ clientCycleEventFilter (XfwmEvent *event, gpointer data) - status = EVENT_FILTER_CONTINUE; - removed = NULL; - cycling = TRUE; -- gone = FALSE; - - /* Update the display time */ - myDisplayUpdateCurrentTime (display_info, event); -@@ -400,18 +399,28 @@ clientCycleEventFilter (XfwmEvent *event, gpointer data) - { - case DestroyNotify: - status = EVENT_FILTER_CONTINUE; -- if ((removed = myScreenGetClientFromWindow (screen_info, ((XDestroyWindowEvent *) event->meta.x)->window, SEARCH_WINDOW)) == NULL) -+ removed = myScreenGetClientFromWindow (screen_info, -+ ((XDestroyWindowEvent *) event->meta.x)->window, -+ SEARCH_WINDOW); -+ if (removed == NULL) -+ { - break; /* No need to go any further */ -- gone |= (c == removed); -+ } - FALLTHROUGH; - case UnmapNotify: - status = EVENT_FILTER_CONTINUE; -- if (!removed && (removed = myScreenGetClientFromWindow (screen_info, ((XUnmapEvent *) event->meta.x)->window, SEARCH_WINDOW)) == NULL) -- break; /* No need to go any further */ -- gone |= (c == removed); -+ if (!removed) -+ { -+ removed = myScreenGetClientFromWindow (screen_info, -+ ((XUnmapEvent *) event->meta.x)->window, -+ SEARCH_WINDOW); -+ if (removed == NULL) -+ { -+ break; /* No need to go any further */ -+ } -+ } - c = tabwinRemoveClient(passdata->tabwin, removed); - cycling = clientCycleUpdateWireframe (c, passdata); -- status = EVENT_FILTER_STOP; - break; - } - break; --- -cgit v1.2.1 - diff --git a/sources b/sources index 2437c01..48afb5b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xfwm4-4.13.2.tar.bz2) = 85440a377cd7034e986b317e35c25ac6d4723bd4c1ce1e6951d8545a44f3c47340952fd0211f55cf19411539be6d86f4c34fca7b2219b0873654a6d311c95055 +SHA512 (xfwm4-4.13.3.tar.bz2) = cbd410c9a5a997be6582c9bcd0af879be2c6e5b5362c0e950bb1281b4d2f4a1acbf40b3da88fb8dea3b22f491b69bc3c6df4f75c09c8c36cf9c76a02b528785a diff --git a/sync-x-gl.patch b/sync-x-gl.patch deleted file mode 100644 index 7683e91..0000000 --- a/sync-x-gl.patch +++ /dev/null @@ -1,107 +0,0 @@ -diff --git a/src/compositor.c b/src/compositor.c -index e71f619..500f68f 100644 ---- a/src/compositor.c -+++ b/src/compositor.c -@@ -39,6 +39,9 @@ - #ifdef HAVE_EPOXY - #include - #include -+#ifdef HAVE_XSYNC_EXTENSION -+#include -+#endif /* HAVE_XSYNC_EXTENSION */ - #endif /* HAVE_EPOXY */ - - #ifdef HAVE_PRESENT_EXTENSION -@@ -1449,6 +1452,40 @@ unbind_glx_texture (ScreenInfo *screen_info) - check_gl_error(); - } - -+static void -+fence_sync_pixmap (ScreenInfo *screen_info, Pixmap pixmap) -+{ -+#ifdef HAVE_XSYNC -+ Bool triggered = False; -+ -+ if (screen_info->fence == None) -+ { -+ screen_info->fence = XSyncCreateFence (myScreenGetXDisplay (screen_info), pixmap, FALSE); -+ } -+ if (!screen_info->fence) -+ { -+ TRACE ("Cannot create fence\n"); -+ return; -+ } -+ if (!XSyncQueryFence(myScreenGetXDisplay (screen_info), -+ screen_info->fence, &triggered)) -+ { -+ TRACE ("Cannot query fence\n"); -+ return; -+ } -+ if (triggered) -+ { -+ TRACE ("Fence already triggered\n"); -+ return; -+ } -+ TRACE ("Awaiting fence of drawable 0x%x\n", pixmap); -+ XSyncTriggerFence(myScreenGetXDisplay (screen_info), screen_info->fence); -+ XSyncAwaitFence(myScreenGetXDisplay (screen_info), &screen_info->fence, 1); -+ XSyncResetFence(myScreenGetXDisplay (screen_info), screen_info->fence); -+ TRACE ("Fence for drawable 0x%x cleared\n", pixmap); -+#endif /* HAVE_XSYNC */ -+} -+ - static void - bind_glx_texture (ScreenInfo *screen_info, Pixmap pixmap) - { -@@ -1465,7 +1502,6 @@ bind_glx_texture (ScreenInfo *screen_info, Pixmap pixmap) - { - screen_info->glx_drawable = create_glx_drawable (screen_info, pixmap); - } -- - TRACE ("(re)Binding GLX pixmap 0x%lx to texture 0x%x", - screen_info->glx_drawable, screen_info->rootTexture); - enable_glx_texture (screen_info); -@@ -2207,7 +2243,8 @@ paint_all (ScreenInfo *screen_info, XserverRegion region, gushort buffer) - #ifdef HAVE_EPOXY - if (screen_info->use_glx) - { -- glXWaitX (); -+ fence_sync_pixmap (screen_info, -+ screen_info->rootPixmap[buffer]); - bind_glx_texture (screen_info, - screen_info->rootPixmap[buffer]); - redraw_glx_texture (screen_info); -@@ -4364,6 +4401,9 @@ compositorManageScreen (ScreenInfo *screen_info) - - #ifdef HAVE_EPOXY - screen_info->use_glx = !screen_info->use_present && -+#ifdef HAVE_XSYNC -+ display_info->have_xsync && -+#endif /* HAVE_XSYNC */ - (display_info->vblank_method == VBLANK_AUTO || - display_info->vblank_method == VBLANK_GLX); - -@@ -4374,6 +4414,9 @@ compositorManageScreen (ScreenInfo *screen_info) - screen_info->rootTexture = None; - screen_info->glx_drawable = None; - screen_info->texture_filter = GL_LINEAR; -+#ifdef HAVE_XSYNC -+ screen_info->fence = None; -+#endif /* HAVE_XSYNC */ - screen_info->use_glx = init_glx (screen_info); - } - #else /* HAVE_EPOXY */ -diff --git a/src/screen.h b/src/screen.h -index 14a2d84..01bc61c 100644 ---- a/src/screen.h -+++ b/src/screen.h -@@ -217,6 +217,9 @@ struct _ScreenInfo - GLXFBConfig glx_fbconfig; - GLXContext glx_context; - GLXWindow glx_window; -+#ifdef HAVE_XSYNC -+ XSyncFence fence; -+#endif /* HAVE_XSYNC */ - #endif /* HAVE_EPOXY */ - - #ifdef HAVE_PRESENT_EXTENSION diff --git a/xfwm4.spec b/xfwm4.spec index 6bf164a..13eab15 100644 --- a/xfwm4.spec +++ b/xfwm4.spec @@ -1,7 +1,7 @@ %global xfceversion 4.13 Name: xfwm4 -Version: 4.13.2 +Version: 4.13.3 Release: 1%{?dist} Summary: Next generation window manager for Xfce @@ -64,6 +64,9 @@ done %changelog +* Mon Jul 01 2019 Mukundan Ragavan - 4.13.3-1 +- Update to 4.13.3 + * Sat May 18 2019 Mukundan Ragavan - 4.13.2-1 - Update to 4.13.2 - Drop patches no longer needed