Wayland / Weston Changelog

New in version 1.7.0

February 14th, 2015
  • The Wayland protocol may be considered "done" but that doesn't mean there's not work to be done. This release focused on major improvements to Wayland's documentation, minor improvements to the testsuite, and some scattered bugfixes to the code itself.
  • Wayland's developer documentation is comprised of three different pieces. First is a manually written prose, which includes diagrams and a high level description of everything. Second is the protocol documentation, which is mechanically generated from the protocol definitions and works more like a reference manual. Third is the code documentation, which is also mechanically generated but from the library source code itself.
  • We've moved the written prose from being generated by publican to xmlto. xmlto provides the same functionality and is more widely available. Publican's advantage was its nicer stylesheets, but we ported these to run on xmlto, and polished them up while we were at it. Architectural diagrams in the developer documentation is now mechanically generated with graphviz - this both improves its look a little and makes it easier to maintain going forward.
  • For the protocol documentation, the recently added wl_surface role concept is defined and given several examples. wl_display_destroy and wl_display_add_socket are now documented, and some aspects of threading clarified. It's also been reorganized, with deprecated functions dropped and all validation errors fixed.
  • The auto-generated code documentation is prettier now thanks to a lot of polishing work done to the xslt files, and markup improvements done to code comments.
  • The protocol documentation content is tightened up: We've dropped long-deprecated functions, hidden private functionality like wl_map, and recategorized functions more accurately with the objects they modify.
  • A number of potential memory and event leaks in tests and clients have been cleaned up, and leak checking is now enforced by the test suite infrastructure. Leak checking is also added to the sample clients.
  • The testsuite now has a way to set timeouts for test completion. The timeouts can be turned off by setting the environment variable WAYLAND_TEST_NO_TIMEOUTS. For consistency, NO_ASSERT_LEAK_CHECK is now called WAYLAND_TEST_NO_LEAK_CHECK. Both the timeouts and leak checks are disabled when a debugger is attached.
  • There's a new C++ compilation test; even though Wayland and Weston are in C, we want to make sure Wayland can be linked with compositors written in C++ without incurring basic compilation failures.
  • Apart from tests and docs, there were a handful of changes to the codebase itself. Notably, the client listen queue is increased to 128,to allow numerous clients to be connected simultaneously without connection refused errors. Some cross-platform fixes, such as a FreeBSD bug with sendmsg() usage, have been addressed. The remaining fixes improve error checking and handling in various places.

New in version 1.7.0 RC2 (February 7th, 2015)

  • Wayland:
  • configure.ac: Fallback to older detection code if pkg-config can't find expat
  • doc: Fill in high level description for Surfaces
  • tests: Fix FAIL in sanity-test (*timeout*) when Yama LSM enabled
  • test-runner: wait for concrete pid
  • Weston:
  • releasing: Tweak docs to better match actual workflow
  • 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
  • Fix "Back", "Forward", and other special mouse buttons in the X11 compositor.
  • xwm: support maximizing xwayland windows
  • 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
  • ivi-shell: SEGV occurs when multi touch happens in transition

New in version 1.6.1 (January 24th, 2015)

  • doc: fixed a typo
  • Remove useless semicolon
  • README: Tiny cosmetic change
  • doc: fixed grammar and a typo
  • scanner, client: Added more error checks when strtol function is used
  • scanner: Improve XML parse error reporting
  • scanner: Remove stray newline
  • client: read_events should return -1 after an error
  • tests: fix memory leak
  • connection: Fix sendmsg() on FreeBSD
  • event-loop.c: Use correct OS abstraction function for dupfd()
  • wayland-server: Abort if a read from a client gives 0 length
  • connection: abort if a listener function is NULL
  • doc: Added API documentation for wl_display_destroy and wl_display_add_socket functions

