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