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

weston: Changes to 'debian-unstable'



 .gitignore                            |   10 
 COPYING                               |   44 
 Makefile.am                           |  338 +++++--
 README                                |  149 +++
 clients/calibrator.c                  |   38 
 clients/clickdot.c                    |   34 
 clients/cliptest.c                    |   33 
 clients/desktop-shell.c               |   38 
 clients/dnd.c                         |   36 
 clients/editor.c                      |   37 
 clients/eventdemo.c                   |   42 
 clients/flower.c                      |   33 
 clients/fullscreen.c                  |   33 
 clients/gears.c                       |   33 
 clients/glmatrix.c                    | 1062 ----------------------
 clients/image.c                       |   37 
 clients/ivi-shell-user-interface.c    |   44 
 clients/keyboard.c                    |   33 
 clients/matrix3.xpm                   |  692 --------------
 clients/multi-resource.c              |   35 
 clients/nested-client.c               |   33 
 clients/nested.c                      |   36 
 clients/presentation-shm.c            |   86 +
 clients/resizor.c                     |   33 
 clients/scaler.c                      |   33 
 clients/screenshot.c                  |   35 
 clients/simple-damage.c               |   35 
 clients/simple-dmabuf.c               |  591 ++++++++++++
 clients/simple-egl.c                  |   35 
 clients/simple-shm.c                  |   35 
 clients/simple-touch.c                |   38 
 clients/smoke.c                       |   33 
 clients/stacking.c                    |   34 
 clients/subsurfaces.c                 |   40 
 clients/terminal.c                    |   90 -
 clients/transformed.c                 |   33 
 clients/weston-info.c                 |   40 
 clients/weston-simple-im.c            |   33 
 clients/window.c                      |  210 ++--
 clients/window.h                      |   49 -
 clients/wscreensaver-glue.c           |  148 ---
 clients/wscreensaver-glue.h           |  120 --
 clients/wscreensaver.c                |  348 -------
 clients/wscreensaver.h                |   63 -
 configure.ac                          |   75 +
 data/wayland.svg                      |   36 
 debian/changelog                      |    6 
 desktop-shell/exposay.c               |   85 +
 desktop-shell/input-panel.c           |   41 
 desktop-shell/shell.c                 |  746 +++++++--------
 desktop-shell/shell.h                 |   48 -
 doc/doxygen/devtools.dox              |   51 +
 doc/doxygen/tooldev.doxygen.in        |   11 
 doc/doxygen/tools.dox                 |   31 
 doc/doxygen/tools.doxygen.in          |   10 
 doc/doxygen/tools_arch_new.gv         |   85 +
 doc/doxygen/tools_arch_old.gv         |   53 +
 fullscreen-shell/fullscreen-shell.c   |   86 +
 ivi-shell/hmi-controller.c            |  141 +--
 ivi-shell/input-panel-ivi.c           |   43 
 ivi-shell/ivi-layout-export.h         |   58 -
 ivi-shell/ivi-layout-private.h        |   47 -
 ivi-shell/ivi-layout-transition.c     |   39 
 ivi-shell/ivi-layout.c                |  984 ++++++++++-----------
 ivi-shell/ivi-shell.c                 |   95 +-
 ivi-shell/ivi-shell.h                 |   37 
 man/weston.ini.man                    |   26 
 man/weston.man                        |    4 
 protocol/desktop-shell.xml            |    4 
 protocol/input-method.xml             |   38 
 protocol/ivi-application.xml          |   35 
 protocol/ivi-hmi-controller.xml       |   33 
 protocol/linux-dmabuf.xml             |  274 +++++
 protocol/presentation_timing.xml      |   38 
 protocol/scaler.xml                   |   38 
 protocol/text.xml                     |   48 -
 protocol/weston-test.xml              |   38 
 protocol/xdg-shell.xml                |   80 +
 releasing.txt                         |    9 
 shared/cairo-util.c                   |   38 
 shared/cairo-util.h                   |   37 
 shared/config-parser.c                |   40 
 shared/config-parser.h                |   35 
 shared/file-util.c                    |   35 
 shared/file-util.h                    |   35 
 shared/frame.c                        |   35 
 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                     |   35 
 shared/timespec-util.h                |   75 +
 shared/zalloc.h                       |   35 
 src/animation.c                       |   36 
 src/bindings.c                        |  121 +-
 src/clipboard.c                       |   36 
 src/cms-colord.c                      |   90 +
 src/cms-helper.c                      |   35 
 src/cms-helper.h                      |   35 
 src/cms-static.c                      |   41 
 src/compositor-drm.c                  | 1202 +++++++++++++++----------
 src/compositor-fbdev.c                |  213 ++--
 src/compositor-headless.c             |  140 +-
 src/compositor-rdp.c                  |  268 +++--
 src/compositor-rpi.c                  |  194 ++--
 src/compositor-wayland.c              |  436 ++++-----
 src/compositor-x11.c                  |  635 +++++++------
 src/compositor.c                      | 1000 +++------------------
 src/compositor.h                      |  141 +--
 src/data-device.c                     |   82 -
 src/dbus.c                            |   35 
 src/dbus.h                            |   35 
 src/gl-renderer.c                     |  361 ++++++-
 src/gl-renderer.h                     |   35 
 src/input.c                           |  410 +++++---
 src/launcher-util.c                   |   35 
 src/launcher-util.h                   |   35 
 src/libbacklight.c                    |    2 
 src/libbacklight.h                    |   32 
 src/libinput-device.c                 |   36 
 src/libinput-device.h                 |   35 
 src/libinput-seat.c                   |   66 -
 src/libinput-seat.h                   |   35 
 src/linux-dmabuf.c                    |  497 ++++++++++
 src/linux-dmabuf.h                    |   84 +
 src/log.c                             |   42 
 src/logind-util.c                     |   37 
 src/logind-util.h                     |   35 
 src/main.c                            |  851 ++++++++++++++++++
 src/noop-renderer.c                   |   35 
 src/pixman-renderer.c                 |   38 
 src/pixman-renderer.h                 |   35 
 src/rpi-renderer.c                    |  109 --
 src/rpi-renderer.h                    |   35 
 src/screen-share.c                    |   66 -
 src/screenshooter.c                   |   54 -
 src/spring-tool.c                     |   35 
 src/text-backend.c                    |  262 +++--
 src/timeline-object.h                 |   35 
 src/timeline.c                        |   35 
 src/timeline.h                        |   35 
 src/vaapi-recorder.c                  |   47 -
 src/vaapi-recorder.h                  |   35 
 src/version.h.in                      |   35 
 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                            |   76 -
 tests/bad-buffer-test.c               |   37 
 tests/buffer-count-test.c             |   37 
 tests/button-test.c                   |   35 
 tests/config-parser-test.c            |  406 +++++++-
 tests/devices-test.c                  |   35 
 tests/event-test.c                    |   35 
 tests/internal-screenshot-test.c      |   60 -
 tests/ivi-shell-app-test.c            |   35 
 tests/ivi-test.h                      |   39 
 tests/ivi_layout-internal-test.c      | 1125 +++++++++++++++++++++++-
 tests/ivi_layout-test-plugin.c        |  787 +++++++++++++++-
 tests/ivi_layout-test.c               |  271 +++++
 tests/keyboard-test.c                 |   37 
 tests/matrix-test.c                   |   37 
 tests/presentation-test.c             |   36 
 tests/roles-test.c                    |   35 
 tests/setbacklight.c                  |   35 
 tests/subsurface-test.c               |   35 
 tests/surface-global-test.c           |   37 
 tests/surface-screenshot.c            |   45 
 tests/surface-test.c                  |   37 
 tests/text-test.c                     |   35 
 tests/vertex-clip-test.c              |   38 
 tests/weston-test-client-helper.c     |   39 
 tests/weston-test-client-helper.h     |   36 
 tests/weston-test-runner.c            |   35 
 tests/weston-test-runner.h            |   39 
 tests/weston-test.c                   |   50 -
 tests/xwayland-test.c                 |   35 
 tools/zunitc/doc/zunitc.dox           |  159 +++
 tools/zunitc/inc/zunitc/zunitc.h      |  696 ++++++++++++++
 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                         |    5 
 xwayland/dnd.c                        |   38 
 xwayland/launcher.c                   |   36 
 xwayland/selection.c                  |   56 -
 xwayland/window-manager.c             |  143 +--
 xwayland/xwayland.h                   |   35 
 209 files changed, 17733 insertions(+), 9097 deletions(-)