New in version 1.7.0 Alpha 1 (January 18th, 2015)

  • doc: Mark up some code examples
  • doc: Mostly use apply-templates over value-of
  • doc: Translate doxygen tags to spaces
  • connection: Leave fd open in wl_connection_destroy
  • doc: make rebuilds doxygen output on code changes
  • doc: Preserve spaces
  • doc: preserve links produced by Doxygen
  • doc: Don't print dash if doxygen brief description missing
  • doc: removed some unnecessary nested listing from doxygen output
  • doc: Added \code tags around sample code in doxygen comments
  • v4 doc: fixed reference to non-existent function
  • doc: fixed a typo
  • doc: Removed \ref when it refers to the subject the text is attached to
  • doc: Removed extra indentation from wl_list code sample
  • doc: removed redundant dependency
  • doc: Remove duplicated descriptions of wayland objects
  • doc: fix doxygen->man command line
  • doc: Split libwayland-client and -server into different pages
  • doc: fix for parallel make
  • doc: Make it easier to add a new doxygen page
  • fixup doc: Make it easier to add a new doxygen page
  • doc: Reduce the validation errors of the docbook input
  • doc: removed the word "interface" from the link names
  • doc: Each class in doxygen output is a section
  • doc: Document structures and unions in addition to classes
  • doc: make itemized lists from doxygen work
  • Don't document an absent parameter.
  • configure.ac: bump version to 1.6.91 for the alpha release
  • Remove useless semicolon.
  • README: Tiny cosmetic change
  • cosmetic: convert some function returns from int to bool
  • doc: fixed grammar and a typo
  • scanner, client: Added more error checks when strtol function is used
  • server: increase listen queue to 128
  • doc: Removed redundant xslt output elements.
  • doc: Invoke doxygen via the defined make variable.
  • doc: Add config check for doxygen 1.6.0+.
  • doc: General makefile cleanup.
  • doc: Minor makefile cleanup.
  • scanner: Improve XML parse error reporting
  • scanner: Remove stray newline
  • tests: use our own XDG_RUNTIME_DIR for tests
  • tests: add timeout
  • tests: add test_usleep and test_sleep functions
  • tests: add timeout tests
  • tests: use test_set_timeout in display-test
  • queue-test: put back timeout
  • tests: don't print '\0' character
  • client: read_events should return -1 after an error
  • tests: rename env vars for tests
  • test-runner: print separator line after each test-case
  • tests: use color when printing on terminal
  • tests: detect if debugger is attached
  • tests: split queue-test testcases
  • tests: fix memory leak
  • client: update obsolete comments
  • client: update documentation about threading
  • gitignore: adpat to scanner and protocol path changes
  • configure.ac: bump version to 1.6.90
  • protocol: define the concept of wl_surface role
  • protocol: wl_pointer.set_cursor gives a role
  • protocol: wl_data_device.start_drag may give a role
  • protocol: wl_subcompositor.get_subsurface gives a role
  • protocol: wl_shell.get_shell_surface gives a role
  • protocol: define error codes for role reassignment
  • doc: replace publican with xmlto
  • connection: Fix sendmsg() on FreeBSD
  • event-loop.c: Use correct OS abstraction function for dupfd()
  • wayland-server: Abort if a read from a client gives 0 length
  • queue-test: Add another assertion
  • connection: abort if a listener function is NULL
  • scanner.c: Use WL_PRINTF instead of __attribute__((format(printf)))
  • doc: Added API documentation for wl_display_destroy and wl_display_add_socket functions.
  • Protocol : Added destructor to wl_data_device interface

New in version 1.6.0 (September 19th, 2014)

  • Wayland:
  • Add error enums to wl_surface.
  • Add keyboard repeat information to wl_keyboard protocol.
  • Error handling additions in libwayland-client: when a protocol error happens, the program can query more detailed information about the error. This is mostly useful for tests to ensure correct errors.
  • New wl_display_add_socket_auto() in libwayland-server: automatically find a free socket name.
  • Many added tests to the 'make check' suite, including a framework for testing server-client interactions more easily.
  • Threading and blocking related bug fixes.
  • Add wl_display_roundtrip_queue(): blocking round-trip on a custom queue.
  • Stop exposing wl_display global. Turns out binding to the global would have triggered bugs, and there was no proper use for it.
  • Weston:
  • Xdg-shell protocol changes. Yes, we broke it again since 1.5.0.
  • Add weston_layer masking mechanism.
  • DRM-backend: fetch cursor size from the kernel
  • keyboard repeat rate support, sent from compositor to clients, configurable.
  • Use wl_display_add_socket_auto(): no need to specify the socket anymore when running Weston under Weston, it just works now.
  • Use libinput by default. The non-libinput input backend is still there right now, but it will be removed for 1.7.
  • A few more desktop-shell configuration bits.
  • 'make distcheck' actually works OOTB without custom tweaks (by disabling the xwayland test for distcheck for now).
  • Exit Weston, if weston-desktop-shell dies too early. Should help with one class of "just black screen" problems.
  • Option to force numlock on at start on DRM and fbdev backends.
  • Many bug fixes, of course.

