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

weston: Changes to 'debian-experimental'



 .gitignore                                      |   15 
 COPYING                                         |   44 
 Makefile.am                                     |  682 +++++--
 README                                          |  149 +
 clients/calibrator.c                            |   38 
 clients/clickdot.c                              |   34 
 clients/cliptest.c                              |   33 
 clients/desktop-shell.c                         |  164 -
 clients/dnd.c                                   |  209 +-
 clients/editor.c                                |  326 ++-
 clients/eventdemo.c                             |   99 -
 clients/flower.c                                |   39 
 clients/fullscreen.c                            |   97 -
 clients/gears.c                                 |   37 
 clients/glmatrix.c                              | 1062 ------------
 clients/image.c                                 |   39 
 clients/ivi-shell-user-interface.c              |   89 -
 clients/keyboard.c                              |  221 +-
 clients/matrix3.xpm                             |  692 -------
 clients/multi-resource.c                        |   35 
 clients/nested-client.c                         |   46 
 clients/nested.c                                |   38 
 clients/presentation-shm.c                      |   96 -
 clients/resizor.c                               |   33 
 clients/scaler.c                                |   33 
 clients/screenshot.c                            |   56 
 clients/simple-damage.c                         |  178 +-
 clients/simple-dmabuf-intel.c                   |  588 ++++++
 clients/simple-dmabuf-v4l.c                     |  944 ++++++++++
 clients/simple-egl.c                            |   50 
 clients/simple-shm.c                            |   57 
 clients/simple-touch.c                          |   38 
 clients/smoke.c                                 |   35 
 clients/stacking.c                              |   38 
 clients/subsurfaces.c                           |   51 
 clients/terminal.c                              |  163 +
 clients/transformed.c                           |   37 
 clients/weston-info.c                           |   74 
 clients/weston-simple-im.c                      |  163 -
 clients/window.c                                |  556 ++++--
 clients/window.h                                |   89 -
 clients/wscreensaver-glue.c                     |  148 -
 clients/wscreensaver-glue.h                     |  120 -
 clients/wscreensaver.c                          |  348 ---
 clients/wscreensaver.h                          |   63 
 configure.ac                                    |  172 +
 data/wayland.svg                                |   36 
 debian/changelog                                |   54 
 debian/control                                  |    9 
 debian/watch                                    |    2 
 desktop-shell/exposay.c                         |  109 -
 desktop-shell/input-panel.c                     |   58 
 desktop-shell/shell.c                           | 1506 ++++++++---------
 desktop-shell/shell.h                           |   54 
 doc/doxygen/devtools.dox                        |   51 
 doc/doxygen/tooldev.doxygen.in                  |   12 
 doc/doxygen/tools.dox                           |   31 
 doc/doxygen/tools.doxygen.in                    |   11 
 doc/doxygen/tools_arch_new.gv                   |   85 
 doc/doxygen/tools_arch_old.gv                   |   53 
 fullscreen-shell/fullscreen-shell.c             |  141 -
 ivi-shell/README                                |    2 
 ivi-shell/hmi-controller.c                      |  746 +++++---
 ivi-shell/input-panel-ivi.c                     |   57 
 ivi-shell/ivi-layout-export.h                   |   72 
 ivi-shell/ivi-layout-private.h                  |   52 
 ivi-shell/ivi-layout-transition.c               |   87 
 ivi-shell/ivi-layout.c                          | 1386 +++++++--------
 ivi-shell/ivi-shell.c                           |  234 +-
 ivi-shell/ivi-shell.h                           |   37 
 ivi-shell/weston.ini.in                         |   43 
 man/weston.ini.man                              |   50 
 man/weston.man                                  |   52 
 notes.txt                                       |   10 
 protocol/desktop-shell.xml                      |  138 -
 protocol/fullscreen-shell.xml                   |  206 --
 protocol/input-method.xml                       |  273 ---
 protocol/ivi-application.xml                    |   35 
 protocol/ivi-hmi-controller.xml                 |   33 
 protocol/presentation_timing.xml                |   38 
 protocol/scaler.xml                             |   38 
 protocol/screenshooter.xml                      |   12 
 protocol/text.xml                               |  346 ---
 protocol/wayland-test.xml                       |   62 
 protocol/weston-desktop-shell.xml               |  135 +
 protocol/weston-screenshooter.xml               |   12 
 protocol/weston-test.xml                        |  126 +
 protocol/workspaces.xml                         |   27 
 protocol/xdg-shell.xml                          |  422 ----
 releasing.txt                                   |   72 
 shared/cairo-util.c                             |   38 
 shared/cairo-util.h                             |   39 
 shared/config-parser.c                          |   60 
 shared/config-parser.h                          |   40 
 shared/file-util.c                              |  121 +
 shared/file-util.h                              |   43 
 shared/frame.c                                  |   52 
 shared/helpers.h                                |   96 +
 shared/image-loader.c                           |   38 
 shared/image-loader.h                           |   35 
 shared/matrix.c                                 |   35 
 shared/matrix.h                                 |   35 
 shared/option-parser.c                          |   35 
 shared/os-compatibility.c                       |   57 
 shared/os-compatibility.h                       |   38 
 shared/platform.h                               |  134 +
 shared/timespec-util.h                          |   75 
 shared/zalloc.h                                 |   35 
 src/animation.c                                 |   40 
 src/bindings.c                                  |  264 ++-
 src/clipboard.c                                 |   40 
 src/cms-colord.c                                |   94 -
 src/cms-helper.c                                |   35 
 src/cms-helper.h                                |   37 
 src/cms-static.c                                |   41 
 src/compositor-drm.c                            | 1301 +++++++++-----
 src/compositor-fbdev.c                          |  394 +---
 src/compositor-headless.c                       |  149 -
 src/compositor-rdp.c                            |  419 +++-
 src/compositor-rpi.c                            |  210 +-
 src/compositor-wayland.c                        |  822 ++++++---
 src/compositor-x11.c                            |  734 ++++----
 src/compositor.c                                | 2111 ++++++++++++------------
 src/compositor.h                                |  396 +++-
 src/data-device.c                               |  555 +++++-
 src/dbus.c                                      |   35 
 src/dbus.h                                      |   35 
 src/gl-renderer.c                               | 1081 +++++++++++-
 src/gl-renderer.h                               |   69 
 src/input.c                                     |  886 +++++++---
 src/launcher-direct.c                           |  315 +++
 src/launcher-impl.h                             |   45 
 src/launcher-logind.c                           |  839 +++++++++
 src/launcher-util.c                             |  477 -----
 src/launcher-util.h                             |   38 
 src/launcher-weston-launch.c                    |  300 +++
 src/libbacklight.c                              |    2 
 src/libbacklight.h                              |   32 
 src/libinput-device.c                           |  186 +-
 src/libinput-device.h                           |   35 
 src/libinput-seat.c                             |   87 
 src/libinput-seat.h                             |   35 
 src/linux-dmabuf.c                              |  497 +++++
 src/linux-dmabuf.h                              |   88 +
 src/log.c                                       |   42 
 src/logind-util.c                               |  953 ----------
 src/logind-util.h                               |  120 -
 src/main.c                                      |  892 ++++++++++
 src/noop-renderer.c                             |   35 
 src/pixman-renderer.c                           |  592 ++++--
 src/pixman-renderer.h                           |   35 
 src/rpi-renderer.c                              |  116 -
 src/rpi-renderer.h                              |   35 
 src/screen-share.c                              |  122 -
 src/screenshooter.c                             |   70 
 src/spring-tool.c                               |   35 
 src/systemd-notify.c                            |  123 +
 src/text-backend.c                              |  479 +++--
 src/timeline-object.h                           |   35 
 src/timeline.c                                  |   72 
 src/timeline.h                                  |   35 
 src/vaapi-recorder.c                            |   51 
 src/vaapi-recorder.h                            |   35 
 src/version.h.in                                |   41 
 src/vertex-clipping.c                           |   35 
 src/vertex-clipping.h                           |   35 
 src/weston-egl-ext.h                            |   48 
 src/weston-launch.c                             |   53 
 src/weston-launch.h                             |   35 
 src/zoom.c                                      |  182 --
 tests/bad-buffer-test.c                         |   39 
 tests/buffer-count-test.c                       |   53 
 tests/button-test.c                             |   43 
 tests/config-parser-test.c                      |  406 +++-
 tests/devices-test.c                            |  312 +++
 tests/event-test.c                              |   59 
 tests/internal-screenshot-test.c                |  128 +
 tests/internal-screenshot.ini                   |    3 
 tests/ivi-shell-app-test.c                      |   75 
 tests/ivi-test.h                                |   41 
 tests/ivi_layout-internal-test.c                | 1208 +++++++++++++
 tests/ivi_layout-test-plugin.c                  | 1073 ++++++++++++
 tests/ivi_layout-test.c                         |  469 +++++
 tests/keyboard-test.c                           |   56 
 tests/matrix-test.c                             |   37 
 tests/presentation-test.c                       |   38 
 tests/reference/internal-screenshot-bad-00.png  |binary
 tests/reference/internal-screenshot-good-00.png |binary
 tests/roles-test.c                              |   39 
 tests/setbacklight.c                            |   35 
 tests/subsurface-test.c                         |   65 
 tests/surface-global-test.c                     |   37 
 tests/surface-screenshot.c                      |  221 ++
 tests/surface-test.c                            |   37 
 tests/text-test.c                               |   95 -
 tests/vertex-clip-test.c                        |   38 
 tests/weston-test-client-helper.c               |  640 ++++++-
 tests/weston-test-client-helper.h               |  126 +
 tests/weston-test-runner.c                      |   35 
 tests/weston-test-runner.h                      |   39 
 tests/weston-test.c                             |  375 +++-
 tests/weston-tests-env                          |   85 
 tests/xwayland-test.c                           |   37 
 tools/zunitc/doc/zunitc.dox                     |  220 ++
 tools/zunitc/inc/zunitc/zunitc.h                |  743 ++++++++
 tools/zunitc/inc/zunitc/zunitc_impl.h           |  105 +
 tools/zunitc/src/main.c                         |   58 
 tools/zunitc/src/zuc_base_logger.c              |  404 ++++
 tools/zunitc/src/zuc_base_logger.h              |   38 
 tools/zunitc/src/zuc_collector.c                |  427 ++++
 tools/zunitc/src/zuc_collector.h                |   58 
 tools/zunitc/src/zuc_context.h                  |   58 
 tools/zunitc/src/zuc_event.h                    |   86 
 tools/zunitc/src/zuc_event_listener.h           |  174 +
 tools/zunitc/src/zuc_junit_reporter.c           |  471 +++++
 tools/zunitc/src/zuc_junit_reporter.h           |   38 
 tools/zunitc/src/zuc_types.h                    |   80 
 tools/zunitc/src/zunitc_impl.c                  | 1589 ++++++++++++++++++
 tools/zunitc/test/fixtures_test.c               |  106 +
 tools/zunitc/test/zunitc_test.c                 |  464 +++++
 wcap/main.c                                     |   39 
 wcap/wcap-decode.c                              |   39 
 wcap/wcap-decode.h                              |   35 
 weston.ini.in                                   |    8 
 xwayland/dnd.c                                  |   40 
 xwayland/launcher.c                             |   36 
 xwayland/selection.c                            |   58 
 xwayland/window-manager.c                       |  399 ++--
 xwayland/xwayland.h                             |   38 
 229 files changed, 30252 insertions(+), 14872 deletions(-)

