[ANNOUNCE] weston 1.7.0

Bryce Harrington bryce at osg.samsung.com
Sat Feb 14 01:22:09 PST 2015

This is the official release of Weston 1.7.  Note that this requires
the co-released Wayland 1.7 package, and now requires libinput 0.8 or
newer as a hard dependency.

git tag: 1.7.0

MD5:  1fde8a44f48cd177438522850d6ba4be  weston-1.7.0.tar.xz
SHA1: 931a7a99a0b8ca03c28cd277525c5176dd7e02ce  weston-1.7.0.tar.xz
SHA256: 1c4511945f3f476c24af712e82a7b500ae91a99cbc0fe2e381da1449125166cd  weston-1.7.0.tar.xz
PGP:  http://wayland.freedesktop.org/releases/weston-1.7.0.tar.xz.sig

We kicked off the Weston 1.7 development cycle existentially, as Pekka
led us through an examination of Weston's purpose and the vision of what
it is to become.  Should it move beyond being merely a reference
implementation and testbed to becoming a desktop environment in its own

We reached concensus that Weston should certainly *not* aim to become a
end-user usable desktop environment.  That rather, Weston's ultimate
goal is to help the Enlightenments, GNOMEs, KDEs, and others to provide
faster, glitch-free desktop environments to users, with a universal core
protocol.  On the other hand, Weston also aims to provide a high-quality
codebase for embedded cases such as cars, cell phones, TVs, and who
knows what else.  Weston serves to showcase new ideas for all these
groups to use, to be a working example whose gears and gui's they can
poke through and pilfer from.  In the end, our success will be
invisible; everything will just be stronger visually and lighter on our

With this comes recognition that we can do more than merely be a test
*bed* but provide a rich test environment and set of testing tools.
Sort of an auto shop complete with test dummies and race tracks.  Much
of this is already warming up in our patch queue.  Still, we opted to
make this a goal for 1.8, and instead drive some existing feature work
to completion.

One of the major new features in Weston 1.7 is support for the Wayland
presentation extension.  The essential idea is it gives feedback on when
the frames were actually presented.  This permits more precise
synchronizing of audio and video, so if you're using a suitably
Wayland-complaint video player, this ensures your sound won't get ahead
of the video, or vice versa.  Presentation 'flags' VSYNC, HW_CLOCK,
HW_COMPLETION, and ZERO_COPY help clients determine how reliable the
feedback and visual quality is, in terms of tearing and timing.

Another Wayland feature we're demonstrating in Weston 1.7 is surface
roles.  In Wayland lingo, a 'surface' is a rectangular area displayed on
the screen, sort of a generalized idea of a client window - basically
some rectangular area of pixels that are displayed on the screen.  A
surface's 'role' identifies its purpose: A cursor pointer, drag icon,
window, or sub-surface (like a video embedded in a web browser's
window).  Roles can be set by the client, but only once!  Attempts to
change the roles are protocol errors.

Last release the libinput was made the default input backend, to replace
Weston's original bespoke code.  This release cycle we drop the legacy
input code and make libinput the only option.  Further polish of
libinput has gone into especially keyboard focus and cursor display
issues.  Scroll events such as from wheel mice, are changed to take
advantage of libinput 0.8's new design; with this we now require
libinput 0.8 as a minimum.

Much has changed in the Wayland protocol and implementation since some
of the example clients were originally written, so an array of
improvements and fixes have gone into the clients and into toytoolkit to
bring them closer to current standards.  Still, a lot needs done...
hint hint, this client cleanup is a great area for new contributors to
dip their toes in and to learn Wayland.

Perhaps one of the biggest changes this release is the landing of the
IVI, or 'In-Vehicle Infotainment', alternative shell protocol.  Under
the Wayland umbrella are a number of secondary or side protocols, any
combination of which a given compositor might choose to implement.
Among these are shell protocols.  Shell protocols define the overall
human-computer interaction metaphor; for example, xdg-shell defines the
basic operations for a window/icon/menu/pointer style desktop and is
intended to be standardized across all the desktop environments.  This
new IVI shell defines a user interface for automotive information and
entertainment systems.  Applications running in an IVI shell will
generally be special single-purpose programs such as a rear camera,
speedometer, map, etc.  These apps can be implemented differently for
different automotive vendor's modules and components but by following
this protocol, the car owner will have a consistent graphical interface
for controlling or reviewing them.  A defining feature of the IVI shell
is that each surface is assigned a global, unique pre-determined ID
number to enable matching the application that provides it.

Several of Weston's client demo applications are updated to support IVI,
demonstrating how to make Wayland-based applications that can run both
on your desktop and in your car.

There's also been some initial prep work for test infrastructure
improvements.  We allow compositor to return a user-defined exit code,
and allow the compositor to propagate error codes down to the exit.  The
headless compositor can now render to an off screen buffer using Pixman;
this will permit various rendering checks to be done by tests in the
future.  Tests can also now control the Weston compositor's command line
parameters at startup.  Per-output repaint events can now be logged to
JSON files; these timeline logs can be post-processed into SVG charts
using a separate utility:  https://github.com/ppaalanen/wesgr

Beyond this is a whole hodge-podge of other minor refinements.  There
is now a login manager session entry for running Weston from GDM.  The
Weston editor is now multi-seat aware, allowing multiple people to type
into the same text document.  Help text is made more accurate and
readable. The event loop is tweaked to delay x11 window closure to that
its animations can be processed.  Special mouse buttons are fixed.  And
finally, XWayland windows gain a maximize button on their frame; this is
traditional full-screen maximization, not the vertical-only or
horizontal-only maximizing that some WM's support.

Notable Bug Fixes:

 * Improve the look of shadows for small (<128 pixel wide or high)
   clients.  This resulted in observable dark lines in menus with fewer
   than 3 items.

 * A handful of fixes for xwm/Xwayland oddities, including better
   handling of popups/tooltips that to be top level, and better sizing
   of fullscreened X apps to not include the border in their height and
   width calculations.

 * An optimization to gl-renderer reduces the geometry needed for
   representing complex scenes, by utilizing pixman's y-x banded

 * Memory allocation is cleaned up and standardized internally, to better
   demonstrate best practices in avoiding common leaks and crashes.

 * Doubleclicking on a window title bar now maximizes it.

 * Several fixes to glitches found during mode switching or restoring
   back to native.  And refactor the mode switching code into several
   specialized routines, so further mode switch handling can be done
   more flexibly.

 * Fix logind-util to do DRM-device synchronization only on DRM, and to
   pass the Activate signal immediately for other compositor backends.

 * Fix a couple problematic tests in the testsuite to skip in situations
   they're always going to fail.

 * Fix hang when closing the output if colord plugin is enabled due to
   an incorrect GMutex value in the mutex lock output notifier handler.

 * Multiple keyboard and pointer button events are better handled; we
   only forward the first and less press and release events, and
   suppress extraneous ones.

Of course, there's also the usual assortment of lesser bug fixes: checks
and cleanups during object destruction, accessing invalid resources,
more attentive checking of interface versions, untangling race
conditions, and so forth.

Please see the Wayland 1.7 release for the release schedule for 1.8.
Bryce Harrington
Senior Open Source Developer  -  bryce at osg.samsung.com
Open Source Group             -  Samsung Research America

Andrew Engelbrecht (1):
      xwm: fix a crash in handle_state

Bryce Harrington (30):
      compositor: (Whitespace-only) Indent with tabs
      compositor: Fix tabbing of help output
      compositor: Fix typos in help text
      compositor: Display option help text only for enabled backends
      compositor: List only available backends in help text
      configure.ac: Indicate headless compositor presence in config.h
      compositor: Document options for headless compositor
      tests: Include "config.h" as first header
      tests: Cleanup superfluous headers
      tests: Move ARRAY_LENGTH to a shared header for reuse
      tests: Use one shared xzalloc implementation
      Use zalloc rather than malloc and manually setting members to 0
      Setting members to 0/NULL after a zalloc or calloc is redundant
      Use zalloc instead of calloc(1, ...)
      tests:  Fix minor typo
      configure.ac: bump to version 1.6.91 for the alpha release
      Revert "simple-egl: HACK to report presentation flags"
      releasing: Typo
      releasing: Add example commands to release directions
      Makefile.am: Use fine-grained dist control for desktop file
      releasing:  Mention dual release announcements
      Revert "compositor-x11: Move the x11 event handler to the display loop"
      releasing:  Directions for updating the website
      configure.ac: bump to version 1.6.92 for the rc1 release
      releasing: Tweak docs to better match actual workflow
      configure.ac bump to version 1.6.93 for the rc2 release.
      build:  Pass along any user-specified xserver path to distcheck
      releasing:  Revert fix and just document work-around of Xwayland path
      releasing: Note that Xwayland installation required only for Weston releases
      configure.ac: bump to version 1.7.0 for release