New in version 1.6.0 RC2 (September 12th, 2014)

  • touchpad: reset motion history when nfingers changes on semi-mt pads
  • litest-alps-semi-mt: Fix compiler warnings
  • build: symbol ck_assert_ptr_ne requires check-0.9.10
  • test: Use only one test device for some udev and path tests
  • test: Remove test device from context when deleting
  • test: Don't fail when events are enabled multiple times
  • evdev: Let dispatch instances set their own capabilities
  • evdev: Use helper for separating buttons from keys
  • evdev: Ignore key/button release events if key was never pressed
  • evdev: Keep track of button/key press count per device
  • evdev: Release still pressed keys/buttons when removing device
  • touchpad: Only break out of tap FSM for clickpad button presses
  • configure.ac: libinput 0.6
  • test: auto-update for BTN_TOOL_* when using litest_touch_ functions
  • Document that the delta from pointer events is accelerated
  • evdev: don't return a width/height if we faked the resolution
  • test: add a semi-mt Alps test device
  • touchpad: increase top software button area to 15%
  • Use -no-install instead of -static for local noinst linking
  • Disable static libraries
  • evdev: plug memory leak on libevdev_new_from_fd failure
  • Don't close the fd if libinput_add_fd() fails
  • touchpad: mark a intentional switch case fallthrough as such
  • Swap conditions for ARRAY_FOR_EACH()
  • touchpad: silence Coverity warnings about uninitialized use
  • Fix a doxygen reference
  • test: add helpers to wait for specific events
  • test: add a generic single-touch device
  • udev: use evdev_device_calibrate() instead of manually writing the matrix
  • evdev: constify evdev_device_calibrate
  • evdev: apply calibration to multitouch values as well
  • util: add a couple of 3x3 matrix helper functions
  • evdev: switch to a normalized transformation matrix
  • udev: drop WL_CALIBRATION, replace with LIBINPUT_CALIBRATION_MATRIX
  • test: add tests for touch calibration
  • Change calibration into a configuration option
  • evdev: load the LIBINPUT_CALIBRATION_MATRIX as default matrix
  • test: fix infinite loop in litest_wait_for_event_of_type()
  • test: use the evironment variable for check's verbosity
  • Document LIBINPUT_CALIBRATION_MATRIX properly
  • Document the static udev configuration options we support

New in version 1.5.0 (May 21st, 2014)

  • Wayland
  • Use an internal event queue for wl_display events. This allows the client library to dispatch delete_id and error events immediately, even if the default queue is not dispatched.
  • Wayland now uses non-recursive Makefiles.
  • Weston:
  • More work on xdg-shell, still not complete. We did add the long missing minimize feature thought. We expect to finalize the xdg-shell interface in time for 1.6, which will come out in time for GNOME Shell 3.14 to use.
  • The weston input stack was split out as a new library, libinput. Weston can be configured to link to libinput for input but defaults to the built in input code for now. As the libinput API stabilizes, we'll remove the in-weston input code and make libinput a hard requirement.
  • Weston now uses the new Xwayland server. The Xwayland code was refactored to be its own X server in the Xorg tree, similar to how Xwin and Xquartz and Xnest work. A lot of the complexity and hacks in the old Xorg based Xwayland was about fighting Xorg trying to be a native display server, discovering input devices and driving the outputs. The goal was to be able to reuse the 2D acceleration code from the various Xorg DDX drivers. With glamor becoming a credible acceleration architecture, we no longer need to jump through those hoops and the new code base is much simpler and cleaner as a result. Xwayland is upstream now and will be released with the 1.16 Xorg release.
  • Animate window closing. A minor feature, but it validates the mechanism for keeping surfaces around after the client that created them goes away.
  • Fullscreen shell. The fullscreen shell provides a mechanism for a single client to provide a fullscreen surface, for kiosk-mode or appliance type use cases.
  • Weston now supports different color dephts on different outputs.
  • Weston now uses non-recursive Makefiles.

New in version 1.5.0 RC1 (May 2nd, 2014)

  • We're at a historic low in terms of open bugs - as of this writing we have 15 bugs in wayland/weston bugzilla. There are a few more bugs we can fix and I expect more will come in as we start testing, but right now it's looking pretty good. We'll do another release candidate a week from now and then release 1.5 a week after that. If everything looks super-duper for RC1 we might even just release that, but lets see how it goes.

