[Pkg-xfce-commits] r7434 - in desktop/trunk/xfwm4: . debian debian/patches
Yves-Alexis Perez
corsac at alioth.debian.org
Tue May 21 09:27:10 UTC 2013
Author: corsac
Date: 2013-05-21 21:27:10 +0000 (Tue, 21 May 2013)
New Revision: 7434
Added:
desktop/trunk/xfwm4/debian/patches/0001-Revert-part-of-git-commit-8637c3a-as-this-breaks-del.patch
desktop/trunk/xfwm4/debian/patches/0002-Implement-NET_WM_MOVERESIZE_CANCEL-message-bug-8949.patch
desktop/trunk/xfwm4/debian/patches/0003-Some-small-optimizations-in-placement-code.patch
desktop/trunk/xfwm4/debian/patches/0004-Optimize-smart-placement-bug-5785.patch
Modified:
desktop/trunk/xfwm4/
desktop/trunk/xfwm4/debian/changelog
desktop/trunk/xfwm4/debian/control
desktop/trunk/xfwm4/debian/patches/series
desktop/trunk/xfwm4/debian/rules
Log:
merge changes from experimental
Property changes on: desktop/trunk/xfwm4
___________________________________________________________________
Added: svn:mergeinfo
+ /desktop/branches/experimental/xfwm4:6536-7429
Modified: desktop/trunk/xfwm4/debian/changelog
===================================================================
--- desktop/trunk/xfwm4/debian/changelog 2013-05-21 21:20:12 UTC (rev 7433)
+++ desktop/trunk/xfwm4/debian/changelog 2013-05-21 21:27:10 UTC (rev 7434)
@@ -1,3 +1,53 @@
+xfwm4 (4.10.0-4) experimental; urgency=low
+
+ * debian/patches:
+ - 0003-Some-small-optimizations-in-placement-code, 0004_smart-placement
+ added, improve smart placement algorithm.
+
+ -- Yves-Alexis Perez <corsac at debian.org> Mon, 31 Dec 2012 08:52:20 +0100
+
+xfwm4 (4.10.0-3) experimental; urgency=low
+
+ * debian/patches:
+ - 0002-Implement-NET_WM_MOVERESIZE_CANCEL-message-bug-8949 added, fix
+ window grab/move triggered on mouse click with gtk3. closes: #684911
+
+ -- Yves-Alexis Perez <corsac at debian.org> Mon, 03 Sep 2012 07:39:14 +0200
+
+xfwm4 (4.10.0-2) experimental; urgency=low
+
+ * debian/patches:
+ - 0001-Revert-part-of-git-commit-8637c3a-as-this-breaks-del added, fix
+ deletion of current workspace sometime deleting the last one.
+
+ -- Yves-Alexis Perez <corsac at debian.org> Sun, 22 Jul 2012 19:49:17 +0200
+
+xfwm4 (4.10.0-1) experimental; urgency=low
+
+ * New upstream stable release.
+ * debian/control: revert to unversioned libxfce4util-dev, bump required
+ versions for Xfce 4.10.
+
+ -- Lionel Le Folgoc <mrpouit at gmail.com> Sat, 05 May 2012 13:54:09 +0200
+
+xfwm4 (4.9.1-1) experimental; urgency=low
+
+ * New upstream development release.
+
+ -- Lionel Le Folgoc <mrpouit at gmail.com> Sun, 15 Apr 2012 16:02:46 +0200
+
+xfwm4 (4.9.0-1) experimental; urgency=low
+
+ * New upstream development release.
+ * debian/control:
+ - update build-deps for Xfce 4.9pre1
+ - update standards version to 3.9.3.
+ - update debhelper build-dep to 9.
+ * debian/rules:
+ - build with --parallel.
+
+ -- Yves-Alexis Perez <corsac at debian.org> Sun, 08 Apr 2012 22:13:15 +0200
+
xfwm4 (4.8.3-2) unstable; urgency=low
* debian/patches:
Modified: desktop/trunk/xfwm4/debian/control
===================================================================
--- desktop/trunk/xfwm4/debian/control 2013-05-21 21:20:12 UTC (rev 7433)
+++ desktop/trunk/xfwm4/debian/control 2013-05-21 21:27:10 UTC (rev 7434)
@@ -2,15 +2,15 @@
Section: xfce
Priority: optional
Maintainer: Debian Xfce Maintainers <pkg-xfce-devel at lists.alioth.debian.org>
-Uploaders: Yves-Alexis Perez <corsac at debian.org>,
+Uploaders: Yves-Alexis Perez <corsac at debian.org>,
Lionel Le Folgoc <mrpouit at gmail.com>
-Build-Depends: dpkg-dev (>= 1.16.1), debhelper (>= 8.9.4),
- libgtk2.0-dev (>= 2.10.6),
- libxft-dev, libxdamage-dev, libxrender-dev, libxcomposite-dev,
- libxfixes-dev, chrpath, libglade2-dev, libxfce4util-dev (>= 4.8.0),
- libxfce4ui-1-dev (>= 4.8.0), libxfconf-0-dev (>= 4.8.0), libwnck-dev, intltool
+Build-Depends: dpkg-dev (>= 1.16.1), debhelper (>= 9),
+ libgtk2.0-dev (>= 2.14), libxft-dev, libxdamage-dev, libxrender-dev,
+ libxcomposite-dev, libxfixes-dev, chrpath, libglade2-dev,
+ libxfce4util-dev (>= 4.10.0), libxfce4ui-1-dev (>= 4.10.0),
+ libxfconf-0-dev (>= 4.10.0), libwnck-dev, intltool, libstartup-notification0-dev
Build-Conflicts: libxfcegui4-dev (<< 4.7.0)
-Standards-Version: 3.9.2
+Standards-Version: 3.9.3
Homepage: http://www.xfce.org/
Vcs-Svn: svn://svn.debian.org/pkg-xfce/desktop/trunk/xfwm4/
Vcs-Browser: http://svn.debian.org/wsvn/pkg-xfce/desktop/trunk/xfwm4/
Copied: desktop/trunk/xfwm4/debian/patches/0001-Revert-part-of-git-commit-8637c3a-as-this-breaks-del.patch (from rev 7429, desktop/branches/experimental/xfwm4/debian/patches/0001-Revert-part-of-git-commit-8637c3a-as-this-breaks-del.patch)
===================================================================
--- desktop/trunk/xfwm4/debian/patches/0001-Revert-part-of-git-commit-8637c3a-as-this-breaks-del.patch (rev 0)
+++ desktop/trunk/xfwm4/debian/patches/0001-Revert-part-of-git-commit-8637c3a-as-this-breaks-del.patch 2013-05-21 21:27:10 UTC (rev 7434)
@@ -0,0 +1,42 @@
+From c4d89dd11e2c33f6f5797fb82910b97d483fb599 Mon Sep 17 00:00:00 2001
+From: Olivier Fourdan <fourdan at xfce.org>
+Date: Wed, 18 Jul 2012 22:30:36 +0200
+Subject: [PATCH] Revert part of git commit 8637c3a as this breaks deletetion
+ of current workspace (bug 8827)
+
+---
+ src/workspaces.c | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/src/workspaces.c b/src/workspaces.c
+index fb19ab0..f57eec9 100644
+--- a/src/workspaces.c
++++ b/src/workspaces.c
+@@ -492,7 +492,8 @@ workspaceInsert (ScreenInfo * screen_info, guint position)
+ void
+ workspaceDelete (ScreenInfo * screen_info, guint position)
+ {
+- guint count;
++ Client *c;
++ guint i, count;
+
+ g_return_if_fail (screen_info != NULL);
+
+@@ -504,6 +505,14 @@ workspaceDelete (ScreenInfo * screen_info, guint position)
+ return;
+ }
+
++ for (c = screen_info->clients, i = 0; i < screen_info->client_count; c = c->next, i++)
++ {
++ if (c->win_workspace > position)
++ {
++ clientSetWorkspace (c, c->win_workspace - 1, TRUE);
++ }
++ }
++
+ workspaceSetCount(screen_info, count - 1);
+ }
+
+--
+1.7.10.4
+
Copied: desktop/trunk/xfwm4/debian/patches/0002-Implement-NET_WM_MOVERESIZE_CANCEL-message-bug-8949.patch (from rev 7429, desktop/branches/experimental/xfwm4/debian/patches/0002-Implement-NET_WM_MOVERESIZE_CANCEL-message-bug-8949.patch)
===================================================================
--- desktop/trunk/xfwm4/debian/patches/0002-Implement-NET_WM_MOVERESIZE_CANCEL-message-bug-8949.patch (rev 0)
+++ desktop/trunk/xfwm4/debian/patches/0002-Implement-NET_WM_MOVERESIZE_CANCEL-message-bug-8949.patch 2013-05-21 21:27:10 UTC (rev 7434)
@@ -0,0 +1,90 @@
+From 099614e3f045e06db7ab509e174510ea74857adb Mon Sep 17 00:00:00 2001
+From: Olivier Fourdan <fourdan at xfce.org>
+Date: Wed, 18 Jul 2012 22:12:07 +0200
+Subject: [PATCH] Implement NET_WM_MOVERESIZE_CANCEL message (bug #8949)
+
+as gtk+-3.4 now uses it.
+---
+ src/display.h | 3 ++-
+ src/moveresize.c | 15 +++++++++++++--
+ src/netwm.c | 7 ++++++-
+ 3 files changed, 21 insertions(+), 4 deletions(-)
+
+diff --git a/src/display.h b/src/display.h
+index 1ad2ef8..8797237 100644
+--- a/src/display.h
++++ b/src/display.h
+@@ -163,7 +163,8 @@ enum
+ NET_WM_MOVERESIZE_SIZE_LEFT,
+ NET_WM_MOVERESIZE_MOVE,
+ NET_WM_MOVERESIZE_SIZE_KEYBOARD,
+- NET_WM_MOVERESIZE_MOVE_KEYBOARD
++ NET_WM_MOVERESIZE_MOVE_KEYBOARD,
++ NET_WM_MOVERESIZE_CANCEL
+ };
+
+ enum
+diff --git a/src/moveresize.c b/src/moveresize.c
+index 9893c30..a98bdf7 100644
+--- a/src/moveresize.c
++++ b/src/moveresize.c
+@@ -827,7 +827,7 @@ clientMoveEventFilter (XEvent * xevent, gpointer data)
+ eventFilterStatus status = EVENT_FILTER_STOP;
+ MoveResizeData *passdata = (MoveResizeData *) data;
+ Client *c = NULL;
+- gboolean moving = TRUE;
++ gboolean moving;
+ XWindowChanges wc;
+ int prev_x, prev_y;
+
+@@ -840,6 +840,12 @@ clientMoveEventFilter (XEvent * xevent, gpointer data)
+ display_info = screen_info->display_info;
+ configure_flags = NO_CFG_FLAG;
+
++ /*
++ * Clients may choose to end the move operation,
++ * we use XFWM_FLAG_MOVING_RESIZING for that.
++ */
++ moving = FLAG_TEST (c->xfwm_flags, XFWM_FLAG_MOVING_RESIZING);
++
+ /* Update the display time */
+ myDisplayUpdateCurrentTime (display_info, xevent);
+
+@@ -1294,7 +1300,12 @@ clientResizeEventFilter (XEvent * xevent, gpointer data)
+ screen_info = c->screen_info;
+ display_info = screen_info->display_info;
+ status = EVENT_FILTER_STOP;
+- resizing = TRUE;
++
++ /*
++ * Clients may choose to end the resize operation,
++ * we use XFWM_FLAG_MOVING_RESIZING for that.
++ */
++ resizing = FLAG_TEST (c->xfwm_flags, XFWM_FLAG_MOVING_RESIZING);
+
+ frame_x = frameX (c);
+ frame_y = frameY (c);
+diff --git a/src/netwm.c b/src/netwm.c
+index 545e64a..1352f08 100644
+--- a/src/netwm.c
++++ b/src/netwm.c
+@@ -695,10 +695,15 @@ clientNetMoveResize (Client * c, XClientMessageEvent * ev)
+ resize = TRUE; /* Resize */
+ break;
+ case NET_WM_MOVERESIZE_MOVE:
+- default:
+ event->type = ButtonPress;
+ resize = FALSE; /* Move */
+ break;
++ case NET_WM_MOVERESIZE_CANCEL:
++ FLAG_UNSET (c->xfwm_flags, XFWM_FLAG_MOVING_RESIZING);
++ /* Walk through */
++ default: /* Do nothing */
++ return;
++ break;
+ }
+
+ if (!FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN))
+--
+1.7.10.4
+
Copied: desktop/trunk/xfwm4/debian/patches/0003-Some-small-optimizations-in-placement-code.patch (from rev 7429, desktop/branches/experimental/xfwm4/debian/patches/0003-Some-small-optimizations-in-placement-code.patch)
===================================================================
--- desktop/trunk/xfwm4/debian/patches/0003-Some-small-optimizations-in-placement-code.patch (rev 0)
+++ desktop/trunk/xfwm4/debian/patches/0003-Some-small-optimizations-in-placement-code.patch 2013-05-21 21:27:10 UTC (rev 7434)
@@ -0,0 +1,72 @@
+From e207a6bb16b5396544fa57e0b5cb5e621e8eaefb Mon Sep 17 00:00:00 2001
+From: Nick Schermer <nick at xfce.org>
+Date: Fri, 30 Nov 2012 22:50:59 +0100
+Subject: [PATCH] Some small optimizations in placement code.
+
+Callgrind showed that the frameX/Y functions were called
+a lot, so save the result inside the loop to do less calls.
+
+Also inline the overlap functions, both are just simple calculations
+so help the compiler a bit.
+---
+ src/placement.c | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/src/placement.c b/src/placement.c
+index f926de3..01f2590 100644
+--- a/src/placement.c
++++ b/src/placement.c
+@@ -38,9 +38,10 @@
+ #include "frame.h"
+ #include "netwm.h"
+
++
+ /* Compute rectangle overlap area */
+
+-static unsigned long
++static inline unsigned long
+ segment_overlap (int x0, int x1, int tx0, int tx1)
+ {
+ if (tx0 > x0)
+@@ -58,7 +59,7 @@ segment_overlap (int x0, int x1, int tx0, int tx1)
+ return (x1 - x0);
+ }
+
+-static unsigned long
++static inline unsigned long
+ overlap (int x0, int y0, int x1, int y1, int tx0, int ty0, int tx1, int ty1)
+ {
+ /* Compute overlapping box */
+@@ -541,6 +542,7 @@ smartPlacement (Client * c, int full_x, int full_y, int full_w, int full_h)
+ gint test_x, test_y, xmax, ymax, best_x, best_y;
+ gint frame_height, frame_width, frame_left, frame_top;
+ gboolean first;
++ gint c2_x, c2_y;
+
+ g_return_if_fail (c != NULL);
+ TRACE ("entering smartPlacement");
+@@ -574,14 +576,17 @@ smartPlacement (Client * c, int full_x, int full_y, int full_w, int full_h)
+ && (c->win_workspace == c2->win_workspace)
+ && FLAG_TEST (c2->xfwm_flags, XFWM_FLAG_VISIBLE))
+ {
++ c2_x = frameX (c2);
++ c2_y = frameY (c2);
++
+ count_overlaps += overlap (test_x - frame_left,
+ test_y - frame_top,
+ test_x - frame_left + frame_width,
+ test_y - frame_top + frame_height,
+- frameX (c2),
+- frameY (c2),
+- frameX (c2) + frameWidth (c2),
+- frameY (c2) + frameHeight (c2));
++ c2_x,
++ c2_y,
++ c2_x + frameWidth (c2),
++ c2_y + frameHeight (c2));
+ }
+ }
+ if (count_overlaps < 0.1)
+--
+1.7.10.4
+
Copied: desktop/trunk/xfwm4/debian/patches/0004-Optimize-smart-placement-bug-5785.patch (from rev 7429, desktop/branches/experimental/xfwm4/debian/patches/0004-Optimize-smart-placement-bug-5785.patch)
===================================================================
--- desktop/trunk/xfwm4/debian/patches/0004-Optimize-smart-placement-bug-5785.patch (rev 0)
+++ desktop/trunk/xfwm4/debian/patches/0004-Optimize-smart-placement-bug-5785.patch 2013-05-21 21:27:10 UTC (rev 7434)
@@ -0,0 +1,217 @@
+From be645e649c1684bc88a1ae51f29afe03e3048102 Mon Sep 17 00:00:00 2001
+From: Nick Schermer <nick at xfce.org>
+Date: Sat, 1 Dec 2012 13:43:44 +0100
+Subject: [PATCH] Optimize smart placement (bug #5785).
+
+Make efficient steps in smart placement code. This both saves
+a large amount of loops in the code and also make the windows
+align next to each other, instead of a possible gap of (x % 8) pixels.
+---
+ src/placement.c | 144 +++++++++++++++++++++++++++++++++++++++++++++----------
+ 1 file changed, 120 insertions(+), 24 deletions(-)
+
+diff --git a/src/placement.c b/src/placement.c
+index 01f2590..732f01d 100644
+--- a/src/placement.c
++++ b/src/placement.c
+@@ -541,8 +541,8 @@ smartPlacement (Client * c, int full_x, int full_y, int full_w, int full_h)
+ guint i;
+ gint test_x, test_y, xmax, ymax, best_x, best_y;
+ gint frame_height, frame_width, frame_left, frame_top;
+- gboolean first;
+ gint c2_x, c2_y;
++ gint xmin, ymin;
+
+ g_return_if_fail (c != NULL);
+ TRACE ("entering smartPlacement");
+@@ -552,24 +552,42 @@ smartPlacement (Client * c, int full_x, int full_y, int full_w, int full_h)
+ frame_width = frameWidth (c);
+ frame_left = frameLeft(c);
+ frame_top = frameTop (c);
+- test_x = 0;
+- test_y = 0;
+- best_overlaps = 0.0;
+- first = TRUE;
+
++ /* max coordinates (bottom-right) */
+ xmax = full_x + full_w - c->width - frameRight (c);
+ ymax = full_y + full_h - c->height - frameBottom (c);
+- best_x = full_x + frameLeft (c);
+- best_y = full_y + frameTop (c);
+
+- test_y = full_y + frameTop (c);
++ /* min coordinates (top-left) */
++ xmin = full_x + frameLeft (c);
++ ymin = full_y + frameTop (c);
++
++ /* start with worst-case position at top-left */
++ best_overlaps = G_MAXFLOAT;
++ best_x = xmin;
++ best_y = ymin;
++
++ TRACE ("analyzing %i clients", screen_info->client_count);
++
++ test_y = ymin;
+ do
+ {
+- test_x = full_x + frameLeft (c);
++ gint next_test_y = G_MAXINT;
++ gboolean first_test_x = TRUE;
++
++ TRACE ("testing y position %d", test_y);
++
++ test_x = xmin;
+ do
+ {
+ gfloat count_overlaps = 0.0;
+- TRACE ("analyzing %i clients", screen_info->client_count);
++ gint next_test_x = G_MAXINT;
++ gint c2_next_test_x;
++ gint c2_next_test_y;
++ gint c2_frame_height;
++ gint c2_frame_width;
++
++ TRACE ("testing x position %d", test_x);
++
+ for (c2 = screen_info->clients, i = 0; i < screen_info->client_count; c2 = c2->next, i++)
+ {
+ if ((c2 != c) && (c2->type != WINDOW_DESKTOP)
+@@ -577,7 +595,22 @@ smartPlacement (Client * c, int full_x, int full_y, int full_w, int full_h)
+ && FLAG_TEST (c2->xfwm_flags, XFWM_FLAG_VISIBLE))
+ {
+ c2_x = frameX (c2);
++ c2_frame_width = frameWidth (c2);
++ if (c2_x >= full_x + full_w
++ || c2_x + c2_frame_width < full_x)
++ {
++ /* skip clients on right-of or left-of monitor */
++ continue;
++ }
++
+ c2_y = frameY (c2);
++ c2_frame_height = frameHeight (c2);
++ if (c2_y >= full_y + full_h
++ || c2_y + c2_frame_height < full_y)
++ {
++ /* skip clients on above-of or below-of monitor */
++ continue;
++ }
+
+ count_overlaps += overlap (test_x - frame_left,
+ test_y - frame_top,
+@@ -585,35 +618,98 @@ smartPlacement (Client * c, int full_x, int full_y, int full_w, int full_h)
+ test_y - frame_top + frame_height,
+ c2_x,
+ c2_y,
+- c2_x + frameWidth (c2),
+- c2_y + frameHeight (c2));
++ c2_x + c2_frame_width,
++ c2_y + c2_frame_height);
++
++ /* find the next x boundy for the step */
++ if (test_x > c2_x)
++ {
++ /* test location is beyond the x of the window,
++ * take the window right corner as next target */
++ c2_x += c2_frame_width;
++ }
++ c2_next_test_x = MIN (c2_x, xmax);
++ if (c2_next_test_x < next_test_x
++ && c2_next_test_x > test_x)
++ {
++ /* set new optimal next x step poistion */
++ next_test_x = c2_next_test_x;
++ }
++
++ if (first_test_x)
++ {
++ /* find the next y boundry step */
++ if (test_y > c2_y)
++ {
++ /* test location is beyond the y of the window,
++ * take the window bottom corner as next target */
++ c2_y += c2_frame_height;
++ }
++ c2_next_test_y = MIN (c2_y, ymax);
++ if (c2_next_test_y < next_test_y
++ && c2_next_test_y > test_y)
++ {
++ /* set new optimal next y step poistion */
++ next_test_y = c2_next_test_y;
++ }
++ }
+ }
+ }
+- if (count_overlaps < 0.1)
+- {
+- TRACE ("overlaps is 0 so it's the best we can get");
+- c->x = test_x;
+- c->y = test_y;
+
+- return;
+- }
+- else if ((count_overlaps < best_overlaps) || (first))
++ /* don't look for the next y boundry this x row */
++ first_test_x = FALSE;
++
++ if (count_overlaps < best_overlaps)
+ {
++ /* found position with less overlap */
+ best_x = test_x;
+ best_y = test_y;
+ best_overlaps = count_overlaps;
++
++ if (count_overlaps == 0.0f)
++ {
++ /* overlap is ideal, stop searching */
++ TRACE ("found position without overlap");
++ goto found_best;
++ }
+ }
+- if (first)
++
++ if (G_LIKELY (next_test_x != G_MAXINT))
+ {
+- first = FALSE;
++ test_x = next_test_x + frameLeft (c);
++ if (test_x > xmax)
++ {
++ /* always clamp on the monitor */
++ test_x = xmax;
++ }
++ }
++ else
++ {
++ test_x++;
+ }
+- test_x += 8;
+ }
+ while (test_x <= xmax);
+- test_y += 8;
++
++ if (G_LIKELY (next_test_y != G_MAXINT))
++ {
++ test_y = next_test_y + frameTop (c);
++ if (test_y > ymax)
++ {
++ /* always clamp on the monitor */
++ test_y = ymax;
++ }
++ }
++ else
++ {
++ test_y++;
++ }
+ }
+ while (test_y <= ymax);
+
++ found_best:
++
++ TRACE ("overlaps %f at %d,%d (x,y)", best_overlaps, best_x, best_y);
++
+ c->x = best_x;
+ c->y = best_y;
+ }
+--
+1.7.10.4
+
Modified: desktop/trunk/xfwm4/debian/patches/series
===================================================================
--- desktop/trunk/xfwm4/debian/patches/series 2013-05-21 21:20:12 UTC (rev 7433)
+++ desktop/trunk/xfwm4/debian/patches/series 2013-05-21 21:27:10 UTC (rev 7434)
@@ -1 +1,4 @@
-01_implement-NET_WM_MOVERESIZE_CANCEL-message.patch
+0001-Revert-part-of-git-commit-8637c3a-as-this-breaks-del.patch
+0002-Implement-NET_WM_MOVERESIZE_CANCEL-message-bug-8949.patch
+0003-Some-small-optimizations-in-placement-code.patch
+0004-Optimize-smart-placement-bug-5785.patch
Modified: desktop/trunk/xfwm4/debian/rules
===================================================================
--- desktop/trunk/xfwm4/debian/rules 2013-05-21 21:20:12 UTC (rev 7433)
+++ desktop/trunk/xfwm4/debian/rules 2013-05-21 21:27:10 UTC (rev 7434)
@@ -7,4 +7,4 @@
dh_strip --dbg-package=xfwm4-dbg
%:
- dh $@
+ dh $@ --parallel
More information about the Pkg-xfce-commits
mailing list