New commits:
commit cf0b6529a5f1997fb549f9bf510a0b4e90472e14
Author: Héctor Orón Martínez <zumbi@debian.org>
Date:   Sun Feb 7 22:54:39 2016 +0100

    d/changelog: add unreleased entry
    
    Signed-off-by: Héctor Orón Martínez <zumbi@debian.org>

diff --git a/debian/changelog b/debian/changelog
index eb4f8d1..e2234cb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+weston (1.9.92-1) UNRELEASED; urgency=medium
+
+  * New upstream release
+
+ -- Héctor Orón Martínez <zumbi@debian.org>  Sun, 07 Feb 2016 21:22:32 +0100
+
 weston (1.9.0-3) unstable; urgency=medium
 
   * debian/patches/0001-Add-suport-for-new-libsystemd.patch:

commit f610e461efafe77940a93dcc955c9daf6c3c8c94
Author: Héctor Orón Martínez <zumbi@debian.org>
Date:   Sun Feb 7 22:52:37 2016 +0100

    d/p/0001-Add-suport-for-new-libsystemd.patch: drop
    
      Merged upstream
    
    Signed-off-by: Héctor Orón Martínez <zumbi@debian.org>

diff --git a/debian/patches/0001-Add-suport-for-new-libsystemd.patch b/debian/patches/0001-Add-suport-for-new-libsystemd.patch
deleted file mode 100644
index 14e19c1..0000000
--- a/debian/patches/0001-Add-suport-for-new-libsystemd.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From fe00842e1562d78f2811c8dad46125041cccab87 Mon Sep 17 00:00:00 2001
-From: Michael Biebl <biebl@debian.org>
-Date: Thu, 9 Jul 2015 16:18:39 +0200
-Subject: [PATCH] Add suport for new libsystemd
-
-In systemd v209, the various libraries were merged into a single
-libsystemd library. When checking for systemd > 209, use the new library
-name instead of the deprecated libsystemd-login.
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -380,13 +380,13 @@
- AS_IF([test "x$enable_resize_optimization" = "xyes"],
-       [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])])
- 
--PKG_CHECK_MODULES(SYSTEMD_LOGIN, [libsystemd-login >= 198],
-+PKG_CHECK_MODULES(SYSTEMD_LOGIN, [libsystemd >= 198],
-                   [have_systemd_login=yes], [have_systemd_login=no])
- AS_IF([test "x$have_systemd_login" = "xyes"],
-       [AC_DEFINE([HAVE_SYSTEMD_LOGIN], [1], [Have systemd-login])])
- AM_CONDITIONAL(HAVE_SYSTEMD_LOGIN, test "x$have_systemd_login" = "xyes")
- 
--PKG_CHECK_MODULES(SYSTEMD_LOGIN_209, [libsystemd-login >= 209],
-+PKG_CHECK_MODULES(SYSTEMD_LOGIN_209, [libsystemd >= 209],
-                   [have_systemd_login_209=yes], [have_systemd_login_209=no])
- AS_IF([test "x$have_systemd_login_209" = "xyes"],
-       [AC_DEFINE([HAVE_SYSTEMD_LOGIN_209], [1], [Have systemd-login >= 209])])
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 844880f..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-0001-Add-suport-for-new-libsystemd.patch

commit d9bcf3a08c9f70b05c4b8cab72dde2e796b49efa
Author: Héctor Orón Martínez <zumbi@debian.org>
Date:   Sun Feb 7 22:49:12 2016 +0100

    d/watch: update https url
    
    Signed-off-by: Héctor Orón Martínez <zumbi@debian.org>

diff --git a/debian/watch b/debian/watch
index 057a2f4..f125432 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,3 +1,3 @@
 #git=git://anongit.freedesktop.org/wayland/weston
 version=3
-http://wayland.freedesktop.org/releases/weston-(.*)\.tar\.xz
+https://wayland.freedesktop.org/releases/weston-(.*)\.tar\.xz

commit 0cc4e986695decb384cbbb8ce0e5cd08d2905249
Author: Bryce Harrington <bryce@bryceharrington.org>
Date:   Tue Feb 2 15:34:56 2016 -0800

    configure.ac: bump to version 1.9.92 for the beta release

diff --git a/configure.ac b/configure.ac
index 107c155..bff6380 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 m4_define([weston_major_version], [1])
 m4_define([weston_minor_version], [9])
-m4_define([weston_micro_version], [91])
+m4_define([weston_micro_version], [92])
 m4_define([weston_version],
           [weston_major_version.weston_minor_version.weston_micro_version])
 

commit 2c40d1d30eabe46706822a8b5c94579aeba58e84
Author: Bryce Harrington <bryce@bryceharrington.org>
Date:   Tue Feb 2 10:18:48 2016 -0800

    input: Fix crash when touchscreen generates out of screen coordinate
    
    With change 61ed7b6b, global touch coordinates are being passed to the
    touch grab.  However, touch->grab is undefined in certain circumstances
    such as when the touch screen raises an axis X value larger than the
    maximum expected.  Move the check for this condition earlier, before our
    first use of the pointer.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=92736
    
    Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
    Reviewed-by: Derek Foreman <derekf@osg.samsung.com>

diff --git a/src/input.c b/src/input.c
index 2539fa7..8c106dd 100644
--- a/src/input.c
+++ b/src/input.c
@@ -446,11 +446,14 @@ default_grab_touch_down(struct weston_touch_grab *grab, uint32_t time,
 	struct wl_list *resource_list;
 	wl_fixed_t sx, sy;
 
+	if (!touch->focus)
+		return;
+
 	weston_view_from_global_fixed(touch->focus, x, y, &sx, &sy);
 
 	resource_list = &touch->focus_resource_list;
 
-	if (!wl_list_empty(resource_list) && touch->focus) {
+	if (!wl_list_empty(resource_list)) {
 		serial = wl_display_next_serial(display);
 		wl_resource_for_each(resource, resource_list)
 				wl_touch_send_down(resource, serial, time,

commit 4061e2b67e62d5d2a635f0b87098f331082e8145
Author: Carlos Garnacho <carlosg@gnome.org>
Date:   Mon Feb 1 20:28:16 2016 +0100

    data-device: Check harder for selection/non-wayland sources
    
    We're not always dealing with weston_data_sources that have a
    wl_resource, or data_sources that belong to drag-and-drop. Check
    harder for these on the drag-and-drop code paths triggered from
    common code.
    
    Signed-off-by: Carlos Garnacho <carlosg@gnome.org>

diff --git a/src/data-device.c b/src/data-device.c
index 2cfdcfe..862a4e0 100644
--- a/src/data-device.c
+++ b/src/data-device.c
@@ -100,6 +100,9 @@ data_offer_destroy(struct wl_client *client, struct wl_resource *resource)
 static void
 data_source_notify_finish(struct weston_data_source *source)
 {
+	if (!source->actions_set)
+		return;
+
 	if (source->offer->in_ask &&
 	    wl_resource_get_version(source->resource) >=
 	    WL_DATA_SOURCE_ACTION_SINCE_VERSION) {
@@ -157,7 +160,7 @@ data_offer_update_action(struct weston_data_offer *offer)
 {
 	uint32_t action;
 
-	if (!offer->source)
+	if (!offer->source || !offer->source->actions_set)
 		return;
 
 	action = data_offer_choose_action(offer);
@@ -268,7 +271,8 @@ destroy_data_offer(struct wl_resource *resource)
 	if (wl_resource_get_version(offer->resource) <
 	    WL_DATA_OFFER_ACTION_SINCE_VERSION) {
 		data_source_notify_finish(offer->source);
-	} else if (wl_resource_get_version(offer->source->resource) >=
+	} else if (offer->source->resource &&
+		   wl_resource_get_version(offer->source->resource) >=
 		   WL_DATA_SOURCE_DND_FINISHED_SINCE_VERSION) {
 		wl_data_source_send_cancelled(offer->source->resource);
 	}

commit beb7a9f92d00e83712c762fd8e2abd6f65773858
Author: Carlos Garnacho <carlosg@gnome.org>
Date:   Mon Feb 1 20:28:15 2016 +0100

    xwayland: zalloc the x11_data_sources
    
    The wrapped weston_data_source struct has new fields which were left
    uninitialized, so its access is unreliable.
    
    The data source in xwayland/dnd.c should be eventually setting the
    drag-and-drop actions, but it is a lot more incomplete than that
    (read: completely), so falls out of the scope of this patch.
    
    Signed-off-by: Carlos Garnacho <carlosg@gnome.org>

diff --git a/xwayland/dnd.c b/xwayland/dnd.c
index a036b30..f17e4cd 100644
--- a/xwayland/dnd.c
+++ b/xwayland/dnd.c
@@ -162,7 +162,7 @@ handle_enter(struct weston_wm *wm, xcb_client_message_event_t *client_message)
 	xcb_get_property_cookie_t cookie;
 	xcb_get_property_reply_t *reply;
 
-	source = malloc(sizeof *source);
+	source = zalloc(sizeof *source);
 	if (source == NULL)
 		return;
 
diff --git a/xwayland/selection.c b/xwayland/selection.c
index 25ec848..3fcd578 100644
--- a/xwayland/selection.c
+++ b/xwayland/selection.c
@@ -197,7 +197,7 @@ weston_wm_get_selection_targets(struct weston_wm *wm)
 		return;
 	}
 
-	source = malloc(sizeof *source);
+	source = zalloc(sizeof *source);
 	if (source == NULL) {
 		free(reply);
 		return;

commit 15902bf47a91b42b6f9196861c94ab9cdb6b7cf2
Author: Carlos Garnacho <carlosg@gnome.org>
Date:   Mon Feb 1 20:28:14 2016 +0100

    clipboard: zalloc the clipboard_source
    
    The wrapped weston_data_source struct has new fields which were left
    uninitialized, so its access is unreliable.
    
    Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
    Reviewed-by: Derek Foreman <derekf@osg.samsung.com
    Tested-by: Derek Foreman <derekf@osg.samsung.com>

diff --git a/src/clipboard.c b/src/clipboard.c
index da7dbb6..54a578f 100644
--- a/src/clipboard.c
+++ b/src/clipboard.c
@@ -141,7 +141,7 @@ clipboard_source_create(struct clipboard *clipboard,
 	struct clipboard_source *source;
 	char **s;
 
-	source = malloc(sizeof *source);
+	source = zalloc(sizeof *source);
 	if (source == NULL)
 		return NULL;
 

commit 8efa31b289a1b176db4b07d5c773a1a63934879d
Author: Derek Foreman <derekf@osg.samsung.com>
Date:   Fri Jan 29 10:29:46 2016 -0600

    input: Don't try to send pointer frames if no focus_client
    
    Prevents a segfault when mousing into clients that don't get_pointer
    like weston-simple-shm and weston-simple-damage.
    
    Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
    Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
    Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>

diff --git a/src/input.c b/src/input.c
index 91813ec..2539fa7 100644
--- a/src/input.c
+++ b/src/input.c
@@ -390,6 +390,9 @@ weston_pointer_send_frame(struct weston_pointer *pointer)
 	struct wl_resource *resource;
 	struct wl_list *resource_list;
 
+	if (!pointer->focus_client)
+		return;
+
 	resource_list = &pointer->focus_client->pointer_resources;
 	wl_resource_for_each(resource, resource_list)
 		pointer_send_frame(resource);

commit 1abf5e43b56fca493888f43e3261126b320e5cbb
Author: Bryce Harrington <bryce@bryceharrington.org>
Date:   Wed Jan 20 11:50:12 2016 -0800

    releasing: register_release now inserts the email announcement urls

diff --git a/releasing.txt b/releasing.txt
index fe6aa59..2467e8e 100644
--- a/releasing.txt
+++ b/releasing.txt
@@ -58,7 +58,7 @@ To make a release of Weston and/or Wayland, follow these steps.
 
 
   5.  Compose the release announcements.  The script will generate
-      *.x.y.0.announce files with a list of changes and tags, one for
+      *.x.y.z.announce files with a list of changes and tags, one for
       wayland, one for weston.  Prepend these with a human-readable
       listing of the most notable changes.  For x.y.0 releases, indicate
       the schedule for the x.y+1.0 release.
@@ -66,10 +66,7 @@ To make a release of Weston and/or Wayland, follow these steps.
   6.  pgp sign the the release announcements and send them to
       wayland-devel@lists.freedesktop.org
 
-  7.  Get your freshly posted release email URL from
-      http://lists.freedesktop.org/archives/wayland-devel/
-
-  8.  Update releases.html in wayland-web with links to tarballs and
+  7.  Update releases.html in wayland-web with links to tarballs and
       the release email URL.
 
       The register_release script in wayland-web will generate an HTML
@@ -79,11 +76,11 @@ To make a release of Weston and/or Wayland, follow these steps.
 
       Once satisfied:
 
-      $ git commit ./releases.html -m "Add ${RELEASE_NUMBER} release"
+      $ git commit ./releases.html -m "releases: Add ${RELEASE_NUMBER} release"
       $ git push
       $ ./deploy
 
-  9.  Update topic in #wayland to point to the release announcement URL
+  8.  Update topic in #wayland to point to the release announcement URL
 
 For x.y.0 releases, also create the release series x.y branch.  The x.y
 branch is for bug fixes and conservative changes to the x.y.0 release,

commit 51e892000ebb2298b9841b657e99def9ad188e37
Author: Bryce Harrington <bryce@osg.samsung.com>
Date:   Tue Jan 19 15:23:41 2016 -0800

    configure.ac: bump to version  for the  release

diff --git a/configure.ac b/configure.ac
index 97cbfe5..107c155 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 m4_define([weston_major_version], [1])
 m4_define([weston_minor_version], [9])
-m4_define([weston_micro_version], [90])
+m4_define([weston_micro_version], [91])
 m4_define([weston_version],
           [weston_major_version.weston_minor_version.weston_micro_version])
 
@@ -59,7 +59,7 @@ AC_CHECK_HEADERS([execinfo.h])
 
 AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate])
 
-COMPOSITOR_MODULES="wayland-server >= 1.9.90 pixman-1 >= 0.25.2"
+COMPOSITOR_MODULES="wayland-server >= 1.9.91 pixman-1 >= 0.25.2"
 
 AC_CONFIG_FILES([doc/doxygen/tools.doxygen doc/doxygen/tooldev.doxygen])
 
@@ -321,7 +321,7 @@ AC_SUBST(JPEG_LIBS)
 
 PKG_CHECK_MODULES(CAIRO, [cairo])
 
-PKG_CHECK_MODULES(TEST_CLIENT, [wayland-client >= 1.9.90])
+PKG_CHECK_MODULES(TEST_CLIENT, [wayland-client >= 1.9.91])
 
 AC_ARG_ENABLE(simple-clients,
               AS_HELP_STRING([--disable-simple-clients],

commit f377535aff4f2cac0c529c338c0eafd4d045ff4e
Author: Carlos Garnacho <carlosg@gnome.org>
Date:   Fri Jan 15 21:14:27 2016 +0100

    dnd: Turn into a full blown example
    
    In order to keep things simple, weston-dnd made a few choices that
    turn out to be unrealistic, a few tweaks have been done to make it
    less of a playground demo:
    
    - It now caters for copy/move operations, instead of just move,
      which still remains the default nonetheless.
    - As "move" operations are no longer assumed, the item isn't removed
      on start_drag, instead it is made translucent until the drag
      operation finishes (and we know whether the item is to be
      removed after transfer or left as is)
    - For the same reasons, "Drop nowhere to delete item" no longer
      happens. Drag-and-drop is a failable operation and must not result
      in data loss.
    - As multiple actions are now allowed, we set the pointer icon
      surface accordingly to the current operation.
    
    This makes weston-dnd a better example of what applications usually
    want to do here.
    
    Changes since v2:
      - Updated to behave alright-ish with version < 3.
    
    Changes since v1:
      - Remove unneeded include. Remove extra newlines. Other minor
        code fixes.
    
    Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
    Reviewed-by: Jonas Ådahl <jadahl@gmail.com>

diff --git a/clients/dnd.c b/clients/dnd.c
index d32655d..e6c3147 100644
--- a/clients/dnd.c
+++ b/clients/dnd.c
@@ -190,7 +190,7 @@ dnd_redraw_handler(struct widget *widget, void *data)
 	struct dnd *dnd = data;
 	struct rectangle allocation;
 	cairo_t *cr;
-	cairo_surface_t *surface;
+	cairo_surface_t *surface, *item_surface;
 	unsigned int i;
 
 	surface = window_get_surface(dnd->window);
@@ -210,7 +210,13 @@ dnd_redraw_handler(struct widget *widget, void *data)
 	for (i = 0; i < ARRAY_LENGTH(dnd->items); i++) {
 		if (!dnd->items[i])
 			continue;
-		cairo_set_source_surface(cr, dnd->items[i]->surface,
+
+		if (dnd->current_drag && dnd->items[i] == dnd->current_drag->item)
+			item_surface = dnd->current_drag->translucent;
+		else
+			item_surface = dnd->items[i]->surface;
+
+		cairo_set_source_surface(cr, item_surface,
 					 dnd->items[i]->x + allocation.x,
 					 dnd->items[i]->y + allocation.y);
 		cairo_paint(cr);
@@ -266,6 +272,30 @@ dnd_get_item(struct dnd *dnd, int32_t x, int32_t y)
 	return NULL;
 }
 
+static int
+lookup_dnd_cursor(uint32_t dnd_action)
+{
+	if (dnd_action == WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE)
+		return CURSOR_DND_MOVE;
+	else if (dnd_action == WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY)
+		return CURSOR_DND_COPY;
+
+	return CURSOR_DND_FORBIDDEN;
+}
+
+static void
+dnd_drag_update_cursor(struct dnd_drag *dnd_drag)
+{
+	int cursor;
+
+	if (dnd_drag->mime_type == NULL)
+		cursor = CURSOR_DND_FORBIDDEN;
+	else
+		cursor = lookup_dnd_cursor(dnd_drag->dnd_action);
+
+	input_set_pointer_image(dnd_drag->input, cursor);
+}
+
 static void
 dnd_drag_update_surface(struct dnd_drag *dnd_drag)
 {
@@ -293,6 +323,7 @@ data_source_target(void *data,
 
 	dnd_drag->mime_type = mime_type;
 	dnd_drag_update_surface(dnd_drag);
+	dnd_drag_update_cursor(dnd_drag);
 }
 
 static void
@@ -326,13 +357,27 @@ data_source_send(void *data, struct wl_data_source *source,
 }
 
 static void
-dnd_drag_destroy(struct dnd_drag *dnd_drag)
+dnd_drag_destroy(struct dnd_drag *dnd_drag, bool delete_item)
 {
+	struct dnd *dnd = dnd_drag->dnd;
+	unsigned int i;
+
 	wl_data_source_destroy(dnd_drag->data_source);
 
-	/* Destroy the item that has been dragged out */
-	cairo_surface_destroy(dnd_drag->item->surface);
-	free(dnd_drag->item);
+	if (delete_item) {
+		for (i = 0; i < ARRAY_LENGTH(dnd->items); i++) {
+			if (dnd_drag->item == dnd->items[i]) {
+				dnd->items[i] = NULL;
+				break;
+			}
+		}
+
+		/* Destroy the item that has been dragged out */
+		cairo_surface_destroy(dnd_drag->item->surface);
+		free(dnd_drag->item);
+	}
+
+	dnd->current_drag = NULL;
 
 	wl_surface_destroy(dnd_drag->drag_surface);
 
@@ -345,11 +390,13 @@ static void
 data_source_cancelled(void *data, struct wl_data_source *source)
 {
 	struct dnd_drag *dnd_drag = data;
+	struct dnd *dnd = dnd_drag->dnd;
 
 	/* The 'cancelled' event means that the source is no longer in
 	 * use by the drag (or current selection).  We need to clean
 	 * up the drag object created and the local state. */
-	dnd_drag_destroy(dnd_drag);
+	dnd_drag_destroy(dnd_drag, false);
+	window_schedule_redraw(dnd->window);
 }
 
 static void
@@ -361,11 +408,17 @@ static void
 data_source_dnd_finished(void *data, struct wl_data_source *source)
 {
 	struct dnd_drag *dnd_drag = data;
+	struct dnd *dnd = dnd_drag->dnd;
+	bool delete_item;
 
-	/* The operation is already finished, we can destroy all
-	 * related data.
-	 */
-	dnd_drag_destroy(dnd_drag);
+	delete_item =
+		dnd_drag->dnd_action == WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE;
+
+        /* The operation is already finished, we can destroy all
+         * related data.
+         */
+	dnd_drag_destroy(dnd_drag, delete_item);
+	window_schedule_redraw(dnd->window);
 }
 
 static void
@@ -375,6 +428,7 @@ data_source_action(void *data, struct wl_data_source *source, uint32_t dnd_actio
 
 	dnd_drag->dnd_action = dnd_action;
 	dnd_drag_update_surface(dnd_drag);
+	dnd_drag_update_cursor(dnd_drag);
 }
 
 static const struct wl_data_source_listener data_source_listener = {
@@ -432,6 +486,7 @@ create_drag_source(struct dnd *dnd,
 	unsigned int i;
 	uint32_t serial;
 	cairo_surface_t *icon;
+	uint32_t actions;
 
 	widget_get_allocation(dnd->widget, &allocation);
 	item = dnd_get_item(dnd, x, y);
@@ -449,12 +504,8 @@ create_drag_source(struct dnd *dnd,
 		dnd_drag->dnd_action = WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE;
 		dnd_drag->mime_type = NULL;
 
-		for (i = 0; i < ARRAY_LENGTH(dnd->items); i++) {
-			if (item == dnd->items[i]){
-				dnd->items[i] = 0;
-				break;
-			}
-		}
+		actions = WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE |
+			WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY;
 
 		display = window_get_display(dnd->window);
 		compositor = display_get_compositor(display);
@@ -462,6 +513,21 @@ create_drag_source(struct dnd *dnd,
 		dnd_drag->drag_surface =
 			wl_compositor_create_surface(compositor);
 
+		if (display_get_data_device_manager_version(display) <
+		    WL_DATA_SOURCE_SET_ACTIONS_SINCE_VERSION) {
+			/* Data sources version < 3 will not get action
+			 * nor dnd_finished events, as we can't honor
+			 * the "move" action at the time of finishing
+			 * drag-and-drop, do it preemptively here.
+			 */
+			for (i = 0; i < ARRAY_LENGTH(dnd->items); i++) {
+				if (item == dnd->items[i]){
+					dnd->items[i] = NULL;
+					break;
+				}
+			}
+		}
+
 		if (dnd->self_only) {
 			dnd_drag->data_source = NULL;
 		} else {
@@ -478,8 +544,7 @@ create_drag_source(struct dnd *dnd,
 
 		if (display_get_data_device_manager_version(display) >=
 		    WL_DATA_SOURCE_SET_ACTIONS_SINCE_VERSION) {
-			wl_data_source_set_actions(dnd_drag->data_source,
-						   WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE);
+			wl_data_source_set_actions(dnd_drag->data_source, actions);
 		}
 
 		wl_data_device_start_drag(input_get_data_device(input),
@@ -591,8 +656,6 @@ dnd_enter_handler(struct widget *widget,
 	struct dnd *dnd = data;
 	struct pointer *new_pointer = malloc(sizeof *new_pointer);
 
-	dnd->current_drag = NULL;
-
 	if (new_pointer) {
 		new_pointer->input = input;
 		new_pointer->dragging = false;
@@ -703,7 +766,6 @@ dnd_drop_handler(struct window *window, struct input *input,
 		message.x_offset = dnd->current_drag->x_offset;
 		message.y_offset = dnd->current_drag->y_offset;
 		dnd_receive_func(&message, sizeof message, x, y, dnd);
-		dnd->current_drag = NULL;
 	} else {
 		fprintf(stderr, "ignoring drop from another client\n");
 	}

commit b288988e831cee3deb7f8bb1a3f440c86230dd9f
Author: Carlos Garnacho <carlosg@gnome.org>
Date:   Fri Jan 15 21:14:26 2016 +0100

    data-device: Implement compositor-chosen actions
    
    Set up a keyboard grab during drag-and-drop, so we can translate
    modifiers into preferred actions. The compositor chosen action
    is stored in the current weston_data_source in order to make it
    accessible to the source/offer at the time of calculating the new
    action, but would conceptually be part of weston_drag.
    
    The mapping has been made similar to what GTK+/QT usually do, the
    shift key defaults to "move" and ctrl defaults to "copy".
    
    Changes since v2:
      - Use enum types and values for the compositor action. Fix
        code formatting issues.
    
    Changes since v1:
      - Handle the keyboard grab being cancelled. Initialize new
        wl_data_source fields.
    
    Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
    Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
    Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>

diff --git a/src/compositor.h b/src/compositor.h
index 8303a5f..58ae94b 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -336,6 +336,7 @@ struct weston_data_source {
 	bool actions_set;
 	uint32_t dnd_actions;
 	enum wl_data_device_manager_dnd_action current_dnd_action;
+	enum wl_data_device_manager_dnd_action compositor_action;
 
 	void (*accept)(struct weston_data_source *source,
 		       uint32_t serial, const char *mime_type);
diff --git a/src/data-device.c b/src/data-device.c
index 75a4424..2cfdcfe 100644
--- a/src/data-device.c
+++ b/src/data-device.c
@@ -44,6 +44,7 @@ struct weston_drag {
 	struct weston_view *icon;
 	struct wl_listener icon_destroy_listener;
 	int32_t dx, dy;
+	struct weston_keyboard_grab keyboard_grab;
 };
 
 struct weston_pointer_drag {
@@ -139,6 +140,10 @@ data_offer_choose_action(struct weston_data_offer *offer)
 	if (!available_actions)
 		return WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE;
 
+	if (offer->source->seat &&
+	    offer->source->compositor_action & available_actions)
+		return offer->source->compositor_action;
+
 	/* If the dest side has a preferred DnD action, use it */
 	if ((preferred_action & available_actions) != 0)
 		return preferred_action;
@@ -611,9 +616,11 @@ static void
 data_device_end_pointer_drag_grab(struct weston_pointer_drag *drag)
 {
 	struct weston_pointer *pointer = drag->grab.pointer;
+	struct weston_keyboard *keyboard = drag->base.keyboard_grab.keyboard;
 
 	data_device_end_drag_grab(&drag->base, pointer->seat);
 	weston_pointer_end_grab(pointer);
+	weston_keyboard_end_grab(keyboard);
 	free(drag);
 }
 
@@ -706,9 +713,11 @@ static void
 data_device_end_touch_drag_grab(struct weston_touch_drag *drag)
 {
 	struct weston_touch *touch = drag->grab.touch;
+	struct weston_keyboard *keyboard = drag->base.keyboard_grab.keyboard;
 
 	data_device_end_drag_grab(&drag->base, touch->seat);
 	weston_touch_end_grab(touch);
+	weston_keyboard_end_grab(keyboard);
 	free(drag);
 }
 
@@ -800,6 +809,61 @@ static const struct weston_touch_grab_interface touch_drag_grab_interface = {
 };
 
 static void
+drag_grab_keyboard_key(struct weston_keyboard_grab *grab,
+		       uint32_t time, uint32_t key, uint32_t state)
+{
+}
+
+static void
+drag_grab_keyboard_modifiers(struct weston_keyboard_grab *grab,
+			     uint32_t serial, uint32_t mods_depressed,
+			     uint32_t mods_latched,
+			     uint32_t mods_locked, uint32_t group)
+{
+	struct weston_keyboard *keyboard = grab->keyboard;
+	struct weston_drag *drag =
+		container_of(grab, struct weston_drag, keyboard_grab);
+	uint32_t compositor_action;
+
+	if (mods_depressed & (1 << keyboard->xkb_info->shift_mod))
+		compositor_action = WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE;
+	else if (mods_depressed & (1 << keyboard->xkb_info->ctrl_mod))
+		compositor_action = WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY;
+	else
+		compositor_action = WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE;
+
+	drag->data_source->compositor_action = compositor_action;
+
+	if (drag->data_source->offer)
+		data_offer_update_action(drag->data_source->offer);
+}
+
+static void
+drag_grab_keyboard_cancel(struct weston_keyboard_grab *grab)
+{
+	struct weston_drag *drag =
+		container_of(grab, struct weston_drag, keyboard_grab);
+	struct weston_pointer *pointer = grab->keyboard->seat->pointer_state;
+	struct weston_touch *touch = grab->keyboard->seat->touch_state;
+
+	if (pointer && pointer->grab->interface == &pointer_drag_grab_interface) {
+		struct weston_touch_drag *touch_drag =
+			(struct weston_touch_drag *) drag;
+		drag_grab_touch_cancel(&touch_drag->grab);
+	} else if (touch && touch->grab->interface == &touch_drag_grab_interface) {
+		struct weston_pointer_drag *pointer_drag =
+			(struct weston_pointer_drag *) drag;
+		drag_grab_cancel(&pointer_drag->grab);
+	}
+}


Reply to: