[ANNOUNCE] weston 1.7.0

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 http://wayland.freedesktop.org/releases/weston-1.7.0.tar.xz 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 right? 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 processors. 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 rectangles. * 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