New in version 1.4.0 (January 24th, 2014)

  • Wayland:
  • The wayland repository continues to mature and moves slowly. This cycle again only saw a few wayland changes, most of wich where fairly unexciting...
  • SHM Buffer SIBGUS protection. We added and couple of utility functions to help compositors guard against broken or malicious clients who could truncate the backing file for shm buffers and thus trigger SIGBUS in the compositor (Neil Roberts).
  • Subsurfaces protocol moved to wayland repo and as such promoted to official wayland protocol (Pekka Paalanen).
  • wl_proxy_set_queue() can take a NULL queue to reset back to default queue. (Neil Roberts).
  • A few bug fixes, in particular, I'd like highlight the fix for the race between wl_proxy_create() and wl_proxy_marshal().
  • A few scanner error message improvements and documentation tweaks and polish.
  • Weston:
  • We came pretty close to doing exactly what we had planned for 1.4 http://lists.freedesktop.org/archives/wayland-devel/2013-October/011419.html...
  • Window buttons for xwayland windows and proper decorations for the nested compositor (wayland backend) (Jason Ekstrand).
  • Make the gl-renderer a loadable module and make it possible to switch from pixman to gl renderer at runtime. This lets the compositor start up faster, since we can load the gl-renderer and initialize EGL+GLES2 later in the startup (Ander Conselvan de Oliveira).
  • Support framebuffer formats other than XRGB8888 (gbm-format config value under [core] section). (Kristian Høgsberg)
  • Use logind for privileged access. logind can now do the this that weston-launch used to do: drm drop/set master and opening input devices. With this, weston can run on KMS without the weston-launch setuid helper (David Herrmann).
  • struct weston_surface split into struct weston_surface and struct weston_view. This is a weston-internal feature, that makes it possible to display a surface in multiple places in the compositor. (Jason Ekstrand)
  • Better output unplug handling. We used to crash and in general not handle output (monitor) unplug at all. We now clean up properly and move windows back into the visible region when their output is unplugged. (Ander Conselvan de Oliveira and Xiong Zhang)
  • Keyboard focus animation and exposay (exposé-like window picker) from Collabora.
  • More touch screen support, including touch-to-move and touch-to-activate for surfaces, touch screen drag-and-drop (Xiong Zhang).
  • Started work on xdg-shell protocol. The xdg-shell is a more format attempt at developing a protocol for the interaction between applications and a desktop environmet. The wl_shell protocol currently in wayland was always only a place-holder to help boot-strap toolkit support. Now that GNOME Shell is moving to Wayland, we have a full-featured desktop to drive the work and we can start the effort in earnest (Jasper St. Pierre, Rafael Antognolli).
  • Nested compositor buffer pass-through. We specified a new EGL extension to allow a nested compositor to pass buffers through to the underlying compositor. This lets the nested compositor skip rendering and instead present the contents using a subsurface or such in the underlying compositor (Neil Roberts).
  • Crop and scale protocol. This protocol, which we're initially staging in weston, lets a client specify that a only sub-rectangle of it's surface should be presented, and potentially scaled up. (Jonny Lamb and Pekka Paalanen)
  • weston-terminal gained scrollback history, use Ctrl+Shift UP/DOWN to scroll. Added a context menu for easy access to copy/paste/new terminal (which have always been available as Ctrl-Shift-C/V/N) (Kristian Høgsberg). Touch screen selection support (Xiong Zhang).
  • Mesa:
  • A couple of features that we did in the 1.4 timeframe landed in mesa and will be released with the next major mesa release (10.1)...
  • Support for eglSwapInterval(dpy, 0). Setting this lets an application render as fast as possible, that is, not synced to vblank. weston-simple-egl has a new -b option that makes it set swap interval to 0 and render as fast as possible.
  • Support for RGB565 EGLConfigs, even if the compositor is using a different pixel format for its framebuffers.
  • Now uses the __DRIimageLoaderExtension that lets the driver allocate buffers without using flink. This in turn means that the clients can use drm render nodes. The support is not completely there yet, but should be able to get that in place for mesa 10.1.
  • eglSwapBuffers() now flushes the wl_display(), which was always the most sensible behaviour, consider the EGL eglSwapBuffer() language.

New in version 1.4 RC (January 20th, 2014)

  • The 1.3.92 snapshot was a little lightweight: I didn't do 1.3.92 tar balls or formal release and we had a problem with the 1.3.92 snapshots where the configure versions for those tags were 1.3.91. However, for weston, the 1.3.92 relase had around 60 commits, 50 of which were bug fixes and I feel like we got the quality under control again. I count around 11 additional fixes in this release and then we have a lot of good commits from Artie to fix various static analyzer issues. We'll run this through QA and then if all goes well, we should be ready to release 1.4 this Thursday, Jan 23. I don't expect we'll touch the code much between now and then, but do let me know if there's anything we might be missing.

New in version 1.4 Alpha (December 17th, 2013)

  • The alpha release has all the features in it that I was hoping to get done for 1.4 and it's time to start fixing bugs and get the quality level back up.