Carlos Olmedo Escobar (3):
      compositor: Fix weston_subsurface_is_synchronized() return value.
      zoom: Check the value of level before using it.
      ivi-shell-transition: check create_layout_transition() return value.

Daniel Stone (5):
      releasing: update web host name
      Very OCD cosmetic nitpick
      Update .gitignore
      tests: Include weston-egl-ext from weston-test
      weston-egl-ext: Define EGL tokens harder for old Mesa

David Herrmann (4):
      logind: use SIGRTMIN to not conflict with xwayland
      launcher: use SIGRTMIN to not conflict with xwayland
      logind: forward Active=true changes for non-DRM backends
      logind: fix PropertiesChanged parser

Derek Foreman (37):
      cosmetic: Remove prototype for nonexistent function
      cosmetic: Move WL_EXPORT out of header files
      shell: fix weston_output_mode_switch() usage
      gl-renderer: don't move memory in output_rotate_damage
      cosmetic: replace boolean function return values with bool
      compositor: Refactor weston_output_mode_switch()
      compositor: check version before calling wl_output_send_scale()
      compositor: stop sending spurious events on mode switch
      compositor: make keep_buffer a bool
      backends: refactor transform string parsing
      gl-renderer: compress pixman bands to simplify geometry
      compositor-headless: allow rendering with pixman
      compositor-headless: add support for transforms set on command line
      tests: Allow tests to use customized command line parameters
      input: Use slightly less obscure logic in evdev_notify_keyboard_focus()
      dnd: Fix some mouse cursor issues
      clients: Use xmalloc in a few more places
      rpi-renderer: don't pass a box to pixman_region32_contains_point()
      text: Fix some typos
      text: Fix coding style
      text: Remove unused linked list from input_method_context
      text: Use bool for input_panel_visible
      text: Don't crash if a seat has no keyboard
      compositor-x11: Fix some shutdown crashes
      input: Add comment explaining why pointer isn't freed when device is removed
      text: Fix typo
      tests: Skip buffer count test if wl_drm isn't present
      compositor-x11: Move the x11 event handler to the display loop
      editor: Make editor multi-seat aware
      xwayland-test: Replace the xwayland-test
      desktop-shell: Don't crash on zoom without a pointer in the seat
      screenshooter: remove useless cast
      desktop-shell: Remove unnecessary type casts
      compositor-x11: Move the x11 window close to an idle handler
      xwm: remove the create surface listener in weston_wm_destroy
      configure.ac: Don't look for Xwayland in the weston install destination
      build: Enable xwayland-test during distcheck

Dima Ryazanov (1):
      Fix "Back", "Forward", and other special mouse buttons in the X11 compositor.

Frank Binns (1):
      smoke: fix valgrind invalid read errors

Frederic Plourde (3):
      man: Fix some weston.ini.man typesetting macros
      compositor: Return a user-defined exit code
      compositor: Add idle timeout option to weston.ini

Giulio Camuffo (13):
      input: allow to destroy bindings in their handler
      input: fix access to invalid resource
      input: don't send to clients key events eaten by bindings
      xwm: find a seat for all the surface's views
      input: don't run the key bindings on focus in
      input: send focus events to the focused client when running a key binding
      input: swallow the key press event when running a compositor key binding
      xwm: don't set inactive surfaces as top level
      xwm: set the _NET_WM_DESKTOP property of the windows
      shell: fix positioning of maximized surfaces with a custom geometry
      xwm: fix use after free
      xwm: support maximizing xwayland windows
      input: store the grab serial of the keyboard

Jasper St. Pierre (1):
      smoke: Don't commit an xdg_surface with a NULL buffer

