.gitignore | 3 Makefile.am | 242 ++-- clients/desktop-shell.c | 79 - clients/dnd.c | 161 ++ clients/editor.c | 119 +- clients/eventdemo.c | 57 clients/fullscreen.c | 60 - clients/image.c | 2 clients/ivi-shell-user-interface.c | 41 clients/keyboard.c | 186 +-- clients/screenshot.c | 21 clients/simple-damage.c | 141 +- clients/simple-dmabuf-intel.c | 588 +++++++++ clients/simple-dmabuf-v4l.c | 944 ++++++++++++++++ clients/simple-dmabuf.c | 591 ---------- clients/simple-egl.c | 2 clients/simple-shm.c | 20 clients/smoke.c | 2 clients/stacking.c | 4 clients/terminal.c | 2 clients/weston-info.c | 34 clients/weston-simple-im.c | 130 +- clients/window.c | 277 +++- clients/window.h | 41 configure.ac | 120 +- debian/changelog | 22 debian/control | 5 debian/patches/0001-Add-suport-for-new-libsystemd.patch | 30 debian/patches/series | 1 debian/watch | 2 desktop-shell/exposay.c | 23 desktop-shell/input-panel.c | 17 desktop-shell/shell.c | 449 +++---- desktop-shell/shell.h | 6 doc/doxygen/tooldev.doxygen.in | 1 doc/doxygen/tools.doxygen.in | 1 fullscreen-shell/fullscreen-shell.c | 55 ivi-shell/hmi-controller.c | 612 +++++++--- ivi-shell/input-panel-ivi.c | 14 ivi-shell/ivi-layout-export.h | 2 ivi-shell/ivi-layout-private.h | 5 ivi-shell/ivi-layout-transition.c | 27 ivi-shell/ivi-layout.c | 373 +----- ivi-shell/ivi-shell.c | 54 ivi-shell/weston.ini.in | 3 man/weston.ini.man | 12 protocol/desktop-shell.xml | 138 -- protocol/fullscreen-shell.xml | 206 --- protocol/input-method.xml | 291 ---- protocol/linux-dmabuf.xml | 274 ---- protocol/screenshooter.xml | 12 protocol/text.xml | 374 ------ protocol/weston-desktop-shell.xml | 135 ++ protocol/weston-screenshooter.xml | 12 protocol/workspaces.xml | 27 protocol/xdg-shell.xml | 608 ---------- releasing.txt | 23 shared/cairo-util.h | 2 shared/frame.c | 17 shared/platform.h | 1 src/animation.c | 4 src/bindings.c | 10 src/clipboard.c | 2 src/cms-colord.c | 4 src/compositor-drm.c | 77 - src/compositor-fbdev.c | 91 - src/compositor-headless.c | 3 src/compositor-rdp.c | 34 src/compositor-rpi.c | 19 src/compositor-wayland.c | 357 +++++- src/compositor-x11.c | 97 + src/compositor.c | 350 +++++ src/compositor.h | 158 ++ src/data-device.c | 416 ++++++- src/gl-renderer.c | 448 ++++++- src/input.c | 418 +++++-- src/launcher-direct.c | 315 +++++ src/launcher-impl.h | 45 src/launcher-logind.c | 839 ++++++++++++++ src/launcher-util.c | 448 ------- src/launcher-util.h | 3 src/launcher-weston-launch.c | 300 +++++ src/libinput-device.c | 150 +- src/libinput-seat.c | 18 src/linux-dmabuf.c | 106 - src/linux-dmabuf.h | 14 src/logind-util.c | 940 --------------- src/logind-util.h | 123 -- src/main.c | 63 - src/pixman-renderer.c | 23 src/rpi-renderer.c | 5 src/screen-share.c | 56 src/screenshooter.c | 16 src/systemd-notify.c | 123 ++ src/text-backend.c | 145 +- src/vaapi-recorder.c | 4 src/zoom.c | 26 tests/config-parser-test.c | 44 tests/devices-test.c | 17 tests/internal-screenshot-test.c | 159 -- tests/ivi_layout-internal-test.c | 562 ++++----- tests/ivi_layout-test-plugin.c | 364 +++--- tests/text-test.c | 54 tests/weston-test-client-helper.c | 190 +++ tests/weston-test-client-helper.h | 16 tests/weston-test.c | 13 tools/zunitc/doc/zunitc.dox | 77 + tools/zunitc/inc/zunitc/zunitc.h | 119 +- tools/zunitc/test/fixtures_test.c | 6 tools/zunitc/test/zunitc_test.c | 6 weston.ini.in | 3 xwayland/dnd.c | 2 xwayland/selection.c | 30 xwayland/window-manager.c | 108 + xwayland/xwayland.h | 3 115 files changed, 8806 insertions(+), 6918 deletions(-)
New commits: commit 9f19aa60a7597ad11ae411600dc826044ae4ccac Author: Héctor Orón Martínez <zu...@debian.org> Date: Thu Jun 2 10:22:39 2016 +0200 debian/changelog: update release date Signed-off-by: Héctor Orón Martínez <zu...@debian.org> diff --git a/debian/changelog b/debian/changelog index f40ddf7..3ac13c0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,7 +2,7 @@ weston (1.10.0-1) unstable; urgency=medium * New upstream release - -- Héctor Orón Martínez <zu...@debian.org> Thu, 31 Mar 2016 14:22:25 +0200 + -- Héctor Orón Martínez <zu...@debian.org> Wed, 01 Jun 2016 13:35:05 +0200 weston (1.9.92-2) experimental; urgency=medium commit 16a7e6c4304098b1e4533da1606e98ebadfeb638 Author: Héctor Orón Martínez <zu...@debian.org> Date: Wed Jun 1 13:21:18 2016 +0200 Release Debian version weston-1.10.0-1 Signed-off-by: Héctor Orón Martínez <zu...@debian.org> diff --git a/debian/changelog b/debian/changelog index 8035fd9..f40ddf7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +weston (1.10.0-1) unstable; urgency=medium + + * New upstream release + + -- Héctor Orón Martínez <zu...@debian.org> Thu, 31 Mar 2016 14:22:25 +0200 + weston (1.9.92-2) experimental; urgency=medium * d/control: tighten build depend libwayland-dev versioning. commit fbd6913c839098605e113fa1b1227cb8d7c788d4 Author: Héctor Orón Martínez <zu...@debian.org> Date: Wed Jun 1 13:19:36 2016 +0200 d/control: bump standards version, no changes Signed-off-by: Héctor Orón Martínez <zu...@debian.org> diff --git a/debian/control b/debian/control index dee861d..ae33749 100644 --- a/debian/control +++ b/debian/control @@ -40,7 +40,7 @@ Build-Depends: libsystemd-dev, libinput-dev (>= 0.8.0), wayland-protocols, -Standards-Version: 3.9.6 +Standards-Version: 3.9.8 Homepage: http://wayland.freedesktop.org/ Vcs-Git: git://anonscm.debian.org/pkg-xorg/wayland/weston Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-xorg/wayland/weston.git commit d45de283ce1f9edafc6f33632fc917513c620912 Author: Bryce Harrington <br...@osg.samsung.com> Date: Tue Feb 16 12:37:43 2016 -0800 configure.ac: bump to version 1.10.0 for the official release diff --git a/configure.ac b/configure.ac index c32ddc9..adb0569 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], [93]) +m4_define([weston_major_version], [1]) +m4_define([weston_minor_version], [10]) +m4_define([weston_micro_version], [0]) 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.91 pixman-1 >= 0.25.2" +COMPOSITOR_MODULES="wayland-server >= 1.10.0 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.91]) +PKG_CHECK_MODULES(TEST_CLIENT, [wayland-client >= 1.10.0]) AC_ARG_ENABLE(simple-clients, AS_HELP_STRING([--disable-simple-clients], commit 9d24f23e4d6ae23f272d9a828523db504aaaf989 Author: Bryce Harrington <br...@osg.samsung.com> Date: Thu Feb 11 15:23:33 2016 -0800 releasing.txt: Script now figures out release name on its own diff --git a/releasing.txt b/releasing.txt index 2467e8e..3b0dbff 100644 --- a/releasing.txt +++ b/releasing.txt @@ -71,7 +71,7 @@ To make a release of Weston and/or Wayland, follow these steps. The register_release script in wayland-web will generate an HTML snippet that can be pasted into releases.html (or e.g. in emacs - insert it via "C-u M-! scripts/register_release x.y.z RC2") and + insert it via "C-u M-! scripts/register_release x.y.z") and customized. Once satisfied: commit 07d0d386daad6a4528b14521d86860e1f094a7ef Author: Bryce Harrington <br...@bryceharrington.org> Date: Tue Feb 9 13:36:00 2016 -0800 configure.ac: bump to version 1.9.93 for the RC1 release diff --git a/configure.ac b/configure.ac index bff6380..c32ddc9 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], [92]) +m4_define([weston_micro_version], [93]) m4_define([weston_version], [weston_major_version.weston_minor_version.weston_micro_version]) commit 6c19b69fcc6921344fe8f552bbbbe26b70549a65 Author: Derek Foreman <der...@osg.samsung.com> Date: Thu Dec 3 14:07:12 2015 -0600 compositor-drm: the cursor plane only supports ARGB Keep XRGB apps out of the cursor plane, only ARGB is supported. This prevents programs like weston-simple-shm from landing in the cursor plane and being misrendered. Signed-off-by: Derek Foreman <der...@osg.samsung.com> Reviewed-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> diff --git a/src/compositor-drm.c b/src/compositor-drm.c index 7666862..538e56e 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -1094,6 +1094,7 @@ drm_output_prepare_cursor_view(struct drm_output *output, struct drm_backend *b = (struct drm_backend *)output->base.compositor->backend; struct weston_buffer_viewport *viewport = &ev->surface->buffer_viewport; + struct wl_shm_buffer *shmbuf; if (ev->transform.enabled && (ev->transform.matrix.type > WESTON_MATRIX_TRANSFORM_TRANSLATE)) @@ -1112,9 +1113,14 @@ drm_output_prepare_cursor_view(struct drm_output *output, return NULL; if (ev->geometry.scissor_enabled) return NULL; - if (ev->surface->buffer_ref.buffer == NULL || - !wl_shm_buffer_get(ev->surface->buffer_ref.buffer->resource) || - ev->surface->width > b->cursor_width || + if (ev->surface->buffer_ref.buffer == NULL) + return NULL; + shmbuf = wl_shm_buffer_get(ev->surface->buffer_ref.buffer->resource); + if (!shmbuf) + return NULL; + if (wl_shm_buffer_get_format(shmbuf) != WL_SHM_FORMAT_ARGB8888) + return NULL; + if (ev->surface->width > b->cursor_width || ev->surface->height > b->cursor_height) return NULL; commit b0427569fd4a9ef40a4bd59c412f5ab9b17b944d Author: Derek Foreman <der...@osg.samsung.com> Date: Fri Feb 5 15:55:20 2016 -0600 compositor-drm: update internal cursor plane location when disabling cursor When the cursor plane is disabled the kernel can lose its location. If we don't update our internal idea of where the plane is at that time, the next time we set a cursor it can show up at 0,0. This can show up when an application is put in the cursor plane, removed from the plane, then put back at the same location. It might show up at 0,0 when it's reinstated. We now use INT32_MIN as a location for disabled cursors so enabling the plane will always cause an update. Reviewed-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> Signed-off-by: Derek Foreman <der...@osg.samsung.com> diff --git a/src/compositor-drm.c b/src/compositor-drm.c index 8b9882e..7666862 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -1174,6 +1174,8 @@ drm_output_set_cursor(struct drm_output *output) output->cursor_view = NULL; if (ev == NULL) { drmModeSetCursor(b->drm.fd, output->crtc_id, 0, 0, 0); + output->cursor_plane.x = INT32_MIN; + output->cursor_plane.y = INT32_MIN; return; } @@ -2430,7 +2432,8 @@ create_output_for_connector(struct drm_backend *b, output->base.gamma_size = output->original_crtc->gamma_size; output->base.set_gamma = drm_output_set_gamma; - weston_plane_init(&output->cursor_plane, b->compositor, 0, 0); + weston_plane_init(&output->cursor_plane, b->compositor, + INT32_MIN, INT32_MIN); weston_plane_init(&output->fb_plane, b->compositor, 0, 0); weston_compositor_stack_plane(b->compositor, &output->cursor_plane, NULL); commit 345b4f5b119d20ace14a6cb4a96a8b1d91c05659 Author: Marek Chalupa <mchqwe...@gmail.com> Date: Wed Feb 3 14:03:00 2016 +0100 compositor-x11: send pointer frame after axis event clients that implement pointer interface of version 5 wait for the frame event, so without it the scrolling does not work (GTK+ clients do not scroll now for example). Xcb axis events are discrete, so it's fine to send frame after every single axis event Signed-off-by: Marek Chalupa <mchqwe...@gmail.com> Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/src/compositor-x11.c b/src/compositor-x11.c index b70c119..13a5d73 100644 --- a/src/compositor-x11.c +++ b/src/compositor-x11.c @@ -1092,6 +1092,7 @@ x11_backend_deliver_button_event(struct x11_backend *b, notify_axis(&b->core_seat, weston_compositor_get_time(), &weston_event); + notify_pointer_frame(&b->core_seat); } return; case 5: @@ -1104,6 +1105,7 @@ x11_backend_deliver_button_event(struct x11_backend *b, notify_axis(&b->core_seat, weston_compositor_get_time(), &weston_event); + notify_pointer_frame(&b->core_seat); } return; case 6: @@ -1116,6 +1118,7 @@ x11_backend_deliver_button_event(struct x11_backend *b, notify_axis(&b->core_seat, weston_compositor_get_time(), &weston_event); + notify_pointer_frame(&b->core_seat); } return; case 7: @@ -1128,6 +1131,7 @@ x11_backend_deliver_button_event(struct x11_backend *b, notify_axis(&b->core_seat, weston_compositor_get_time(), &weston_event); + notify_pointer_frame(&b->core_seat); } return; default: commit 7314d2e4df77816d9ca71b0299f638aad49d2ad2 Author: Héctor Orón Martínez <zu...@debian.org> Date: Tue Feb 9 00:01:59 2016 +0100 Release Debian version weston-1.9.92-2 Signed-off-by: Héctor Orón Martínez <zu...@debian.org> diff --git a/debian/changelog b/debian/changelog index 5bc9dcf..8035fd9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,8 @@ -weston (1.9.92-2) UNRELEASED; urgency=medium +weston (1.9.92-2) experimental; urgency=medium * d/control: tighten build depend libwayland-dev versioning. - -- Héctor Orón Martínez <zu...@debian.org> Mon, 08 Feb 2016 23:57:24 +0100 + -- Héctor Orón Martínez <zu...@debian.org> Tue, 09 Feb 2016 00:00:10 +0100 weston (1.9.92-1) experimental; urgency=medium commit 666fe910aefc8815f4f1470e49cac9e250c07588 Author: Héctor Orón Martínez <zu...@debian.org> Date: Mon Feb 8 23:58:36 2016 +0100 d/control: tighten build depend libwayland-dev versioning. Signed-off-by: Héctor Orón Martínez <zu...@debian.org> diff --git a/debian/changelog b/debian/changelog index 1458028..5bc9dcf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +weston (1.9.92-2) UNRELEASED; urgency=medium + + * d/control: tighten build depend libwayland-dev versioning. + + -- Héctor Orón Martínez <zu...@debian.org> Mon, 08 Feb 2016 23:57:24 +0100 + weston (1.9.92-1) experimental; urgency=medium * New upstream release diff --git a/debian/control b/debian/control index d16a95b..dee861d 100644 --- a/debian/control +++ b/debian/control @@ -20,7 +20,7 @@ Build-Depends: libegl1-mesa-dev (>= 9.0~), libegl1-mesa-drivers (>= 9.0~), libgles2-mesa-dev (>= 9.0~), - libwayland-dev (>= 1.9.0), + libwayland-dev (>= 1.9.91), libxcb1-dev, libxcb-composite0-dev, libxcb-xfixes0-dev, commit 9d30b98327f72f66cf6c62ddf150de6c1487b2a4 Author: Héctor Orón Martínez <zu...@debian.org> Date: Mon Feb 8 16:25:27 2016 +0100 Release Debian version weston-1.9.92-1 Signed-off-by: Héctor Orón Martínez <zu...@debian.org> diff --git a/debian/changelog b/debian/changelog index 64bcb14..1458028 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -weston (1.9.92-1) UNRELEASED; urgency=medium +weston (1.9.92-1) experimental; urgency=medium * New upstream release * d/control: build depend on wayland-protocols commit 3c381dc8993f1cf00932497c663e3eb4c866f61d Author: Héctor Orón Martínez <zu...@debian.org> Date: Mon Feb 8 00:47:09 2016 +0100 add missing changelog entries Signed-off-by: Héctor Orón Martínez <zu...@debian.org> diff --git a/debian/changelog b/debian/changelog index dfb939e..64bcb14 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,9 @@ weston (1.9.92-1) UNRELEASED; urgency=medium * New upstream release * d/control: build depend on wayland-protocols + * d/watch: update https url + * d/p/0001-Add-suport-for-new-libsystemd.patch: drop + - merged upstream. -- Héctor Orón Martínez <zu...@debian.org> Sun, 07 Feb 2016 21:22:32 +0100 commit c774f988b9fd963bf4f3b2590ae7d6e34a0cd68e Author: Héctor Orón Martínez <zu...@debian.org> Date: Mon Feb 8 00:44:45 2016 +0100 d/control: build depend on wayland-protocols Signed-off-by: Héctor Orón Martínez <zu...@debian.org> diff --git a/debian/changelog b/debian/changelog index e2234cb..dfb939e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ weston (1.9.92-1) UNRELEASED; urgency=medium * New upstream release + * d/control: build depend on wayland-protocols -- Héctor Orón Martínez <zu...@debian.org> Sun, 07 Feb 2016 21:22:32 +0100 diff --git a/debian/control b/debian/control index f48be92..d16a95b 100644 --- a/debian/control +++ b/debian/control @@ -39,6 +39,7 @@ Build-Depends: libvpx-dev, libsystemd-dev, libinput-dev (>= 0.8.0), + wayland-protocols, Standards-Version: 3.9.6 Homepage: http://wayland.freedesktop.org/ Vcs-Git: git://anonscm.debian.org/pkg-xorg/wayland/weston commit cf0b6529a5f1997fb549f9bf510a0b4e90472e14 Author: Héctor Orón Martínez <zu...@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 <zu...@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 <zu...@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 <zu...@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 <zu...@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 <bi...@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 <zu...@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 <zu...@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 4e18448286ff27942ed3ad8fda568008c14eeff7 Author: Derek Foreman <der...@osg.samsung.com> Date: Mon Feb 1 14:36:57 2016 -0600 xwm: Don't clear the selection if it has no text type available weston maintains a copy of the most recently selected "thing" - it picks the first available type when it copies, and saves that one only. When an application quits weston will make the saved selection active. When xwm sees the selection set it will check if any of the offered types are text. If no text type is offered it will clear the selection. weston then interprets this in the same way as an application exiting and causing the selection to be unset, and we get caught in a live lock with both weston and xwayland consuming as much cpu as they can. The simple fix is to just remove the test for text presence. Signed-off-by: Derek Foreman <der...@osg.samsung.com> Reviewed-by: Carlos Garnacho <carl...@gnome.org> diff --git a/xwayland/selection.c b/xwayland/selection.c index 3fcd578..6f5328d 100644 --- a/xwayland/selection.c +++ b/xwayland/selection.c @@ -655,8 +655,6 @@ weston_wm_set_selection(struct wl_listener *listener, void *data) struct weston_wm *wm = container_of(listener, struct weston_wm, selection_listener); struct weston_data_source *source = seat->selection_data_source; - const char **p, **end; - int has_text_plain = 0; if (source == NULL) { if (wm->selection_owner == wm->selection_window) @@ -670,28 +668,10 @@ weston_wm_set_selection(struct wl_listener *listener, void *data) if (source->send == data_source_send) return; - p = source->mime_types.data; - end = (const char **) - ((char *) source->mime_types.data + source->mime_types.size); - while (p < end) { - weston_log(" %s\n", *p); - if (strcmp(*p, "text/plain") == 0 || - strcmp(*p, "text/plain;charset=utf-8") == 0) - has_text_plain = 1; - p++; - } - - if (has_text_plain) { - xcb_set_selection_owner(wm->conn, - wm->selection_window, - wm->atom.clipboard, - XCB_TIME_CURRENT_TIME); - } else { - xcb_set_selection_owner(wm->conn, - XCB_ATOM_NONE, - wm->atom.clipboard, - XCB_TIME_CURRENT_TIME); - } + xcb_set_selection_owner(wm->conn, + wm->selection_window, + wm->atom.clipboard, + XCB_TIME_CURRENT_TIME); } void commit 22b1f93432c775b6ed077c15a19e9e734a2806a5 Author: Bryce Harrington <br...@osg.samsung.com> Date: Wed Sep 23 17:30:43 2015 -0700 shell: Check more thoroughly for undefined surface resource The surface can have an undefined resource in certain situations (such as with xwayland). So, since NULL is a valid state for this parameter, and since the wl_resource_*, etc. calls require their parameters to be non-NULL, make a practice of always checking the surface resource before making wayland calls. update v2: * Fix some c/p errors for pointer names * Drop null ptr check in add_popup_grab; probably redundant now Signed-off-by: Bryce Harrington <br...@osg.samsung.com> Reviewed-by: Daniel Stone <dani...@collabora.com> diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index 5ae83ef..991effe 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -2098,7 +2098,7 @@ xdg_ping_timeout_handler(void *data) continue; shsurf = get_shell_surface(pointer->focus->surface); - if (shsurf && + if (shsurf && shsurf->resource && wl_resource_get_client(shsurf->resource) == sc->client) set_busy_cursor(shsurf, pointer); } @@ -2133,7 +2133,8 @@ handle_xdg_ping(struct shell_surface *shsurf, uint32_t serial) if (shell_surface_is_xdg_surface(shsurf) || shell_surface_is_xdg_popup(shsurf)) xdg_shell_send_ping(sc->resource, serial); - else if (shell_surface_is_wl_shell_surface(shsurf)) + else if (shell_surface_is_wl_shell_surface(shsurf) + && shsurf->resource) wl_shell_surface_send_ping(shsurf->resource, serial); } @@ -3342,7 +3343,9 @@ static const struct weston_touch_grab_interface touch_popup_grab_interface = { static void shell_surface_send_popup_done(struct shell_surface *shsurf) { - if (shell_surface_is_wl_shell_surface(shsurf)) + if (shsurf->resource == NULL) + return; + else if (shell_surface_is_wl_shell_surface(shsurf)) wl_shell_surface_send_popup_done(shsurf->resource); else if (shell_surface_is_xdg_popup(shsurf)) xdg_popup_send_popup_done(shsurf->resource); @@ -3589,7 +3592,8 @@ shell_destroy_shell_surface(struct wl_resource *resource) if (!wl_list_empty(&shsurf->popup.grab_link)) remove_popup_grab(shsurf); - wl_list_remove(wl_resource_get_link(shsurf->resource)); + if (shsurf->resource) + wl_list_remove(wl_resource_get_link(shsurf->resource)); shsurf->resource = NULL; } @@ -3767,6 +3771,10 @@ shell_get_shell_surface(struct wl_client *client, shsurf->resource = wl_resource_create(client, &wl_shell_surface_interface, 1, id); + if (!shsurf->resource) { + wl_resource_post_no_memory(surface_resource); + return; + } wl_resource_set_implementation(shsurf->resource, &shell_surface_implementation, shsurf, shell_destroy_shell_surface); @@ -4115,6 +4123,10 @@ xdg_get_xdg_surface(struct wl_client *client, shsurf->resource = wl_resource_create(client, &xdg_surface_interface, 1, id); + if (!shsurf->resource) { + wl_resource_post_no_memory(surface_resource); + return; + } wl_resource_set_implementation(shsurf->resource, &xdg_surface_implementation, shsurf, shell_destroy_shell_surface); @@ -4246,6 +4258,10 @@ xdg_get_xdg_popup(struct wl_client *client, shsurf->resource = wl_resource_create(client, &xdg_popup_interface, 1, id); + if (!shsurf->resource) { + wl_resource_post_no_memory(surface_resource); + return; + } wl_resource_set_implementation(shsurf->resource, &xdg_popup_implementation, shsurf, shell_destroy_shell_surface); @@ -4266,9 +4282,10 @@ xdg_pong(struct wl_client *client, static bool shell_surface_is_xdg_popup(struct shell_surface *shsurf) { - return wl_resource_instance_of(shsurf->resource, - &xdg_popup_interface, - &xdg_popup_implementation); + return (shsurf->resource && + wl_resource_instance_of(shsurf->resource, + &xdg_popup_interface, + &xdg_popup_implementation)); } static const struct xdg_shell_interface xdg_implementation = { commit 90c2789e8d83a5b090cf4b91a6770a93f08028a0 Author: Nobuhiko Tanibata <nobuhiko_tanib...@xddp.denso.co.jp> Date: Sat Dec 26 23:52:51 2015 +0900 ivi-layout: apply opacity to weston_view correctly update_opacity is only called when a ivi-surface is visible. But the previous code also checks event masks redundantly. However if the event happens when ivi-surface is invisible, opacity is not calculated. This patch removes this redundant check to fix potential bug. Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanib...@xddp.denso.co.jp> Reviewed-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c index 4ad7a5f..f7c4f27 100644 --- a/ivi-shell/ivi-layout.c +++ b/ivi-shell/ivi-layout.c @@ -322,12 +322,9 @@ update_opacity(struct ivi_layout_layer *ivilayer, double layer_alpha = wl_fixed_to_double(ivilayer->prop.opacity); double surf_alpha = wl_fixed_to_double(ivisurf->prop.opacity); - if ((ivilayer->event_mask & IVI_NOTIFICATION_OPACITY) || - (ivisurf->event_mask & IVI_NOTIFICATION_OPACITY)) { - tmpview = get_weston_view(ivisurf); - assert(tmpview != NULL); - tmpview->alpha = layer_alpha * surf_alpha; - } + tmpview = get_weston_view(ivisurf); + assert(tmpview != NULL); + tmpview->alpha = layer_alpha * surf_alpha; } static void commit 0cc4e986695decb384cbbb8ce0e5cd08d2905249 Author: Bryce Harrington <br...@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 <br...@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 <br...@osg.samsung.com> Reviewed-by: Derek Foreman <der...@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 <carl...@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 <carl...@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 <carl...@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 <carl...@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 <carl...@gnome.org> Date: Mon Feb 1 20:28:14 2016 +0100