New in version 1.3.1 (November 1st, 2013)

  • 70877: VT-switch to X during Weston shutdown can crash X
  • 69764: Rapid VT-switch hangs system
  • 69777: Active client on disconnected output causes Weston segfault
  • 70878: Hot-unplug and VT-switch locks-up Weston
  • 70849: Weston-launch does not close fds on VT-switch
  • 71006: Zoom startup animation results in black/blank output
  • 70392: Fix fbdev compilation without EGL
  • 70459: Fail to launch weston without weston-launch on drm backend
  • 65802: Lock screen hangs compositor
  • 66794: Don't allow resizing window so small it causes rendering artifacts
  • 68739: Use /bin/sh for launching weston
  • 70590: Fix X11 fullscreen mode
  • 70870: Require at least xkbcommon 0.3.0
  • 70930: Make sure window map animations finish
  • 69219: Set xwayland fullscreen window input region properly

New in version 1.3.0 (October 11th, 2013)

  • Wayland Changes:
  • More pixel formats for wl_shm (Tomeu Vizoso). We can now create RGB565 (and many more) shm surfaces and a compositor can indicate which ones it supports.
  • Doc work (Peter Hutterer, Bryce Harrington, Aaron Faanes). Much work on the doc build system from Peter and general wording and grammer improvements all around.
  • Multi resource support (Rob Bradford). Rob added support for dealing with lsits of resources which the weston side multi-resource fix builds on.
  • Support for language bindings (Jason Ekstrand). After a long time and many detours into fixing other parts of Wayland and Weston, Jason finally landed the language binding support. This feature lets you bind a higher level language to libwayland-client/server by providing custom dispatch functions.
  • Release requests for wl_pointer, wl_keyboard and wl_touch (Rob Bradford). We don't have a way for a client to deregister its interest in receiving input events, we just drop them on the client side when the client destroys the proxy. With the release requests, we now have a way to stop the server from sending them in the first place.
  • Install the wayland.xml protocol defintion (Jason Ekstrand). We now install the core Wayland XML protocol definition in a public location. Language bindings can parse this to generate code or bind dynamically. This also introduces a well known protocol directory where other projects can install protocol files.
  • Very few bug fixes in this release. There was only a couple of actual bug fixes this time around, which again is a sign that core wayland is settling down.
  • Weston changes:
  • HW accelerated screen capture using libva Shift-Mod-SPACE Q (Ander Conselvan de Oliveira). This adds realtime h.264 screen capture to Weston using libva. This new feature can capture and encode weston screen contents and write to disk with negligible CPU or GPU overhead on recent Intel chips. We may switch away from libva and use gstreamer in the future, which will let us support more codecs and hardware. For now, libva is the only way to get to the high-performance, zero-copy encoding path that we want. Another future direction for this is network astreaming instead of just writing to disk, but this basic recording feature wil be the base for that work.
  • libhybris support (Adrian Negreanu). Adrian added support for using libhybris with the fbdev backend. This means that it's possible to use weston with Android EGL/GLES2 drivers, provided that you have the right device, drivers and kernel.
  • Multi-resource input events (Rob Bradford and Neil Roberts). We had a limitation that only the first pointer, keyboard or touch resource from a client would receive events, since we only tracked one resource as part of the input focus tracking. It should be possible to get multiple wl_pointer etc resources and receive events on all of them so that different subsystems can have their own resource for receiving events. With Rob and Neils patches this now works, which enables toolkit integration such as WebKitGTK+ and Clutter-GTK+.
  • Better touch support: better support in clients (Rusty Lynch and Brian Lovin), critical bug fixes in the evdev touch code (Neil Roberts).
  • XWM: better fullscreen support, support for drag-and-drop from X to wayland (other direction coming next). (Kristian Høgsberg)
  • weston-launch: modified behavior, now two modes of operation: run from a vt after logging in or run from an init script with -u. setup and restore tty in weston-launch, handle vt switch and drop/set master in weston-launch (Kristian Høgsberg).
  • Support for RGB565 client buffers in gl and pixman renderers (Tomeu Vizoso).
  • New WL_OUTPUT udev attribute for matching touch screen input devices to their outputs. (krh)
  • We have a new configure summary from Armin K and a few new configure options:
  • --with-cairo=image/gl/glesv2
  • This gives better control over which cairo-gl flavor
  • to use. We used to auto-detect or just fall back to
  • image, but there was never a good way to request
  • cairo-image if any cairo-gl was available or to
  • request GL over GLES2. (Rob Bradford)
  • --enable-demo-clients
  • Install all the demo clients. Normally we only
  • install weston-terminal and weston-info, but with this
  • option it's now possible to install all clients (Armin k)
  • New weston.ini options:
  • [touchpad]
  • constant_accel_factor=...
  • min_accel_factor=...
  • max_accel_factor=...
  • These options lets us control touchpad acceleration
  • (Armin K).
  • [xwayland]
  • path=...
  • This option lets us specific a different path to the
  • xwayland server to use (Maksim Melnikau).
  • New weston command line options:
  • --shell=shell.so
  • Override the shell module choice from weston.ini. A
  • useful option for briefly testing a different shell
  • (Jason Ekstrand).
  • weston-terminal: Better support for wide (CJK) characters (Peng Wu). Resizing fixed, warms my heart (José Bollo).