New commits:
commit 3aa1033da9a250d00af5a1f218e32974ddfda392
Author: Héctor Orón Martínez <zumbi@debian.org>
Date:   Sun Sep 27 00:19:06 2015 +0200

    Release Debian version weston-1.9.0-1
    
    Signed-off-by: Héctor Orón Martínez <zumbi@debian.org>

diff --git a/debian/changelog b/debian/changelog
index eb5e0e2..dafb066 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+weston (1.9.0-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Héctor Orón Martínez <zumbi@debian.org>  Sun, 27 Sep 2015 00:18:22 +0200
+
 weston (1.8.0-3) unstable; urgency=medium
 
   * Add support for new libsystemd.

commit b05cdb82f7465381288d051b57a9468c77f7e45a
Author: Bryce Harrington <bryce@osg.samsung.com>
Date:   Mon Sep 21 18:11:26 2015 -0700

    configure.ac: bump to version 1.9.0 for the official release

diff --git a/configure.ac b/configure.ac
index 1978705..acb9b02 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 m4_define([weston_major_version], [1])
-m4_define([weston_minor_version], [8])
-m4_define([weston_micro_version], [93])
+m4_define([weston_minor_version], [9])
+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.8.0 pixman-1 >= 0.25.2"
+COMPOSITOR_MODULES="wayland-server >= 1.9.0 pixman-1 >= 0.25.2"
 
 AC_CONFIG_FILES([doc/doxygen/tools.doxygen doc/doxygen/tooldev.doxygen])
 
@@ -317,7 +317,7 @@ AC_SUBST(JPEG_LIBS)
 
 PKG_CHECK_MODULES(CAIRO, [cairo])
 
-PKG_CHECK_MODULES(TEST_CLIENT, [wayland-client >= 1.8.0])
+PKG_CHECK_MODULES(TEST_CLIENT, [wayland-client >= 1.9.0])
 
 AC_ARG_ENABLE(simple-clients,
               AS_HELP_STRING([--disable-simple-clients],

commit 90e2d07ec1e6e46136e7b43f427a838f3e5b01ed
Author: Bryce Harrington <bryce@osg.samsung.com>
Date:   Thu Sep 17 16:33:48 2015 -0700

    releasing: Note need for pgp signing announcement

diff --git a/releasing.txt b/releasing.txt
index 1380361..f35a2e0 100644
--- a/releasing.txt
+++ b/releasing.txt
@@ -22,7 +22,8 @@ To make a release of Weston and/or Wayland, follow these steps.
       you install it to a location other than /usr/bin/Xwayland, specify
       this in the following env var:
 
-      export DISTCHECK_CONFIGURE_FLAGS="--with-xserver-path=<your-Xwayland-path>"
+	  XWAYLAND=$(which Xwayland)  # Or specify your own path
+      export DISTCHECK_CONFIGURE_FLAGS="--with-xserver-path=$XWAYLAND"
 
       If you're using a locally installed libinput or other dependency
       libraries, you'll likely need to set a few other environment
@@ -58,7 +59,7 @@ To make a release of Weston and/or Wayland, follow these steps.
       listing of the most notable changes.  For x.y.0 releases, indicate
       the schedule for the x.y+1.0 release.
 
-  5.  Send the release announcements to
+  5.  pgp sign the the release announcements and send them to
       wayland-devel@lists.freedesktop.org
 
   6.  Get your freshly posted release email URL from

commit 30e24ed51c37dad7846188ae1bd83f207961beb8
Author: Bryce Harrington <bryce@osg.samsung.com>
Date:   Tue Sep 15 20:20:37 2015 -0700

    configure.ac: bump to version 1.8.93 for the RC1 release

diff --git a/configure.ac b/configure.ac
index 17a3754..1978705 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 m4_define([weston_major_version], [1])
 m4_define([weston_minor_version], [8])
-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 45a7c27f2b69870ad2fe516ab1290a6a14d2d08a
Author: Derek Foreman <derekf@osg.samsung.com>
Date:   Fri Sep 11 14:27:40 2015 -0500

    clients: If available, prefer top level surfaces for move or rotate
    
    This stops us from rotating or moving pop-up menus by instead rotating
    their parents.
    
    This is easiest to see using a multi-seat configuration.
    
    Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
    Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index ecc42c5..3c6a3da 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -481,6 +481,25 @@ get_output_work_area(struct desktop_shell *shell,
 	}
 }
 
+static struct shell_surface *
+find_toplevel_surface(struct shell_surface *in_surface)
+{
+	struct shell_surface *surface = in_surface;
+
+	if (!surface)
+		return NULL;
+
+	while (surface->parent)
+		surface = get_shell_surface(surface->parent);
+
+	/* If no top level surface was found, just use whatever surface was
+	   originally provided. */
+	if (!surface || surface->type != SHELL_SURFACE_TOPLEVEL)
+		surface = in_surface;
+
+	return surface;
+}
+
 static void
 send_configure_for_surface(struct shell_surface *shsurf)
 {
@@ -1770,6 +1789,8 @@ surface_move(struct shell_surface *shsurf, struct weston_pointer *pointer,
 	if (!shsurf)
 		return -1;
 
+	shsurf = find_toplevel_surface(shsurf);
+
 	if (shsurf->grabbed ||
 	    shsurf->state.fullscreen || shsurf->state.maximized)
 		return 0;
@@ -4994,6 +5015,8 @@ surface_rotate(struct shell_surface *surface, struct weston_pointer *pointer)
 	float dx, dy;
 	float r;
 
+	surface = find_toplevel_surface(surface);
+
 	rotate = malloc(sizeof *rotate);
 	if (!rotate)
 		return;

commit c0c1497f999cea4d488ed334636b00b227fdca13
Author: Derek Foreman <derekf@osg.samsung.com>
Date:   Fri Sep 11 14:30:39 2015 -0500

    shell: Make sure we actually have a resource in end_busy_cursor
    
    It's actually possible to get here after the surface has been destroyed,
    especially when running client apps under valgrind.
    
    That probably shouldn't be able to segfault the compositor.
    
    Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
    Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 034d39b..ecc42c5 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -2119,6 +2119,7 @@ end_busy_cursor(struct weston_compositor *compositor, struct wl_client *client)
 
 		grab = (struct shell_grab *) pointer->grab;
 		if (grab->grab.interface == &busy_cursor_grab_interface &&
+		    grab->shsurf->resource &&
 		    wl_resource_get_client(grab->shsurf->resource) == client) {
 			shell_grab_end(grab);
 			free(grab);

commit ca510d06dca3e47e434a50cee105e96c9e82599c
Author: John Sadler <deathofathousandpapercuts@gmail.com>
Date:   Sat Sep 5 15:01:38 2015 +0100

    rpi: fix segfault at startup in rpi_flippipe_init() v2
    
    When running with the RPi backend, Weston now segfaults at startup on the
    line:
    
        flippipe->clk_id = output->base.compositor->presentation_clock;
    
    in `rpi_flippipe_init()`.
    
    This is because `output->base.compositor` is NULL. This problem did not
    exist on 1.8.0, and it looks like it may have been introduced by 954f183e2f.
    
    This commit ensures that the `compositor` is initialised in `rpi_backend`
    and that flippipe init uses the compositor pointer from backend.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91885
    
    Signed-off-by: John Sadler <deathofathousandpapercuts@gmail.com>
    
    Changes in v2:
    - fix summary to not break the build
    - use output->backend->compositor in rpi_flippipe_init() instead of
      output->base.compositor. The latter is set by weston_output_init()
      which gets called later than rpi_flippipe_init().
    
    Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
    Tested-by: John Sadler <deathofathousandpapercuts@gmail.com>

diff --git a/src/compositor-rpi.c b/src/compositor-rpi.c
index 5d7f41d..83c01b4 100644
--- a/src/compositor-rpi.c
+++ b/src/compositor-rpi.c
@@ -184,6 +184,7 @@ rpi_flippipe_handler(int fd, uint32_t mask, void *data)
 static int
 rpi_flippipe_init(struct rpi_flippipe *flippipe, struct rpi_output *output)
 {
+	struct weston_compositor *compositor = output->backend->compositor;
 	struct wl_event_loop *loop;
 	int fd[2];
 
@@ -192,9 +193,9 @@ rpi_flippipe_init(struct rpi_flippipe *flippipe, struct rpi_output *output)
 
 	flippipe->readfd = fd[0];
 	flippipe->writefd = fd[1];
-	flippipe->clk_id = output->base.compositor->presentation_clock;
+	flippipe->clk_id = compositor->presentation_clock;
 
-	loop = wl_display_get_event_loop(output->base.compositor->wl_display);
+	loop = wl_display_get_event_loop(compositor->wl_display);
 	flippipe->source = wl_event_loop_add_fd(loop, flippipe->readfd,
 						WL_EVENT_READABLE,
 						rpi_flippipe_handler, output);
@@ -498,6 +499,7 @@ rpi_backend_create(struct weston_compositor *compositor,
 	backend->base.destroy = rpi_backend_destroy;
 	backend->base.restore = rpi_restore;
 
+	backend->compositor = compositor;
 	backend->prev_state = WESTON_COMPOSITOR_ACTIVE;
 	backend->single_buffer = param->renderer.single_buffer;
 

commit 7978bc82dd056933a3998c54d9a7bd43cecae19f
Author: Derek Foreman <derekf@osg.samsung.com>
Date:   Wed Sep 2 16:21:54 2015 -0500

    terminal: Don't crash when selecting non-ascii characters
    
    So it turns out if you cat /dev/urandom and drag select in the mess
    you can crash weston-terminal.  There may also be more legitimate
    ways of doing this.
    
    The reason is that isalpha() and isdigit() only accept values that
    fit within an unsigned char or are EOF.
    
    By treating values < 0 the same as values > 127 we prevent this crash.
    
    Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
    Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>

diff --git a/clients/terminal.c b/clients/terminal.c
index f1d8fc0..c5d5d60 100644
--- a/clients/terminal.c
+++ b/clients/terminal.c
@@ -2579,7 +2579,7 @@ static int wordsep(int ch)
 {
 	const char extra[] = "-,./?%&#:_=+@~";
 
-	if (ch > 127)
+	if (ch > 127 || ch < 0)
 		return 1;
 
 	return ch == 0 || !(isalpha(ch) || isdigit(ch) || strchr(extra, ch));

commit 617933840bd3c190d0bd3c4aa4acf99d3caea016
Author: Derek Foreman <derekf@osg.samsung.com>
Date:   Wed Sep 2 13:45:20 2015 -0500

    compositor-fbdev: Remove bizarre division by sizeof
    
    Really not sure why this was even here - it worked because
    we were dividing by 1.
    
    Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
    Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>

diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c
index a5c7947..81281d0 100644
--- a/src/compositor-fbdev.c
+++ b/src/compositor-fbdev.c
@@ -337,7 +337,7 @@ fbdev_query_screen_info(struct fbdev_output *output, int fd,
 
 	info->buffer_length = fixinfo.smem_len;
 	info->line_length = fixinfo.line_length;
-	strncpy(info->id, fixinfo.id, sizeof(info->id) / sizeof(*info->id));
+	strncpy(info->id, fixinfo.id, sizeof(info->id));
 
 	info->pixel_format = calculate_pixman_format(&varinfo, &fixinfo);
 	info->refresh_rate = calculate_refresh_rate(&varinfo);

commit 3f32a13acdd2b98c87f96a94ee7089df4fd429af
Author: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Date:   Mon Sep 7 15:38:43 2015 +0300

    Revert "compositor-drm: disable hardware cursors"
    
    This reverts commit 6858383d51b12632481370fdc7d886a1e6bb4ebd.
    
    The main reason for the original patch was a regression on the Intel
    drivers causing compositor framerate to drop to half during cursor
    updates or motion. The Intel problem was fixed in
    https://github.com/torvalds/linux/commit/2e7f43c41c042d6fed4d67aceeaae32d8f102e98
    The fix is included in Linux 4.1-rc6 and 4.0.5.
    
    The comment in the original patch is still true, but arguably the
    possible minor glitches with cursor updates are less bad than not using
    cursor planes at all.
    
    Cc: nerdopolis <bluescreen_avenger@verizon.net>
    Cc: Daniel Stone <daniel@fooishbar.org>
    Cc: Giulio Camuffo <giuliocamuffo@gmail.com>
    Cc: David FORT <contact@hardening-consulting.com>
    Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
    Tested-by: Giulio Camuffo <giuliocamuffo@gmail.com>
    Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index f5f125a..6777bf8 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -3075,12 +3075,12 @@ drm_backend_create(struct weston_compositor *compositor,
 	 * without nuclear page flip. Without nuclear/atomic, hw plane
 	 * and cursor plane updates would either tear or cause extra
 	 * waits for vblanks which means dropping the compositor framerate
-	 * to a fraction.
+	 * to a fraction. For cursors, it's not so bad, so they are
+	 * enabled.
 	 *
 	 * These can be enabled again when nuclear/atomic support lands.
 	 */
 	b->sprites_are_broken = 1;
-	b->cursors_are_broken = 1;
 	b->compositor = compositor;
 
 	section = weston_config_get_section(config, "core", NULL, NULL);

commit ae6f1bb3f7f7cc90523f6fa184c52ee8d77d9bc5
Author: Bryce Harrington <bryce@osg.samsung.com>
Date:   Tue Sep 8 19:24:12 2015 -0700

    clients: Fix height typo in clamp_view()
    
    We should be checking our scaled image height against the allocation
    height rather than the allocation width.
    
    Fixes vertical image motion when horizontal motion restricted, i.e.
    when window is wide and short compared to the image.
    
    Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
    Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>

diff --git a/clients/image.c b/clients/image.c
index d28f221..4126305 100644
--- a/clients/image.c
+++ b/clients/image.c
@@ -93,7 +93,7 @@ clamp_view(struct image *image)
 			image->matrix.x0 = allocation.width - sw;
 	}
 
-	if (sh < allocation.width) {
+	if (sh < allocation.height) {
 		image->matrix.y0 =
 			(allocation.height - image->height * scale) / 2;
 	} else {

commit 76287896408841428804ab94dce2adb8b0b896e3
Author: John Sadler <deathofathousandpapercuts@gmail.com>
Date:   Sat Sep 5 15:01:40 2015 +0100

    rpi: prevent segfault on shut-down due to NULL backend
    
    When running with the RPi backend, Weston sefaults during shutdown. This is
    due to the fact that `compositor->backend` is never initialised, and there
    is no NULL check prior to calling `destroy()`.
    
    This commit fixes the issue by making `rpi_backend_create()` intialise
    `compositor->backend` - just like the X11 backend does.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91886
    
    Signed-off-by: John Sadler <deathofathousandpapercuts@gmail.com>
    Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>

diff --git a/src/compositor-rpi.c b/src/compositor-rpi.c
index 602cbee..5d7f41d 100644
--- a/src/compositor-rpi.c
+++ b/src/compositor-rpi.c
@@ -531,6 +531,8 @@ rpi_backend_create(struct weston_compositor *compositor,
 		goto out_launcher;
 	}
 
+	compositor->backend = &backend->base;
+
 	return backend;
 
 out_launcher:

commit 960b5ebd825763c89386f265cb377092beee061a
Author: John Sadler <deathofathousandpapercuts@gmail.com>
Date:   Sat Sep 5 15:01:39 2015 +0100

    rpi: avoid segfault in rpir_view_compute_rects() when EGL client destroys buffer
    
    This commit works-around a serious issue when running with the RPi backend.
    When an EGL client shuts down and destroys it's EGL window, Weston dies with
    a segmentation fault in the above function (because `buffer` is now NULL).
    
    The addition of a simple NULL check avoids the problem.
    
    This is a minor re-formatting of the patch already submitted here:
    
      http://patchwork.freedesktop.org/patch/34885
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85167
    
    Signed-off-by: John Sadler <deathofathousandpapercuts@gmail.com>
    Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>

diff --git a/src/rpi-renderer.c b/src/rpi-renderer.c
index a096033..d0a9797 100644
--- a/src/rpi-renderer.c
+++ b/src/rpi-renderer.c
@@ -703,6 +703,9 @@ rpir_view_compute_rects(struct rpir_view *view,
 		struct weston_buffer *buffer =
 			view->surface->egl_front->buffer_ref.buffer;
 
+		if (!buffer)
+			return -1;
+
 		src_width = buffer->width << 16;
 		src_height = buffer->height << 16;
 	} else {

commit cdb91d019f9d3af7ffe6df3ccbe27c1bdac47791
Author: Bryce Harrington <bryce@osg.samsung.com>
Date:   Tue Sep 1 16:58:25 2015 -0700

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

diff --git a/configure.ac b/configure.ac
index 425f071..17a3754 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 m4_define([weston_major_version], [1])
 m4_define([weston_minor_version], [8])
-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 4412cd1974adf65359d127af12cc815d79469f34
Author: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Date:   Mon Aug 24 09:12:37 2015 +0900

    hmi-controller: fix wrong width and height are set to a layer of workspace.
    
    Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
    Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
    Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>

diff --git a/ivi-shell/hmi-controller.c b/ivi-shell/hmi-controller.c
index 19ceef2..c388164 100644
--- a/ivi-shell/hmi-controller.c
+++ b/ivi-shell/hmi-controller.c
@@ -1287,8 +1287,8 @@ move_workspace_grab_end(struct move_grab *move, struct wl_resource* resource,
 					duration);
 	ivi_controller_interface->layer_set_destination_rectangle(layer,
 				end_pos, pos_y,
-				hmi_ctrl->workspace_background_layer.width,
-				hmi_ctrl->workspace_background_layer.height);
+				hmi_ctrl->workspace_layer.width,
+				hmi_ctrl->workspace_layer.height);
 	ivi_controller_interface->commit_changes();
 }
 

commit d290f881d5004af1758ceda146b911fcd1637e2d
Author: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Date:   Mon Aug 24 09:12:23 2015 +0900

    hmi-controller: fix the laucher layer width
    
    A layer for workspace is used to display icons for invoking applications
    in several pages. These pages are swapped from one to next page. The
    width of the layer was decided as a size of screen before reading
    weston.ini. This worked correctly because there was no feature of
    clipping of layer so the width of layer was not taken account.
    
    Now clipping feature is supported. So the width shall be set to correct
    one after reading weston.ini.
    
    Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
    Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
    Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>

diff --git a/ivi-shell/hmi-controller.c b/ivi-shell/hmi-controller.c
index 760bf06..19ceef2 100644
--- a/ivi-shell/hmi-controller.c
+++ b/ivi-shell/hmi-controller.c
@@ -725,27 +725,9 @@ hmi_controller_create(struct weston_compositor *ec)
 	ivi_controller_interface->layer_set_visibility(
 		hmi_ctrl->workspace_background_layer.ivilayer, false);
 
-	/* init workspace ivi_layer */
-	hmi_ctrl->workspace_layer.x = hmi_ctrl->workspace_background_layer.x;
-	hmi_ctrl->workspace_layer.y = hmi_ctrl->workspace_background_layer.y;
-	hmi_ctrl->workspace_layer.width =
-		hmi_ctrl->workspace_background_layer.width;
-	hmi_ctrl->workspace_layer.height =
-		hmi_ctrl->workspace_background_layer.height;
-	hmi_ctrl->workspace_layer.id_layer =
-		hmi_ctrl->hmi_setting->workspace_layer_id;
-
-	create_layer(iviscrn, &hmi_ctrl->workspace_layer);
-	ivi_controller_interface->layer_set_opacity(hmi_ctrl->workspace_layer.ivilayer, 0);
-	ivi_controller_interface->layer_set_visibility(hmi_ctrl->workspace_layer.ivilayer,
-					false);
 
 	wl_list_init(&hmi_ctrl->workspace_fade.layer_list);
 	tmp_link_layer = MEM_ALLOC(sizeof(*tmp_link_layer));
-	tmp_link_layer->layout_layer = hmi_ctrl->workspace_layer.ivilayer;
-	wl_list_insert(&hmi_ctrl->workspace_fade.layer_list,
-		       &tmp_link_layer->link);
-	tmp_link_layer = MEM_ALLOC(sizeof(*tmp_link_layer));
 	tmp_link_layer->layout_layer =
 		hmi_ctrl->workspace_background_layer.ivilayer;
 	wl_list_insert(&hmi_ctrl->workspace_fade.layer_list,
@@ -980,12 +962,11 @@ static void
 ivi_hmi_controller_add_launchers(struct hmi_controller *hmi_ctrl,
 				 int32_t icon_size)
 {
-	struct ivi_layout_layer *layer = hmi_ctrl->workspace_layer.ivilayer;
 	int32_t minspace_x = 10;
 	int32_t minspace_y = minspace_x;
 
-	int32_t width  = hmi_ctrl->workspace_layer.width;
-	int32_t height = hmi_ctrl->workspace_layer.height;
+	int32_t width  = hmi_ctrl->workspace_background_layer.width;
+	int32_t height = hmi_ctrl->workspace_background_layer.height;
 
 	int32_t x_count = (width - minspace_x) / (minspace_x + icon_size);
 	int32_t space_x = (int32_t)((width - x_count * icon_size) / (1.0 + x_count));
@@ -1015,6 +996,11 @@ ivi_hmi_controller_add_launchers(struct hmi_controller *hmi_ctrl,
 	struct ivi_layout_surface* layout_surface = NULL;
 	uint32_t *add_surface_id = NULL;
 
+	struct ivi_layout_screen *iviscrn = NULL;
+	struct link_layer *tmp_link_layer = NULL;
+	struct ivi_layout_screen **pp_screen = NULL;
+	int32_t screen_length  = 0;
+
 	if (0 == x_count)
 		x_count = 1;
 
@@ -1091,16 +1077,10 @@ ivi_hmi_controller_add_launchers(struct hmi_controller *hmi_ctrl,
 			ivi_controller_interface->get_surface_from_id(data->surface_id);
 		assert(layout_surface);
 
-		ret = ivi_controller_interface->layer_add_surface(layer, layout_surface);
-		assert(!ret);
-
 		ret = ivi_controller_interface->surface_set_destination_rectangle(
 				layout_surface, x, y, icon_size, icon_size);
 		assert(!ret);
 
-		ret = ivi_controller_interface->surface_set_visibility(layout_surface, true);
-		assert(!ret);
-
 		nx++;
 
 		if (x_count == nx) {
@@ -1109,6 +1089,43 @@ ivi_hmi_controller_add_launchers(struct hmi_controller *hmi_ctrl,
 		}
 	}
 
+	/* init workspace ivi_layer */
+	hmi_ctrl->workspace_layer.x = hmi_ctrl->workspace_background_layer.x;
+	hmi_ctrl->workspace_layer.y = hmi_ctrl->workspace_background_layer.y;
+	hmi_ctrl->workspace_layer.width =
+		hmi_ctrl->workspace_background_layer.width * hmi_ctrl->workspace_count;
+	hmi_ctrl->workspace_layer.height =
+		hmi_ctrl->workspace_background_layer.height;
+	hmi_ctrl->workspace_layer.id_layer =
+		hmi_ctrl->hmi_setting->workspace_layer_id;
+
+	ivi_controller_interface->get_screens(&screen_length, &pp_screen);
+	iviscrn = pp_screen[0];
+	free(pp_screen);
+	create_layer(iviscrn, &hmi_ctrl->workspace_layer);
+	ivi_controller_interface->layer_set_opacity(hmi_ctrl->workspace_layer.ivilayer, 0);
+	ivi_controller_interface->layer_set_visibility(hmi_ctrl->workspace_layer.ivilayer,
+					false);
+
+	tmp_link_layer = MEM_ALLOC(sizeof(*tmp_link_layer));
+	tmp_link_layer->layout_layer = hmi_ctrl->workspace_layer.ivilayer;
+	wl_list_insert(&hmi_ctrl->workspace_fade.layer_list,
+		       &tmp_link_layer->link);
+
+	/* Add surface to layer */
+	wl_array_for_each(data, &launchers) {
+		layout_surface =
+			ivi_controller_interface->get_surface_from_id(data->surface_id);
+		assert(layout_surface);
+
+		ret = ivi_controller_interface->layer_add_surface(hmi_ctrl->workspace_layer.ivilayer,
+								  layout_surface);
+		assert(!ret);
+
+		ret = ivi_controller_interface->surface_set_visibility(layout_surface, true);
+		assert(!ret);
+	}
+
 	wl_array_release(&launchers);
 	ivi_controller_interface->commit_changes();
 }

commit acbcc6c9788226fca601155123dbfdcd96f0ccee
Author: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Date:   Mon Aug 24 10:24:15 2015 +0900

    ivi-layout: implement surface clipping
    
    View clip region is set in surface-local coordinates. To compute that
    region, the ivi-layer destination rectangle in the global coordinates
    are transformed back into the surface-local coordinates.
    
    The transformation is computed by first forming the transformation
    matric for the forward mappings, and then inverting it. The inverse
    matric is used to transform the destination rectangles to the
    surface-local coordinate system. The intersection of the rectangles is
    the view clip mask.
    
    Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
    Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
    Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>

diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c
index 827359a..24bd8dd 100644
--- a/ivi-shell/ivi-layout.c
+++ b/ivi-shell/ivi-layout.c
@@ -67,6 +67,8 @@
 #include "shared/helpers.h"
 #include "shared/os-compatibility.h"
 
+#define max(a, b) ((a) > (b) ? (a) : (b))
+
 struct link_layer {
 	struct ivi_layout_layer *ivilayer;
 	struct wl_list link;
@@ -567,18 +569,127 @@ calc_transformation_matrix(struct ivi_rectangle *source_rect,
 	weston_matrix_translate(m, translate_x, translate_y, 0.0f);
 }
 
+/*
+ * This computes intersected rect_output from two ivi_rectangles
+ */
+static void
+ivi_rectangle_intersect(const struct ivi_rectangle *rect1,
+		        const struct ivi_rectangle *rect2,
+		        struct ivi_rectangle *rect_output)
+{
+	int32_t rect1_right = rect1->x + rect1->width;
+	int32_t rect1_bottom = rect1->y + rect1->height;
+	int32_t rect2_right = rect2->x + rect2->width;
+	int32_t rect2_bottom = rect2->y + rect2->height;
+
+	rect_output->x = max(rect1->x, rect2->x);
+	rect_output->y = max(rect1->y, rect2->y);
+	rect_output->width = rect1_right < rect2_right ?
+			     rect1_right - rect_output->x :
+			     rect2_right - rect_output->x;
+	rect_output->height = rect1_bottom < rect2_bottom ?
+			      rect1_bottom - rect_output->y :
+			      rect2_bottom - rect_output->y;
+
+	if (rect_output->width < 0 || rect_output->height < 0) {
+		rect_output->width = 0;
+		rect_output->height = 0;
+	}
+}
+
+/*
+ * Transform rect_input by the inverse of matrix, intersect with boundingbox,
+ * and store the result in rect_output.
+ * The boundingbox must be given in the same coordinate space as rect_output.
+ * Additionally, there are the following restrictions on the matrix:
+ * - no projective transformations
+ * - no skew
+ * - only multiples of 90-degree rotations supported
+ *
+ * In failure case of weston_matrix_invert, rect_output is set to boundingbox
+ * as a fail-safe with log.
+ */
+static void
+calc_inverse_matrix_transform(const struct weston_matrix *matrix,
+			      const struct ivi_rectangle *rect_input,
+			      const struct ivi_rectangle *boundingbox,
+			      struct ivi_rectangle *rect_output)
+{
+	struct weston_matrix m;
+	struct weston_vector top_left;
+	struct weston_vector bottom_right;
+
+	assert(boundingbox != rect_output);
+
+	if (weston_matrix_invert(&m, matrix) < 0) {
+		weston_log("ivi-shell: calc_inverse_matrix_transform fails to invert a matrix.\n");
+		weston_log("ivi-shell: boundingbox is set to the rect_output.\n");
+		rect_output->x = boundingbox->x;
+		rect_output->y = boundingbox->y;
+		rect_output->width = boundingbox->width;
+		rect_output->height = boundingbox->height;
+	}
+
+	/* The vectors and matrices involved will always produce f[3] == 1.0. */
+	top_left.f[0] = rect_input->x;
+	top_left.f[1] = rect_input->y;
+	top_left.f[2] = 0.0f;
+	top_left.f[3] = 1.0f;
+
+	bottom_right.f[0] = rect_input->x + rect_input->width;
+	bottom_right.f[1] = rect_input->y + rect_input->height;
+	bottom_right.f[2] = 0.0f;
+	bottom_right.f[3] = 1.0f;
+
+	weston_matrix_transform(&m, &top_left);
+	weston_matrix_transform(&m, &bottom_right);
+
+	if (top_left.f[0] < bottom_right.f[0]) {
+		rect_output->x = top_left.f[0];
+		rect_output->width = bottom_right.f[0] - rect_output->x;
+	} else {
+		rect_output->x = bottom_right.f[0];
+		rect_output->width = top_left.f[0] - rect_output->x;
+	}
+
+	if (top_left.f[1] < bottom_right.f[1]) {
+		rect_output->y = top_left.f[1];
+		rect_output->height = bottom_right.f[1] - rect_output->y;
+	} else {
+		rect_output->y = bottom_right.f[1];
+		rect_output->height = top_left.f[1] - rect_output->y;
+	}
+
+	ivi_rectangle_intersect(rect_output, boundingbox, rect_output);
+}
+
 /**
- * This computes the whole transformation matrix from surface-local
+ * This computes the whole transformation matrix:m from surface-local
  * coordinates to global coordinates. It is assumed that
  * weston_view::geometry.{x,y} are zero.


Reply to: