Mir Changelog

What's new in Mir 1.7.0

Jan 17, 2020
  • ABI summary:
  • mirplatform ABI bumped to 17
  • Enhancements:
  • [X11] Add basic window decorations
  • [X11] Add a configuration option to specify the Xwayland executable
  • [X11] Code cleanup: fix threading, initialization, style, etc.
  • [server/input] Use a sorted map for outputs
  • BasicWindowManager requests on unknown windows should noop
  • Bugs fixed:
  • [X11] Don't restart Xwayland if we killed it deliberately (Fixes: #1169)
  • [X11] We don't need to stop Xwayland when pausing the Mir server. (Fixes: #1188)
  • [wayland-platform] Apply output scale. (Fixes: #1133)
  • [wayland] (cursor code) don't assume PixelSource::read() will execute the do_with_pixels functor. (Fixes: #1180)
  • [packaging] Add libwayland-dev to Build-Depends
  • Fix clang found clangers

New in Mir 1.6.0 (Dec 16, 2019)

  • ABI summary:
  • mirserver ABI bumped to 52
  • mirplatform ABI bumped to 17
  • Enhancements:
  • [mirclient] Drop some more mirclient support: infrastructure, unit-tests
  • [Wayland] Avoid unnecessary calls into Window Management (Fixes #1049)
  • [graphics-platforms] Improve diagnostics by running the platform probe even when manually selected. (Fixes #1045)
  • [graphics-platforms] Provide a generic way to handle the Wayland buffer consumption
  • [graphics-platforms] tests: Add basic manual platform test harness
  • [graphics-platforms] Add "Wayland platform"
  • [graphics-platforms] Initial rpi-dispmanx platform
  • Drop the --wayland-socket-name (redundant) configuration option
  • New mir_demo_client_wayland_egl_spinner in mir-tests-tools package
  • New miral-system-compositor in mir-demos package
  • Bugs fixed:
  • Crashes & lockups caused by thread-unsafe code. (Fixes #1106)
  • Mir crashes when surface sets parent to null. (Fixes #1053)
  • Fix build against GMock/GTest ≥ 1.9
  • Fix build on Arch (Fixes #1084)

New in Mir 1.3.0 (Jul 2, 2019)

  • ABI summary:
  • mirserver ABI bumped to 49
  • Enhancements:
  • [Wayland] Rename zxdg_output_v1 -> zxdg_output_manager_v1
  • [Wayland] Eagerly send buffer release events
  • [Wayland] Eagerly execute work when on Wayland thread
  • [MirAL] Surface depth layer support
  • [MirAL] Application Zone support
  • [MirAL] Explicit handling of Wayland extensions in MirAL and Mir
  • [MirAL] Do not place parentless windows relative to existing windows
  • [Wayland/mirtest] publish miral::TestWlcsDisplayServer and miral::TestServer fixtures in mirtest-dev. (Fixes #878)
  • [Wayland/generator] Force compile-time error if XML/generated classes are updated to a new version without also updating the child classes
  • [Wayland/generator] Add base objects for Wayland objects and globals
  • [Wayland/generator] Add a constructor-from-parent for objects that can be server-constructed
  • [Examples] Implement Ctrl-Alt-T handling for miral-shell
  • Bugs fixed:
  • [Wayland] Better handle window role state changes. (Fixes #836)
  • [Wayland] Fix INCLUDEDIR for the mirwayland.pc file. (Fixes #873)
  • [Wayland] Process output update notifications on the correct thread. (Fixes: #886)
  • [MirAL] Allow unfocused windows to receive mouse down events
  • [MirAL] Handle exceptions propagating from InternalClient code
  • Add a package config file for mircommon and reference it mirwayland and mirplatform. (Fixes: #868)
  • [nested] Make sure we destroy eglImage before class gets destructed

New in Mir 1.1.0 (Dec 22, 2018)

  • ABI summary:
  • mirclient ABI unchanged at 9
  • miral ABI unchanged at 3
  • mirserver ABI unchanged at 47
  • mircommon ABI unchanged at 7
  • mirplatform ABI unchanged at 16
  • mirprotobuf ABI unchanged at 3
  • mirplatformgraphics ABI bumped to 16
  • mirclientplatform ABI unchanged at 5
  • mirinputplatform ABI unchanged at 7
  • mircore ABI unchanged at 1
  • mircookie ABI unchanged at 2
  • Enhancements:
  • eglstream-kms: Fully functional platform for Nvidia drivers >= 396
  • MinimalConsoleServices: Android has no VTs, but also doesn't need anything but `open()` to access devices.
  • Clarify and fix focus switching logic
  • [Musl] Don't call pthread_rwlockattr_setkind_np() on systems where it is not defined
  • Detect GTest/GMock via pkg-config when possible. Otherwise fall back to the old huristic
  • Add missing packages to Fedora documentation
  • Use the more modern method of specifying standard in CMake
  • Bugs fixed:
  • [Musl] Add missing includes
  • Use the correct package name to detect gtest on RPM distributions

New in Mir 1.0.0 (Sep 21, 2018)

  • Enhancements:
  • [Wayland] A configuration mechanism to select the Wayland extensions
  • [Wayland] Support XDG shell stable
  • [Wayland] Improve protocol scanner
  • [libmiral] Display configuration file support
  • [libmiral] Make the pid of external clients available
  • [libmiral] Add DisplayConfiguration
  • [console] Ensure the_console_services() is constructed only once
  • [console] An option to select the ConsoleServices provider
  • [mir-demos] Move legacy binaries out of mir-demos package
  • [mir-test-tools] Drop internal test binaries from mir-test-tools package
  • [X11] Experimental X11 support via Xwayland
  • Bugs fixed:
  • [Wayland] creating a shell_surface should associate a role immediately. (Fixes #512)
  • [Wayland] Default for positioner gravity
  • [Wayland] Use miral test framework for wlcs tests
  • [Wayland] Send popup configure events
  • [Wayland] When setting the pointer cursor apply it. (Fixes #555)
  • [Wayland] Hook the OutputManager into display reconfiguration notifications. (Fixes #585)
  • [Wayland] Remove hard coded values for output geometry (screen orientation and pixel arrangement). (Fixes #601)
  • [miral-kiosk] Don't allow apps to specify size of "maximized" windows. (Fixes #454)
  • [Mir-on-X] Fixed keyboard grab issue on Arch. (Fixes #549)
  • [eglstream-kms] Platform re-enabled, but no GL client support
  • [console] Fix VT switching with LinuxVirtualTerminal. (Fixes #499)
  • [console] Avoid breaking X11 desktops that have not claimed the VT from logind. (Fixes #535, #539)
  • [console] LogindConsoleServices: Support VT switching. (Fixes #459)
  • [libmiral] Parents of the active window also have focus. (Fixes #522)
  • Fix "sanitize" builds
  • Racy shutdown in miral-tests and miral_wlcs_tests. (Fixes #543)
  • Fix a locale initialization crash on musl
  • [mesa] Use both id and drm_fd as output identifier for cursor buffer as we're not sure of the uniqueness of either. (Fixes #556)
  • [mesa] Disconnected hardware has no modes: invent a (slow) refresh rate. (Fixes #587)
  • [input] Guess output for touchscreen (works with one of each). (Fixes #605)

New in Mir 0.24.0 (Aug 23, 2016)

  • Enhancements:
  • Added a new tool 'mirvanity' which can use a high speed video camera to measure client-to-screen latency.
  • Added (build-time) support for desktop full OpenGL servers (disabled by default in favor of GLESv2).
  • Introduced new buffer semantics (NBS) and enabled it by default.
  • Avoided using libmirserver in mir_demo_standalone_render_overlays, making bringup traces less cluttered.
  • Removed TilingWindowManager from example servers.
  • Added two new mir_*_performance_test tools that are run as part of 'mir_performance_tests'.
  • Added pointer confinement to the client API.
  • Added new platform supporting software EGLStreams.
  • Added an input platform that the nested server can use.
  • Allow configuration of the application_not_responding_detector
  • Handle server-side keymapping using XKBMapper.
  • Remove the offscreen display.
  • Add callback option to notify shells that the server is about to stop.
  • Add logging for ANativeWindow events on Android.
  • ABI summary:
  • mirclient ABI unchanged at 9
  • mirserver ABI bumped to 41
  • mircommon ABI unchanged at 6
  • mirplatform ABI bumped to 12
  • mirprotobuf ABI unchanged at 3
  • mirplatformgraphics ABI bumped to 10
  • mirclientplatform ABI unchanged at 5
  • mirinputplatform ABI unchanged at 5

New in Mir 0.18.0 (Dec 22, 2015)

  • Graphics:
  • Internal preparation work needed for Vulkan, hardware decoded multimedia optimizations, and latency improvements for nested servers.
  • Started work on plugin renderers. This will better prepare mir for IoT, where we might not have a Vulkan/GLES stack on the device, and might have to use the CPU.
  • Fixes for graphics corruption affecting Xmir (blocky black bars)
  • Various fixes for multimonitor scenarios, as well as better support for scaling buffers to suit the the monitor its on.
  • Input:
  • Use libinput by default. We had been leaning on an old version of the Android input stack. Completely remove this in favor of using libinput.
  • Bugs:
  • Quite a long list of bug correction. Some of these were never ‘in the wild’ but existed in the course of 0.18 development.

New in Mir 0.17.0 (Oct 16, 2015)

  • ABI summary: Only servers and graphics drivers need rebuilding;
  • Mirclient ABI unchanged at 9
  • Mirserver ABI bumped to 35
  • Mircommon ABI unchanged at 5
  • Mirplatform ABI bumped to 11
  • Mirprotobuf ABI bumped to 3
  • Mirplatformgraphics ABI bumped to 6
  • Mirclientplatform ABI unchanged at 3
  • Enhancements:
  • Introduce libmircookie, a simple mechanism for a group of cooperating processes to hand out and verify difficult-to-forge timestamps to untrusted 3rd parties.
  • More refactorings to support renderers other than GL.
  • Add MirBlob to the client API - a tool for serializing and deserializing data.
  • Introduce a libinput based input platform, not yet used by default.
  • Provide a mechanism for the shell to send events on surface construction.
  • Provide mir::shell::DisplayConfigurationController allowing shells to correctly change the display configuration, notifying clients as appropriate.
  • New DSO versioning guide.
  • Send events pertaining to the output a surface is currently on (dpi, form factor, scale) to clients.
  • Bug fixes:
  • [enhancement] XMir specific documentation should live in its own subsection (LP: #1200114)
  • Nested servers need cursor support (LP: #1289072)
  • Mir cursor is missing/invisible until the client sets it multiple times (LP: #1308133)
  • [regression] Fullscreen software surfaces (like Xmir -sw) can crash the Mir server (LP: #1493721)
  • [usc] Mir gives up and shuts down due to input with multimonitor qtmir (std::exception::what: Failure sending input event) (LP: #1496069)
  • Mouse cursor disappears upon entering the surface area of a nested client (LP: #1496849)
  • [android] input is not dispatched when attaching an external monitor (LP: #1498045)
  • [android] input coordinates are scaled incorrectly when an external display is connected (LP: #1498540)
  • [android] std::exception::what: error during hwc set() when unplugging external monitor (LP: #1498550)
  • tests do not compile without precompiled headers (LP: #1498829)
  • [android] std::exception::what: Failed to monitor fd: Operation not permitted when unplugging external display in a nested configuration (LP: #1499042)
  • Mir suddenly no longer builds since 'mesa (11.0.0-1ubuntu1) wily': /usr/include/EGL/eglplatform.h:100:35: fatal error: android/native_window.h: No such file or directory (LP: #1499134)
  • [android] various crashes when unplugging external display on a nested configuration (LP: #1501927)
  • Cursor becomes visible by itself when an external monitor is connected (LP: #1502200)
  • mesa FTBFS due to missing Requires in mirclient (LP: #1503450)

New in Mir 0.16.0 (Sep 30, 2015)

  • ABI summary: Only servers and graphics drivers need rebuilding;
  • Mirclient ABI unchanged at 9
  • Mirserver ABI bumped to 34
  • Mircommon ABI unchanged at 5
  • Mirplatform ABI bumped to 10
  • Mirprotobuf ABI bumped to 2
  • Mirplatformgraphics ABI bumped to 5
  • Mirclientplatform ABI unchanged at 3
  • Enhancements:
  • Significantly shortened buffer holding time for system compositors should yield higher/smoother frame rates.
  • Progress on new buffer semantics work.
  • Mir-on-x platform refinements, including support for guest platform, key combinations, rotation, display window size.
  • Enhanced cross-compilation, including multi-distro, and multi-arch support.
  • Added message auth code to make_event functions. Older implementations are now marked as deprecated.
  • Added EventBuilder for input platforms to use to construct events.
  • Improved logging.
  • Added protobuf versioning support.
  • Support for the NATIVE_WINDOW_CONSUMER_USAGE_BITS query.
  • Added utilities to detect the capabilities of an input device.
  • Initial refactoring to support renderers other than GL.
  • Optimized ANR logic to decide less frequent wakeups.
  • Allow clients to set their surface event handler up front.
  • Added ability to provide for setting a scale on BufferStream.
  • Bug fixes

New in Mir 0.13.3 (Jun 27, 2015)

  • MirEvent cleanup
  • Continued on buffer semantic changes (that will help nested bypass)
  • "Application not responding" branch proposed
  • Mir-on-X branch proposed
  • Continued work on reworking QtMir to use the WM interface in Mir
  • Continued coordinating with upstream on libinput changes we proposed
  • Platform api with deprecated Mir code removed in process of landing
  • Started a python-based perf test framework implementation
  • Started evaluating Vulkan/WSI API
  • Fixed fd leaks in some tests
  • Double-buffering support

New in Mir 0.11.0 (Feb 14, 2015)

  • Packaging changes:
  • Due to changes in the Mir driver model the client platforms are no longer versioned by soname. Thusly libmirplatform5driver-(mesa|android) is replaced by mir-client-platform-(mesa-android). A new package mir-client-platform-mesa-dev is introduced containing headers previously in mirplatform-dev.
  • Enhancements:
  • Lots more major plumbing in the Android code, on the path to supporting external displays.
  • Add support for clang 3.6.
  • Major redesign of server classes in mir::shell,scene and friends (still in progress).
  • Added client API for creating dialogs and tooltips.
  • Added new surface states: mir_surface_state_hidden and mir_surface_state_horizmaximized.
  • Performance: Use optimally efficient fragment shading when possible.
  • Performance: (Desktop) Composite using double buffering instead of triple to reduce visible lag.
  • mir_proving_server: Can now resize windows from any edge or corner using the existing Alt+middlebuttondrag.
  • mir_proving_server: Added some demo custom shaders (negative and high contrast modes: Super+N/C).
  • mir_proving_server: Can now close clients politely via Alt+F4.
  • Added MirPointerInputEvent (part of the new input API, the old MirMotionEvent is still supported also for now).
  • ABI summary: Servers need rebuilding, but clients do not; . Mirclient ABI unchanged at 8 . Mircommon ABI unchanged at 3 . Mirplatform ABI bumped to 6 . Mirserver ABI bumped to 29
  • Bug fixes:
  • [regression] mir_demo_server exits immediately with boost bad_any_cast exception (LP: #1414630)
  • need way to position menus and tooltips (relative positioning to parent) (LP: #1324101)
  • GLibMainLoopTest failure seen in CI (LP: #1413748)
  • Clang builds fail in CI (LP: #1416317)
  • segfault in mir::compositor::GLProgramFamily::Shader::init() (LP: #1416482)
  • GLRenderer: The default fragment shader is sub-optimal for alpha=1.0 (LP: #1350674)
  • mesa::DisplayBuffer::post_update is triple buffered - more laggy than it needs to be (LP: #1350725)
  • Cannot connect to nested server when started from a differen vt (LP: #1379266)
  • [testfail] AsioMainLoopAlarmTest fails in CI (LP: #1392256)
  • Compositor report inconsistently reports frame time during bypass, and render time otherwise (LP: #1408906)
  • [regression] mir_demo_client_fingerpaint doesn't paint anything any more (with the mouse) (LP: #1413139)
  • Hardware cursor is always slightly ahead of the composited image (LP: #1274408)
  • integration tests are outputting (too many) DisplayServer log messages (LP: #1408231)
  • [regression] deploy-and-test.sh doesn't work any more (unless you have umockdev installed already) (LP: #1413479)
  • Color Inverse on display. Toggle Negative Image (LP: #1400580)
  • mir-ubuntu-vivid-armhf-ci fails consistently (LP: #1407863)
  • Double-buffered surfaces may lag or freeze if event driven and not constantly redrawing (LP: #1395581)
  • Pointer motion and crossing events are missing (LP: #1417650)

New in Mir 0.8 (Oct 20, 2014)

  • Support for touchspots to visually show touch locations on the screen, albeit at the cost of performance.
  • Mir clients can now expose performance information like frame rates and render times via setting the MIR_CLIENT_PERF_REPORT=log environment variable to dump the performance information to the standard output.
  • Less sensitivity to ABI breaks by hiding headers from being exposed that have been unused by external projects, etc. There's also more scripts now to detect ABI breakage.
  • More improvements to touch responsiveness -- including less lag and smoother scrolling.
  • Hardware overlays are now enabled by default.
  • A large number of bug-fixes.

New in Mir 0.1.2 (Nov 28, 2013)

  • graphics: android: improve interface for mga::DisplayDevice so its just concerned with rendering and posting.
  • surfaces: rename "surfaces" component to "scene".
  • surfaces, shell: Migrate Session data model from shell to surfaces.
  • graphics: change fill_ipc_package() to use real pointers.
  • mir_client_library.h: Fix typo "do and locking" should be "do any locking".
  • API enumerations cleanup: Remove slightly misleading *_enum_max_ values, and replace them with more accurate plural forms.
  • test_android_communication_package: Do not expect opened fd to be >0, we may have closed stdin making this a valid value (LP: #1247718).
  • Update docs about running Mir on the desktop to mention new package ubuntu-desktop-mir.
  • offscreen: Add a display that renders its output to offscreen buffers
  • graphics: android: fix regression for hwc1.0 devices introduced in r1228 (LP: #1252433).
  • OffscreenPlatform provides the services that the offscreen display needs from the Platform.
  • graphics: android: consolidate the GLContexts classes in use.
  • Fix uninitialized variable causing random drm_auth_magic test failures. (LP: #1252144).
  • Add a fullyish functional Udev wrapper. This currently sits in graphics/gbm, but will be moved to the top-level when input device detection migrates.
  • Add resizing support to example code; demo-shell and clients.
  • eglapp: Clarify messages about pixel formats (LP: #1168304).
  • Adds support to the MirMotionEvent under pointer_coordinates called tool_type. This will allow clients to tell what type of tool is being used, from mouse/finger/etc. (LP: #1252498)
  • client,frontend: Report the real available surface pixel formats to clients. (LP: #1240833)
  • graphics: android: 1) change hwc1.1 to make use of sync fences during the compositor's gl renderloop. Note that we no longer wait for the render to complete, we pass this responsibility to the driver and the kernel. 2) support nexus 10. (LP: #1252173) (LP: #1203268)
  • shell: don't publish SurfacesContainer - it can be private to shell.
  • gbm: Don't mess up the VT mode on setup failure Only restore the previous VT mode during shutdown if it was VT_AUTO.
  • Fix a crash due to a failed eglMakeCurrent() call when in nested mode.
  • shell: unity-mir uses shell::FocusSetter - make the header public again
  • Add resize support to client surfaces (mir::client::MirSurface).
  • graphics: android: support 'old aka 2012' nexus 7 hwc (nvidia tegra3 SoC) better. (LP: #1231917)
  • Add resize support to *ClientBuffer classes. Now always get dimensions from the latest buffer package.
  • android: support driver hooks for the Mali T604 (present in nexus 10)
  • Add width and height to the protocol Buffer messages, in preparation for resizable surfaces.
  • surfaces, shell, logging, tests: don't publish headers that can be private to surfaces. surfaces/basic_surface.h, surfaces/surface_controller.h and shell/surface_builder.h
  • examples: Restore GL framebuffer binding when destroying the render target
  • examples, surfaces, shell: remove render_surfaces dependency on BasicSurface
  • geometry: remove implementation of streaming operators from headers (LP: #1247820)
  • Eliminate the registration order focus sequence, folding it's functionality in to the session container.
  • Ensure the session mediator releases acquired buffer resources before attempting to acquire a new buffer on behalf of the client. This fixes performance regression (LP: #1249210).
  • Some cleanups to test_client_input.cpp.
  • Factor out a bunch of "ClientConfigCommon".
  • Small cleanup to session container test to increase encapsulation.
  • shell, surfaces: Another step in "fixing" the surfaces hierarchies - only publish interfaces and putting the data model into surfaces.
  • graphics: android: HWC1.1 use EGL to get further information about the framebuffer pixel format.
  • Fix FTBS using use_debflags=ON (building for android-armhf). (LP: #1248014)
  • Add a client input receiver report.
  • doc: doxygen 1.8.4 complains about an obsolete config so ran "doxygen u Doxyfile.in".
  • Implement resize() for the server-side Surface classes.
  • android: clean up mga::DisplayBuffer and mga::DisplayBufferFactory
  • Add resize() support to BufferStream, in preparation for resizable surfaces.
  • Merge metadata changes from the newly reconstructed lp:mir
  • tests: Deduplicate mg::GraphicBufferAllocator stubs.
  • examples: Remove spurious use of mir/shell/surface.h.
  • frontend: remove ClientTrackingSurface from the Surface class hierarchy
  • Bumping ABI on server to libmirserver11.
  • Don't mention "Renderable". That interface hasn't existed for quite some time now.
  • android-input: Assign more unique touch ids.

New in Mir 0.1.1 (Nov 16, 2013)

  • New unit tests, various fixes to avoid publishing internal headers, support for specifying the Mir nested server name either via a --name= argument or the MIR_SERVER_NAME environment variable, refactoring of the Mir Android display classes, and a first step towards providing surface resize support.