New in version 1.3 RC2 (October 3rd, 2013)

  • The most critical fixes in this second release candidate are the touch event fixes from Neil. We also have fixes for the weston-launch rewrite to work better with the fbdev and rpi backends, a fix for the sleep/wakeup state machine and a few other minor things.
  • I expect to pull in Tomeus Raspberry Pi EGL patch before releasing 1.3. This is a bigger change, but it's entirely isolated in the rpi backend. Other than that, I'm not expecting to add much more for this release. We still have a few crashers in bugzilla, but even if the bugzilla entries are new, the bugs are not new and aren't regressions.
  • We'll try to fix them for 1.3.1. I hope we can release this Friday, but we may end up going a couple of days into next week, depending on the feedback.

New in version 1.3 RC1 (September 23rd, 2013)

  • We're closing in on end of September, and the plan is to release 1.3 then. So towards that and without much further ado, here's the 1.2.91 release candidate.
  • I believe I picked up most recent patches and fixes recently on the list. In particular, I merged Rob and Neils patch to send out events to all listeners for wl_pointer, wl_keyboard and wl_touch from a client. This patch enables clutter-gtk and webkitgtk, but touches core event delivery code paths, so look for regressions there.
  • Another potentially disruptive change I landed just before the RC is the weston-launch rewrite. The core change here is to let weston-launch handle VT switch signals and automatically drop and set drm master at the right time, as well as setup and restore the VT. The result is that error recovery is much more consistent and reliable, but we may see a couple of regressions there. The drm, fbdev and rpi backends are affected, so test those if you can. I'd like to also move the backtrace feature into weston-launch and do it with ptrace, so we don't try to do it from a process who's taken a SEGV signal. Or just launch and attach gdb after restoring the VT.
  • There are a few patches on the list that we'll have to push out until after 1.3 is out. Jasons weston_view feature of course is scheduled for after 1.3 and the clone mode patches look promising, but will have to wait. We also have Neils two EGL features - the swap interval 0 one and the nested buffer passthrough. Those are mostly mesa features, but there is a small weston part to them. We may be able to do that.

New in version 1.2.2 (August 30th, 2013)

  • We ended up with a few embarassing, critical and generally unsavory regressions in the 1.2.1 weston release and I'm doing a quick 1.2.2 follow up here. In particular, we had - Crash on fast click on titlebar 237c1c82bb0e487609a2e3e03bf33f9713cd24e0 - Included private config.h from SDK header compositor.h 3dbbf321dd0a3e26eab62ad5c77aaf95a593699c - Testsuite and some clients broken on 32-bit system because of AC_SYS_LARGEFILE and missing #include config.h dfe4acb4e2d71731deec3c4f2fb77c92b3afbfa8 - evdev device cleanup crashes when used for error recovery or when rejecting joysticks, due to uninitialized list. 2471fac4d99b93b4557fa8fa1a417c37aba97f4a Aside from those, I've tried to avoid picking too many bug fixes in the interest of making 1.2.2 the release 1.2.1 should have been and avoid breaking something else. Having said that, I did pick up the recent xwm fixes, the fix for in-place touch screen coordinate calibration, Stanislavs glDrawElements vs GL_UNSIGNED_INT issue and the fbdev compile breakage when using --diable-egl.

