Wayland / Weston Changelog

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).