Javier Jardón (1):
      Makefile.am: Link weston_multi_resource against rt library

Jonas Ådahl (5):
      configure.ac: Require libinput 0.8
      clients: Remove stray new-line
      libinput: Only forward first and last press and release for a button
      libinput: Only forward first and last press and release for a key
      desktop-shell: Fail if get_xdg_surface is called on an xdg_surface

Lubomir Rintel (1):
      build: install a login manager session entry

Marek Chalupa (7):
      toytoolkit: rename tile_mask to render_shadow
      cairo-util: fix shadows for small clients
      xwayland: fix fullscreening
      window: use roundtrip instead of dispatch after get_registry
      screenshooter: fix various memory handling
      clipboard: set fd member of clipboard_source
      Makefile: fix assigning to dist_wayland_session_DATA

Nobuhiko Tanibata (21):
      ivi-shell: add README for ivi-shell
      protocol: add interface ivi_application extension
      ivi-shell: add IVI layout APIs
      ivi-shell: add the shell plugin for In-Vehicle Infotainment system
      protocol: ivi hmi controller protocol to set up IVI style UI
      ivi-shell: a reference implementation how to use ivi-layout internal APIs
      clients: a reference implementation of UI client how to use ivi-hmi-controller.
      data: add reference image files for weston-ivi-shell-user-interface
      ivi-shell: a reference of weston.ini for ivi-shell and ivi-hmi-controller.
      clients: support ivi-application.xml for clients/simple-shm.c
      clients: support ivi-application.xml for clients/simple-egl.c
      clients: support ivi-application.xml for clients/window.c
      ivi-shell: reference implementation of input panel for ivi-shell
      ivi-shell: clean-up transition animation code.
      ivi-shell: clean up unnecesary header
      ivi-shell: reordering method in ivi_layout.c
      ivi-shell: several ivi-layout interfaces moved accross source.
      ivi-shell: make ivi-layout.c as a part of ivi-shell.so
      ivi-shell: rewrite controller API
      ivi-shell: Fix wrong condition to check return value of controller_module_init
      ivi-shell: SEGV occurs when multi touch happens in transition

Olivier Fourdan (1):
      Fix mutex hang in colord on output removal

Ondřej Majerech (2):
      compositor: Propagate errors from module_init
      ivi-shell: Say something when configuration is missing

Pekka Paalanen (30):
      configure.ac: bump version to 1.6.90
      protocol: add presentation extension v5
      compositor: add stub implementation of presentation interface
      weston-info: report presentation clock
      compositor: set and use the presentation clock everywhere
      compositor: implement presentation_feedback
      compositor-drm: deliver frame seq for feedback
      tests: presentation test, simple
      clients: add presentation-shm demo
      shell: don't crash on create_common_surface() failure
      protocol: add role error code to xdg_shell
      compositor: send error for surface role resets
      tests: add role conflict sub-surface vs. wl_shell_surface
      compositor: add missing newline to help text
      input: use tmp var in pointer_unmap_sprite
      compositor: do not overwrite error exit code
      Revert "input: don't send to clients key events eaten by bindings"
      man: explain idle-time=0 in weston.ini
      desktop-shell: don't crash input-panel if no kbd focus
      configure: remove input backend result
      simple-shm: explain two initial roundtrips
      compositor: add weston_surface_set_label_func()
      compositor: Implement JSON-timeline logging
      configure: bump libwayland requirements
      compositor-drm: use drm_output in drm_output_*() func args
      protocol: add Presentation feedback flags
      compositor: set presentation.presented flags
      compositor, drm: set per-surface Presentation feedback flags
      tests, clients: add Presentation feedback flags
      simple-egl: HACK to report presentation flags

Peter Hutterer (3):
      compositor: Drop legacy backends in favor of libinput
      libinput-device: use the new merged scroll events
      libinput-device: use the discrete axis value for wheel events

Seedo Eldho Paul (1):
      protocol: Fix some typos in protocol files

Xiong Zhang (1):
      clients: Maximize window when double touch on title bar

kabeer khan (2):
      data_device : change version while initializing data_device_manager interface and data_device interface
      window : compare version and call appropriate destructor

nerdopolis (1):
      fbdev: Remove unnecessary semicolon

More information about the wayland-devel mailing list