New in version 1.2.0 (July 13th, 2013)

  • Stable wayland-server API. When 1.0 was release we didn't proise a stable API for libwayland-server.so. This means that with every major Wayland release, compositor might break. When it was just weston, it wasn't a big deal, but as more external wayland compositors appear, we have to stop breaking this. Much of the input logic was split in an awkward way and has bee moved to weston. The remaining structs (mostly just wl_resource) have been made opaque. Finally, versioning didn't work correctly with the old API, so we had to replace a few functions. Much of this work was done by Jason Ekstrand.
  • Color management: Richard Hughes worked on color mangement for Wayland and implemented two schemes in Weston: a simple cms plugin that reads a profile from weston.ini and a more advanced plugin that integrates with colord. Here's a screenshot of how that in turn integrates with the GNOME control center: https://plus.google.com/107928060492923463788/posts/X62VdJxB2UK
  • The Wayland Input Method Framework from Jan Arne Petersen is feature complete, but we're keeping it in weston for now. We need a little more real world exposure and feedback before we promote this to official Wayland API. We have a sample on-screen keyboard in weston, and Maalit has also been ported to the framework.
  • Subsurface protocol from Pekka Paalanen. This extension lets us build up application windows from multiple Wayland surface, potentially combining surfaces with different color spaces or buffer types.
  • Output scaling (HiDPI) from Alex Larsson. Alex describes the feature best in this blog entry: http://blogs.gnome.org/alexl/2013/06/28/hidpi-support-in-gnome It's worth noting that this is not an arbitrary scaling mechanism, it is for scaling an entire output by an integer factor.
  • Rasperry Pi backend and renderer from Collabora. There was a lot of coverage on this one: Pekkas post is the most technical, Daniels gives a good overview and then there's the Collaboras case stuy and a linux.com article among others. http://ppaalanen.blogspot.com/2013/05/weston-on-raspberry-pi-accelerated.html http://fooishbar.org/tell-me-about/wayland-on-raspberry-pi/ http://www.collabora.com/services/case-studies/raspberrypi http://www.linux.com/news/embedded-mobile/mobile-linux/721510-raspberry-pi-gains-graphics-speed-as-wayland-replaces-x
  • Improved thread safety and relaxed thread-model assumptions in libwayland-client. One of the restrictions in the client side library was that we assume that the toolkit or application will provide a "main thread" which is responsible for reading events and distributing them to event queues for the other threads. We also assume that there will always only be one such thread. It turs out that this breaks in many cases, in particular, it clashes with the threading model of EGL. The client side event processing has been reworked to not make those assumptions.
  • Multi seat support from Rob Bradford. We can now configure how input devices gets assigned to wl_seats by setting udev properties on the devices. This lets us setup multiple seats in weston, similar to multi-pointer X, where each seat gets its own pointer and keyboard focus. Additionally, a pointer can be confined to a given output.
  • New example client that illustrates the "application compositor" idea. Some clients need to share buffers
  • a popular example is process separation in web browsers. One client wants to render to a surface, the other client wants to use the result as a texture. In wayland, this is achieved by having one client act as a compositor to the other, and nested is a minimal example of how this is done.
  • Make libxkbcommon support optional from Matt Roper. Some use cases don't need a full PC keyboard, for example a car dashboard or a set-top box panel has buttons but not a keyboard in the traditional sense. In these cases, we only need keycodes, and libxkbcommon is just dead weight. There's a lot of minor features and improved functionality as well and we have a lot of bugs fixes in this cycle too. Just from commit messages, I count at least 66793, 66798, 66802, 66795, 63360, 57637, 63796, 65913, 63510, 65726, 65933, 65986, 66173, 66198, 66531, 66530, 66529, 65961, 66167, 62910, 61675, 59983, 64873, 63360, 64506, 64874, 64689, 64691, 63812, 64183, and 64537 from bugs.freedesktop.org. Many more bugs have been fixed that never made it into bugzilla in the first place.

New in version 1.2.0 RC (July 10th, 2013)

  • Stable wayland-server API. When 1.0 was release we didn't proise a stable API for libwayland-server.so. This means that with every major Wayland release, compositor might break. When it was just weston, it wasn't a big deal, but as more external wayland compositors appear, we have to stop breaking this. Much of the input logic was split in an awkward way and has bee moved to weston. The remaining structs (mostly just wl_resource) have been made opaque. Finally, versioning didn't work correctly with the old API, so we had to replace a few functions. Much of this work was done by Jason Ekstrand.
  • Color management: Richard Hughes worked on color mangement for Wayland and implemented two schemes in Weston: a simple cms plugin that reads a profile from weston.ini and a more advanced plugin that integrates with colord. Here's a screenshot of how that in turn integrates with the GNOME control center: https://plus.google.com/107928060492923463788/posts/X62VdJxB2UK
  • The Wayland Input Method Framework from Jan Arne Petersen is feature complete, but we're keeping it in weston for now. We need a little more real world exposure and feedback before we promote this to official Wayland API. We have a sample on-screen keyboard in weston, and Maalit has also been ported to the framework.
  • Subsurface protocol from Pekka Paalanen. This extension lets us build up application windows from multiple Wayland surface, potentially combining surfaces with different color spaces or buffer types.
  • Output scaling (HiDPI) from Alex Larsson. Alex describes the feature best in this blog entry: http://blogs.gnome.org/alexl/2013/06/28/hidpi-support-in-gnome It's worth noting that this is not an arbitrary scaling mechanism, it is for scaling an entire output by an integer factor.
  • Rasperry Pi backend and renderer from Collabora. There was a lot of coverage on this one: Pekkas post is the most technical, Daniels gives a good overview and then there's the Collaboras case stuy and a linux.com article among others. http://ppaalanen.blogspot.com/2013/05/weston-on-raspberry-pi-accelerated.html http://fooishbar.org/tell-me-about/wayland-on-raspberry-pi/ http://www.collabora.com/services/case-studies/raspberrypi http://www.linux.com/news/embedded-mobile/mobile-linux/721510-raspberry-pi-gains-graphics-speed-as-wayland-replaces-x
  • Improved thread safety and relaxed thread-model assumptions in libwayland-client. One of the restrictions in the client side library was that we assume that the toolkit or application will provide a "main thread" which is responsible for reading events and distributing them to event queues for the other threads. We also assume that there will always only be one such thread. It turs out that this breaks in many cases, in particular, it clashes with the threading model of EGL. The client side event processing has been reworked to not make those assumptions.
  • Multi seat support from Rob Bradford. We can now configure how input devices gets assigned to wl_seats by setting udev properties on the devices. This lets us setup multiple seats in weston, similar to multi-pointer X, where each seat gets its own pointer and keyboard focus. Additionally, a pointer can be confined to a given output.
  • New example client that illustrates the "application compositor" idea. Some clients need to share buffers
  • a popular example is for process separation in web browsers. One client wants to render to a surface, the other client wants to use the result as a texture. In wayland, this is achieved by having one client act as a compositor to the other, and nested is a minimal example of how this is done.
  • Make libxkbcommon support optional from Matt Roper. Some use cases don't need a full PC keyboard, for example a car dashboard or a set-top box panel has buttons but not a keyboard in the traditional sense. In these cases, we only need keycodes, and libxkbcommon is just dead weight. Aside from the features, we have a lot of bugs fixes in this cycle too. Just from commit messages, I count at least 63360, 57637, 63796, 65913, 63510, 65726, 65933, 65986, 66173, 66198, 66531, 66530, 66529, 65961, 66167, 62910, 61675, 59983, 64873, 63360, 64506, 64874, 64689, 64691, 63812, 64183, and 64537 from bugs.freedesktop.org. Many more bugs have been fixed that never made it into bugzilla in the first place.

New in version 1.1 (April 16th, 2013)

  •  Raspberry Pi backend (Pekka)
  •  Optimize damage handling when moving surfaces in and out of planes (Ander)
  •  Scanout of transformed buffers (Ander)
  •  Touch screen calibration feature and client (Rob Bradford)
  •  pixman renderer (Vasily Khoruzhick)
  •  SDK for out-of-tree module development
  •  Use EXT_buffer_age in KMS backend (Ander)
  •  fbdev backend (Philip Whitnall)
  •  RDP backend (Hardening)
  •  Headless backend (Ander)
  •  libunwind support for better crash dumps (Kristian)
  •  Proper support for popup surfaces (Giulio Camuffo)
  •  Documentation improvement (Tiago Vignatti, Matthias Clasen, Peter Hutterer)

New in version 1.0.4 (January 26th, 2013)

  • As a reminder, the main reason for this release is the fix for CPU eating bug in the Weston plane code. Aside from that I added a few documentation fixes (new weston.ini and the typo in weston-launch help). On the Wayland side, we have destroy signal APIs for wl_display and wl_event_loop, as well as a more robust version of the event loop test case.

New in version 1.0.3 (December 15th, 2012)

  • Jans IM + OSK work
  • XWM split out as a client
  • Remote rendering functionality
  • Subsurface / surface group

New in version 1.0.2 (December 3rd, 2012)

  • In particular, I'm keen to get a release out with Anders new wl_display_dispatch_queue_pending() entry point, that allow us to avoid triple buffering in mesa. The mesa 9.0.2 release may come out as soon as next week and I want to make sure it can depend on a wayland version with this fix.
  • Also in wayland 1.0.2 is another important fix from Jonas that avoids premature exit and potential memory corruption in wl_display_roundtrip(). Finally, Quentin Glidic fixed our pkg-config files to actually include the correct directories.
  • The weston 1.0.2 release has a few minor bugfixes, but I've mostly released it to keep the version numbers in sync. Mainly documentation fixes and a couple of repaint bugs.