Mir

Merge lp:~mir-team/mir/1.0 into lp:mir/ubuntu

Proposed by Alan Griffiths on 2017-10-08
Status: Superseded
Proposed branch: lp:~mir-team/mir/1.0
Merge into: lp:mir/ubuntu
Diff against target: 71267 lines (+34553/-11919) (has conflicts)
1961 files modified
.bzrignore (+2/-0)
CMakeLists.txt (+17/-7)
COPYING.GPL2 (+339/-0)
COPYING.LGPL2 (+481/-0)
HACKING.md (+1/-33)
README.md (+2/-2)
benchmarks/benchmark_multiplexing_dispatchable.cpp (+1/-1)
benchmarks/frame-uniformity/frame_uniformity_test.cpp (+1/-1)
benchmarks/frame-uniformity/frame_uniformity_test.h (+1/-1)
benchmarks/frame-uniformity/main.cpp (+1/-1)
benchmarks/frame-uniformity/touch_measuring_client.cpp (+1/-1)
benchmarks/frame-uniformity/touch_measuring_client.h (+1/-1)
benchmarks/frame-uniformity/touch_producing_server.cpp (+1/-1)
benchmarks/frame-uniformity/touch_producing_server.h (+1/-1)
benchmarks/frame-uniformity/touch_samples.cpp (+1/-1)
benchmarks/frame-uniformity/touch_samples.h (+1/-1)
benchmarks/frame-uniformity/vsync_simulating_graphics_platform.cpp (+1/-1)
benchmarks/frame-uniformity/vsync_simulating_graphics_platform.h (+1/-1)
cmake/FindPIL.cmake (+8/-0)
cmake/MirCommon.cmake (+1/-0)
debian/changelog (+62/-0)
debian/control (+44/-4)
debian/copyright (+28/-20)
debian/libmiral-dev.install (+3/-0)
debian/libmiral2.install (+1/-0)
debian/libmiral2.symbols (+399/-0)
debian/libmirclient-dev.install (+2/-0)
debian/libmirserver45.install (+1/-1)
debian/mir-demos.install (+9/-1)
debian/rules (+16/-7)
doc/Doxyfile.in (+10/-3)
doc/building_source_for_pc.md (+0/-101)
doc/demo_server_controls.md (+0/-69)
doc/demo_shell_controls.md (+0/-53)
doc/getting_and_using_mir.md (+106/-0)
doc/getting_involved_in_mir.md (+106/-0)
doc/installing_prebuilt_on_pc.md (+0/-8)
doc/introducing_the_miral_api.md (+25/-0)
doc/mainpage.md (+59/-97)
doc/using_mir_on_pc.md (+0/-91)
examples/CMakeLists.txt (+16/-46)
examples/animated_cursor_demo_client.c (+1/-1)
examples/as_render_target.h (+1/-1)
examples/basic.c (+6/-9)
examples/buffer_render_target.cpp (+1/-1)
examples/buffer_render_target.h (+1/-1)
examples/camera.c (+1/-1)
examples/chain_jumping_buffers.c (+1/-1)
examples/client_helpers.cpp (+7/-1)
examples/client_helpers.h (+1/-1)
examples/client_touch_validator.cpp (+1/-1)
examples/cursor-theme-dump.cpp (+0/-127)
examples/cursors_demo_client.c (+1/-1)
examples/demo_client_display_config.c (+107/-31)
examples/eglapp.c (+1/-1)
examples/eglapp.h (+1/-1)
examples/eglcounter.cpp (+1/-1)
examples/eglflash.c (+1/-1)
examples/eglplasma.c (+1/-1)
examples/eglsquare.cpp (+80/-75)
examples/eglstateswitcher.c (+1/-1)
examples/egltriangle.c (+1/-1)
examples/fingerpaint.c (+1/-1)
examples/flicker.c (+1/-1)
examples/glog_logger.cpp (+1/-1)
examples/glog_logger.h (+1/-1)
examples/graphics.h (+1/-1)
examples/graphics_utils.cpp (+1/-1)
examples/image_renderer.cpp (+1/-1)
examples/image_renderer.h (+1/-1)
examples/input_shapes.cpp (+1/-1)
examples/mir_demo_server_loader.cpp (+1/-1)
examples/mir_image.h (+1/-1)
examples/miral-kiosk/CMakeLists.txt (+12/-0)
examples/miral-kiosk/kiosk_main.cpp (+94/-0)
examples/miral-kiosk/kiosk_window_manager.cpp (+164/-0)
examples/miral-kiosk/kiosk_window_manager.h (+54/-0)
examples/miral-kiosk/sw_splash.cpp (+173/-0)
examples/miral-kiosk/sw_splash.h (+44/-0)
examples/miral-shell/CMakeLists.txt (+69/-0)
examples/miral-shell/decoration_provider.cpp (+666/-0)
examples/miral-shell/decoration_provider.h (+119/-0)
examples/miral-shell/desktop/CMakeLists.txt (+12/-0)
examples/miral-shell/desktop/miral-shell.desktop.in (+18/-0)
examples/miral-shell/desktop/ubuntu-logo.svg (+27/-0)
examples/miral-shell/floating_window_manager.cpp (+805/-0)
examples/miral-shell/floating_window_manager.h (+146/-0)
examples/miral-shell/miral-app.sh (+58/-0)
examples/miral-shell/miral-desktop.sh (+52/-0)
examples/miral-shell/miral-run.sh (+17/-0)
examples/miral-shell/miral-screencast.sh (+48/-0)
examples/miral-shell/miral-xrun.sh (+69/-0)
examples/miral-shell/shell_main.cpp (+98/-0)
examples/miral-shell/spinner/CMakeLists.txt (+67/-0)
examples/miral-shell/spinner/eglapp.cpp (+83/-0)
examples/miral-shell/spinner/eglapp.h (+33/-0)
examples/miral-shell/spinner/eglspinner.cpp (+372/-0)
examples/miral-shell/spinner/miregl.cpp (+239/-0)
examples/miral-shell/spinner/miregl.h (+67/-0)
examples/miral-shell/spinner/png2header.py (+87/-0)
examples/miral-shell/spinner/splash.h (+45/-0)
examples/miral-shell/tiling_window_manager.cpp (+692/-0)
examples/miral-shell/tiling_window_manager.h (+140/-0)
examples/miral-shell/titlebar_config.cpp (+38/-0)
examples/miral-shell/titlebar_config.h (+30/-0)
examples/multi_stream.cpp (+1/-1)
examples/multiwin.c (+1/-1)
examples/pointer_confinement.c (+1/-1)
examples/prerendered_frames.c (+1/-1)
examples/progressbar.c (+1/-1)
examples/prompt_session.c (+1/-1)
examples/release_at_exit.c (+1/-1)
examples/render_surface.cpp (+1/-1)
examples/render_surfaces.cpp (+0/-468)
examples/render_to_fb.cpp (+0/-108)
examples/screencast.cpp (+1/-1)
examples/scroll.cpp (+1/-1)
examples/server_example.cpp (+67/-84)
examples/server_example_adorning_compositor.cpp (+1/-1)
examples/server_example_adorning_compositor.h (+1/-1)
examples/server_example_basic_window_manager.cpp (+0/-328)
examples/server_example_basic_window_manager.h (+0/-264)
examples/server_example_canonical_window_manager.cpp (+0/-1005)
examples/server_example_canonical_window_manager.h (+0/-136)
examples/server_example_cursor_images.cpp (+0/-57)
examples/server_example_cursor_images.h (+0/-33)
examples/server_example_custom_compositor.cpp (+1/-1)
examples/server_example_custom_compositor.h (+1/-1)
examples/server_example_display_configuration_policy.cpp (+0/-115)
examples/server_example_display_configuration_policy.h (+0/-62)
examples/server_example_host_lifecycle_event.cpp (+1/-1)
examples/server_example_host_lifecycle_event_listener.h (+1/-1)
examples/server_example_input_device_config.cpp (+1/-1)
examples/server_example_input_device_config.h (+1/-1)
examples/server_example_input_event_filter.cpp (+1/-1)
examples/server_example_input_event_filter.h (+1/-1)
examples/server_example_input_filter.cpp (+1/-1)
examples/server_example_input_filter.h (+1/-1)
examples/server_example_log_options.cpp (+1/-1)
examples/server_example_log_options.h (+1/-1)
examples/server_example_test_client.cpp (+32/-19)
examples/server_example_test_client.h (+13/-9)
examples/server_example_window_management.cpp (+0/-149)
examples/server_example_window_management.h (+0/-33)
examples/server_minimal.cpp (+0/-39)
examples/target.c (+3/-2)
examples/tooltip.c (+1/-1)
examples/wayland_client.c (+391/-0)
examples/xcursor.c (+0/-973)
examples/xcursor.h (+0/-65)
examples/xcursor_loader.cpp (+0/-228)
examples/xcursor_loader.h (+0/-74)
include/client/mir/client/blob.h (+50/-0)
include/client/mir/client/connection.h (+54/-0)
include/client/mir/client/cookie.h (+50/-0)
include/client/mir/client/display_config.h (+78/-0)
include/client/mir/client/event.h (+54/-0)
include/client/mir/client/surface.h (+50/-0)
include/client/mir/client/window.h (+53/-0)
include/client/mir/client/window_id.h (+48/-0)
include/client/mir/client/window_spec.h (+253/-0)
include/client/mir/event_printer.h (+1/-1)
include/client/mir/events/event_builders.h (+1/-1)
include/client/mir_toolkit/client_types.h (+1/-1)
include/client/mir_toolkit/cursors.h (+1/-1)
include/client/mir_toolkit/debug/surface.h (+1/-1)
include/client/mir_toolkit/event.h (+1/-1)
include/client/mir_toolkit/events/event.h (+1/-1)
include/client/mir_toolkit/events/input/input_event.h (+1/-1)
include/client/mir_toolkit/events/input/keyboard_event.h (+1/-1)
include/client/mir_toolkit/events/input/pointer_event.h (+1/-1)
include/client/mir_toolkit/events/input/touch_event.h (+1/-1)
include/client/mir_toolkit/events/input_configuration_event.h (+1/-1)
include/client/mir_toolkit/events/input_device_state_event.h (+1/-1)
include/client/mir_toolkit/events/keymap_event.h (+1/-1)
include/client/mir_toolkit/events/orientation_event.h (+1/-1)
include/client/mir_toolkit/events/prompt_session_event.h (+1/-1)
include/client/mir_toolkit/events/resize_event.h (+1/-1)
include/client/mir_toolkit/events/surface_event.h (+1/-1)
include/client/mir_toolkit/events/surface_output_event.h (+1/-1)
include/client/mir_toolkit/events/surface_placement.h (+1/-1)
include/client/mir_toolkit/events/window_event.h (+1/-1)
include/client/mir_toolkit/events/window_output_event.h (+1/-1)
include/client/mir_toolkit/events/window_placement.h (+1/-1)
include/client/mir_toolkit/extensions/android_buffer.h (+1/-1)
include/client/mir_toolkit/extensions/android_egl.h (+1/-1)
include/client/mir_toolkit/extensions/drag_and_drop.h (+1/-1)
include/client/mir_toolkit/extensions/fenced_buffers.h (+1/-1)
include/client/mir_toolkit/extensions/gbm_buffer.h (+1/-1)
include/client/mir_toolkit/extensions/graphics_module.h (+1/-1)
include/client/mir_toolkit/extensions/hardware_buffer_stream.h (+1/-1)
include/client/mir_toolkit/extensions/mesa_drm_auth.h (+1/-1)
include/client/mir_toolkit/extensions/set_gbm_device.h (+1/-1)
include/client/mir_toolkit/extensions/window_coordinate_translation.h (+1/-1)
include/client/mir_toolkit/mir_blob.h (+1/-1)
include/client/mir_toolkit/mir_buffer.h (+3/-1)
include/client/mir_toolkit/mir_buffer_stream.h (+1/-1)
include/client/mir_toolkit/mir_client_library.h (+1/-1)
include/client/mir_toolkit/mir_connection.h (+1/-1)
include/client/mir_toolkit/mir_cookie.h (+1/-1)
include/client/mir_toolkit/mir_cursor_configuration.h (+1/-1)
include/client/mir_toolkit/mir_display_configuration.h (+5/-5)
include/client/mir_toolkit/mir_error.h (+1/-1)
include/client/mir_toolkit/mir_extension_core.h (+1/-1)
include/client/mir_toolkit/mir_input_device.h (+4/-4)
include/client/mir_toolkit/mir_persistent_id.h (+1/-1)
include/client/mir_toolkit/mir_platform_message.h (+1/-1)
include/client/mir_toolkit/mir_presentation_chain.h (+1/-1)
include/client/mir_toolkit/mir_prompt_session.h (+1/-1)
include/client/mir_toolkit/mir_screencast.h (+1/-1)
include/client/mir_toolkit/mir_surface.h (+1/-1)
include/client/mir_toolkit/mir_wait.h (+1/-1)
include/client/mir_toolkit/mir_window.h (+2/-2)
include/client/mir_toolkit/mir_window_id.h (+1/-1)
include/client/mir_toolkit/rs/mir_render_surface.h (+2/-2)
include/common/mir/assert_module_entry_point.h (+1/-1)
include/common/mir/cached_ptr.h (+1/-1)
include/common/mir/dispatch/action_queue.h (+1/-1)
include/common/mir/dispatch/dispatchable.h (+1/-1)
include/common/mir/dispatch/multiplexing_dispatchable.h (+1/-1)
include/common/mir/dispatch/readable_fd.h (+1/-1)
include/common/mir/dispatch/threaded_dispatcher.h (+1/-1)
include/common/mir/events/contact_state.h (+1/-1)
include/common/mir/events/input_device_state.h (+1/-1)
include/common/mir/extension_description.h (+1/-1)
include/common/mir/flags.h (+1/-1)
include/common/mir/frontend/buffer_stream_id.h (+1/-1)
include/common/mir/frontend/surface_id.h (+1/-1)
include/common/mir/graphics/native_buffer.h (+1/-1)
include/common/mir/input/device_capability.h (+1/-1)
include/common/mir/input/keymap.h (+1/-1)
include/common/mir/input/mir_input_config.h (+4/-2)
include/common/mir/input/mir_input_config_serialization.h (+1/-1)
include/common/mir/input/mir_keyboard_config.h (+1/-1)
include/common/mir/input/mir_pointer_config.h (+1/-1)
include/common/mir/input/mir_touchpad_config.h (+1/-1)
include/common/mir/input/mir_touchscreen_config.h (+1/-1)
include/common/mir/libname.h (+1/-1)
include/common/mir/log.h (+13/-2)
include/common/mir/logging/logger.h (+1/-1)
include/common/mir/module_deleter.h (+1/-1)
include/common/mir/posix_rw_mutex.h (+1/-1)
include/common/mir/raii.h (+1/-1)
include/common/mir/shared_library.h (+1/-1)
include/common/mir/time/posix_timestamp.h (+1/-1)
include/common/mir/time/types.h (+1/-1)
include/common/mir/uncaught.h (+1/-1)
include/cookie/mir/cookie/authority.h (+1/-1)
include/cookie/mir/cookie/cookie.h (+1/-1)
include/core/mir/abnormal_exit.h (+1/-1)
include/core/mir/anonymous_shm_file.h (+9/-27)
include/core/mir/fatal.h (+1/-1)
include/core/mir/fd.h (+1/-1)
include/core/mir/geometry/dimensions.h (+1/-1)
include/core/mir/geometry/displacement.h (+1/-1)
include/core/mir/geometry/forward.h (+1/-1)
include/core/mir/geometry/length.h (+1/-1)
include/core/mir/geometry/point.h (+1/-1)
include/core/mir/geometry/rectangle.h (+1/-1)
include/core/mir/geometry/rectangles.h (+1/-1)
include/core/mir/geometry/size.h (+5/-5)
include/core/mir/int_wrapper.h (+1/-1)
include/core/mir/optional_value.h (+1/-1)
include/core/mir/shm_file.h (+4/-10)
include/core/mir_toolkit/common.h (+1/-1)
include/core/mir_toolkit/deprecations.h (+1/-1)
include/core/mir_toolkit/mir_input_device_types.h (+1/-1)
include/core/mir_toolkit/mir_native_buffer.h (+1/-1)
include/core/mir_toolkit/mir_version_number.h (+1/-1)
include/miral/miral/active_outputs.h (+74/-0)
include/miral/miral/add_init_callback.h (+47/-0)
include/miral/miral/append_event_filter.h (+44/-0)
include/miral/miral/application.h (+42/-0)
include/miral/miral/application_authorizer.h (+103/-0)
include/miral/miral/application_info.h (+55/-0)
include/miral/miral/canonical_window_manager.h (+59/-0)
include/miral/miral/command_line_option.h (+114/-0)
include/miral/miral/cursor_theme.h (+44/-0)
include/miral/miral/debug_extension.h (+47/-0)
include/miral/miral/display_configuration_option.h (+30/-0)
include/miral/miral/internal_client.h (+88/-0)
include/miral/miral/keymap.h (+58/-0)
include/miral/miral/output.h (+113/-0)
include/miral/miral/runner.h (+74/-0)
include/miral/miral/set_command_line_handler.h (+50/-0)
include/miral/miral/set_terminator.h (+47/-0)
include/miral/miral/set_window_management_policy.h (+55/-0)
include/miral/miral/version.h (+67/-0)
include/miral/miral/window.h (+82/-0)
include/miral/miral/window_info.h (+130/-0)
include/miral/miral/window_management_options.h (+65/-0)
include/miral/miral/window_management_policy.h (+194/-0)
include/miral/miral/window_management_policy_addendum2.h (+70/-0)
include/miral/miral/window_management_policy_addendum3.h (+69/-0)
include/miral/miral/window_manager_tools.h (+254/-0)
include/miral/miral/window_specification.h (+134/-0)
include/miral/miral/workspace_policy.h (+88/-0)
include/platform/mir/client/client_buffer.h (+1/-1)
include/platform/mir/client/client_buffer_factory.h (+1/-1)
include/platform/mir/client/client_context.h (+1/-1)
include/platform/mir/client/client_platform.h (+1/-1)
include/platform/mir/client/client_platform_factory.h (+1/-1)
include/platform/mir/client/egl_native_display_container.h (+1/-1)
include/platform/mir/client/egl_native_surface.h (+1/-1)
include/platform/mir/emergency_cleanup_registry.h (+1/-1)
include/platform/mir/graphics/atomic_frame.h (+1/-1)
include/platform/mir/graphics/buffer.h (+1/-1)
include/platform/mir/graphics/buffer_basic.h (+1/-1)
include/platform/mir/graphics/buffer_id.h (+1/-1)
include/platform/mir/graphics/buffer_ipc_message.h (+1/-1)
include/platform/mir/graphics/buffer_properties.h (+1/-1)
include/platform/mir/graphics/cursor.h (+1/-1)
include/platform/mir/graphics/cursor_image.h (+1/-1)
include/platform/mir/graphics/display.h (+1/-1)
include/platform/mir/graphics/display_buffer.h (+1/-1)
include/platform/mir/graphics/display_configuration.h (+1/-1)
include/platform/mir/graphics/display_configuration_policy.h (+1/-1)
include/platform/mir/graphics/display_report.h (+1/-1)
include/platform/mir/graphics/egl_error.h (+1/-1)
include/platform/mir/graphics/egl_extensions.h (+12/-1)
include/platform/mir/graphics/egl_resources.h (+1/-1)
include/platform/mir/graphics/event_handler_register.h (+1/-1)
include/platform/mir/graphics/frame.h (+1/-1)
include/platform/mir/graphics/gamma_curves.h (+1/-1)
include/platform/mir/graphics/gl_config.h (+1/-1)
include/platform/mir/graphics/gl_format.h (+1/-1)
include/platform/mir/graphics/graphic_buffer_allocator.h (+1/-1)
include/platform/mir/graphics/platform.h (+2/-1)
include/platform/mir/graphics/platform_authentication.h (+1/-1)
include/platform/mir/graphics/platform_ipc_operations.h (+1/-1)
include/platform/mir/graphics/platform_ipc_package.h (+1/-1)
include/platform/mir/graphics/platform_operation_message.h (+1/-1)
include/platform/mir/graphics/renderable.h (+1/-1)
include/platform/mir/graphics/transformation.h (+1/-1)
include/platform/mir/graphics/virtual_output.h (+1/-1)
include/platform/mir/graphics/wayland_allocator.h (+45/-0)
include/platform/mir/input/event_builder.h (+1/-1)
include/platform/mir/input/input_device.h (+1/-1)
include/platform/mir/input/input_device_info.h (+1/-1)
include/platform/mir/input/input_device_registry.h (+1/-1)
include/platform/mir/input/input_report.h (+1/-1)
include/platform/mir/input/input_sink.h (+1/-1)
include/platform/mir/input/platform.h (+1/-1)
include/platform/mir/input/pointer_settings.h (+1/-1)
include/platform/mir/input/touchpad_settings.h (+1/-1)
include/platform/mir/input/touchscreen_settings.h (+1/-1)
include/platform/mir/mir_buffer.h (+1/-1)
include/platform/mir/mir_buffer_stream.h (+1/-1)
include/platform/mir/mir_render_surface.h (+1/-1)
include/platform/mir/module_properties.h (+1/-1)
include/platform/mir/options/option.h (+1/-1)
include/platform/mir/options/program_option.h (+1/-1)
include/platform/mir/renderer/sw/pixel_source.h (+1/-1)
include/platforms/mesa/mir_toolkit/mesa/native_display.h (+1/-1)
include/platforms/mesa/mir_toolkit/mesa/platform_operation.h (+1/-1)
include/renderer/mir/renderer/renderer.h (+1/-1)
include/renderer/mir/renderer/renderer_factory.h (+1/-1)
include/renderers/gl/mir/renderer/gl/context.h (+1/-1)
include/renderers/gl/mir/renderer/gl/context_source.h (+1/-1)
include/renderers/gl/mir/renderer/gl/egl_platform.h (+1/-1)
include/renderers/gl/mir/renderer/gl/render_target.h (+1/-1)
include/renderers/gl/mir/renderer/gl/texture_source.h (+1/-1)
include/renderers/gl/mir/renderer/gl/texture_target.h (+1/-1)
include/server/mir/compositor/compositor.h (+1/-1)
include/server/mir/compositor/compositor_id.h (+1/-1)
include/server/mir/compositor/compositor_report.h (+1/-1)
include/server/mir/compositor/display_buffer_compositor.h (+1/-1)
include/server/mir/compositor/display_buffer_compositor_factory.h (+1/-1)
include/server/mir/compositor/display_listener.h (+1/-1)
include/server/mir/compositor/scene.h (+1/-1)
include/server/mir/compositor/scene_element.h (+1/-5)
include/server/mir/executor.h (+1/-1)
include/server/mir/frontend/buffer_sink.h (+1/-2)
include/server/mir/frontend/buffer_stream.h (+3/-7)
include/server/mir/frontend/client_buffers.h (+0/-46)
include/server/mir/frontend/prompt_session.h (+1/-1)
include/server/mir/frontend/session.h (+1/-7)
include/server/mir/frontend/session_authorizer.h (+1/-1)
include/server/mir/frontend/session_credentials.h (+1/-1)
include/server/mir/frontend/session_mediator_observer.h (+1/-1)
include/server/mir/frontend/surface.h (+1/-1)
include/server/mir/graphics/default_display_configuration_policy.h (+1/-1)
include/server/mir/graphics/display_configuration_observer.h (+2/-2)
include/server/mir/input/composite_event_filter.h (+1/-1)
include/server/mir/input/cursor_images.h (+1/-1)
include/server/mir/input/cursor_listener.h (+1/-1)
include/server/mir/input/device.h (+1/-1)
include/server/mir/input/event_filter.h (+1/-1)
include/server/mir/input/input_device_hub.h (+1/-1)
include/server/mir/input/input_device_observer.h (+1/-1)
include/server/mir/input/input_dispatcher.h (+1/-1)
include/server/mir/input/input_manager.h (+1/-1)
include/server/mir/input/input_reception_mode.h (+1/-1)
include/server/mir/input/seat_observer.h (+1/-1)
include/server/mir/input/surface.h (+1/-1)
include/server/mir/input/touch_visualizer.h (+1/-1)
include/server/mir/lockable_callback.h (+1/-1)
include/server/mir/main_loop.h (+1/-1)
include/server/mir/observer_registrar.h (+1/-1)
include/server/mir/report_exception.h (+1/-1)
include/server/mir/scene/application_not_responding_detector.h (+1/-1)
include/server/mir/scene/application_not_responding_detector_wrapper.h (+1/-1)
include/server/mir/scene/buffer_stream_factory.h (+5/-7)
include/server/mir/scene/coordinate_translator.h (+1/-1)
include/server/mir/scene/null_session_listener.h (+1/-1)
include/server/mir/scene/null_surface_observer.h (+1/-1)
include/server/mir/scene/observer.h (+1/-1)
include/server/mir/scene/prompt_session.h (+1/-1)
include/server/mir/scene/prompt_session_creation_parameters.h (+1/-1)
include/server/mir/scene/prompt_session_listener.h (+1/-1)
include/server/mir/scene/prompt_session_manager.h (+1/-1)
include/server/mir/scene/session.h (+1/-7)
include/server/mir/scene/session_coordinator.h (+1/-1)
include/server/mir/scene/session_listener.h (+1/-1)
include/server/mir/scene/snapshot.h (+1/-1)
include/server/mir/scene/surface.h (+1/-2)
include/server/mir/scene/surface_creation_parameters.h (+1/-1)
include/server/mir/scene/surface_factory.h (+1/-1)
include/server/mir/scene/surface_observer.h (+1/-1)
include/server/mir/server.h (+1/-1)
include/server/mir/server_action_queue.h (+1/-1)
include/server/mir/server_status_listener.h (+1/-1)
include/server/mir/shell/abstract_shell.h (+1/-1)
include/server/mir/shell/display_configuration_controller.h (+1/-1)
include/server/mir/shell/display_layout.h (+1/-1)
include/server/mir/shell/focus_controller.h (+1/-1)
include/server/mir/shell/host_lifecycle_event_listener.h (+1/-1)
include/server/mir/shell/input_targeter.h (+1/-1)
include/server/mir/shell/persistent_surface_store.h (+1/-1)
include/server/mir/shell/shell.h (+1/-1)
include/server/mir/shell/shell_report.h (+1/-1)
include/server/mir/shell/shell_wrapper.h (+1/-1)
include/server/mir/shell/surface_ready_observer.h (+1/-1)
include/server/mir/shell/surface_specification.h (+1/-1)
include/server/mir/shell/surface_stack.h (+1/-1)
include/server/mir/shell/surface_stack_wrapper.h (+1/-1)
include/server/mir/shell/system_compositor_window_manager.h (+1/-1)
include/server/mir/shell/window_management_info.h (+6/-2)
include/server/mir/shell/window_manager.h (+1/-1)
include/server/mir/shell/window_manager_builder.h (+1/-1)
include/server/mir/terminate_with_current_exception.h (+1/-1)
include/server/mir/time/alarm.h (+1/-1)
include/server/mir/time/alarm_factory.h (+1/-1)
include/test/mir/test/auto_unblock_thread.h (+1/-1)
include/test/mir/test/cross_process_action.h (+1/-1)
include/test/mir/test/cross_process_sync.h (+1/-1)
include/test/mir/test/death.h (+1/-1)
include/test/mir/test/display_config_matchers.h (+1/-1)
include/test/mir/test/doubles/fake_display.h (+1/-1)
include/test/mir/test/doubles/mock_client_buffer.h (+1/-1)
include/test/mir/test/doubles/mock_client_context.h (+1/-1)
include/test/mir/test/doubles/mock_display_configuration.h (+1/-1)
include/test/mir/test/doubles/mock_egl.h (+8/-1)
include/test/mir/test/doubles/mock_egl_native_surface.h (+1/-1)
include/test/mir/test/doubles/mock_gl.h (+1/-1)
include/test/mir/test/doubles/mock_input_device_hub.h (+1/-1)
include/test/mir/test/doubles/mock_input_device_observer.h (+1/-1)
include/test/mir/test/doubles/mock_input_dispatcher.h (+1/-1)
include/test/mir/test/doubles/mock_platform_authentication.h (+1/-1)
include/test/mir/test/doubles/mock_prompt_session_listener.h (+1/-1)
include/test/mir/test/doubles/mock_seat_report.h (+1/-1)
include/test/mir/test/doubles/mock_window_manager.h (+1/-1)
include/test/mir/test/doubles/nested_mock_egl.h (+1/-1)
include/test/mir/test/doubles/null_display.h (+1/-1)
include/test/mir/test/doubles/null_display_buffer.h (+1/-1)
include/test/mir/test/doubles/null_display_buffer_compositor_factory.h (+1/-1)
include/test/mir/test/doubles/null_display_configuration.h (+1/-1)
include/test/mir/test/doubles/null_display_sync_group.h (+1/-1)
include/test/mir/test/doubles/null_gl_context.h (+1/-1)
include/test/mir/test/doubles/null_logger.h (+1/-1)
include/test/mir/test/doubles/null_platform.h (+1/-1)
include/test/mir/test/doubles/null_platform_ipc_operations.h (+1/-1)
include/test/mir/test/doubles/stub_cursor.h (+1/-1)
include/test/mir/test/doubles/stub_cursor_image.h (+1/-1)
include/test/mir/test/doubles/stub_display_buffer.h (+1/-1)
include/test/mir/test/doubles/stub_display_configuration.h (+1/-1)
include/test/mir/test/doubles/stub_input_device.h (+1/-1)
include/test/mir/test/doubles/stub_session.h (+1/-7)
include/test/mir/test/doubles/stub_session_authorizer.h (+1/-1)
include/test/mir/test/doubles/stub_surface.h (+1/-2)
include/test/mir/test/doubles/wrap_shell_to_track_latest_surface.h (+1/-1)
include/test/mir/test/empty_deleter.h (+1/-1)
include/test/mir/test/event_factory.h (+1/-1)
include/test/mir/test/event_matchers.h (+1/-1)
include/test/mir/test/fake_shared.h (+1/-1)
include/test/mir/test/pipe.h (+1/-1)
include/test/mir/test/popen.h (+1/-1)
include/test/mir/test/signal.h (+1/-1)
include/test/mir/test/spin_wait.h (+1/-1)
include/test/mir/test/validity_matchers.h (+1/-1)
include/test/mir_test_framework/any_surface.h (+1/-1)
include/test/mir_test_framework/async_server_runner.h (+14/-2)
include/test/mir_test_framework/canonical_window_manager_policy.h (+38/-0)
include/test/mir_test_framework/connected_client_headless_server.h (+1/-1)
include/test/mir_test_framework/connected_client_with_a_window.h (+1/-1)
include/test/mir_test_framework/declarative_placement_window_manage_policy.h (+9/-10)
include/test/mir_test_framework/detect_server.h (+1/-1)
include/test/mir_test_framework/executable_path.h (+1/-1)
include/test/mir_test_framework/fake_input_device.h (+1/-1)
include/test/mir_test_framework/headless_display_buffer_compositor_factory.h (+1/-1)
include/test/mir_test_framework/headless_in_process_server.h (+1/-1)
include/test/mir_test_framework/headless_nested_server_runner.h (+1/-1)
include/test/mir_test_framework/headless_test.h (+1/-1)
include/test/mir_test_framework/in_process_server.h (+1/-1)
include/test/mir_test_framework/interprocess_client_server_test.h (+1/-1)
include/test/mir_test_framework/main.h (+3/-3)
include/test/mir_test_framework/observant_shell.h (+1/-1)
include/test/mir_test_framework/placement_applying_shell.h (+1/-1)
include/test/mir_test_framework/process.h (+1/-1)
include/test/mir_test_framework/server_runner.h (+1/-1)
include/test/mir_test_framework/stub_client_platform_options.h (+1/-1)
include/test/mir_test_framework/stub_graphics_platform_operation.h (+1/-1)
include/test/mir_test_framework/stub_platform_extension.h (+1/-1)
include/test/mir_test_framework/stub_platform_helpers.h (+1/-1)
include/test/mir_test_framework/stub_server_platform_factory.h (+1/-1)
include/test/mir_test_framework/temporary_environment_value.h (+1/-1)
include/test/mir_test_framework/visible_surface.h (+1/-1)
playground/CMakeLists.txt (+1/-21)
playground/demo-shell/CMakeLists.txt (+0/-19)
playground/demo-shell/demo_compositor.cpp (+0/-204)
playground/demo-shell/demo_compositor.h (+0/-79)
playground/demo-shell/demo_renderer.cpp (+0/-402)
playground/demo-shell/demo_renderer.h (+0/-90)
playground/demo-shell/demo_shell.cpp (+0/-120)
playground/demo-shell/typo/CMakeLists.txt (+0/-23)
playground/demo-shell/typo/typo_freetype_renderer.cpp (+0/-125)
playground/demo-shell/typo/typo_freetype_renderer.h (+0/-44)
playground/demo-shell/typo/typo_glcache.cpp (+0/-99)
playground/demo-shell/typo/typo_glcache.h (+0/-56)
playground/demo-shell/typo/typo_renderer.cpp (+0/-59)
playground/demo-shell/typo/typo_renderer.h (+0/-61)
playground/demo-shell/typo/typo_stub_renderer.cpp (+0/-47)
playground/demo-shell/typo/typo_stub_renderer.h (+0/-34)
playground/demo-shell/window_manager.cpp (+0/-611)
playground/demo-shell/window_manager.h (+0/-97)
playground/diamond.c (+1/-1)
playground/diamond.h (+1/-1)
playground/egldiamond_render_surface.c (+1/-1)
playground/mir_egl_platform_shim.c (+1/-1)
playground/mir_egl_platform_shim.h (+1/-1)
playground/server_configuration.cpp (+0/-86)
playground/server_configuration.h (+0/-49)
src/CMakeLists.txt (+7/-0)
src/capnproto/CMakeLists.txt (+1/-1)
src/capnproto/mir_event.capnp (+1/-1)
src/capnproto/mir_input_config.capnp (+1/-1)
src/client/CMakeLists.txt (+14/-0)
src/client/atomic_callback.h (+1/-1)
src/client/buffer.cpp (+1/-1)
src/client/buffer.h (+1/-1)
src/client/buffer_factory.cpp (+1/-1)
src/client/buffer_factory.h (+1/-1)
src/client/buffer_stream.cpp (+1/-1)
src/client/buffer_stream.h (+1/-1)
src/client/buffer_stream_configuration.cpp (+1/-1)
src/client/buffer_stream_configuration.h (+1/-1)
src/client/buffer_vault.cpp (+64/-9)
src/client/buffer_vault.h (+2/-1)
src/client/connection_configuration.h (+1/-1)
src/client/connection_surface_map.cpp (+2/-2)
src/client/connection_surface_map.h (+1/-1)
src/client/cursor_configuration.h (+1/-1)
src/client/default_connection_configuration.cpp (+2/-2)
src/client/default_connection_configuration.h (+1/-1)
src/client/display_configuration.cpp (+1/-1)
src/client/display_configuration.h (+1/-1)
src/client/display_configuration_api.cpp (+1/-1)
src/client/drag_and_drop.cpp (+1/-1)
src/client/drag_and_drop.h (+1/-1)
src/client/error_buffer.cpp (+1/-1)
src/client/error_buffer.h (+1/-1)
src/client/error_connections.cpp (+1/-1)
src/client/error_connections.h (+1/-1)
src/client/error_handler.h (+1/-1)
src/client/error_render_surface.cpp (+1/-1)
src/client/error_render_surface.h (+1/-1)
src/client/error_stream.cpp (+1/-1)
src/client/error_stream.h (+1/-1)
src/client/event.cpp (+1/-1)
src/client/event_distributor.h (+1/-1)
src/client/event_handler_register.h (+1/-1)
src/client/event_printer.cpp (+1/-1)
src/client/event_sink.h (+1/-1)
src/client/events/CMakeLists.txt (+1/-1)
src/client/events/event_builders.cpp (+1/-1)
src/client/frame_clock.cpp (+1/-1)
src/client/frame_clock.h (+1/-1)
src/client/handle_event_exception.h (+1/-1)
src/client/input/CMakeLists.txt (+1/-1)
src/client/input/input_devices.cpp (+1/-1)
src/client/input/input_event.cpp (+1/-1)
src/client/input/xkb_mapper.cpp (+1/-1)
src/client/lifecycle_control.h (+1/-1)
src/client/logging/input_receiver_report.cpp (+1/-1)
src/client/logging/input_receiver_report.h (+1/-1)
src/client/logging/perf_report.cpp (+1/-1)
src/client/logging/perf_report.h (+1/-1)
src/client/logging/rpc_report.cpp (+1/-1)
src/client/logging/rpc_report.h (+1/-1)
src/client/lttng/client_tracepoint_provider.cpp (+1/-1)
src/client/lttng/client_tracepoint_provider.h (+1/-1)
src/client/lttng/input_receiver_report.cpp (+1/-1)
src/client/lttng/input_receiver_report.h (+1/-1)
src/client/lttng/input_receiver_report_tp.h (+1/-1)
src/client/lttng/perf_report.cpp (+1/-1)
src/client/lttng/perf_report.h (+1/-1)
src/client/lttng/perf_report_tp.h (+1/-1)
src/client/lttng/rpc_report.cpp (+1/-1)
src/client/lttng/rpc_report.h (+1/-1)
src/client/lttng/rpc_report_tp.h (+1/-1)
src/client/lttng/shared_library_prober_report.cpp (+1/-1)
src/client/lttng/shared_library_prober_report.h (+1/-1)
src/client/lttng/shared_library_prober_report_tp.h (+1/-1)
src/client/make_protobuf_object.h (+1/-1)
src/client/mir_blob.cpp (+1/-1)
src/client/mir_buffer_api.cpp (+1/-1)
src/client/mir_buffer_stream_api.cpp (+1/-1)
src/client/mir_connection.cpp (+30/-14)
src/client/mir_connection.h (+1/-1)
src/client/mir_connection_api.cpp (+1/-1)
src/client/mir_cookie.cpp (+1/-1)
src/client/mir_cookie.h (+1/-1)
src/client/mir_cursor_api.cpp (+1/-1)
src/client/mir_debug_api.cpp (+1/-1)
src/client/mir_error.cpp (+1/-1)
src/client/mir_error.h (+1/-1)
src/client/mir_error_api.cpp (+1/-1)
src/client/mir_event_distributor.cpp (+1/-1)
src/client/mir_event_distributor.h (+1/-1)
src/client/mir_extension_core.cpp (+1/-1)
src/client/mir_input_device_api.cpp (+1/-1)
src/client/mir_platform_message_api.cpp (+1/-1)
src/client/mir_presentation_chain.h (+1/-1)
src/client/mir_presentation_chain_api.cpp (+1/-1)
src/client/mir_prompt_session.cpp (+1/-1)
src/client/mir_prompt_session.h (+1/-1)
src/client/mir_prompt_session_api.cpp (+1/-1)
src/client/mir_render_surface_api.cpp (+1/-1)
src/client/mir_screencast.cpp (+1/-1)
src/client/mir_screencast.h (+1/-1)
src/client/mir_screencast_api.cpp (+1/-1)
src/client/mir_surface.cpp (+1/-1)
src/client/mir_surface.h (+1/-1)
src/client/mir_surface_api.cpp (+1/-1)
src/client/mir_wait_api.cpp (+1/-1)
src/client/mir_wait_handle.cpp (+1/-1)
src/client/mir_wait_handle.h (+1/-1)
src/client/mirclientcpp.pc.in (+7/-0)
src/client/no_tls_future-inl.h (+1/-1)
src/client/perf_report.h (+1/-1)
src/client/periodic_perf_report.cpp (+1/-1)
src/client/periodic_perf_report.h (+1/-1)
src/client/ping_handler.h (+1/-1)
src/client/presentation_chain.cpp (+1/-1)
src/client/presentation_chain.h (+1/-1)
src/client/protobuf_to_native_buffer.cpp (+1/-1)
src/client/protobuf_to_native_buffer.h (+1/-1)
src/client/render_surface.cpp (+1/-1)
src/client/render_surface.h (+1/-1)
src/client/rpc/make_rpc_channel.h (+7/-1)
src/client/rpc/make_socket_rpc_channel.cpp (+3/-2)
src/client/rpc/mir_basic_rpc_channel.cpp (+1/-1)
src/client/rpc/mir_basic_rpc_channel.h (+1/-1)
src/client/rpc/mir_display_server.cpp (+1/-1)
src/client/rpc/mir_display_server.h (+1/-1)
src/client/rpc/mir_display_server_debug.cpp (+1/-1)
src/client/rpc/mir_display_server_debug.h (+1/-1)
src/client/rpc/mir_protobuf_rpc_channel.cpp (+18/-4)
src/client/rpc/mir_protobuf_rpc_channel.h (+11/-1)
src/client/rpc/null_rpc_report.cpp (+1/-1)
src/client/rpc/null_rpc_report.h (+1/-1)
src/client/rpc/rpc_report.h (+1/-1)
src/client/rpc/stream_socket_transport.cpp (+1/-1)
src/client/rpc/stream_socket_transport.h (+1/-1)
src/client/rpc/stream_transport.h (+1/-1)
src/client/screencast_stream.cpp (+1/-1)
src/client/screencast_stream.h (+1/-1)
src/client/version.h.in (+1/-1)
src/common/dispatch/CMakeLists.txt (+1/-1)
src/common/dispatch/action_queue.cpp (+1/-1)
src/common/dispatch/multiplexing_dispatchable.cpp (+1/-1)
src/common/dispatch/readable_fd.cpp (+1/-1)
src/common/dispatch/threaded_dispatcher.cpp (+1/-1)
src/common/dispatch/utils.cpp (+1/-1)
src/common/dispatch/utils.h (+1/-1)
src/common/edid.cpp (+1/-1)
src/common/env/CMakeLists.txt (+1/-1)
src/common/env/default_configuration.cpp (+1/-1)
src/common/events/CMakeLists.txt (+1/-1)
src/common/events/close_surface_event.cpp (+1/-1)
src/common/events/event.cpp (+1/-1)
src/common/events/input_configuration_event.cpp (+1/-1)
src/common/events/input_device_state_event.cpp (+1/-1)
src/common/events/input_event.cpp (+1/-1)
src/common/events/keyboard_event.cpp (+1/-1)
src/common/events/keymap_event.cpp (+1/-1)
src/common/events/orientation_event.cpp (+1/-1)
src/common/events/pointer_event.cpp (+1/-1)
src/common/events/prompt_session_event.cpp (+1/-1)
src/common/events/resize_event.cpp (+1/-1)
src/common/events/surface_event.cpp (+1/-1)
src/common/events/surface_output_event.cpp (+1/-1)
src/common/events/surface_placement_event.cpp (+1/-1)
src/common/events/touch_event.cpp (+1/-1)
src/common/fd/CMakeLists.txt (+1/-2)
src/common/fd/fd_socket_transmission.cpp (+1/-1)
src/common/input/mir_input_config.cpp (+1/-1)
src/common/input/mir_input_config_serialization.cpp (+1/-1)
src/common/input/mir_keyboard_config.cpp (+1/-1)
src/common/input/mir_pointer_config.cpp (+1/-1)
src/common/input/mir_touchpad_config.cpp (+1/-1)
src/common/input/mir_touchscreen_config.cpp (+1/-1)
src/common/libname.cpp (+1/-1)
src/common/log.cpp (+36/-1)
src/common/logging/CMakeLists.txt (+1/-1)
src/common/logging/dumb_console_logger.cpp (+1/-1)
src/common/logging/input_timestamp.cpp (+1/-1)
src/common/logging/logger.cpp (+1/-1)
src/common/logging/shared_library_prober_report.cpp (+1/-1)
src/common/output_type_names.cpp (+1/-1)
src/common/posix_rw_mutex.cpp (+1/-1)
src/common/report/lttng/tracepoint_provider.cpp (+1/-1)
src/common/sharedlibrary/CMakeLists.txt (+1/-1)
src/common/sharedlibrary/module_deleter.cpp (+1/-1)
src/common/sharedlibrary/shared_library.cpp (+1/-1)
src/common/sharedlibrary/shared_library_prober.cpp (+1/-1)
src/common/symbols.map (+0/-5)
src/common/thread/CMakeLists.txt (+1/-1)
src/common/thread/recursive_read_write_mutex.cpp (+1/-1)
src/common/thread/signal_blocker.cpp (+1/-1)
src/common/thread/thread_name.cpp (+1/-1)
src/common/time/steady_clock.cpp (+1/-1)
src/cookie/authority.cpp (+1/-1)
src/cookie/format.h (+1/-1)
src/cookie/hmac_cookie.cpp (+1/-1)
src/cookie/hmac_cookie.h (+1/-1)
src/core/CMakeLists.txt (+11/-0)
src/core/anonymous_shm_file.cpp (+43/-35)
src/core/fatal.cpp (+1/-1)
src/core/fd.cpp (+1/-1)
src/core/geometry/ostream.cpp (+1/-1)
src/core/geometry/rectangle.cpp (+1/-1)
src/core/geometry/rectangles.cpp (+1/-1)
src/core/symbols.map (+25/-1)
src/gl/default_program_factory.cpp (+1/-1)
src/gl/program.cpp (+1/-1)
src/gl/recently_used_cache.cpp (+1/-1)
src/gl/recently_used_cache.h (+1/-1)
src/gl/tessellation_helpers.cpp (+1/-1)
src/gl/texture.cpp (+1/-1)
src/include/client/mir/client/surface_map.h (+1/-1)
src/include/client/mir/event_type_to_string.h (+1/-1)
src/include/client/mir/input/input_devices.h (+1/-1)
src/include/client/mir/platform_message.h (+1/-1)
src/include/client/mir_toolkit/mir_buffer_private.h (+1/-1)
src/include/common/mir/basic_observers.h (+1/-1)
src/include/common/mir/client_visible_error.h (+1/-1)
src/include/common/mir/default_configuration.h (+1/-1)
src/include/common/mir/events/close_surface_event.h (+1/-1)
src/include/common/mir/events/event.h (+1/-1)
src/include/common/mir/events/event_private.h (+1/-1)
src/include/common/mir/events/input_configuration_event.h (+1/-1)
src/include/common/mir/events/input_device_state_event.h (+1/-1)
src/include/common/mir/events/input_event.h (+1/-1)
src/include/common/mir/events/keyboard_event.h (+1/-1)
src/include/common/mir/events/keymap_event.h (+1/-1)
src/include/common/mir/events/orientation_event.h (+1/-1)
src/include/common/mir/events/pointer_event.h (+1/-1)
src/include/common/mir/events/prompt_session_event.h (+1/-1)
src/include/common/mir/events/resize_event.h (+1/-1)
src/include/common/mir/events/surface_event.h (+1/-1)
src/include/common/mir/events/surface_output_event.h (+1/-1)
src/include/common/mir/events/surface_placement_event.h (+1/-1)
src/include/common/mir/events/touch_event.h (+1/-1)
src/include/common/mir/fd_socket_transmission.h (+1/-1)
src/include/common/mir/frontend/client_constants.h (+1/-1)
src/include/common/mir/graphics/edid.h (+1/-1)
src/include/common/mir/input/input_receiver_report.h (+1/-1)
src/include/common/mir/input/key_mapper.h (+1/-1)
src/include/common/mir/input/null_input_receiver_report.h (+1/-1)
src/include/common/mir/input/xkb_mapper.h (+1/-1)
src/include/common/mir/logging/dumb_console_logger.h (+1/-1)
src/include/common/mir/logging/input_timestamp.h (+1/-1)
src/include/common/mir/logging/null_shared_library_prober_report.h (+1/-1)
src/include/common/mir/logging/shared_library_prober_report.h (+1/-1)
src/include/common/mir/output_type_names.h (+1/-1)
src/include/common/mir/protobuf/display_server.h (+1/-1)
src/include/common/mir/protobuf/display_server_debug.h (+1/-1)
src/include/common/mir/protobuf/protocol_version.h (+9/-1)
src/include/common/mir/recursive_read_write_mutex.h (+1/-1)
src/include/common/mir/report/lttng/mir_tracepoint.h (+1/-1)
src/include/common/mir/report/lttng/tracepoint_provider.h (+1/-1)
src/include/common/mir/require.h (+1/-1)
src/include/common/mir/shared_library_prober.h (+1/-1)
src/include/common/mir/shared_library_prober_report.h (+1/-1)
src/include/common/mir/signal_blocker.h (+1/-1)
src/include/common/mir/thread_name.h (+1/-1)
src/include/common/mir/thread_safe_list.h (+4/-4)
src/include/common/mir/time/clock.h (+1/-1)
src/include/common/mir/time/steady_clock.h (+1/-1)
src/include/common/mir/unwind_helpers.h (+1/-1)
src/include/common/mir/variable_length_array.h (+1/-1)
src/include/common/mir_blob.h (+1/-1)
src/include/cookie/mir/cookie/blob.h (+1/-1)
src/include/gl/mir/gl/default_program_factory.h (+1/-1)
src/include/gl/mir/gl/primitive.h (+1/-1)
src/include/gl/mir/gl/program.h (+1/-1)
src/include/gl/mir/gl/program_factory.h (+1/-1)
src/include/gl/mir/gl/tessellation_helpers.h (+1/-1)
src/include/gl/mir/gl/texture.h (+1/-1)
src/include/gl/mir/gl/texture_cache.h (+1/-1)
src/include/platform/mir/graphics/overlapping_output_grouping.h (+1/-1)
src/include/platform/mir/graphics/pixel_format_utils.h (+1/-1)
src/include/platform/mir/graphics/platform_authentication_wrapper.h (+1/-1)
src/include/platform/mir/graphics/platform_probe.h (+1/-1)
src/include/platform/mir/options/configuration.h (+2/-1)
src/include/platform/mir/options/default_configuration.h (+1/-1)
src/include/platform/mir/udev/wrapper.h (+1/-1)
src/include/server/mir/basic_callback.h (+1/-1)
src/include/server/mir/compositor/buffer_stream.h (+1/-2)
src/include/server/mir/compositor/decoration.h (+0/-38)
src/include/server/mir/default_server_configuration.h (+3/-1)
src/include/server/mir/default_server_status_listener.h (+1/-1)
src/include/server/mir/display_changer.h (+1/-1)
src/include/server/mir/display_server.h (+1/-1)
src/include/server/mir/emergency_cleanup.h (+1/-1)
src/include/server/mir/frontend/connection_context.h (+1/-1)
src/include/server/mir/frontend/connection_creator.h (+1/-1)
src/include/server/mir/frontend/connections.h (+1/-1)
src/include/server/mir/frontend/connector.h (+1/-1)
src/include/server/mir/frontend/connector_report.h (+2/-1)
src/include/server/mir/frontend/display_changer.h (+1/-1)
src/include/server/mir/frontend/event_sink.h (+1/-1)
src/include/server/mir/frontend/fd_sets.h (+1/-1)
src/include/server/mir/frontend/input_configuration_changer.h (+1/-1)
src/include/server/mir/frontend/message_processor.h (+1/-1)
src/include/server/mir/frontend/message_processor_report.h (+1/-1)
src/include/server/mir/frontend/protobuf_connection_creator.h (+1/-1)
src/include/server/mir/frontend/protobuf_message_sender.h (+1/-1)
src/include/server/mir/frontend/screencast.h (+1/-1)
src/include/server/mir/frontend/shell.h (+1/-1)
src/include/server/mir/frontend/template_protobuf_message_processor.h (+1/-1)
src/include/server/mir/glib_main_loop.h (+1/-1)
src/include/server/mir/glib_main_loop_sources.h (+1/-1)
src/include/server/mir/graphics/gl_extensions_base.h (+1/-1)
src/include/server/mir/graphics/surfaceless_egl_context.h (+1/-1)
src/include/server/mir/input/input_probe.h (+1/-1)
src/include/server/mir/input/legacy_input_dispatchable.h (+1/-1)
src/include/server/mir/input/scene.h (+1/-1)
src/include/server/mir/input/seat.h (+1/-1)
src/include/server/mir/input/validator.h (+1/-1)
src/include/server/mir/input/vt_filter.h (+1/-1)
src/include/server/mir/lockable_callback_wrapper.h (+1/-1)
src/include/server/mir/observer_multiplexer.h (+1/-1)
src/include/server/mir/run_mir.h (+1/-1)
src/include/server/mir/scene/legacy_scene_change_notification.h (+1/-1)
src/include/server/mir/scene/null_observer.h (+1/-1)
src/include/server/mir/scene/null_prompt_session_listener.h (+1/-1)
src/include/server/mir/scene/scene_report.h (+1/-1)
src/include/server/mir/scene/session_container.h (+1/-1)
src/include/server/mir/scene/session_event_handler_register.h (+4/-9)
src/include/server/mir/scene/session_event_sink.h (+1/-1)
src/include/server/mir/scene/surface_event_source.h (+1/-1)
src/include/server/mir/scene/surface_observers.h (+1/-1)
src/include/server/mir/server_configuration.h (+2/-1)
src/include/server/mir/thread/basic_thread_pool.h (+1/-1)
src/miral/CMakeLists.txt (+129/-0)
src/miral/active_outputs.cpp (+65/-0)
src/miral/add_init_callback.cpp (+33/-0)
src/miral/append_event_filter.cpp (+48/-0)
src/miral/application.cpp (+51/-0)
src/miral/application_authorizer.cpp (+129/-0)
src/miral/application_info.cpp (+99/-0)
src/miral/basic_window_manager.cpp (+2234/-0)
src/miral/basic_window_manager.h (+272/-0)
src/miral/both_versions.h (+33/-0)
src/miral/canonical_window_manager.cpp (+77/-0)
src/miral/command_line_option.cpp (+210/-0)
src/miral/coordinate_translator.cpp (+51/-0)
src/miral/coordinate_translator.h (+52/-0)
src/miral/cursor_theme.cpp (+62/-0)
src/miral/debug_extension.cpp (+51/-0)
src/miral/display_configuration_listeners.cpp (+121/-0)
src/miral/display_configuration_listeners.h (+67/-0)
src/miral/display_configuration_option.cpp (+115/-0)
src/miral/internal_client.cpp (+215/-0)
src/miral/join_client_threads.h (+24/-0)
src/miral/keymap.cpp (+173/-0)
src/miral/miral.pc.in (+9/-0)
src/miral/mru_window_list.cpp (+65/-0)
src/miral/mru_window_list.h (+46/-0)
src/miral/output.cpp (+117/-0)
src/miral/process_doxygen_xml.py (+655/-0)
src/miral/runner.cpp (+278/-0)
src/miral/set_command_line_handler.cpp (+33/-0)
src/miral/set_terminator.cpp (+33/-0)
src/miral/set_window_management_policy.cpp (+91/-0)
src/miral/symbols.map (+438/-0)
src/miral/version.h.in (+67/-0)
src/miral/window.cpp (+127/-0)
src/miral/window_info.cpp (+630/-0)
src/miral/window_info_defaults.h (+36/-0)
src/miral/window_management_options.cpp (+99/-0)
src/miral/window_management_policy.cpp (+37/-0)
src/miral/window_management_trace.cpp (+800/-0)
src/miral/window_management_trace.h (+146/-0)
src/miral/window_manager_tools.cpp (+141/-0)
src/miral/window_manager_tools_implementation.h (+108/-0)
src/miral/window_specification.cpp (+587/-0)
src/miral/workspace_policy.cpp (+29/-0)
src/miral/xcursor.c (+899/-0)
src/miral/xcursor.h (+62/-0)
src/miral/xcursor_loader.cpp (+215/-0)
src/miral/xcursor_loader.h (+66/-0)
src/platform/graphics/CMakeLists.txt (+1/-0)
src/platform/graphics/atomic_frame.cpp (+1/-1)
src/platform/graphics/buffer_basic.cpp (+1/-1)
src/platform/graphics/display_configuration.cpp (+1/-1)
src/platform/graphics/egl_error.cpp (+1/-1)
src/platform/graphics/egl_extensions.cpp (+35/-2)
src/platform/graphics/egl_resources.cpp (+1/-1)
src/platform/graphics/gamma_curves.cpp (+1/-1)
src/platform/graphics/overlapping_output_grouping.cpp (+1/-1)
src/platform/graphics/pixel_format_utils.cpp (+1/-1)
src/platform/graphics/platform_probe.cpp (+1/-1)
src/platform/options/default_configuration.cpp (+4/-1)
src/platform/options/program_option.cpp (+1/-1)
src/platform/symbols.map (+7/-0)
src/platform/udev/udev_wrapper.cpp (+1/-1)
src/platforms/common/client/mir/aging_buffer.cpp (+1/-1)
src/platforms/common/client/mir/aging_buffer.h (+1/-1)
src/platforms/common/client/mir/weak_egl.cpp (+1/-1)
src/platforms/common/client/mir/weak_egl.h (+1/-1)
src/platforms/common/server/CMakeLists.txt (+0/-2)
src/platforms/common/server/buffer_texture_binder.h (+1/-1)
src/platforms/common/server/kms-utils/drm_mode_resources.cpp (+1/-1)
src/platforms/common/server/kms-utils/drm_mode_resources.h (+1/-1)
src/platforms/common/server/kms-utils/kms_connector.cpp (+1/-1)
src/platforms/common/server/kms-utils/kms_connector.h (+1/-1)
src/platforms/common/server/platform_authentication_wrapper.cpp (+1/-1)
src/platforms/common/server/shm_buffer.cpp (+2/-2)
src/platforms/common/server/shm_buffer.h (+3/-2)
src/platforms/eglstream-kms/client/client_buffer.cpp (+1/-1)
src/platforms/eglstream-kms/client/client_buffer.h (+1/-1)
src/platforms/eglstream-kms/client/client_buffer_factory.cpp (+1/-1)
src/platforms/eglstream-kms/client/client_buffer_factory.h (+1/-1)
src/platforms/eglstream-kms/client/client_platform.cpp (+1/-1)
src/platforms/eglstream-kms/client/client_platform.h (+1/-1)
src/platforms/eglstream-kms/client/client_platform_factory.cpp (+1/-1)
src/platforms/eglstream-kms/include/native_buffer.h (+1/-1)
src/platforms/eglstream-kms/server/buffer_allocator.cpp (+3/-3)
src/platforms/eglstream-kms/server/buffer_allocator.h (+1/-1)
src/platforms/eglstream-kms/server/display.cpp (+1/-1)
src/platforms/eglstream-kms/server/display.h (+1/-1)
src/platforms/eglstream-kms/server/egl_output.cpp (+1/-1)
src/platforms/eglstream-kms/server/egl_output.h (+1/-1)
src/platforms/eglstream-kms/server/kms_display_configuration.cpp (+1/-1)
src/platforms/eglstream-kms/server/kms_display_configuration.h (+1/-1)
src/platforms/eglstream-kms/server/platform.cpp (+1/-1)
src/platforms/eglstream-kms/server/platform.h (+1/-1)
src/platforms/eglstream-kms/server/platform_symbols.cpp (+2/-2)
src/platforms/eglstream-kms/server/software_buffer.cpp (+3/-3)
src/platforms/eglstream-kms/server/software_buffer.h (+4/-6)
src/platforms/evdev/button_utils.cpp (+1/-1)
src/platforms/evdev/button_utils.h (+1/-1)
src/platforms/evdev/evdev_device_detection.cpp (+1/-1)
src/platforms/evdev/evdev_device_detection.h (+1/-1)
src/platforms/evdev/libinput_device.cpp (+1/-1)
src/platforms/evdev/libinput_device.h (+1/-1)
src/platforms/evdev/libinput_device_ptr.cpp (+1/-1)
src/platforms/evdev/libinput_device_ptr.h (+1/-1)
src/platforms/evdev/libinput_ptr.cpp (+1/-1)
src/platforms/evdev/libinput_ptr.h (+1/-1)
src/platforms/evdev/platform.cpp (+1/-1)
src/platforms/evdev/platform.h (+1/-1)
src/platforms/evdev/platform_factory.cpp (+1/-1)
src/platforms/mesa/client/buffer_file_ops.h (+1/-1)
src/platforms/mesa/client/client_buffer.cpp (+1/-1)
src/platforms/mesa/client/client_buffer.h (+1/-1)
src/platforms/mesa/client/client_buffer_factory.cpp (+1/-1)
src/platforms/mesa/client/client_buffer_factory.h (+1/-1)
src/platforms/mesa/client/client_platform.cpp (+1/-1)
src/platforms/mesa/client/client_platform.h (+1/-1)
src/platforms/mesa/client/client_platform_factory.cpp (+1/-1)
src/platforms/mesa/client/mesa_native_display_container.cpp (+1/-1)
src/platforms/mesa/client/mesa_native_display_container.h (+1/-1)
src/platforms/mesa/client/native_surface.cpp (+1/-1)
src/platforms/mesa/client/native_surface.h (+1/-1)
src/platforms/mesa/common/gbm_format_conversions.cpp (+1/-1)
src/platforms/mesa/include/gbm_format_conversions.h (+1/-1)
src/platforms/mesa/include/mesa_extensions.h (+1/-1)
src/platforms/mesa/include/native_buffer.h (+1/-1)
src/platforms/mesa/server/CMakeLists.txt (+2/-0)
src/platforms/mesa/server/buffer_allocator.cpp (+260/-3)
src/platforms/mesa/server/buffer_allocator.h (+10/-2)
src/platforms/mesa/server/display_helpers.cpp (+1/-1)
src/platforms/mesa/server/display_helpers.h (+1/-1)
src/platforms/mesa/server/drm_authentication.h (+1/-1)
src/platforms/mesa/server/drm_close_threadsafe.cpp (+1/-1)
src/platforms/mesa/server/drm_close_threadsafe.h (+1/-1)
src/platforms/mesa/server/drm_native_platform.cpp (+1/-1)
src/platforms/mesa/server/drm_native_platform.h (+1/-1)
src/platforms/mesa/server/gbm_buffer.cpp (+1/-1)
src/platforms/mesa/server/gbm_buffer.h (+1/-1)
src/platforms/mesa/server/gbm_platform.cpp (+1/-1)
src/platforms/mesa/server/gbm_platform.h (+1/-1)
src/platforms/mesa/server/ipc_operations.cpp (+1/-1)
src/platforms/mesa/server/ipc_operations.h (+1/-1)
src/platforms/mesa/server/kms/CMakeLists.txt (+2/-0)
src/platforms/mesa/server/kms/bypass.cpp (+1/-1)
src/platforms/mesa/server/kms/bypass.h (+1/-1)
src/platforms/mesa/server/kms/cursor.cpp (+116/-54)
src/platforms/mesa/server/kms/cursor.h (+12/-5)
src/platforms/mesa/server/kms/display.cpp (+12/-6)
src/platforms/mesa/server/kms/display.h (+1/-1)
src/platforms/mesa/server/kms/display_buffer.cpp (+1/-1)
src/platforms/mesa/server/kms/display_buffer.h (+1/-1)
src/platforms/mesa/server/kms/egl_helper.cpp (+1/-1)
src/platforms/mesa/server/kms/egl_helper.h (+1/-1)
src/platforms/mesa/server/kms/kms_display_configuration.h (+1/-1)
src/platforms/mesa/server/kms/kms_output.h (+1/-1)
src/platforms/mesa/server/kms/kms_output_container.h (+1/-1)
src/platforms/mesa/server/kms/kms_page_flipper.cpp (+1/-1)
src/platforms/mesa/server/kms/kms_page_flipper.h (+1/-1)
src/platforms/mesa/server/kms/linux_virtual_terminal.cpp (+1/-1)
src/platforms/mesa/server/kms/linux_virtual_terminal.h (+1/-1)
src/platforms/mesa/server/kms/mutex.h (+1/-1)
src/platforms/mesa/server/kms/page_flipper.h (+1/-1)
src/platforms/mesa/server/kms/platform.cpp (+15/-1)
src/platforms/mesa/server/kms/platform.h (+1/-1)
src/platforms/mesa/server/kms/platform_symbols.cpp (+1/-1)
src/platforms/mesa/server/kms/real_kms_display_configuration.cpp (+1/-1)
src/platforms/mesa/server/kms/real_kms_display_configuration.h (+1/-1)
src/platforms/mesa/server/kms/real_kms_output.cpp (+3/-3)
src/platforms/mesa/server/kms/real_kms_output.h (+1/-1)
src/platforms/mesa/server/kms/real_kms_output_container.cpp (+1/-1)
src/platforms/mesa/server/kms/real_kms_output_container.h (+1/-1)
src/platforms/mesa/server/kms/virtual_terminal.h (+1/-1)
src/platforms/mesa/server/nested_authentication.cpp (+1/-1)
src/platforms/mesa/server/nested_authentication.h (+1/-1)
src/platforms/mesa/server/platform_common.h (+1/-1)
src/platforms/mesa/server/software_buffer.cpp (+3/-3)
src/platforms/mesa/server/software_buffer.h (+4/-6)
src/platforms/mesa/server/x11/X11_resources.cpp (+1/-1)
src/platforms/mesa/server/x11/X11_resources.h (+1/-1)
src/platforms/mesa/server/x11/graphics/display.cpp (+11/-7)
src/platforms/mesa/server/x11/graphics/display.h (+1/-1)
src/platforms/mesa/server/x11/graphics/display_buffer.cpp (+1/-1)
src/platforms/mesa/server/x11/graphics/display_buffer.h (+1/-1)
src/platforms/mesa/server/x11/graphics/display_configuration.cpp (+1/-1)
src/platforms/mesa/server/x11/graphics/display_configuration.h (+1/-1)
src/platforms/mesa/server/x11/graphics/egl_helper.cpp (+1/-1)
src/platforms/mesa/server/x11/graphics/egl_helper.h (+1/-1)
src/platforms/mesa/server/x11/graphics/graphics.cpp (+1/-1)
src/platforms/mesa/server/x11/graphics/platform.cpp (+1/-1)
src/platforms/mesa/server/x11/graphics/platform.h (+1/-1)
src/platforms/mesa/server/x11/input/input.cpp (+1/-1)
src/platforms/mesa/server/x11/input/input_device.cpp (+1/-1)
src/platforms/mesa/server/x11/input/input_device.h (+1/-1)
src/platforms/mesa/server/x11/input/input_platform.cpp (+1/-1)
src/platforms/mesa/server/x11/input/input_platform.h (+1/-1)
src/protobuf/google_protobuf_guard.cpp (+1/-1)
src/protocol/CMakeLists.txt (+28/-0)
src/protocol/wrapper_generator.cpp (+547/-0)
src/renderers/gl/program_family.cpp (+1/-1)
src/renderers/gl/program_family.h (+1/-1)
src/renderers/gl/renderer.cpp (+1/-1)
src/renderers/gl/renderer.h (+1/-1)
src/renderers/gl/renderer_factory.cpp (+1/-1)
src/renderers/gl/renderer_factory.h (+1/-1)
src/server/CMakeLists.txt (+4/-1)
src/server/basic_callback.cpp (+1/-1)
src/server/compositor/CMakeLists.txt (+0/-2)
src/server/compositor/buffer_acquisition.h (+18/-3)
src/server/compositor/buffer_map.cpp (+0/-116)
src/server/compositor/buffer_map.h (+0/-65)
src/server/compositor/buffer_stream_factory.cpp (+6/-13)
src/server/compositor/buffer_stream_factory.h (+5/-6)
src/server/compositor/compositing_screencast.cpp (+1/-1)
src/server/compositor/compositing_screencast.h (+1/-1)
src/server/compositor/default_configuration.cpp (+1/-1)
src/server/compositor/default_display_buffer_compositor.cpp (+1/-1)
src/server/compositor/default_display_buffer_compositor.h (+1/-1)
src/server/compositor/default_display_buffer_compositor_factory.cpp (+1/-1)
src/server/compositor/default_display_buffer_compositor_factory.h (+1/-1)
src/server/compositor/dropping_schedule.cpp (+2/-23)
src/server/compositor/dropping_schedule.h (+2/-6)
src/server/compositor/multi_monitor_arbiter.cpp (+12/-71)
src/server/compositor/multi_monitor_arbiter.h (+2/-19)
src/server/compositor/multi_threaded_compositor.cpp (+1/-1)
src/server/compositor/multi_threaded_compositor.h (+1/-1)
src/server/compositor/occlusion.cpp (+1/-1)
src/server/compositor/occlusion.h (+1/-1)
src/server/compositor/queueing_schedule.cpp (+1/-8)
src/server/compositor/queueing_schedule.h (+1/-3)
src/server/compositor/schedule.h (+1/-4)
src/server/compositor/screencast_display_buffer.cpp (+1/-1)
src/server/compositor/screencast_display_buffer.h (+1/-1)
src/server/compositor/stream.cpp (+8/-67)
src/server/compositor/stream.h (+2/-9)
src/server/compositor/temporary_buffers.cpp (+0/-81)
src/server/compositor/temporary_buffers.h (+0/-74)
src/server/default_emergency_cleanup.cpp (+1/-1)
src/server/default_emergency_cleanup.h (+1/-1)
src/server/default_server_configuration.cpp (+1/-1)
src/server/display_server.cpp (+25/-27)
src/server/frontend/CMakeLists.txt (+2/-0)
src/server/frontend/authorizing_display_changer.cpp (+1/-1)
src/server/frontend/authorizing_display_changer.h (+1/-1)
src/server/frontend/authorizing_input_config_changer.cpp (+1/-1)
src/server/frontend/authorizing_input_config_changer.h (+1/-1)
src/server/frontend/connection_context.cpp (+1/-1)
src/server/frontend/default_configuration.cpp (+1/-1)
src/server/frontend/default_ipc_factory.cpp (+189/-2)
src/server/frontend/default_ipc_factory.h (+5/-1)
src/server/frontend/display_server.h (+1/-1)
src/server/frontend/event_sender.cpp (+1/-9)
src/server/frontend/event_sender.h (+1/-2)
src/server/frontend/event_sink_factory.h (+1/-1)
src/server/frontend/message_receiver.h (+1/-1)
src/server/frontend/message_sender.h (+1/-1)
src/server/frontend/no_prompt_shell.cpp (+1/-1)
src/server/frontend/no_prompt_shell.h (+1/-1)
src/server/frontend/protobuf_buffer_packer.cpp (+1/-1)
src/server/frontend/protobuf_buffer_packer.h (+1/-1)
src/server/frontend/protobuf_connection_creator.cpp (+1/-1)
src/server/frontend/protobuf_input_converter.cpp (+1/-1)
src/server/frontend/protobuf_input_converter.h (+1/-1)
src/server/frontend/protobuf_ipc_factory.h (+1/-1)
src/server/frontend/protobuf_message_processor.cpp (+9/-16)
src/server/frontend/protobuf_message_processor.h (+1/-1)
src/server/frontend/protobuf_responder.cpp (+1/-1)
src/server/frontend/protobuf_responder.h (+1/-1)
src/server/frontend/published_socket_connector.cpp (+55/-11)
src/server/frontend/published_socket_connector.h (+2/-2)
src/server/frontend/reordering_message_sender.cpp (+1/-1)
src/server/frontend/reordering_message_sender.h (+1/-1)
src/server/frontend/resource_cache.cpp (+1/-1)
src/server/frontend/resource_cache.h (+1/-1)
src/server/frontend/screencast_buffer_tracker.cpp (+1/-1)
src/server/frontend/screencast_buffer_tracker.h (+1/-1)
src/server/frontend/session_credentials.cpp (+1/-1)
src/server/frontend/session_mediator.cpp (+165/-49)
src/server/frontend/session_mediator.h (+12/-3)
src/server/frontend/session_mediator_observer_multiplexer.cpp (+1/-1)
src/server/frontend/session_mediator_observer_multiplexer.h (+1/-1)
src/server/frontend/shell_wrapper.cpp (+1/-1)
src/server/frontend/shell_wrapper.h (+1/-1)
src/server/frontend/socket_connection.cpp (+1/-1)
src/server/frontend/socket_connection.h (+1/-1)
src/server/frontend/socket_messenger.cpp (+1/-1)
src/server/frontend/socket_messenger.h (+1/-1)
src/server/frontend/unauthorized_screencast.cpp (+1/-1)
src/server/frontend/unauthorized_screencast.h (+1/-1)
src/server/frontend/wayland/CMakeLists.txt (+14/-0)
src/server/frontend/wayland/core_generated_interfaces.h (+1910/-0)
src/server/frontend/wayland/wayland_connector.cpp (+2182/-0)
src/server/frontend/wayland/wayland_connector.h (+86/-0)
src/server/frontend/wayland/wayland_default_configuration.cpp (+49/-0)
src/server/glib_main_loop.cpp (+1/-1)
src/server/glib_main_loop_sources.cpp (+1/-1)
src/server/graphics/default_configuration.cpp (+1/-1)
src/server/graphics/default_display_configuration_policy.cpp (+1/-1)
src/server/graphics/display_configuration_observer_multiplexer.cpp (+1/-1)
src/server/graphics/display_configuration_observer_multiplexer.h (+1/-1)
src/server/graphics/gl_extensions_base.cpp (+1/-1)
src/server/graphics/nested/buffer.cpp (+1/-1)
src/server/graphics/nested/buffer.h (+1/-1)
src/server/graphics/nested/cursor.cpp (+1/-1)
src/server/graphics/nested/cursor.h (+1/-1)
src/server/graphics/nested/display.cpp (+1/-1)
src/server/graphics/nested/display.h (+1/-1)
src/server/graphics/nested/display_buffer.cpp (+1/-1)
src/server/graphics/nested/display_buffer.h (+1/-1)
src/server/graphics/nested/host_buffer.cpp (+1/-1)
src/server/graphics/nested/host_buffer.h (+1/-1)
src/server/graphics/nested/host_chain.h (+1/-1)
src/server/graphics/nested/host_connection.h (+1/-1)
src/server/graphics/nested/host_stream.h (+1/-1)
src/server/graphics/nested/host_surface.h (+1/-1)
src/server/graphics/nested/host_surface_spec.h (+1/-1)
src/server/graphics/nested/input_platform.cpp (+1/-1)
src/server/graphics/nested/input_platform.h (+1/-1)
src/server/graphics/nested/ipc_operations.cpp (+1/-1)
src/server/graphics/nested/ipc_operations.h (+1/-1)
src/server/graphics/nested/mir_client_host_connection.cpp (+4/-4)
src/server/graphics/nested/mir_client_host_connection.h (+1/-1)
src/server/graphics/nested/native_buffer.h (+1/-1)
src/server/graphics/nested/nested_display_configuration.cpp (+1/-1)
src/server/graphics/nested/nested_display_configuration.h (+1/-1)
src/server/graphics/nested/passthrough_option.h (+1/-1)
src/server/graphics/nested/platform.cpp (+1/-1)
src/server/graphics/nested/platform.h (+1/-1)
src/server/graphics/offscreen/display.cpp (+1/-1)
src/server/graphics/offscreen/display.h (+1/-1)
src/server/graphics/offscreen/display_buffer.cpp (+1/-1)
src/server/graphics/offscreen/display_buffer.h (+1/-1)
src/server/graphics/offscreen/display_configuration.cpp (+1/-1)
src/server/graphics/offscreen/display_configuration.h (+1/-1)
src/server/graphics/software_cursor.cpp (+1/-1)
src/server/graphics/software_cursor.h (+1/-1)
src/server/graphics/surfaceless_egl_context.cpp (+1/-1)
src/server/input/basic_seat.cpp (+1/-1)
src/server/input/basic_seat.h (+1/-1)
src/server/input/builtin_cursor_images.cpp (+1/-1)
src/server/input/builtin_cursor_images.h (+1/-1)
src/server/input/config_changer.cpp (+27/-20)
src/server/input/config_changer.h (+3/-1)
src/server/input/cursor_controller.cpp (+1/-1)
src/server/input/cursor_controller.h (+1/-1)
src/server/input/default_configuration.cpp (+1/-1)
src/server/input/default_device.cpp (+1/-1)
src/server/input/default_device.h (+1/-1)
src/server/input/default_event_builder.cpp (+1/-1)
src/server/input/default_event_builder.h (+1/-1)
src/server/input/default_input_device_hub.cpp (+1/-1)
src/server/input/default_input_device_hub.h (+1/-1)
src/server/input/default_input_manager.cpp (+1/-1)
src/server/input/default_input_manager.h (+1/-1)
src/server/input/event_filter_chain_dispatcher.cpp (+1/-1)
src/server/input/event_filter_chain_dispatcher.h (+1/-1)
src/server/input/input_modifier_utils.cpp (+1/-1)
src/server/input/input_modifier_utils.h (+1/-1)
src/server/input/input_probe.cpp (+1/-1)
src/server/input/key_repeat_dispatcher.cpp (+1/-1)
src/server/input/key_repeat_dispatcher.h (+1/-1)
src/server/input/null_input_dispatcher.cpp (+1/-1)
src/server/input/null_input_dispatcher.h (+1/-1)
src/server/input/null_input_manager.h (+1/-1)
src/server/input/null_input_targeter.h (+1/-1)
src/server/input/seat_input_device_tracker.cpp (+1/-1)
src/server/input/seat_input_device_tracker.h (+1/-1)
src/server/input/seat_observer_multiplexer.cpp (+1/-1)
src/server/input/seat_observer_multiplexer.h (+1/-1)
src/server/input/surface_input_dispatcher.cpp (+1/-1)
src/server/input/surface_input_dispatcher.h (+1/-1)
src/server/input/touchspot_controller.cpp (+1/-1)
src/server/input/touchspot_controller.h (+1/-1)
src/server/input/validator.cpp (+1/-1)
src/server/input/vt_filter.cpp (+1/-1)
src/server/lockable_callback_wrapper.cpp (+1/-1)
src/server/report/default_server_configuration.cpp (+1/-1)
src/server/report/logging/compositor_report.cpp (+1/-1)
src/server/report/logging/compositor_report.h (+1/-1)
src/server/report/logging/connector_report.cpp (+9/-1)
src/server/report/logging/connector_report.h (+2/-1)
src/server/report/logging/display_configuration_report.cpp (+1/-1)
src/server/report/logging/display_configuration_report.h (+1/-1)
src/server/report/logging/display_report.cpp (+1/-1)
src/server/report/logging/display_report.h (+1/-1)
src/server/report/logging/input_report.cpp (+1/-1)
src/server/report/logging/input_report.h (+1/-1)
src/server/report/logging/logging_report_factory.cpp (+1/-1)
src/server/report/logging/message_processor_report.cpp (+1/-1)
src/server/report/logging/message_processor_report.h (+1/-1)
src/server/report/logging/scene_report.cpp (+1/-1)
src/server/report/logging/scene_report.h (+1/-1)
src/server/report/logging/seat_report.cpp (+1/-1)
src/server/report/logging/seat_report.h (+1/-1)
src/server/report/logging/session_mediator_report.cpp (+1/-1)
src/server/report/logging/session_mediator_report.h (+1/-1)
src/server/report/logging/shell_report.cpp (+1/-1)
src/server/report/logging/shell_report.h (+1/-1)
src/server/report/logging_report_factory.h (+1/-1)
src/server/report/lttng/compositor_report.cpp (+1/-1)
src/server/report/lttng/compositor_report.h (+1/-1)
src/server/report/lttng/compositor_report_tp.h (+1/-1)
src/server/report/lttng/connector_report.cpp (+6/-1)
src/server/report/lttng/connector_report.h (+3/-1)
src/server/report/lttng/connector_report_tp.h (+1/-1)
src/server/report/lttng/display_report.cpp (+1/-1)
src/server/report/lttng/display_report.h (+1/-1)
src/server/report/lttng/display_report_tp.h (+1/-1)
src/server/report/lttng/input_report.cpp (+1/-1)
src/server/report/lttng/input_report.h (+1/-1)
src/server/report/lttng/input_report_tp.h (+1/-1)
src/server/report/lttng/lttng_report_factory.cpp (+1/-1)
src/server/report/lttng/lttng_utils.h (+1/-1)
src/server/report/lttng/message_processor_report.cpp (+1/-1)
src/server/report/lttng/message_processor_report.h (+1/-1)
src/server/report/lttng/message_processor_report_tp.h (+1/-1)
src/server/report/lttng/scene_report.cpp (+1/-1)
src/server/report/lttng/scene_report.h (+1/-1)
src/server/report/lttng/scene_report_tp.h (+1/-1)
src/server/report/lttng/server_tracepoint_provider.cpp (+1/-1)
src/server/report/lttng/server_tracepoint_provider.h (+1/-1)
src/server/report/lttng/session_mediator_report.cpp (+1/-1)
src/server/report/lttng/session_mediator_report.h (+1/-1)
src/server/report/lttng/session_mediator_report_tp.h (+1/-1)
src/server/report/lttng/shared_library_prober_report.cpp (+1/-1)
src/server/report/lttng/shared_library_prober_report.h (+1/-1)
src/server/report/lttng/shared_library_prober_report_tp.h (+1/-1)
src/server/report/lttng_report_factory.h (+1/-1)
src/server/report/null/compositor_report.cpp (+1/-1)
src/server/report/null/compositor_report.h (+1/-1)
src/server/report/null/connector_report.cpp (+2/-1)
src/server/report/null/connector_report.h (+2/-1)
src/server/report/null/display_report.cpp (+1/-1)
src/server/report/null/display_report.h (+1/-1)
src/server/report/null/input_report.cpp (+1/-1)
src/server/report/null/input_report.h (+1/-1)
src/server/report/null/message_processor_report.cpp (+1/-1)
src/server/report/null/message_processor_report.h (+1/-1)
src/server/report/null/null_report_factory.cpp (+1/-1)
src/server/report/null/scene_report.cpp (+1/-1)
src/server/report/null/scene_report.h (+1/-1)
src/server/report/null/seat_report.cpp (+1/-1)
src/server/report/null/seat_report.h (+1/-1)
src/server/report/null/session_mediator_report.cpp (+1/-1)
src/server/report/null/session_mediator_report.h (+1/-1)
src/server/report/null/shell_report.cpp (+1/-1)
src/server/report/null/shell_report.h (+1/-1)
src/server/report/null_report_factory.h (+1/-1)
src/server/report/report_factory.h (+1/-1)
src/server/report/reports.cpp (+1/-1)
src/server/report/reports.h (+1/-1)
src/server/report_exception.cpp (+1/-1)
src/server/run_mir.cpp (+2/-2)
src/server/scene/application_not_responding_detector_wrapper.cpp (+1/-1)
src/server/scene/application_session.cpp (+2/-54)
src/server/scene/application_session.h (+1/-8)
src/server/scene/basic_surface.cpp (+12/-18)
src/server/scene/basic_surface.h (+2/-2)
src/server/scene/broadcasting_session_event_sink.cpp (+17/-60)
src/server/scene/broadcasting_session_event_sink.h (+11/-21)
src/server/scene/default_configuration.cpp (+1/-1)
src/server/scene/default_coordinate_translator.cpp (+1/-1)
src/server/scene/default_coordinate_translator.h (+1/-1)
src/server/scene/default_session_container.cpp (+1/-1)
src/server/scene/default_session_container.h (+1/-1)
src/server/scene/gl_pixel_buffer.cpp (+1/-1)
src/server/scene/gl_pixel_buffer.h (+1/-1)
src/server/scene/global_event_sender.cpp (+1/-5)
src/server/scene/global_event_sender.h (+1/-2)
src/server/scene/legacy_scene_change_notification.cpp (+1/-1)
src/server/scene/legacy_surface_change_notification.cpp (+1/-1)
src/server/scene/legacy_surface_change_notification.h (+1/-1)
src/server/scene/mediating_display_changer.cpp (+65/-36)
src/server/scene/mediating_display_changer.h (+6/-2)
src/server/scene/null_observer.cpp (+1/-1)
src/server/scene/null_surface_observer.cpp (+1/-1)
src/server/scene/output_properties_cache.cpp (+1/-1)
src/server/scene/output_properties_cache.h (+1/-1)
src/server/scene/pixel_buffer.h (+1/-1)
src/server/scene/prompt_session_container.cpp (+1/-1)
src/server/scene/prompt_session_container.h (+1/-1)
src/server/scene/prompt_session_impl.cpp (+1/-1)
src/server/scene/prompt_session_impl.h (+1/-1)
src/server/scene/prompt_session_manager_impl.cpp (+1/-1)
src/server/scene/prompt_session_manager_impl.h (+1/-1)
src/server/scene/rendering_tracker.cpp (+1/-1)
src/server/scene/rendering_tracker.h (+1/-1)
src/server/scene/session_manager.cpp (+2/-2)
src/server/scene/session_manager.h (+1/-1)
src/server/scene/snapshot_strategy.h (+1/-1)
src/server/scene/surface_allocator.cpp (+1/-1)
src/server/scene/surface_allocator.h (+1/-1)
src/server/scene/surface_creation_parameters.cpp (+1/-1)
src/server/scene/surface_event_source.cpp (+1/-1)
src/server/scene/surface_stack.cpp (+1/-12)
src/server/scene/surface_stack.h (+1/-1)
src/server/scene/threaded_snapshot_strategy.cpp (+1/-1)
src/server/scene/threaded_snapshot_strategy.h (+1/-1)
src/server/scene/timeout_application_not_responding_detector.cpp (+1/-1)
src/server/scene/timeout_application_not_responding_detector.h (+1/-1)
src/server/scene/unsupported_coordinate_translator.cpp (+1/-1)
src/server/scene/unsupported_coordinate_translator.h (+1/-1)
src/server/server.cpp (+1/-1)
src/server/shell/CMakeLists.txt (+0/-2)
src/server/shell/abstract_shell.cpp (+1/-1)
src/server/shell/default_configuration.cpp (+6/-8)
src/server/shell/default_persistent_surface_store.cpp (+3/-1)
src/server/shell/default_persistent_surface_store.h (+3/-1)
src/server/shell/frontend_shell.cpp (+1/-1)
src/server/shell/frontend_shell.h (+1/-1)
src/server/shell/graphics_display_layout.cpp (+1/-1)
src/server/shell/graphics_display_layout.h (+1/-1)
src/server/shell/null_host_lifecycle_event_listener.h (+1/-1)
src/server/shell/persistent_surface_store.cpp (+1/-1)
src/server/shell/shell_wrapper.cpp (+1/-1)
src/server/shell/surface_ready_observer.cpp (+1/-1)
src/server/shell/surface_specification.cpp (+1/-1)
src/server/shell/surface_stack_wrapper.cpp (+1/-1)
src/server/shell/system_compositor_window_manager.cpp (+1/-1)
src/server/shell/window_management_info.cpp (+14/-27)
src/server/symbols.map (+5/-30)
src/server/terminate_with_current_exception.cpp (+1/-1)
src/server/thread/basic_thread_pool.cpp (+1/-1)
src/server/version.h.in (+1/-1)
src/utils/backlight.sh (+1/-1)
src/utils/in.cpp (+1/-1)
src/utils/out.c (+1/-1)
src/utils/run.cpp (+1/-1)
src/utils/screencast.cpp (+1/-1)
src/utils/vanity.c (+1/-1)
src/wrapper.c (+1/-1)
tests/CMakeLists.txt (+6/-0)
tests/acceptance-tests/CMakeLists.txt (+0/-1)
tests/acceptance-tests/client_mediated_user_gestures.cpp (+21/-20)
tests/acceptance-tests/drag_and_drop.cpp (+1/-1)
tests/acceptance-tests/precompiled.hpp (+1/-1)
tests/acceptance-tests/server_configuration_options.cpp (+1/-1)
tests/acceptance-tests/server_configuration_wrapping.cpp (+1/-1)
tests/acceptance-tests/server_signal_handling.cpp (+1/-1)
tests/acceptance-tests/server_stop_callback.cpp (+1/-1)
tests/acceptance-tests/strict_close.cpp (+1/-1)
tests/acceptance-tests/test_application_not_responding_detection.cpp (+1/-1)
tests/acceptance-tests/test_buffer_stream_arrangement.cpp (+1/-1)
tests/acceptance-tests/test_buffer_stream_arrangement1.cpp (+1/-1)
tests/acceptance-tests/test_client_authorization.cpp (+1/-1)
tests/acceptance-tests/test_client_cookie.cpp (+1/-1)
tests/acceptance-tests/test_client_cursor_api.cpp (+2/-12)
tests/acceptance-tests/test_client_extensions.cpp (+1/-1)
tests/acceptance-tests/test_client_focus_notification.cpp (+1/-1)
tests/acceptance-tests/test_client_header_version.cpp (+1/-1)
tests/acceptance-tests/test_client_input.cpp (+1/-1)
tests/acceptance-tests/test_client_library.cpp (+1/-1)
tests/acceptance-tests/test_client_library_callbacks.cpp (+1/-1)
tests/acceptance-tests/test_client_library_errors.cpp (+1/-1)
tests/acceptance-tests/test_client_library_old.cpp (+1/-1)
tests/acceptance-tests/test_client_logging.cpp (+1/-1)
tests/acceptance-tests/test_client_scaling.cpp (+1/-1)
tests/acceptance-tests/test_client_screencast.cpp (+1/-1)
tests/acceptance-tests/test_client_surface_events.cpp (+1/-1)
tests/acceptance-tests/test_client_surface_swap_buffers.cpp (+1/-1)
tests/acceptance-tests/test_client_surface_visibility.cpp (+1/-1)
tests/acceptance-tests/test_client_surfaces.cpp (+48/-25)
tests/acceptance-tests/test_client_with_custom_display_config_deadlock.cpp (+1/-1)
tests/acceptance-tests/test_command_line_handling.cpp (+1/-1)
tests/acceptance-tests/test_confined_pointer.cpp (+1/-1)
tests/acceptance-tests/test_custom_input_dispatcher.cpp (+1/-1)
tests/acceptance-tests/test_custom_window_management.cpp (+1/-1)
tests/acceptance-tests/test_debug_api.cpp (+1/-1)
tests/acceptance-tests/test_display_configuration.cpp (+1/-1)
tests/acceptance-tests/test_input_device_hub.cpp (+1/-1)
tests/acceptance-tests/test_latency.cpp (+1/-1)
tests/acceptance-tests/test_mirblob.cpp (+1/-1)
tests/acceptance-tests/test_nested_input.cpp (+1/-1)
tests/acceptance-tests/test_nested_mir.cpp (+11/-7)
tests/acceptance-tests/test_new_display_configuration.cpp (+1/-1)
tests/acceptance-tests/test_persistent_surface_store.cpp (+1/-1)
tests/acceptance-tests/test_presentation_chain.cpp (+1/-1)
tests/acceptance-tests/test_prompt_session_client_api.cpp (+1/-1)
tests/acceptance-tests/test_render_override.cpp (+1/-1)
tests/acceptance-tests/test_render_surface.cpp (+1/-1)
tests/acceptance-tests/test_server_disconnect.cpp (+1/-1)
tests/acceptance-tests/test_server_shutdown.cpp (+1/-1)
tests/acceptance-tests/test_server_startup.cpp (+1/-1)
tests/acceptance-tests/test_server_without_active_outputs.cpp (+1/-1)
tests/acceptance-tests/test_session_mediator_report.cpp (+1/-1)
tests/acceptance-tests/test_shell_control_of_surface_configuration.cpp (+0/-143)
tests/acceptance-tests/test_surface_modifications.cpp (+1/-1)
tests/acceptance-tests/test_surface_morphing.cpp (+1/-1)
tests/acceptance-tests/test_surface_placement.cpp (+1/-1)
tests/acceptance-tests/test_surface_raise.cpp (+1/-1)
tests/acceptance-tests/test_surface_specification.cpp (+1/-1)
tests/acceptance-tests/test_surfaces_with_output_id.cpp (+1/-1)
tests/acceptance-tests/test_symbols_required_by_mesa.cpp (+1/-1)
tests/acceptance-tests/test_system_compositor_window_manager.cpp (+1/-1)
tests/acceptance-tests/test_unresponsive_client.cpp (+1/-1)
tests/client-language/c99.c (+1/-1)
tests/include/gmock_set_arg.h (+1/-1)
tests/include/mir/shell/basic_window_manager.h (+1/-1)
tests/include/mir/shell/canonical_window_manager.h (+1/-1)
tests/include/mir/test/as_render_target.h (+1/-1)
tests/include/mir/test/barrier.h (+1/-1)
tests/include/mir/test/current_thread_name.h (+1/-1)
tests/include/mir/test/doubles/advanceable_clock.h (+1/-1)
tests/include/mir/test/doubles/fake_alarm_factory.h (+1/-1)
tests/include/mir/test/doubles/fake_ipc_factory.h (+1/-1)
tests/include/mir/test/doubles/fake_renderable.h (+1/-1)
tests/include/mir/test/doubles/fd_matcher.h (+1/-1)
tests/include/mir/test/doubles/mock_buffer.h (+1/-1)
tests/include/mir/test/doubles/mock_buffer_ipc_message.h (+1/-1)
tests/include/mir/test/doubles/mock_buffer_stream.h (+1/-4)
tests/include/mir/test/doubles/mock_client_buffer_factory.h (+1/-1)
tests/include/mir/test/doubles/mock_client_platform.h (+1/-1)
tests/include/mir/test/doubles/mock_compositor.h (+1/-1)
tests/include/mir/test/doubles/mock_compositor_report.h (+1/-1)
tests/include/mir/test/doubles/mock_coordinate_translator.h (+1/-1)
tests/include/mir/test/doubles/mock_cursor_listener.h (+1/-1)
tests/include/mir/test/doubles/mock_device.h (+1/-1)
tests/include/mir/test/doubles/mock_display.h (+1/-1)
tests/include/mir/test/doubles/mock_display_buffer.h (+1/-1)
tests/include/mir/test/doubles/mock_display_changer.h (+1/-1)
tests/include/mir/test/doubles/mock_display_layout.h (+1/-1)
tests/include/mir/test/doubles/mock_display_report.h (+1/-1)
tests/include/mir/test/doubles/mock_drm.h (+1/-1)
tests/include/mir/test/doubles/mock_event_filter.h (+1/-1)
tests/include/mir/test/doubles/mock_event_handler_register.h (+1/-1)
tests/include/mir/test/doubles/mock_event_sink.h (+1/-2)
tests/include/mir/test/doubles/mock_event_sink_factory.h (+1/-1)
tests/include/mir/test/doubles/mock_fb_hal_device.h (+1/-1)
tests/include/mir/test/doubles/mock_frontend_surface.h (+1/-1)
tests/include/mir/test/doubles/mock_gbm.h (+1/-1)
tests/include/mir/test/doubles/mock_gl_buffer.h (+1/-1)
tests/include/mir/test/doubles/mock_gl_config.h (+1/-1)
tests/include/mir/test/doubles/mock_gl_display_buffer.h (+1/-1)
tests/include/mir/test/doubles/mock_hwc_composer_device_1.h (+1/-1)
tests/include/mir/test/doubles/mock_input_config_changer.h (+1/-1)
tests/include/mir/test/doubles/mock_input_device.h (+1/-1)
tests/include/mir/test/doubles/mock_input_device_registry.h (+1/-1)
tests/include/mir/test/doubles/mock_input_manager.h (+1/-1)
tests/include/mir/test/doubles/mock_input_platform.h (+1/-1)
tests/include/mir/test/doubles/mock_input_seat.h (+1/-1)
tests/include/mir/test/doubles/mock_input_sink.h (+1/-1)
tests/include/mir/test/doubles/mock_input_surface.h (+1/-1)
tests/include/mir/test/doubles/mock_input_targeter.h (+1/-1)
tests/include/mir/test/doubles/mock_key_mapper.h (+1/-1)
tests/include/mir/test/doubles/mock_libinput.h (+1/-1)
tests/include/mir/test/doubles/mock_lockable_callback.h (+1/-1)
tests/include/mir/test/doubles/mock_main_loop.h (+1/-1)
tests/include/mir/test/doubles/mock_mesa_auth_extensions.h (+1/-1)
tests/include/mir/test/doubles/mock_message_sender.h (+1/-1)
tests/include/mir/test/doubles/mock_mir_buffer.h (+1/-1)
tests/include/mir/test/doubles/mock_mir_buffer_stream.h (+1/-1)
tests/include/mir/test/doubles/mock_option.h (+1/-1)
tests/include/mir/test/doubles/mock_platform_ipc_operations.h (+1/-1)
tests/include/mir/test/doubles/mock_protobuf_server.h (+1/-1)
tests/include/mir/test/doubles/mock_renderable.h (+1/-1)
tests/include/mir/test/doubles/mock_renderer.h (+1/-1)
tests/include/mir/test/doubles/mock_rpc_report.h (+1/-1)
tests/include/mir/test/doubles/mock_scene.h (+1/-1)
tests/include/mir/test/doubles/mock_scene_session.h (+1/-1)
tests/include/mir/test/doubles/mock_screencast.h (+1/-1)
tests/include/mir/test/doubles/mock_server_status_listener.h (+1/-1)
tests/include/mir/test/doubles/mock_session.h (+1/-1)
tests/include/mir/test/doubles/mock_session_listener.h (+1/-1)
tests/include/mir/test/doubles/mock_shell.h (+1/-1)
tests/include/mir/test/doubles/mock_surface.h (+1/-1)
tests/include/mir/test/doubles/mock_surface_stack.h (+1/-1)
tests/include/mir/test/doubles/mock_timer.h (+1/-1)
tests/include/mir/test/doubles/mock_touch_visualizer.h (+1/-1)
tests/include/mir/test/doubles/mock_udev.h (+1/-1)
tests/include/mir/test/doubles/mock_udev_device.h (+1/-1)
tests/include/mir/test/doubles/mock_virtual_terminal.h (+1/-1)
tests/include/mir/test/doubles/mock_x11.h (+1/-1)
tests/include/mir/test/doubles/null_application_not_responding_detector.h (+1/-1)
tests/include/mir/test/doubles/null_client_buffer.h (+1/-1)
tests/include/mir/test/doubles/null_client_event_sink.h (+1/-1)
tests/include/mir/test/doubles/null_display_changer.h (+1/-1)
tests/include/mir/test/doubles/null_emergency_cleanup.h (+1/-1)
tests/include/mir/test/doubles/null_event_sink.h (+1/-2)
tests/include/mir/test/doubles/null_event_sink_factory.h (+1/-1)
tests/include/mir/test/doubles/null_message_sender.h (+1/-1)
tests/include/mir/test/doubles/null_pixel_buffer.h (+1/-1)
tests/include/mir/test/doubles/null_prompt_session.h (+1/-1)
tests/include/mir/test/doubles/null_prompt_session_manager.h (+1/-1)
tests/include/mir/test/doubles/null_screencast.h (+1/-1)
tests/include/mir/test/doubles/null_session_event_sink.h (+2/-2)
tests/include/mir/test/doubles/null_snapshot_strategy.h (+1/-1)
tests/include/mir/test/doubles/null_video_devices.h (+1/-1)
tests/include/mir/test/doubles/null_virtual_terminal.h (+1/-1)
tests/include/mir/test/doubles/stub_alarm.h (+1/-1)
tests/include/mir/test/doubles/stub_buffer.h (+1/-1)
tests/include/mir/test/doubles/stub_buffer_allocator.h (+1/-1)
tests/include/mir/test/doubles/stub_buffer_stream.h (+1/-4)
tests/include/mir/test/doubles/stub_buffer_stream_factory.h (+10/-31)
tests/include/mir/test/doubles/stub_client_buffer.h (+1/-1)
tests/include/mir/test/doubles/stub_client_buffer_factory.h (+1/-1)
tests/include/mir/test/doubles/stub_client_platform_factory.h (+1/-1)
tests/include/mir/test/doubles/stub_connection_configuration.h (+1/-1)
tests/include/mir/test/doubles/stub_cursor_listener.h (+1/-1)
tests/include/mir/test/doubles/stub_display.h (+1/-1)
tests/include/mir/test/doubles/stub_display_server.h (+1/-1)
tests/include/mir/test/doubles/stub_gbm_native_buffer.h (+1/-1)
tests/include/mir/test/doubles/stub_gl_buffer.h (+1/-1)
tests/include/mir/test/doubles/stub_gl_buffer_allocator.h (+1/-1)
tests/include/mir/test/doubles/stub_gl_config.h (+1/-1)
tests/include/mir/test/doubles/stub_gl_display_buffer.h (+1/-1)
tests/include/mir/test/doubles/stub_gl_program.h (+1/-1)
tests/include/mir/test/doubles/stub_gl_program_factory.h (+1/-1)
tests/include/mir/test/doubles/stub_host_connection.h (+1/-1)
tests/include/mir/test/doubles/stub_input_scene.h (+1/-1)
tests/include/mir/test/doubles/stub_input_surface.h (+1/-1)
tests/include/mir/test/doubles/stub_input_targeter.h (+1/-1)
tests/include/mir/test/doubles/stub_ipc_factory.h (+1/-1)
tests/include/mir/test/doubles/stub_renderable.h (+1/-1)
tests/include/mir/test/doubles/stub_renderer.h (+1/-1)
tests/include/mir/test/doubles/stub_scene.h (+1/-1)
tests/include/mir/test/doubles/stub_scene_element.h (+1/-7)
tests/include/mir/test/doubles/stub_scene_surface.h (+1/-2)
tests/include/mir/test/doubles/stub_session.h (+1/-1)
tests/include/mir/test/doubles/stub_session_container.h (+1/-1)
tests/include/mir/test/doubles/stub_shell.h (+1/-1)
tests/include/mir/test/doubles/stub_surface_factory.h (+1/-1)
tests/include/mir/test/doubles/stub_touch_visualizer.h (+1/-1)
tests/include/mir/test/doubles/triggered_main_loop.h (+1/-1)
tests/include/mir/test/fake_clock.h (+1/-1)
tests/include/mir/test/fd_utils.h (+1/-1)
tests/include/mir/test/input_config_matchers.h (+1/-1)
tests/include/mir/test/input_devices_matcher.h (+1/-1)
tests/include/mir/test/stub_server_tool.h (+1/-1)
tests/include/mir/test/test_dispatchable.h (+1/-1)
tests/include/mir/test/test_protobuf_client.h (+9/-1)
tests/include/mir/test/test_protobuf_server.h (+1/-1)
tests/include/mir/test/wait_object.h (+1/-1)
tests/include/mir_test_framework/basic_client_server_fixture.h (+1/-1)
tests/include/mir_test_framework/client_platform_factory.h (+1/-1)
tests/include/mir_test_framework/command_line_server_configuration.h (+1/-1)
tests/include/mir_test_framework/deferred_in_process_server.h (+1/-1)
tests/include/mir_test_framework/fake_input_server_configuration.h (+1/-1)
tests/include/mir_test_framework/input_testing_server_configuration.h (+1/-1)
tests/include/mir_test_framework/libinput_environment.h (+1/-1)
tests/include/mir_test_framework/stub_client_connection_configuration.h (+1/-1)
tests/include/mir_test_framework/stub_client_platform_factory.h (+1/-1)
tests/include/mir_test_framework/stub_input_platform.h (+1/-1)
tests/include/mir_test_framework/stubbed_server_configuration.h (+2/-1)
tests/include/mir_test_framework/testing_server_configuration.h (+1/-1)
tests/include/mir_test_framework/udev_environment.h (+1/-1)
tests/integration-tests/client/test_mirsurface.cpp (+1/-1)
tests/integration-tests/client/test_screencast.cpp (+1/-1)
tests/integration-tests/compositor/multithread_harness.h (+1/-1)
tests/integration-tests/compositor/test_swapping_swappers.cpp (+2/-3)
tests/integration-tests/compositor/test_synchronizer.cpp (+1/-1)
tests/integration-tests/graphics/mesa/test_buffer_integration.cpp (+1/-1)
tests/integration-tests/input/test_configuring_input_manager.cpp (+1/-1)
tests/integration-tests/input/test_cursor_listener.cpp (+1/-1)
tests/integration-tests/input/test_single_seat_setup.cpp (+1/-1)
tests/integration-tests/precompiled.hpp (+1/-1)
tests/integration-tests/process/test_process.cpp (+1/-1)
tests/integration-tests/session_management.cpp (+1/-1)
tests/integration-tests/shell/test_session_lifecycle_event.cpp (+1/-1)
tests/integration-tests/test_buffer_scheduling.cpp (+52/-17)
tests/integration-tests/test_client_screencast.cpp (+1/-1)
tests/integration-tests/test_display_info.cpp (+1/-1)
tests/integration-tests/test_display_server_main_loop_events.cpp (+1/-1)
tests/integration-tests/test_error_reporting.cpp (+1/-1)
tests/integration-tests/test_focus_selection.cpp (+1/-1)
tests/integration-tests/test_large_messages.cpp (+1/-1)
tests/integration-tests/test_server_client_types.cpp (+1/-1)
tests/integration-tests/test_server_shutdown.cpp (+1/-1)
tests/integration-tests/test_session.cpp (+2/-2)
tests/integration-tests/test_stale_frames.cpp (+1/-1)
tests/integration-tests/test_submit_buffer.cpp (+147/-109)
tests/integration-tests/test_surface_first_frame_sync.cpp (+1/-1)
tests/integration-tests/test_surface_stack_with_compositor.cpp (+3/-6)
tests/integration-tests/test_surfaceloop.cpp (+1/-1)
tests/integration-tests/test_swapinterval.cpp (+4/-9)
tests/integration-tests/test_test_framework.cpp (+1/-1)
tests/integration-tests/test_touchspot_visualization.cpp (+1/-1)
tests/loader-tests/test_reload.c (+1/-1)
tests/mir_test/cross_process_action.cpp (+1/-1)
tests/mir_test/cross_process_sync.cpp (+1/-1)
tests/mir_test/current_thread_name.cpp (+1/-1)
tests/mir_test/display_config_matchers.cpp (+1/-1)
tests/mir_test/event_factory.cpp (+1/-1)
tests/mir_test/event_matchers.cpp (+1/-1)
tests/mir_test/fake_clock.cpp (+1/-1)
tests/mir_test/fd_utils.cpp (+1/-1)
tests/mir_test/pipe.cpp (+1/-1)
tests/mir_test/popen.cpp (+1/-1)
tests/mir_test/signal.cpp (+1/-1)
tests/mir_test/spin_wait.cpp (+1/-1)
tests/mir_test/test_dispatchable.cpp (+1/-1)
tests/mir_test/wait_object.cpp (+1/-1)
tests/mir_test_doubles/fake_alarm_factory.cpp (+1/-1)
tests/mir_test_doubles/fake_display.cpp (+1/-1)
tests/mir_test_doubles/mock_drm.cpp (+1/-1)
tests/mir_test_doubles/mock_egl.cpp (+49/-2)
tests/mir_test_doubles/mock_event_sink_factory.cpp (+1/-7)
tests/mir_test_doubles/mock_gbm.cpp (+1/-1)
tests/mir_test_doubles/mock_gl.cpp (+1/-1)
tests/mir_test_doubles/mock_input_device.cpp (+1/-1)
tests/mir_test_doubles/mock_libinput.cpp (+1/-1)
tests/mir_test_doubles/mock_timer.cpp (+1/-1)
tests/mir_test_doubles/mock_udev.cpp (+1/-1)
tests/mir_test_doubles/mock_x11.cpp (+1/-1)
tests/mir_test_doubles/nested_mock_egl.cpp (+3/-12)
tests/mir_test_doubles/null_event_sink_factory.cpp (+1/-1)
tests/mir_test_doubles/null_logger.cpp (+1/-1)
tests/mir_test_doubles/stub_display_configuration.cpp (+1/-1)
tests/mir_test_doubles/test_protobuf_client.cpp (+3/-1)
tests/mir_test_doubles/test_protobuf_socket_server.cpp (+1/-1)
tests/mir_test_doubles/triggered_main_loop.cpp (+1/-1)
tests/mir_test_framework/CMakeLists.txt (+4/-2)
tests/mir_test_framework/any_surface.cpp (+1/-1)
tests/mir_test_framework/async_server_runner.cpp (+22/-3)
tests/mir_test_framework/basic_window_manager.cpp (+1/-1)
tests/mir_test_framework/canonical_window_manager.cpp (+1/-1)
tests/mir_test_framework/command_line_server_configuration.cpp (+1/-1)
tests/mir_test_framework/connected_client_headless_server.cpp (+1/-1)
tests/mir_test_framework/connected_client_with_a_window.cpp (+1/-1)
tests/mir_test_framework/declarative_placement_window_manage_policy.cpp (+12/-12)
tests/mir_test_framework/executable_path.cpp (+1/-1)
tests/mir_test_framework/fake_input_device_impl.cpp (+1/-1)
tests/mir_test_framework/fake_input_device_impl.h (+1/-1)
tests/mir_test_framework/fake_input_server_configuration.cpp (+1/-1)
tests/mir_test_framework/headless_display_buffer_compositor_factory.cpp (+1/-1)
tests/mir_test_framework/headless_in_process_server.cpp (+13/-1)
tests/mir_test_framework/headless_nested_server_runner.cpp (+1/-1)
tests/mir_test_framework/headless_test.cpp (+1/-1)
tests/mir_test_framework/input_testing_server_options.cpp (+1/-1)
tests/mir_test_framework/interprocess_client_server_test.cpp (+1/-1)
tests/mir_test_framework/libinput_environment.cpp (+1/-1)
tests/mir_test_framework/main.cpp (+1/-1)
tests/mir_test_framework/observant_shell.cpp (+1/-1)
tests/mir_test_framework/placement_applying_shell.cpp (+1/-1)
tests/mir_test_framework/platform_graphics_dummy.cpp (+1/-1)
tests/mir_test_framework/platform_graphics_throw.cpp (+1/-1)
tests/mir_test_framework/process.cpp (+1/-1)
tests/mir_test_framework/server_runner.cpp (+2/-2)
tests/mir_test_framework/socket_detect_server.cpp (+1/-1)
tests/mir_test_framework/stub_client_platform_factory.cpp (+1/-1)
tests/mir_test_framework/stub_client_platform_module.cpp (+1/-1)
tests/mir_test_framework/stub_client_platform_options.cpp (+1/-1)
tests/mir_test_framework/stub_input.cpp (+1/-1)
tests/mir_test_framework/stub_input_platform.cpp (+1/-1)
tests/mir_test_framework/stub_server_platform_factory.cpp (+1/-1)
tests/mir_test_framework/stub_session.cpp (+1/-26)
tests/mir_test_framework/stub_surface.cpp (+1/-6)
tests/mir_test_framework/stubbed_graphics_platform.cpp (+1/-1)
tests/mir_test_framework/stubbed_graphics_platform.h (+1/-1)
tests/mir_test_framework/stubbed_server_configuration.cpp (+13/-1)
tests/mir_test_framework/temporary_environment_value.cpp (+1/-1)
tests/mir_test_framework/testing_client_options.cpp (+1/-1)
tests/mir_test_framework/testing_server_options.cpp (+1/-1)
tests/mir_test_framework/udev_environment.cpp (+1/-1)
tests/mir_test_framework/visible_surface.cpp (+1/-1)
tests/miral/CMakeLists.txt (+54/-0)
tests/miral/active_outputs.cpp (+205/-0)
tests/miral/active_window.cpp (+412/-0)
tests/miral/client_mediated_gestures.cpp (+299/-0)
tests/miral/display_reconfiguration.cpp (+87/-0)
tests/miral/drag_active_window.cpp (+153/-0)
tests/miral/drag_and_drop.cpp (+656/-0)
tests/miral/modify_window_state.cpp (+105/-0)
tests/miral/mru_window_list.cpp (+193/-0)
tests/miral/raise_tree.cpp (+85/-0)
tests/miral/runner.cpp (+49/-0)
tests/miral/select_active_window.cpp (+121/-0)
tests/miral/test_server.cpp (+198/-0)
tests/miral/test_server.h (+90/-0)
tests/miral/test_window_manager_tools.h (+197/-0)
tests/miral/window_id.cpp (+114/-0)
tests/miral/window_info.cpp (+61/-0)
tests/miral/window_placement.cpp (+554/-0)
tests/miral/window_placement_anchors_to_parent.cpp (+208/-0)
tests/miral/window_placement_client_api.cpp (+141/-0)
tests/miral/window_properties.cpp (+164/-0)
tests/miral/workspaces.cpp (+707/-0)
tests/mirtest.pc.in (+1/-1)
tests/performance-tests/CMakeLists.txt (+2/-10)
tests/performance-tests/performance_tests.sh (+1/-1)
tests/performance-tests/system_performance_test.cpp (+1/-1)
tests/performance-tests/system_performance_test.h (+1/-1)
tests/performance-tests/test_client_startup.cpp (+1/-1)
tests/performance-tests/test_compositor.cpp (+1/-1)
tests/performance-tests/test_glmark2-es2-mir.cpp (+1/-1)
tests/privileged-tests/test_input_events.cpp (+1/-1)
tests/privileged-tests/ui_get_sysname_ioctl_override.cpp (+1/-1)
tests/test-clients/impolite-shutdown/scroll.cpp (+1/-1)
tests/test-clients/mir-stress/src/client.cpp (+1/-1)
tests/test-clients/mir-stress/src/client.h (+1/-1)
tests/test-clients/mir-stress/src/mir-stress.cpp (+1/-1)
tests/test-clients/mir-stress/src/results.cpp (+1/-1)
tests/test-clients/mir-stress/src/results.h (+1/-1)
tests/test-clients/mir-stress/src/threading.cpp (+1/-1)
tests/test-clients/mir-stress/src/threading.h (+1/-1)
tests/umock-acceptance-tests/test_libinput.cpp (+1/-1)
tests/unit-tests/CMakeLists.txt (+0/-2)
tests/unit-tests/client/input/test_xkb_mapper.cpp (+1/-1)
tests/unit-tests/client/test_aging_buffer.cpp (+1/-1)
tests/unit-tests/client/test_buffer_vault.cpp (+1/-29)
tests/unit-tests/client/test_client.cpp (+1/-1)
tests/unit-tests/client/test_client_buffer_stream.cpp (+7/-8)
tests/unit-tests/client/test_client_display_conf.cpp (+1/-1)
tests/unit-tests/client/test_client_mir_error.cpp (+1/-1)
tests/unit-tests/client/test_client_mir_surface.cpp (+1/-1)
tests/unit-tests/client/test_client_platform.cpp (+1/-1)
tests/unit-tests/client/test_connection_resource_map.cpp (+3/-7)
tests/unit-tests/client/test_error_buffer.cpp (+1/-1)
tests/unit-tests/client/test_event_distributor.cpp (+1/-1)
tests/unit-tests/client/test_frame_clock.cpp (+1/-1)
tests/unit-tests/client/test_mir_buffer.cpp (+1/-1)
tests/unit-tests/client/test_mir_connection.cpp (+1/-2)
tests/unit-tests/client/test_mir_prompt_session.cpp (+1/-1)
tests/unit-tests/client/test_mir_render_surface.cpp (+1/-1)
tests/unit-tests/client/test_mir_screencast.cpp (+1/-1)
tests/unit-tests/client/test_no_tls_future.cpp (+1/-1)
tests/unit-tests/client/test_periodic_perf_report.cpp (+1/-1)
tests/unit-tests/client/test_presentation_chain.cpp (+1/-1)
tests/unit-tests/client/test_probing_client_platform_factory.cpp (+1/-1)
tests/unit-tests/client/test_protobuf_rpc_channel.cpp (+31/-1)
tests/unit-tests/client/test_screencast_stream.cpp (+1/-1)
tests/unit-tests/client/test_stream_transport.cpp (+1/-1)
tests/unit-tests/client/test_wait_handle.cpp (+1/-1)
tests/unit-tests/compositor/CMakeLists.txt (+0/-2)
tests/unit-tests/compositor/test_client_buffers.cpp (+0/-119)
tests/unit-tests/compositor/test_compositing_screencast.cpp (+1/-1)
tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp (+1/-8)
tests/unit-tests/compositor/test_dropping_schedule.cpp (+7/-46)
tests/unit-tests/compositor/test_multi_monitor_arbiter.cpp (+251/-184)
tests/unit-tests/compositor/test_multi_threaded_compositor.cpp (+1/-1)
tests/unit-tests/compositor/test_occlusion.cpp (+1/-1)
tests/unit-tests/compositor/test_queueing_schedule.cpp (+1/-20)
tests/unit-tests/compositor/test_screencast_display_buffer.cpp (+1/-1)
tests/unit-tests/compositor/test_stream.cpp (+28/-69)
tests/unit-tests/compositor/test_temporary_buffers.cpp (+0/-143)
tests/unit-tests/dispatch/test_action_queue.cpp (+1/-1)
tests/unit-tests/dispatch/test_dispatch_utils.cpp (+1/-1)
tests/unit-tests/dispatch/test_multiplexing_dispatchable.cpp (+1/-1)
tests/unit-tests/dispatch/test_readable_fd.cpp (+1/-1)
tests/unit-tests/dispatch/test_threaded_dispatcher.cpp (+1/-1)
tests/unit-tests/frontend/stress_protobuf_communicator.cpp (+5/-1)
tests/unit-tests/frontend/test_authorizing_display_changer.cpp (+1/-1)
tests/unit-tests/frontend/test_authorizing_input_config_changer.cpp (+1/-1)
tests/unit-tests/frontend/test_basic_connector.cpp (+1/-1)
tests/unit-tests/frontend/test_buffering_message_sender.cpp (+1/-1)
tests/unit-tests/frontend/test_event_sender.cpp (+1/-1)
tests/unit-tests/frontend/test_protobuf_buffer_packer.cpp (+1/-1)
tests/unit-tests/frontend/test_protobuf_message_processor.cpp (+1/-1)
tests/unit-tests/frontend/test_protobuf_reports_errors.cpp (+1/-1)
tests/unit-tests/frontend/test_protobuf_surface_apis.cpp (+1/-1)
tests/unit-tests/frontend/test_published_socket_connector.cpp (+3/-1)
tests/unit-tests/frontend/test_resource_cache.cpp (+1/-1)
tests/unit-tests/frontend/test_session_mediator.cpp (+504/-99)
tests/unit-tests/frontend/test_socket_connection.cpp (+1/-1)
tests/unit-tests/geometry/test-dimensions.cpp (+1/-1)
tests/unit-tests/geometry/test-displacement.cpp (+1/-1)
tests/unit-tests/geometry/test-length.cpp (+1/-1)
tests/unit-tests/geometry/test-point.cpp (+1/-1)
tests/unit-tests/geometry/test-rectangle.cpp (+1/-1)
tests/unit-tests/geometry/test-rectangles.cpp (+1/-1)
tests/unit-tests/geometry/test-size.cpp (+1/-1)
tests/unit-tests/gl/test_gl_texture_cache.cpp (+1/-1)
tests/unit-tests/gl/test_program_factory.cpp (+1/-1)
tests/unit-tests/graphics/egl_mock/egl_mock_test.cpp (+1/-1)
tests/unit-tests/graphics/test_anonymous_shm_file.cpp (+5/-7)
tests/unit-tests/graphics/test_buffer_id.cpp (+1/-1)
tests/unit-tests/graphics/test_buffer_properties.cpp (+1/-1)
tests/unit-tests/graphics/test_default_display_configuration_policy.cpp (+1/-1)
tests/unit-tests/graphics/test_display_configuration.cpp (+1/-1)
tests/unit-tests/graphics/test_egl_error.cpp (+1/-1)
tests/unit-tests/graphics/test_egl_extensions.cpp (+1/-1)
tests/unit-tests/graphics/test_gamma_curves.cpp (+1/-1)
tests/unit-tests/graphics/test_overlapping_output_grouping.cpp (+1/-1)
tests/unit-tests/graphics/test_pixel_format_utils.cpp (+1/-1)
tests/unit-tests/graphics/test_platform_prober.cpp (+1/-1)
tests/unit-tests/graphics/test_shm_buffer.cpp (+4/-4)
tests/unit-tests/graphics/test_software_cursor.cpp (+1/-1)
tests/unit-tests/graphics/test_surfaceless_egl_context.cpp (+1/-1)
tests/unit-tests/input/CMakeLists.txt (+0/-1)
tests/unit-tests/input/evdev/test_evdev_device_detection.cpp (+1/-1)
tests/unit-tests/input/evdev/test_evdev_input_platform.cpp (+1/-1)
tests/unit-tests/input/evdev/test_libinput_device.cpp (+1/-1)
tests/unit-tests/input/test_config_changer.cpp (+1/-1)
tests/unit-tests/input/test_cursor_controller.cpp (+1/-1)
tests/unit-tests/input/test_default_device.cpp (+1/-1)
tests/unit-tests/input/test_default_input_device_hub.cpp (+1/-1)
tests/unit-tests/input/test_default_input_manager.cpp (+1/-1)
tests/unit-tests/input/test_event_builders.cpp (+1/-1)
tests/unit-tests/input/test_event_filter_chain_dispatcher.cpp (+1/-1)
tests/unit-tests/input/test_external_input_device_hub.cpp (+1/-1)
tests/unit-tests/input/test_input_event.cpp (+1/-1)
tests/unit-tests/input/test_input_platform_probing.cpp (+1/-1)
tests/unit-tests/input/test_key_repeat_dispatcher.cpp (+1/-1)
tests/unit-tests/input/test_nested_input_platform.cpp (+1/-1)
tests/unit-tests/input/test_seat_input_device_tracker.cpp (+1/-1)
tests/unit-tests/input/test_surface_input_dispatcher.cpp (+1/-1)
tests/unit-tests/input/test_touchspot_controller.cpp (+1/-1)
tests/unit-tests/input/test_validator.cpp (+1/-1)
tests/unit-tests/input/test_x11_module.cpp (+1/-1)
tests/unit-tests/input/test_x11_platform.cpp (+1/-1)
tests/unit-tests/input/test_xcursor_loader.cpp (+0/-148)
tests/unit-tests/library_example.cpp (+1/-1)
tests/unit-tests/library_example.h (+1/-1)
tests/unit-tests/logging/message_processor_report.cpp (+1/-1)
tests/unit-tests/logging/test_compositor_report.cpp (+1/-1)
tests/unit-tests/logging/test_display_report.cpp (+1/-1)
tests/unit-tests/options/test_program_option.cpp (+1/-1)
tests/unit-tests/platforms/eglstream-kms/server/test_buffer_allocator.cpp (+1/-1)
tests/unit-tests/platforms/mesa/client/CMakeLists.txt (+1/-1)
tests/unit-tests/platforms/mesa/client/test_client_buffer.cpp (+1/-1)
tests/unit-tests/platforms/mesa/client/test_client_platform.cpp (+1/-1)
tests/unit-tests/platforms/mesa/client/test_mesa_native_display_container.cpp (+1/-1)
tests/unit-tests/platforms/mesa/client/test_native_surface.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms-utils/test_connector_utils.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms-utils/test_drm_mode_resources.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/mock_kms_output.h (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_buffer_allocator.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_bypass.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_cursor.cpp (+16/-14)
tests/unit-tests/platforms/mesa/kms/test_display.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_display_buffer.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_display_configuration.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_display_generic.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_display_multi_monitor.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_drm_helper.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_gbm_buffer.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_graphics_platform.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_ipc_operations.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_kms_page_flipper.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_linux_virtual_terminal.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_nested_authentication.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_platform.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_real_kms_output.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_software_buffer.cpp (+3/-3)
tests/unit-tests/platforms/mesa/x11/test_display.cpp (+1/-1)
tests/unit-tests/platforms/mesa/x11/test_display_generic.cpp (+1/-1)
tests/unit-tests/platforms/mesa/x11/test_graphics_platform.cpp (+1/-1)
tests/unit-tests/platforms/mesa/x11/test_platform.cpp (+1/-1)
tests/unit-tests/platforms/nested/mir_display_configuration_builder.cpp (+1/-1)
tests/unit-tests/platforms/nested/mir_display_configuration_builder.h (+1/-1)
tests/unit-tests/platforms/nested/test_buffer.cpp (+1/-1)
tests/unit-tests/platforms/nested/test_host_buffer.cpp (+1/-1)
tests/unit-tests/platforms/nested/test_ipc_operations.cpp (+1/-1)
tests/unit-tests/platforms/nested/test_nested_cursor.cpp (+1/-1)
tests/unit-tests/platforms/nested/test_nested_display.cpp (+1/-1)
tests/unit-tests/platforms/nested/test_nested_display_buffer.cpp (+1/-1)
tests/unit-tests/platforms/nested/test_nested_display_configuration.cpp (+1/-1)
tests/unit-tests/platforms/test_display.h (+1/-1)
tests/unit-tests/platforms/test_graphics_platform.h (+1/-1)
tests/unit-tests/precompiled.hpp (+1/-1)
tests/unit-tests/renderers/gl/test_gl_renderer.cpp (+1/-1)
tests/unit-tests/scene/test_abstract_shell.cpp (+2/-2)
tests/unit-tests/scene/test_application_session.cpp (+8/-15)
tests/unit-tests/scene/test_basic_surface.cpp (+1/-15)
tests/unit-tests/scene/test_broadcasting_session_event_sink.cpp (+35/-40)
tests/unit-tests/scene/test_gl_pixel_buffer.cpp (+1/-1)
tests/unit-tests/scene/test_global_event_sender.cpp (+1/-1)
tests/unit-tests/scene/test_legacy_scene_change_notification.cpp (+1/-1)
tests/unit-tests/scene/test_mediating_display_changer.cpp (+2/-2)
tests/unit-tests/scene/test_prompt_session_container.cpp (+1/-1)
tests/unit-tests/scene/test_prompt_session_impl.cpp (+1/-1)
tests/unit-tests/scene/test_prompt_session_manager.cpp (+1/-1)
tests/unit-tests/scene/test_rendering_tracker.cpp (+1/-1)
tests/unit-tests/scene/test_session_manager.cpp (+2/-2)
tests/unit-tests/scene/test_surface.cpp (+1/-22)
tests/unit-tests/scene/test_surface_impl.cpp (+1/-1)
tests/unit-tests/scene/test_surface_stack.cpp (+2/-70)
tests/unit-tests/scene/test_the_session_container_implementation.cpp (+1/-1)
tests/unit-tests/scene/test_threaded_snapshot_strategy.cpp (+1/-1)
tests/unit-tests/scene/test_timeout_application_not_responding_detector.cpp (+1/-1)
tests/unit-tests/shared_library_test.cpp (+1/-1)
tests/unit-tests/shell/test_default_persistent_surface_store.cpp (+1/-1)
tests/unit-tests/shell/test_graphics_display_layout.cpp (+1/-1)
tests/unit-tests/shell/test_persistent_surface_store_id.cpp (+1/-1)
tests/unit-tests/test_default_emergency_cleanup.cpp (+1/-1)
tests/unit-tests/test_edid.cpp (+1/-1)
tests/unit-tests/test_fatal.cpp (+1/-1)
tests/unit-tests/test_fd.cpp (+1/-1)
tests/unit-tests/test_flags.cpp (+1/-1)
tests/unit-tests/test_glib_main_loop.cpp (+1/-1)
tests/unit-tests/test_gmock_fixes.cpp (+1/-1)
tests/unit-tests/test_lockable_callback.cpp (+1/-1)
tests/unit-tests/test_mir_cookie.cpp (+1/-1)
tests/unit-tests/test_module_deleter.cpp (+1/-1)
tests/unit-tests/test_observer_multiplexer.cpp (+1/-1)
tests/unit-tests/test_posix_rw_mutex.cpp (+1/-1)
tests/unit-tests/test_posix_timestamp.cpp (+1/-1)
tests/unit-tests/test_raii.cpp (+1/-1)
tests/unit-tests/test_recursive_read_write_mutex.cpp (+1/-1)
tests/unit-tests/test_shared_library_prober.cpp (+1/-1)
tests/unit-tests/test_thread_name.cpp (+1/-1)
tests/unit-tests/test_thread_safe_list.cpp (+1/-1)
tests/unit-tests/test_udev_wrapper.cpp (+1/-1)
tests/unit-tests/test_variable_length_array.cpp (+1/-1)
tests/unit-tests/thread/test_basic_thread_pool.cpp (+1/-1)
tools/update_package_abis.sh (+1/-0)
tools/valgrind_suppressions_generic (+7/-0)
Text conflict in debian/changelog
Text conflict in src/client/mir_connection.cpp
Text conflict in src/include/common/mir/protobuf/protocol_version.h
To merge this branch: bzr merge lp:~mir-team/mir/1.0
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Needs Fixing on 2017-10-08
Mir development team 2017-10-08 Pending
Review via email: mp+331992@code.launchpad.net

Commit message

Mir 1.0 release to artful

To post a comment you must log in.
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:4281
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/129/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/5102/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5340/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5327/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5327/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5327/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/5146/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/5146/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/5146/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/5146/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/5146/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/5146/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/5146/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/5146/console

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/129/rebuild

review: Needs Fixing (continuous-integration)

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.bzrignore'
2--- .bzrignore 2017-05-08 03:04:26 +0000
3+++ .bzrignore 2017-10-08 13:37:01 +0000
4@@ -2,4 +2,6 @@
5 .project
6 include/server/mir/version.h
7 include/client/mir_toolkit/version.h
8+include/miral/version.h
9 build-*
10+cmake-*
11
12=== modified file 'CMakeLists.txt'
13--- CMakeLists.txt 2017-05-25 08:58:03 +0000
14+++ CMakeLists.txt 2017-10-08 13:37:01 +0000
15@@ -1,7 +1,7 @@
16 # Copyright © 2012 Canonical Ltd.
17 #
18 # This program is free software: you can redistribute it and/or modify
19-# it under the terms of the GNU General Public License version 3 as
20+# it under the terms of the GNU General Public License version 2 or 3 as
21 # published by the Free Software Foundation.
22 #
23 # This program is distributed in the hope that it will be useful,
24@@ -27,8 +27,8 @@
25 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
26 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
27
28-set(MIR_VERSION_MAJOR 0)
29-set(MIR_VERSION_MINOR 27)
30+set(MIR_VERSION_MAJOR 1)
31+set(MIR_VERSION_MINOR 0)
32 set(MIR_VERSION_PATCH 0)
33
34 add_definitions(-DMIR_VERSION_MAJOR=${MIR_VERSION_MAJOR})
35@@ -53,6 +53,7 @@
36 include (cmake/EnableCoverageReport.cmake)
37 include (cmake/MirCommon.cmake)
38 include (GNUInstallDirs)
39+include (cmake/Doxygen.cmake)
40
41 set(build_types "None;Debug;Release;RelWithDebInfo;MinSizeRel;Coverage;AddressSanitizer;ThreadSanitizer;UBSanitizer")
42 # Change informational string for CMAKE_BUILD_TYPE
43@@ -73,6 +74,16 @@
44 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-mismatched-tags")
45 endif()
46
47+# GCC 7.1 fixed a bug in the ARM ABI, which results in some std::vector methods
48+# (among others) generating this warning.
49+#
50+# There's nothing we can do about it; everything just needs to be rebuilt with
51+# GCC 7.1.
52+check_cxx_compiler_flag(-Wpsabi HAS_W_PSABI)
53+if(HAS_W_PSABI)
54+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi")
55+endif()
56+
57 option(MIR_USE_LD_GOLD "Enables the \"gold\" linker." OFF)
58 if(MIR_USE_LD_GOLD)
59 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=gold")
60@@ -81,8 +92,6 @@
61 endif()
62
63 # Link time optimization allows leaner, cleaner libraries
64-message(STATUS "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER})
65-
66 option(MIR_LINK_TIME_OPTIMIZATION "Enables the linker to optimize binaries." OFF)
67 if(MIR_LINK_TIME_OPTIMIZATION)
68 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto -ffat-lto-objects")
69@@ -207,6 +216,8 @@
70
71 pkg_check_modules(UDEV REQUIRED libudev)
72 pkg_check_modules(GLIB REQUIRED glib-2.0)
73+pkg_check_modules(WAYLAND_SERVER REQUIRED wayland-server)
74+pkg_check_modules(WAYLAND_CLIENT REQUIRED wayland-client)
75
76 include_directories (SYSTEM ${GLESv2_INCLUDE_DIRS})
77 include_directories (SYSTEM ${EGL_INCLUDE_DIRS})
78@@ -291,7 +302,7 @@
79
80 # There's no nice way to format this. Thanks CMake.
81 mir_add_test(NAME LGPL-required
82- COMMAND /bin/sh -c "! grep -rl 'GNU General' ${PROJECT_SOURCE_DIR}/src/client ${PROJECT_SOURCE_DIR}/include/client ${PROJECT_SOURCE_DIR}/src/common ${PROJECT_SOURCE_DIR}/include/common ${PROJECT_SOURCE_DIR}/src/include/common ${PROJECT_SOURCE_DIR}/src/platform ${PROJECT_SOURCE_DIR}/include/platform ${PROJECT_SOURCE_DIR}/src/include/platform ${PROJECT_SOURCE_DIR}/src/capnproto"
83+ COMMAND /bin/sh -c "! grep -rl 'GNU General' ${PROJECT_SOURCE_DIR}/src/client ${PROJECT_SOURCE_DIR}/include/client ${PROJECT_SOURCE_DIR}/src/core ${PROJECT_SOURCE_DIR}/include/core ${PROJECT_SOURCE_DIR}/src/common ${PROJECT_SOURCE_DIR}/include/common ${PROJECT_SOURCE_DIR}/src/include/common ${PROJECT_SOURCE_DIR}/src/platform ${PROJECT_SOURCE_DIR}/include/platform ${PROJECT_SOURCE_DIR}/src/include/platform ${PROJECT_SOURCE_DIR}/src/platforms ${PROJECT_SOURCE_DIR}/include/platforms ${PROJECT_SOURCE_DIR}/src/include/platforms ${PROJECT_SOURCE_DIR}/src/renderers ${PROJECT_SOURCE_DIR}/include/renderers ${PROJECT_SOURCE_DIR}/src/include/renderers ${PROJECT_SOURCE_DIR}/src/capnproto"
84 )
85 mir_add_test(NAME GPL-required
86 COMMAND /bin/sh -c "! grep -rl 'GNU Lesser' ${PROJECT_SOURCE_DIR}/src/server ${PROJECT_SOURCE_DIR}/include/server ${PROJECT_SOURCE_DIR}/src/include/server ${PROJECT_SOURCE_DIR}/tests ${PROJECT_SOURCE_DIR}/examples"
87@@ -302,7 +313,6 @@
88 endif ()
89
90 enable_coverage_report(mirserver)
91-include (cmake/Doxygen.cmake)
92 include (cmake/ABICheck.cmake)
93
94 add_custom_target(ptest
95
96=== added file 'COPYING.GPL2'
97--- COPYING.GPL2 1970-01-01 00:00:00 +0000
98+++ COPYING.GPL2 2017-10-08 13:37:01 +0000
99@@ -0,0 +1,339 @@
100+ GNU GENERAL PUBLIC LICENSE
101+ Version 2, June 1991
102+
103+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
104+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
105+ Everyone is permitted to copy and distribute verbatim copies
106+ of this license document, but changing it is not allowed.
107+
108+ Preamble
109+
110+ The licenses for most software are designed to take away your
111+freedom to share and change it. By contrast, the GNU General Public
112+License is intended to guarantee your freedom to share and change free
113+software--to make sure the software is free for all its users. This
114+General Public License applies to most of the Free Software
115+Foundation's software and to any other program whose authors commit to
116+using it. (Some other Free Software Foundation software is covered by
117+the GNU Lesser General Public License instead.) You can apply it to
118+your programs, too.
119+
120+ When we speak of free software, we are referring to freedom, not
121+price. Our General Public Licenses are designed to make sure that you
122+have the freedom to distribute copies of free software (and charge for
123+this service if you wish), that you receive source code or can get it
124+if you want it, that you can change the software or use pieces of it
125+in new free programs; and that you know you can do these things.
126+
127+ To protect your rights, we need to make restrictions that forbid
128+anyone to deny you these rights or to ask you to surrender the rights.
129+These restrictions translate to certain responsibilities for you if you
130+distribute copies of the software, or if you modify it.
131+
132+ For example, if you distribute copies of such a program, whether
133+gratis or for a fee, you must give the recipients all the rights that
134+you have. You must make sure that they, too, receive or can get the
135+source code. And you must show them these terms so they know their
136+rights.
137+
138+ We protect your rights with two steps: (1) copyright the software, and
139+(2) offer you this license which gives you legal permission to copy,
140+distribute and/or modify the software.
141+
142+ Also, for each author's protection and ours, we want to make certain
143+that everyone understands that there is no warranty for this free
144+software. If the software is modified by someone else and passed on, we
145+want its recipients to know that what they have is not the original, so
146+that any problems introduced by others will not reflect on the original
147+authors' reputations.
148+
149+ Finally, any free program is threatened constantly by software
150+patents. We wish to avoid the danger that redistributors of a free
151+program will individually obtain patent licenses, in effect making the
152+program proprietary. To prevent this, we have made it clear that any
153+patent must be licensed for everyone's free use or not licensed at all.
154+
155+ The precise terms and conditions for copying, distribution and
156+modification follow.
157+
158+ GNU GENERAL PUBLIC LICENSE
159+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
160+
161+ 0. This License applies to any program or other work which contains
162+a notice placed by the copyright holder saying it may be distributed
163+under the terms of this General Public License. The "Program", below,
164+refers to any such program or work, and a "work based on the Program"
165+means either the Program or any derivative work under copyright law:
166+that is to say, a work containing the Program or a portion of it,
167+either verbatim or with modifications and/or translated into another
168+language. (Hereinafter, translation is included without limitation in
169+the term "modification".) Each licensee is addressed as "you".
170+
171+Activities other than copying, distribution and modification are not
172+covered by this License; they are outside its scope. The act of
173+running the Program is not restricted, and the output from the Program
174+is covered only if its contents constitute a work based on the
175+Program (independent of having been made by running the Program).
176+Whether that is true depends on what the Program does.
177+
178+ 1. You may copy and distribute verbatim copies of the Program's
179+source code as you receive it, in any medium, provided that you
180+conspicuously and appropriately publish on each copy an appropriate
181+copyright notice and disclaimer of warranty; keep intact all the
182+notices that refer to this License and to the absence of any warranty;
183+and give any other recipients of the Program a copy of this License
184+along with the Program.
185+
186+You may charge a fee for the physical act of transferring a copy, and
187+you may at your option offer warranty protection in exchange for a fee.
188+
189+ 2. You may modify your copy or copies of the Program or any portion
190+of it, thus forming a work based on the Program, and copy and
191+distribute such modifications or work under the terms of Section 1
192+above, provided that you also meet all of these conditions:
193+
194+ a) You must cause the modified files to carry prominent notices
195+ stating that you changed the files and the date of any change.
196+
197+ b) You must cause any work that you distribute or publish, that in
198+ whole or in part contains or is derived from the Program or any
199+ part thereof, to be licensed as a whole at no charge to all third
200+ parties under the terms of this License.
201+
202+ c) If the modified program normally reads commands interactively
203+ when run, you must cause it, when started running for such
204+ interactive use in the most ordinary way, to print or display an
205+ announcement including an appropriate copyright notice and a
206+ notice that there is no warranty (or else, saying that you provide
207+ a warranty) and that users may redistribute the program under
208+ these conditions, and telling the user how to view a copy of this
209+ License. (Exception: if the Program itself is interactive but
210+ does not normally print such an announcement, your work based on
211+ the Program is not required to print an announcement.)
212+
213+These requirements apply to the modified work as a whole. If
214+identifiable sections of that work are not derived from the Program,
215+and can be reasonably considered independent and separate works in
216+themselves, then this License, and its terms, do not apply to those
217+sections when you distribute them as separate works. But when you
218+distribute the same sections as part of a whole which is a work based
219+on the Program, the distribution of the whole must be on the terms of
220+this License, whose permissions for other licensees extend to the
221+entire whole, and thus to each and every part regardless of who wrote it.
222+
223+Thus, it is not the intent of this section to claim rights or contest
224+your rights to work written entirely by you; rather, the intent is to
225+exercise the right to control the distribution of derivative or
226+collective works based on the Program.
227+
228+In addition, mere aggregation of another work not based on the Program
229+with the Program (or with a work based on the Program) on a volume of
230+a storage or distribution medium does not bring the other work under
231+the scope of this License.
232+
233+ 3. You may copy and distribute the Program (or a work based on it,
234+under Section 2) in object code or executable form under the terms of
235+Sections 1 and 2 above provided that you also do one of the following:
236+
237+ a) Accompany it with the complete corresponding machine-readable
238+ source code, which must be distributed under the terms of Sections
239+ 1 and 2 above on a medium customarily used for software interchange; or,
240+
241+ b) Accompany it with a written offer, valid for at least three
242+ years, to give any third party, for a charge no more than your
243+ cost of physically performing source distribution, a complete
244+ machine-readable copy of the corresponding source code, to be
245+ distributed under the terms of Sections 1 and 2 above on a medium
246+ customarily used for software interchange; or,
247+
248+ c) Accompany it with the information you received as to the offer
249+ to distribute corresponding source code. (This alternative is
250+ allowed only for noncommercial distribution and only if you
251+ received the program in object code or executable form with such
252+ an offer, in accord with Subsection b above.)
253+
254+The source code for a work means the preferred form of the work for
255+making modifications to it. For an executable work, complete source
256+code means all the source code for all modules it contains, plus any
257+associated interface definition files, plus the scripts used to
258+control compilation and installation of the executable. However, as a
259+special exception, the source code distributed need not include
260+anything that is normally distributed (in either source or binary
261+form) with the major components (compiler, kernel, and so on) of the
262+operating system on which the executable runs, unless that component
263+itself accompanies the executable.
264+
265+If distribution of executable or object code is made by offering
266+access to copy from a designated place, then offering equivalent
267+access to copy the source code from the same place counts as
268+distribution of the source code, even though third parties are not
269+compelled to copy the source along with the object code.
270+
271+ 4. You may not copy, modify, sublicense, or distribute the Program
272+except as expressly provided under this License. Any attempt
273+otherwise to copy, modify, sublicense or distribute the Program is
274+void, and will automatically terminate your rights under this License.
275+However, parties who have received copies, or rights, from you under
276+this License will not have their licenses terminated so long as such
277+parties remain in full compliance.
278+
279+ 5. You are not required to accept this License, since you have not
280+signed it. However, nothing else grants you permission to modify or
281+distribute the Program or its derivative works. These actions are
282+prohibited by law if you do not accept this License. Therefore, by
283+modifying or distributing the Program (or any work based on the
284+Program), you indicate your acceptance of this License to do so, and
285+all its terms and conditions for copying, distributing or modifying
286+the Program or works based on it.
287+
288+ 6. Each time you redistribute the Program (or any work based on the
289+Program), the recipient automatically receives a license from the
290+original licensor to copy, distribute or modify the Program subject to
291+these terms and conditions. You may not impose any further
292+restrictions on the recipients' exercise of the rights granted herein.
293+You are not responsible for enforcing compliance by third parties to
294+this License.
295+
296+ 7. If, as a consequence of a court judgment or allegation of patent
297+infringement or for any other reason (not limited to patent issues),
298+conditions are imposed on you (whether by court order, agreement or
299+otherwise) that contradict the conditions of this License, they do not
300+excuse you from the conditions of this License. If you cannot
301+distribute so as to satisfy simultaneously your obligations under this
302+License and any other pertinent obligations, then as a consequence you
303+may not distribute the Program at all. For example, if a patent
304+license would not permit royalty-free redistribution of the Program by
305+all those who receive copies directly or indirectly through you, then
306+the only way you could satisfy both it and this License would be to
307+refrain entirely from distribution of the Program.
308+
309+If any portion of this section is held invalid or unenforceable under
310+any particular circumstance, the balance of the section is intended to
311+apply and the section as a whole is intended to apply in other
312+circumstances.
313+
314+It is not the purpose of this section to induce you to infringe any
315+patents or other property right claims or to contest validity of any
316+such claims; this section has the sole purpose of protecting the
317+integrity of the free software distribution system, which is
318+implemented by public license practices. Many people have made
319+generous contributions to the wide range of software distributed
320+through that system in reliance on consistent application of that
321+system; it is up to the author/donor to decide if he or she is willing
322+to distribute software through any other system and a licensee cannot
323+impose that choice.
324+
325+This section is intended to make thoroughly clear what is believed to
326+be a consequence of the rest of this License.
327+
328+ 8. If the distribution and/or use of the Program is restricted in
329+certain countries either by patents or by copyrighted interfaces, the
330+original copyright holder who places the Program under this License
331+may add an explicit geographical distribution limitation excluding
332+those countries, so that distribution is permitted only in or among
333+countries not thus excluded. In such case, this License incorporates
334+the limitation as if written in the body of this License.
335+
336+ 9. The Free Software Foundation may publish revised and/or new versions
337+of the General Public License from time to time. Such new versions will
338+be similar in spirit to the present version, but may differ in detail to
339+address new problems or concerns.
340+
341+Each version is given a distinguishing version number. If the Program
342+specifies a version number of this License which applies to it and "any
343+later version", you have the option of following the terms and conditions
344+either of that version or of any later version published by the Free
345+Software Foundation. If the Program does not specify a version number of
346+this License, you may choose any version ever published by the Free Software
347+Foundation.
348+
349+ 10. If you wish to incorporate parts of the Program into other free
350+programs whose distribution conditions are different, write to the author
351+to ask for permission. For software which is copyrighted by the Free
352+Software Foundation, write to the Free Software Foundation; we sometimes
353+make exceptions for this. Our decision will be guided by the two goals
354+of preserving the free status of all derivatives of our free software and
355+of promoting the sharing and reuse of software generally.
356+
357+ NO WARRANTY
358+
359+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
360+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
361+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
362+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
363+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
364+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
365+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
366+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
367+REPAIR OR CORRECTION.
368+
369+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
370+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
371+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
372+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
373+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
374+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
375+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
376+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
377+POSSIBILITY OF SUCH DAMAGES.
378+
379+ END OF TERMS AND CONDITIONS
380+
381+ How to Apply These Terms to Your New Programs
382+
383+ If you develop a new program, and you want it to be of the greatest
384+possible use to the public, the best way to achieve this is to make it
385+free software which everyone can redistribute and change under these terms.
386+
387+ To do so, attach the following notices to the program. It is safest
388+to attach them to the start of each source file to most effectively
389+convey the exclusion of warranty; and each file should have at least
390+the "copyright" line and a pointer to where the full notice is found.
391+
392+ <one line to give the program's name and a brief idea of what it does.>
393+ Copyright (C) <year> <name of author>
394+
395+ This program is free software; you can redistribute it and/or modify
396+ it under the terms of the GNU General Public License as published by
397+ the Free Software Foundation; either version 2 of the License, or
398+ (at your option) any later version.
399+
400+ This program is distributed in the hope that it will be useful,
401+ but WITHOUT ANY WARRANTY; without even the implied warranty of
402+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
403+ GNU General Public License for more details.
404+
405+ You should have received a copy of the GNU General Public License along
406+ with this program; if not, write to the Free Software Foundation, Inc.,
407+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
408+
409+Also add information on how to contact you by electronic and paper mail.
410+
411+If the program is interactive, make it output a short notice like this
412+when it starts in an interactive mode:
413+
414+ Gnomovision version 69, Copyright (C) year name of author
415+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
416+ This is free software, and you are welcome to redistribute it
417+ under certain conditions; type `show c' for details.
418+
419+The hypothetical commands `show w' and `show c' should show the appropriate
420+parts of the General Public License. Of course, the commands you use may
421+be called something other than `show w' and `show c'; they could even be
422+mouse-clicks or menu items--whatever suits your program.
423+
424+You should also get your employer (if you work as a programmer) or your
425+school, if any, to sign a "copyright disclaimer" for the program, if
426+necessary. Here is a sample; alter the names:
427+
428+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
429+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
430+
431+ <signature of Ty Coon>, 1 April 1989
432+ Ty Coon, President of Vice
433+
434+This General Public License does not permit incorporating your program into
435+proprietary programs. If your program is a subroutine library, you may
436+consider it more useful to permit linking proprietary applications with the
437+library. If this is what you want to do, use the GNU Lesser General
438+Public License instead of this License.
439
440=== renamed file 'COPYING.GPL' => 'COPYING.GPL3'
441=== added file 'COPYING.LGPL2'
442--- COPYING.LGPL2 1970-01-01 00:00:00 +0000
443+++ COPYING.LGPL2 2017-10-08 13:37:01 +0000
444@@ -0,0 +1,481 @@
445+ GNU LIBRARY GENERAL PUBLIC LICENSE
446+ Version 2, June 1991
447+
448+ Copyright (C) 1991 Free Software Foundation, Inc.
449+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
450+ Everyone is permitted to copy and distribute verbatim copies
451+ of this license document, but changing it is not allowed.
452+
453+[This is the first released version of the library GPL. It is
454+ numbered 2 because it goes with version 2 of the ordinary GPL.]
455+
456+ Preamble
457+
458+ The licenses for most software are designed to take away your
459+freedom to share and change it. By contrast, the GNU General Public
460+Licenses are intended to guarantee your freedom to share and change
461+free software--to make sure the software is free for all its users.
462+
463+ This license, the Library General Public License, applies to some
464+specially designated Free Software Foundation software, and to any
465+other libraries whose authors decide to use it. You can use it for
466+your libraries, too.
467+
468+ When we speak of free software, we are referring to freedom, not
469+price. Our General Public Licenses are designed to make sure that you
470+have the freedom to distribute copies of free software (and charge for
471+this service if you wish), that you receive source code or can get it
472+if you want it, that you can change the software or use pieces of it
473+in new free programs; and that you know you can do these things.
474+
475+ To protect your rights, we need to make restrictions that forbid
476+anyone to deny you these rights or to ask you to surrender the rights.
477+These restrictions translate to certain responsibilities for you if
478+you distribute copies of the library, or if you modify it.
479+
480+ For example, if you distribute copies of the library, whether gratis
481+or for a fee, you must give the recipients all the rights that we gave
482+you. You must make sure that they, too, receive or can get the source
483+code. If you link a program with the library, you must provide
484+complete object files to the recipients so that they can relink them
485+with the library, after making changes to the library and recompiling
486+it. And you must show them these terms so they know their rights.
487+
488+ Our method of protecting your rights has two steps: (1) copyright
489+the library, and (2) offer you this license which gives you legal
490+permission to copy, distribute and/or modify the library.
491+
492+ Also, for each distributor's protection, we want to make certain
493+that everyone understands that there is no warranty for this free
494+library. If the library is modified by someone else and passed on, we
495+want its recipients to know that what they have is not the original
496+version, so that any problems introduced by others will not reflect on
497+the original authors' reputations.
498+
499
500+ Finally, any free program is threatened constantly by software
501+patents. We wish to avoid the danger that companies distributing free
502+software will individually obtain patent licenses, thus in effect
503+transforming the program into proprietary software. To prevent this,
504+we have made it clear that any patent must be licensed for everyone's
505+free use or not licensed at all.
506+
507+ Most GNU software, including some libraries, is covered by the ordinary
508+GNU General Public License, which was designed for utility programs. This
509+license, the GNU Library General Public License, applies to certain
510+designated libraries. This license is quite different from the ordinary
511+one; be sure to read it in full, and don't assume that anything in it is
512+the same as in the ordinary license.
513+
514+ The reason we have a separate public license for some libraries is that
515+they blur the distinction we usually make between modifying or adding to a
516+program and simply using it. Linking a program with a library, without
517+changing the library, is in some sense simply using the library, and is
518+analogous to running a utility program or application program. However, in
519+a textual and legal sense, the linked executable is a combined work, a
520+derivative of the original library, and the ordinary General Public License
521+treats it as such.
522+
523+ Because of this blurred distinction, using the ordinary General
524+Public License for libraries did not effectively promote software
525+sharing, because most developers did not use the libraries. We
526+concluded that weaker conditions might promote sharing better.
527+
528+ However, unrestricted linking of non-free programs would deprive the
529+users of those programs of all benefit from the free status of the
530+libraries themselves. This Library General Public License is intended to
531+permit developers of non-free programs to use free libraries, while
532+preserving your freedom as a user of such programs to change the free
533+libraries that are incorporated in them. (We have not seen how to achieve
534+this as regards changes in header files, but we have achieved it as regards
535+changes in the actual functions of the Library.) The hope is that this
536+will lead to faster development of free libraries.
537+
538+ The precise terms and conditions for copying, distribution and
539+modification follow. Pay close attention to the difference between a
540+"work based on the library" and a "work that uses the library". The
541+former contains code derived from the library, while the latter only
542+works together with the library.
543+
544+ Note that it is possible for a library to be covered by the ordinary
545+General Public License rather than by this special one.
546+
547
548+ GNU LIBRARY GENERAL PUBLIC LICENSE
549+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
550+
551+ 0. This License Agreement applies to any software library which
552+contains a notice placed by the copyright holder or other authorized
553+party saying it may be distributed under the terms of this Library
554+General Public License (also called "this License"). Each licensee is
555+addressed as "you".
556+
557+ A "library" means a collection of software functions and/or data
558+prepared so as to be conveniently linked with application programs
559+(which use some of those functions and data) to form executables.
560+
561+ The "Library", below, refers to any such software library or work
562+which has been distributed under these terms. A "work based on the
563+Library" means either the Library or any derivative work under
564+copyright law: that is to say, a work containing the Library or a
565+portion of it, either verbatim or with modifications and/or translated
566+straightforwardly into another language. (Hereinafter, translation is
567+included without limitation in the term "modification".)
568+
569+ "Source code" for a work means the preferred form of the work for
570+making modifications to it. For a library, complete source code means
571+all the source code for all modules it contains, plus any associated
572+interface definition files, plus the scripts used to control compilation
573+and installation of the library.
574+
575+ Activities other than copying, distribution and modification are not
576+covered by this License; they are outside its scope. The act of
577+running a program using the Library is not restricted, and output from
578+such a program is covered only if its contents constitute a work based
579+on the Library (independent of the use of the Library in a tool for
580+writing it). Whether that is true depends on what the Library does
581+and what the program that uses the Library does.
582+
583+ 1. You may copy and distribute verbatim copies of the Library's
584+complete source code as you receive it, in any medium, provided that
585+you conspicuously and appropriately publish on each copy an
586+appropriate copyright notice and disclaimer of warranty; keep intact
587+all the notices that refer to this License and to the absence of any
588+warranty; and distribute a copy of this License along with the
589+Library.
590+
591+ You may charge a fee for the physical act of transferring a copy,
592+and you may at your option offer warranty protection in exchange for a
593+fee.
594+
595
596+ 2. You may modify your copy or copies of the Library or any portion
597+of it, thus forming a work based on the Library, and copy and
598+distribute such modifications or work under the terms of Section 1
599+above, provided that you also meet all of these conditions:
600+
601+ a) The modified work must itself be a software library.
602+
603+ b) You must cause the files modified to carry prominent notices
604+ stating that you changed the files and the date of any change.
605+
606+ c) You must cause the whole of the work to be licensed at no
607+ charge to all third parties under the terms of this License.
608+
609+ d) If a facility in the modified Library refers to a function or a
610+ table of data to be supplied by an application program that uses
611+ the facility, other than as an argument passed when the facility
612+ is invoked, then you must make a good faith effort to ensure that,
613+ in the event an application does not supply such function or
614+ table, the facility still operates, and performs whatever part of
615+ its purpose remains meaningful.
616+
617+ (For example, a function in a library to compute square roots has
618+ a purpose that is entirely well-defined independent of the
619+ application. Therefore, Subsection 2d requires that any
620+ application-supplied function or table used by this function must
621+ be optional: if the application does not supply it, the square
622+ root function must still compute square roots.)
623+
624+These requirements apply to the modified work as a whole. If
625+identifiable sections of that work are not derived from the Library,
626+and can be reasonably considered independent and separate works in
627+themselves, then this License, and its terms, do not apply to those
628+sections when you distribute them as separate works. But when you
629+distribute the same sections as part of a whole which is a work based
630+on the Library, the distribution of the whole must be on the terms of
631+this License, whose permissions for other licensees extend to the
632+entire whole, and thus to each and every part regardless of who wrote
633+it.
634+
635+Thus, it is not the intent of this section to claim rights or contest
636+your rights to work written entirely by you; rather, the intent is to
637+exercise the right to control the distribution of derivative or
638+collective works based on the Library.
639+
640+In addition, mere aggregation of another work not based on the Library
641+with the Library (or with a work based on the Library) on a volume of
642+a storage or distribution medium does not bring the other work under
643+the scope of this License.
644+
645+ 3. You may opt to apply the terms of the ordinary GNU General Public
646+License instead of this License to a given copy of the Library. To do
647+this, you must alter all the notices that refer to this License, so
648+that they refer to the ordinary GNU General Public License, version 2,
649+instead of to this License. (If a newer version than version 2 of the
650+ordinary GNU General Public License has appeared, then you can specify
651+that version instead if you wish.) Do not make any other change in
652+these notices.
653+
654
655+ Once this change is made in a given copy, it is irreversible for
656+that copy, so the ordinary GNU General Public License applies to all
657+subsequent copies and derivative works made from that copy.
658+
659+ This option is useful when you wish to copy part of the code of
660+the Library into a program that is not a library.
661+
662+ 4. You may copy and distribute the Library (or a portion or
663+derivative of it, under Section 2) in object code or executable form
664+under the terms of Sections 1 and 2 above provided that you accompany
665+it with the complete corresponding machine-readable source code, which
666+must be distributed under the terms of Sections 1 and 2 above on a
667+medium customarily used for software interchange.
668+
669+ If distribution of object code is made by offering access to copy
670+from a designated place, then offering equivalent access to copy the
671+source code from the same place satisfies the requirement to
672+distribute the source code, even though third parties are not
673+compelled to copy the source along with the object code.
674+
675+ 5. A program that contains no derivative of any portion of the
676+Library, but is designed to work with the Library by being compiled or
677+linked with it, is called a "work that uses the Library". Such a
678+work, in isolation, is not a derivative work of the Library, and
679+therefore falls outside the scope of this License.
680+
681+ However, linking a "work that uses the Library" with the Library
682+creates an executable that is a derivative of the Library (because it
683+contains portions of the Library), rather than a "work that uses the
684+library". The executable is therefore covered by this License.
685+Section 6 states terms for distribution of such executables.
686+
687+ When a "work that uses the Library" uses material from a header file
688+that is part of the Library, the object code for the work may be a
689+derivative work of the Library even though the source code is not.
690+Whether this is true is especially significant if the work can be
691+linked without the Library, or if the work is itself a library. The
692+threshold for this to be true is not precisely defined by law.
693+
694+ If such an object file uses only numerical parameters, data
695+structure layouts and accessors, and small macros and small inline
696+functions (ten lines or less in length), then the use of the object
697+file is unrestricted, regardless of whether it is legally a derivative
698+work. (Executables containing this object code plus portions of the
699+Library will still fall under Section 6.)
700+
701+ Otherwise, if the work is a derivative of the Library, you may
702+distribute the object code for the work under the terms of Section 6.
703+Any executables containing that work also fall under Section 6,
704+whether or not they are linked directly with the Library itself.
705+
706
707+ 6. As an exception to the Sections above, you may also compile or
708+link a "work that uses the Library" with the Library to produce a
709+work containing portions of the Library, and distribute that work
710+under terms of your choice, provided that the terms permit
711+modification of the work for the customer's own use and reverse
712+engineering for debugging such modifications.
713+
714+ You must give prominent notice with each copy of the work that the
715+Library is used in it and that the Library and its use are covered by
716+this License. You must supply a copy of this License. If the work
717+during execution displays copyright notices, you must include the
718+copyright notice for the Library among them, as well as a reference
719+directing the user to the copy of this License. Also, you must do one
720+of these things:
721+
722+ a) Accompany the work with the complete corresponding
723+ machine-readable source code for the Library including whatever
724+ changes were used in the work (which must be distributed under
725+ Sections 1 and 2 above); and, if the work is an executable linked
726+ with the Library, with the complete machine-readable "work that
727+ uses the Library", as object code and/or source code, so that the
728+ user can modify the Library and then relink to produce a modified
729+ executable containing the modified Library. (It is understood
730+ that the user who changes the contents of definitions files in the
731+ Library will not necessarily be able to recompile the application
732+ to use the modified definitions.)
733+
734+ b) Accompany the work with a written offer, valid for at
735+ least three years, to give the same user the materials
736+ specified in Subsection 6a, above, for a charge no more
737+ than the cost of performing this distribution.
738+
739+ c) If distribution of the work is made by offering access to copy
740+ from a designated place, offer equivalent access to copy the above
741+ specified materials from the same place.
742+
743+ d) Verify that the user has already received a copy of these
744+ materials or that you have already sent this user a copy.
745+
746+ For an executable, the required form of the "work that uses the
747+Library" must include any data and utility programs needed for
748+reproducing the executable from it. However, as a special exception,
749+the source code distributed need not include anything that is normally
750+distributed (in either source or binary form) with the major
751+components (compiler, kernel, and so on) of the operating system on
752+which the executable runs, unless that component itself accompanies
753+the executable.
754+
755+ It may happen that this requirement contradicts the license
756+restrictions of other proprietary libraries that do not normally
757+accompany the operating system. Such a contradiction means you cannot
758+use both them and the Library together in an executable that you
759+distribute.
760+
761
762+ 7. You may place library facilities that are a work based on the
763+Library side-by-side in a single library together with other library
764+facilities not covered by this License, and distribute such a combined
765+library, provided that the separate distribution of the work based on
766+the Library and of the other library facilities is otherwise
767+permitted, and provided that you do these two things:
768+
769+ a) Accompany the combined library with a copy of the same work
770+ based on the Library, uncombined with any other library
771+ facilities. This must be distributed under the terms of the
772+ Sections above.
773+
774+ b) Give prominent notice with the combined library of the fact
775+ that part of it is a work based on the Library, and explaining
776+ where to find the accompanying uncombined form of the same work.
777+
778+ 8. You may not copy, modify, sublicense, link with, or distribute
779+the Library except as expressly provided under this License. Any
780+attempt otherwise to copy, modify, sublicense, link with, or
781+distribute the Library is void, and will automatically terminate your
782+rights under this License. However, parties who have received copies,
783+or rights, from you under this License will not have their licenses
784+terminated so long as such parties remain in full compliance.
785+
786+ 9. You are not required to accept this License, since you have not
787+signed it. However, nothing else grants you permission to modify or
788+distribute the Library or its derivative works. These actions are
789+prohibited by law if you do not accept this License. Therefore, by
790+modifying or distributing the Library (or any work based on the
791+Library), you indicate your acceptance of this License to do so, and
792+all its terms and conditions for copying, distributing or modifying
793+the Library or works based on it.
794+
795+ 10. Each time you redistribute the Library (or any work based on the
796+Library), the recipient automatically receives a license from the
797+original licensor to copy, distribute, link with or modify the Library
798+subject to these terms and conditions. You may not impose any further
799+restrictions on the recipients' exercise of the rights granted herein.
800+You are not responsible for enforcing compliance by third parties to
801+this License.
802+
803
804+ 11. If, as a consequence of a court judgment or allegation of patent
805+infringement or for any other reason (not limited to patent issues),
806+conditions are imposed on you (whether by court order, agreement or
807+otherwise) that contradict the conditions of this License, they do not
808+excuse you from the conditions of this License. If you cannot
809+distribute so as to satisfy simultaneously your obligations under this
810+License and any other pertinent obligations, then as a consequence you
811+may not distribute the Library at all. For example, if a patent
812+license would not permit royalty-free redistribution of the Library by
813+all those who receive copies directly or indirectly through you, then
814+the only way you could satisfy both it and this License would be to
815+refrain entirely from distribution of the Library.
816+
817+If any portion of this section is held invalid or unenforceable under any
818+particular circumstance, the balance of the section is intended to apply,
819+and the section as a whole is intended to apply in other circumstances.
820+
821+It is not the purpose of this section to induce you to infringe any
822+patents or other property right claims or to contest validity of any
823+such claims; this section has the sole purpose of protecting the
824+integrity of the free software distribution system which is
825+implemented by public license practices. Many people have made
826+generous contributions to the wide range of software distributed
827+through that system in reliance on consistent application of that
828+system; it is up to the author/donor to decide if he or she is willing
829+to distribute software through any other system and a licensee cannot
830+impose that choice.
831+
832+This section is intended to make thoroughly clear what is believed to
833+be a consequence of the rest of this License.
834+
835+ 12. If the distribution and/or use of the Library is restricted in
836+certain countries either by patents or by copyrighted interfaces, the
837+original copyright holder who places the Library under this License may add
838+an explicit geographical distribution limitation excluding those countries,
839+so that distribution is permitted only in or among countries not thus
840+excluded. In such case, this License incorporates the limitation as if
841+written in the body of this License.
842+
843+ 13. The Free Software Foundation may publish revised and/or new
844+versions of the Library General Public License from time to time.
845+Such new versions will be similar in spirit to the present version,
846+but may differ in detail to address new problems or concerns.
847+
848+Each version is given a distinguishing version number. If the Library
849+specifies a version number of this License which applies to it and
850+"any later version", you have the option of following the terms and
851+conditions either of that version or of any later version published by
852+the Free Software Foundation. If the Library does not specify a
853+license version number, you may choose any version ever published by
854+the Free Software Foundation.
855+
856
857+ 14. If you wish to incorporate parts of the Library into other free
858+programs whose distribution conditions are incompatible with these,
859+write to the author to ask for permission. For software which is
860+copyrighted by the Free Software Foundation, write to the Free
861+Software Foundation; we sometimes make exceptions for this. Our
862+decision will be guided by the two goals of preserving the free status
863+of all derivatives of our free software and of promoting the sharing
864+and reuse of software generally.
865+
866+ NO WARRANTY
867+
868+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
869+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
870+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
871+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
872+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
873+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
874+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
875+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
876+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
877+
878+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
879+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
880+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
881+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
882+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
883+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
884+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
885+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
886+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
887+DAMAGES.
888+
889+ END OF TERMS AND CONDITIONS
890+
891
892+ How to Apply These Terms to Your New Libraries
893+
894+ If you develop a new library, and you want it to be of the greatest
895+possible use to the public, we recommend making it free software that
896+everyone can redistribute and change. You can do so by permitting
897+redistribution under these terms (or, alternatively, under the terms of the
898+ordinary General Public License).
899+
900+ To apply these terms, attach the following notices to the library. It is
901+safest to attach them to the start of each source file to most effectively
902+convey the exclusion of warranty; and each file should have at least the
903+"copyright" line and a pointer to where the full notice is found.
904+
905+ <one line to give the library's name and a brief idea of what it does.>
906+ Copyright (C) <year> <name of author>
907+
908+ This library is free software; you can redistribute it and/or
909+ modify it under the terms of the GNU Library General Public
910+ License as published by the Free Software Foundation; either
911+ version 2 of the License, or (at your option) any later version.
912+
913+ This library is distributed in the hope that it will be useful,
914+ but WITHOUT ANY WARRANTY; without even the implied warranty of
915+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
916+ Library General Public License for more details.
917+
918+ You should have received a copy of the GNU Library General Public
919+ License along with this library; if not, write to the Free Software
920+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
921+
922+Also add information on how to contact you by electronic and paper mail.
923+
924+You should also get your employer (if you work as a programmer) or your
925+school, if any, to sign a "copyright disclaimer" for the library, if
926+necessary. Here is a sample; alter the names:
927+
928+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
929+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
930+
931+ <signature of Ty Coon>, 1 April 1990
932+ Ty Coon, President of Vice
933+
934+That's all there is to it!
935
936=== renamed file 'COPYING.LGPL' => 'COPYING.LGPL3'
937=== modified file 'HACKING.md'
938--- HACKING.md 2017-05-08 03:04:26 +0000
939+++ HACKING.md 2017-10-08 13:37:01 +0000
940@@ -1,38 +1,6 @@
941 Mir hacking guide
942 =================
943
944-Getting Mir
945------------
946-
947-If you're reading this file then you've probably solved this one. ;)
948-
949-However, for completeness Mir is a project on LaunchPad (https://launchpad.net/mir)
950-to grab a copy use the command:
951-
952- $ bzr branch lp:mir
953-
954-
955-Getting dependencies
956---------------------
957-To succesfully build Mir there are a few packages required:
958-
959- $ apt-get install devscripts equivs cmake
960- $ mk-build-deps --install --tool "apt-get -y" --build-dep debian/control
961-
962-
963-Building Mir
964------------
965-
966-Mir is built using cmake. There are other options, but here's one way to
967-build the system:
968-
969- $ mkdir build
970- $ cd build
971- $ cmake ..
972- $ make -j 8
973- $ ctest
974-
975-
976 Coding Mir
977 ----------
978
979@@ -109,7 +77,7 @@
980 you need to know to get it working, and also to prevent your existing X server
981 from dying at the same time.
982
983- - \ref using_mir_on_pc
984+ - \ref getting_and_using_mir
985
986 You can configure Mir to provide runtime information helpful for debugging
987 by enabling component reports:
988
989=== modified file 'README.md'
990--- README.md 2013-04-24 05:22:20 +0000
991+++ README.md 2017-10-08 13:37:01 +0000
992@@ -9,7 +9,7 @@
993 License (server)
994 -------
995 This program is free software: you can redistribute it and/or modify
996-it under the terms of the GNU General Public License version 3 as
997+it under the terms of the GNU General Public License version 2 or 3 as
998 published by the Free Software Foundation.
999
1000 This program is distributed in the hope that it will be useful,
1001@@ -23,7 +23,7 @@
1002 License (client)
1003 -------
1004 This program is free software: you can redistribute it and/or modify
1005-it under the terms of the GNU Lesser General Public License version 3 as
1006+it under the terms of the GNU Lesser General Public License version 2 or 3 as
1007 published by the Free Software Foundation.
1008
1009 This program is distributed in the hope that it will be useful,
1010
1011=== modified file 'benchmarks/benchmark_multiplexing_dispatchable.cpp'
1012--- benchmarks/benchmark_multiplexing_dispatchable.cpp 2015-06-17 05:20:42 +0000
1013+++ benchmarks/benchmark_multiplexing_dispatchable.cpp 2017-10-08 13:37:01 +0000
1014@@ -2,7 +2,7 @@
1015 * Copyright © 2015 Canonical Ltd.
1016 *
1017 * This program is free software: you can redistribute it and/or modify
1018- * it under the terms of the GNU General Public License version 3 as
1019+ * it under the terms of the GNU General Public License version 2 or 3 as
1020 * published by the Free Software Foundation.
1021 *
1022 * This program is distributed in the hope that it will be useful,
1023
1024=== modified file 'benchmarks/frame-uniformity/frame_uniformity_test.cpp'
1025--- benchmarks/frame-uniformity/frame_uniformity_test.cpp 2014-10-22 19:27:20 +0000
1026+++ benchmarks/frame-uniformity/frame_uniformity_test.cpp 2017-10-08 13:37:01 +0000
1027@@ -2,7 +2,7 @@
1028 * Copyright © 2014 Canonical Ltd.
1029 *
1030 * This program is free software: you can redistribute it and/or modify
1031- * it under the terms of the GNU General Public License version 3 as
1032+ * it under the terms of the GNU General Public License version 2 or 3 as
1033 * published by the Free Software Foundation.
1034 *
1035 * This program is distributed in the hope that it will be useful,
1036
1037=== modified file 'benchmarks/frame-uniformity/frame_uniformity_test.h'
1038--- benchmarks/frame-uniformity/frame_uniformity_test.h 2015-06-25 03:00:08 +0000
1039+++ benchmarks/frame-uniformity/frame_uniformity_test.h 2017-10-08 13:37:01 +0000
1040@@ -2,7 +2,7 @@
1041 * Copyright © 2014 Canonical Ltd.
1042 *
1043 * This program is free software: you can redistribute it and/or modify
1044- * it under the terms of the GNU General Public License version 3 as
1045+ * it under the terms of the GNU General Public License version 2 or 3 as
1046 * published by the Free Software Foundation.
1047 *
1048 * This program is distributed in the hope that it will be useful,
1049
1050=== modified file 'benchmarks/frame-uniformity/main.cpp'
1051--- benchmarks/frame-uniformity/main.cpp 2015-04-28 07:54:10 +0000
1052+++ benchmarks/frame-uniformity/main.cpp 2017-10-08 13:37:01 +0000
1053@@ -2,7 +2,7 @@
1054 * Copyright © 2014 Canonical Ltd.
1055 *
1056 * This program is free software: you can redistribute it and/or modify
1057- * it under the terms of the GNU General Public License version 3 as
1058+ * it under the terms of the GNU General Public License version 2 or 3 as
1059 * published by the Free Software Foundation.
1060 *
1061 * This program is distributed in the hope that it will be useful,
1062
1063=== modified file 'benchmarks/frame-uniformity/touch_measuring_client.cpp'
1064--- benchmarks/frame-uniformity/touch_measuring_client.cpp 2017-05-08 03:04:26 +0000
1065+++ benchmarks/frame-uniformity/touch_measuring_client.cpp 2017-10-08 13:37:01 +0000
1066@@ -2,7 +2,7 @@
1067 * Copyright © 2014 Canonical Ltd.
1068 *
1069 * This program is free software: you can redistribute it and/or modify
1070- * it under the terms of the GNU General Public License version 3 as
1071+ * it under the terms of the GNU General Public License version 2 or 3 as
1072 * published by the Free Software Foundation.
1073 *
1074 * This program is distributed in the hope that it will be useful,
1075
1076=== modified file 'benchmarks/frame-uniformity/touch_measuring_client.h'
1077--- benchmarks/frame-uniformity/touch_measuring_client.h 2015-06-25 03:00:08 +0000
1078+++ benchmarks/frame-uniformity/touch_measuring_client.h 2017-10-08 13:37:01 +0000
1079@@ -2,7 +2,7 @@
1080 * Copyright © 2014 Canonical Ltd.
1081 *
1082 * This program is free software: you can redistribute it and/or modify
1083- * it under the terms of the GNU General Public License version 3 as
1084+ * it under the terms of the GNU General Public License version 2 or 3 as
1085 * published by the Free Software Foundation.
1086 *
1087 * This program is distributed in the hope that it will be useful,
1088
1089=== modified file 'benchmarks/frame-uniformity/touch_producing_server.cpp'
1090--- benchmarks/frame-uniformity/touch_producing_server.cpp 2016-01-29 08:18:22 +0000
1091+++ benchmarks/frame-uniformity/touch_producing_server.cpp 2017-10-08 13:37:01 +0000
1092@@ -2,7 +2,7 @@
1093 * Copyright © 2014 Canonical Ltd.
1094 *
1095 * This program is free software: you can redistribute it and/or modify
1096- * it under the terms of the GNU General Public License version 3 as
1097+ * it under the terms of the GNU General Public License version 2 or 3 as
1098 * published by the Free Software Foundation.
1099 *
1100 * This program is distributed in the hope that it will be useful,
1101
1102=== modified file 'benchmarks/frame-uniformity/touch_producing_server.h'
1103--- benchmarks/frame-uniformity/touch_producing_server.h 2016-01-29 08:18:22 +0000
1104+++ benchmarks/frame-uniformity/touch_producing_server.h 2017-10-08 13:37:01 +0000
1105@@ -2,7 +2,7 @@
1106 * Copyright © 2014 Canonical Ltd.
1107 *
1108 * This program is free software: you can redistribute it and/or modify
1109- * it under the terms of the GNU General Public License version 3 as
1110+ * it under the terms of the GNU General Public License version 2 or 3 as
1111 * published by the Free Software Foundation.
1112 *
1113 * This program is distributed in the hope that it will be useful,
1114
1115=== modified file 'benchmarks/frame-uniformity/touch_samples.cpp'
1116--- benchmarks/frame-uniformity/touch_samples.cpp 2015-06-17 05:20:42 +0000
1117+++ benchmarks/frame-uniformity/touch_samples.cpp 2017-10-08 13:37:01 +0000
1118@@ -2,7 +2,7 @@
1119 * Copyright © 2014 Canonical Ltd.
1120 *
1121 * This program is free software: you can redistribute it and/or modify
1122- * it under the terms of the GNU General Public License version 3 as
1123+ * it under the terms of the GNU General Public License version 2 or 3 as
1124 * published by the Free Software Foundation.
1125 *
1126 * This program is distributed in the hope that it will be useful,
1127
1128=== modified file 'benchmarks/frame-uniformity/touch_samples.h'
1129--- benchmarks/frame-uniformity/touch_samples.h 2014-10-22 14:08:51 +0000
1130+++ benchmarks/frame-uniformity/touch_samples.h 2017-10-08 13:37:01 +0000
1131@@ -2,7 +2,7 @@
1132 * Copyright © 2014 Canonical Ltd.
1133 *
1134 * This program is free software: you can redistribute it and/or modify
1135- * it under the terms of the GNU General Public License version 3 as
1136+ * it under the terms of the GNU General Public License version 2 or 3 as
1137 * published by the Free Software Foundation.
1138 *
1139 * This program is distributed in the hope that it will be useful,
1140
1141=== modified file 'benchmarks/frame-uniformity/vsync_simulating_graphics_platform.cpp'
1142--- benchmarks/frame-uniformity/vsync_simulating_graphics_platform.cpp 2016-01-29 08:18:22 +0000
1143+++ benchmarks/frame-uniformity/vsync_simulating_graphics_platform.cpp 2017-10-08 13:37:01 +0000
1144@@ -2,7 +2,7 @@
1145 * Copyright © 2014 Canonical Ltd.
1146 *
1147 * This program is free software: you can redistribute it and/or modify
1148- * it under the terms of the GNU General Public License version 3 as
1149+ * it under the terms of the GNU General Public License version 2 or 3 as
1150 * published by the Free Software Foundation.
1151 *
1152 * This program is distributed in the hope that it will be useful,
1153
1154=== modified file 'benchmarks/frame-uniformity/vsync_simulating_graphics_platform.h'
1155--- benchmarks/frame-uniformity/vsync_simulating_graphics_platform.h 2016-01-29 08:18:22 +0000
1156+++ benchmarks/frame-uniformity/vsync_simulating_graphics_platform.h 2017-10-08 13:37:01 +0000
1157@@ -2,7 +2,7 @@
1158 * Copyright © 2014 Canonical Ltd.
1159 *
1160 * This program is free software: you can redistribute it and/or modify
1161- * it under the terms of the GNU General Public License version 3 as
1162+ * it under the terms of the GNU General Public License version 2 or 3 as
1163 * published by the Free Software Foundation.
1164 *
1165 * This program is distributed in the hope that it will be useful,
1166
1167=== added file 'cmake/FindPIL.cmake'
1168--- cmake/FindPIL.cmake 1970-01-01 00:00:00 +0000
1169+++ cmake/FindPIL.cmake 2017-10-08 13:37:01 +0000
1170@@ -0,0 +1,8 @@
1171+execute_process(
1172+ COMMAND python3 -c "from PIL import Image"
1173+ RESULT_VARIABLE HAVE_PIL
1174+)
1175+
1176+if (NOT ${HAVE_PIL} EQUAL 0)
1177+ message(FATAL_ERROR "Python Imaging Library (PIL) not found")
1178+endif()
1179
1180=== modified file 'cmake/MirCommon.cmake'
1181--- cmake/MirCommon.cmake 2017-05-08 03:04:26 +0000
1182+++ cmake/MirCommon.cmake 2017-10-08 13:37:01 +0000
1183@@ -26,6 +26,7 @@
1184 set(VALGRIND_CMD "${VALGRIND_EXECUTABLE}" "--error-exitcode=1" "--trace-children=yes")
1185 set(VALGRIND_CMD ${VALGRIND_CMD} "--leak-check=full" "--show-leak-kinds=definite" "--errors-for-leak-kinds=definite")
1186 set(VALGRIND_CMD ${VALGRIND_CMD} "--track-fds=yes")
1187+ set(VALGRIND_CMD ${VALGRIND_CMD} "--track-origins=yes")
1188 set(VALGRIND_CMD ${VALGRIND_CMD} "--num-callers=128")
1189 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_generic")
1190 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_glibc_2.23")
1191
1192=== modified file 'debian/changelog'
1193--- debian/changelog 2017-06-30 12:00:38 +0000
1194+++ debian/changelog 2017-10-08 13:37:01 +0000
1195@@ -1,4 +1,66 @@
1196+<<<<<<< TREE
1197 mir (0.27.0+17.10.20170630-0ubuntu1) artful; urgency=medium
1198+=======
1199+mir (1.0.0-0ubuntu1) UNRELEASED; urgency=medium
1200+
1201+ * New upstream release 1.0.0(https://launchpad.net/mir/+milestone/1.0.0)
1202+ - ABI summary:
1203+ . mirclient ABI unchanged at 9
1204+ . miral ABI introduced at 2
1205+ . mirserver ABI bumped to 45
1206+ . mircommon ABI unchanged at 7
1207+ . mirplatform ABI unchanged at 61
1208+ . mirprotobuf ABI unchanged at 3
1209+ . mirplatformgraphics ABI unchanged at 13
1210+ . mirclientplatform ABI unchanged at 5
1211+ . mirinputplatform ABI unchanged at 7
1212+ . mircore ABI unchanged at 1
1213+ - Enhancements:
1214+ . Update licences to (L)GPL3 or (L)GPL2.
1215+ . Initial support for Wayland clients
1216+ . [mir_demo_client_display_config] add orientation changing
1217+ . RPC: Don't require the server ACK client's buffer-release requests.
1218+ . Added libmirclientcpp to Mir source package
1219+ . Added libmiral to Mir source package
1220+ . Various small improvements to miral-shell example
1221+ . [libmiral, miral-shell] handle display reconfiguration better and allow
1222+ shells to customize maximized placements.
1223+ . Enable CommandLineOptions to be processed before server initialization
1224+ - Bugs fixed:
1225+ . Fix handling of invalid display configuration. (LP: #1643446)
1226+ . Move full responsibility for buffer IPC into frontend. (LP: #1395421)
1227+ . Don't destroy an IPC "closure" object when it may yet be used
1228+ (LP: #1672960)
1229+ . [mesa-kms] Respect display orientation when painting cursor.
1230+ (LP: #1610078)
1231+ . Respect cursor hotspot when hosted on Mir. (LP: #1705284)
1232+ . mcl::BufferVault: Fix lock inversion.
1233+ . Handle mir_event_type_close_window in examples (LP: #1706004),
1234+ (LP: #1705439)
1235+ . Drop BufferStream::suitable_for_cursor()
1236+ . Only notify resize events for valid surfaces (LP: #1643446)
1237+ . Don't leak DRM fds in platform-eglstream probe.
1238+ . Remove obsolete & broken example code. (LP: #1663130)
1239+ . Move buffer-release IPC to a dedicated IPC thread. (LP: #1395421)
1240+ . [NestedServerWithTwoDisplays] Look for the last of a series of
1241+ synthetic events to ensure that the queue is drained before the test
1242+ exits. (LP: #1709666)
1243+ . floating window manager allows resizing maximized windows (LP: #1704776)
1244+ . [miral-shell] doesn't work with breeze X cursor theme (LP: #1699084)
1245+ . [miral-shell] Don't allow splashscreen to be occluded (LP: #1705973)
1246+ . [miral-shell] Update maximized windows on display changes (LP: #1705695)
1247+ . Make racy DragAndDrop test reliable. (LP: #1704780)
1248+ . [libmiral] Define default window settings in one place and clamp the
1249+ actual values to avoid ldiv0. (LP: #1717061)
1250+ . [miral-kiosk] Apply fullscreen logic when hidden windows are restored.
1251+ (LP: #1717910)
1252+ . [mir-on-x11] Less annoying clipping of Mir-on-X11 window when it exceeds
1253+ display bounds. (LP: #1668599)
1254+
1255+ -- Alan Griffiths <alan.griffiths@canonical.com> Thu, 10 Aug 2017 11:54:30 +0000
1256+
1257+mir (0.27.0-0ubuntu1) UNRELEASED; urgency=medium
1258+>>>>>>> MERGE-SOURCE
1259
1260 [ Daniel van Vugt ]
1261 * New upstream release 0.27.0 (https://launchpad.net/mir/+milestone/0.27.0)
1262
1263=== modified file 'debian/control'
1264--- debian/control 2017-06-28 16:02:35 +0000
1265+++ debian/control 2017-10-08 13:37:01 +0000
1266@@ -31,6 +31,7 @@
1267 libudev-dev,
1268 libgtest-dev,
1269 google-mock (>= 1.6.0+svn437),
1270+ libxml++2.6-dev,
1271 # only enable valgrind once it's been tested to work on each architecture:
1272 valgrind [amd64 i386 armhf arm64],
1273 libglib2.0-dev,
1274@@ -45,6 +46,8 @@
1275 libcapnp-dev,
1276 capnproto,
1277 libepoxy-dev,
1278+ python3-pil:native,
1279+ linux-libc-dev,
1280 Standards-Version: 3.9.4
1281 Homepage: https://launchpad.net/mir
1282 # If you aren't a member of ~mir-team but need to upload packaging changes,
1283@@ -67,7 +70,7 @@
1284
1285 #TODO: Packaging infrastructure for better dependency generation,
1286 # ala pkg-xorg's xviddriver:Provides and ABI detection.
1287-Package: libmirserver44
1288+Package: libmirserver45
1289 Section: libs
1290 Architecture: linux-any
1291 Multi-Arch: same
1292@@ -146,7 +149,7 @@
1293 Architecture: linux-any
1294 Multi-Arch: same
1295 Pre-Depends: ${misc:Pre-Depends}
1296-Depends: libmirserver44 (= ${binary:Version}),
1297+Depends: libmirserver45 (= ${binary:Version}),
1298 libmirplatform-dev (= ${binary:Version}),
1299 libmircommon-dev (= ${binary:Version}),
1300 libglm-dev,
1301@@ -195,6 +198,9 @@
1302 Architecture: linux-any
1303 Multi-Arch: same
1304 Pre-Depends: ${misc:Pre-Depends}
1305+Breaks: libmirclientcpp-dev
1306+Replaces: libmirclientcpp-dev
1307+Provides: libmirclientcpp-dev (=1.5)
1308 Depends: libmirclient9 (= ${binary:Version}),
1309 libmircommon-dev (= ${binary:Version}),
1310 libmircookie-dev (= ${binary:Version}),
1311@@ -233,7 +239,7 @@
1312 Multi-Arch: same
1313 Pre-Depends: ${misc:Pre-Depends}
1314 Depends: libmirclient-debug-extension1 (= ${binary:Version}),
1315- ${misc:Depends},
1316+ ${misc:Depends},
1317 ${shlibs:Depends},
1318 Description: Display server for Ubuntu - client debug interface headers
1319 Mir is a display server running on linux systems, with a focus on efficiency,
1320@@ -254,9 +260,13 @@
1321
1322 Package: mir-demos
1323 Architecture: linux-any
1324+Breaks: miral-examples
1325+Replaces: miral-examples
1326+Provides: miral-examples (=1.5)
1327 Depends: ${misc:Depends},
1328 ${shlibs:Depends},
1329-Recommends: fonts-liberation
1330+Recommends: dmz-cursor-theme,
1331+ fonts-liberation
1332 Description: Display server for Ubuntu - demonstration programs
1333 Mir is a display server running on linux systems, with a focus on efficiency,
1334 robust operation and a well-defined driver model.
1335@@ -477,3 +487,33 @@
1336 .
1337 Contains header files that define the interfaces through which platforms and
1338 renderers access the functionality needed to render with GL.
1339+
1340+Package: libmiral2
1341+Section: libs
1342+Architecture: linux-any
1343+Multi-Arch: same
1344+Pre-Depends: ${misc:Pre-Depends}
1345+Depends: ${misc:Depends},
1346+ ${shlibs:Depends},
1347+Description: Display server for Ubuntu - ABI preserving abstraction layer
1348+ MirAL provides an ABI-stable abstraction layer for Mir based shells,
1349+ insulating them from mirserver ABI breaks.
1350+ .
1351+ Contains the shared library containing MirAL abstraction layer.
1352+
1353+Package: libmiral-dev
1354+Section: libdevel
1355+Architecture: linux-any
1356+Multi-Arch: same
1357+Pre-Depends: ${misc:Pre-Depends}
1358+Depends: libmiral2 (= ${libmiral2:Version}),
1359+# ${source:Version} is technically incorrect, but Launchpad doesn't do BinNMUs
1360+# so it's harmless.
1361+ libmirclient-dev (= ${source:Version}),
1362+ ${misc:Depends},
1363+Description: Developer files for the Mir ABI-stable abstraction layer
1364+ MirAL provides an ABI-stable abstraction layer for Mir based shells,
1365+ insulating them from mirserver ABI breaks.
1366+ .
1367+ Contains header files required for development using the MirAL abstraction
1368+ layer.
1369
1370=== modified file 'debian/copyright'
1371--- debian/copyright 2017-05-08 03:04:26 +0000
1372+++ debian/copyright 2017-10-08 13:37:01 +0000
1373@@ -1,11 +1,11 @@
1374 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
1375 Upstream-Name: Mir
1376-Upstream-Contact: Thomas Voß <thomas.voss@canonical.com>
1377+Upstream-Contact: Alan Griffiths <alan.griffiths@canonical.com>
1378 Source: http://launchpad.net/mir
1379
1380 Files: *
1381-Copyright: 2012-2013, Canonical Ltd.
1382-License: GPL-3
1383+Copyright: 2012-2017, Canonical Ltd.
1384+License: GPL-3 or GPL-2
1385 This program is free software: you can redistribute it and/or modify
1386 it under the terms of the GNU General Public License version 3 as
1387 published by the Free Software Foundation.
1388@@ -18,6 +18,31 @@
1389 On Debian systems, the full text of the GNU General Public
1390 License version 3 can be found in the file
1391 `/usr/share/common-licenses/GPL-3'.
1392+ .
1393+ On Debian systems, the full text of the GNU General Public
1394+ License version 2 can be found in the file
1395+ `/usr/share/common-licenses/GPL-2'.
1396+
1397+Files: include/client/* include/common/* include/core/* include/platform/* include/platforms/* include/renderers/*
1398+ src/client/* src/common/* src/core/* src/platform/* src/platforms/* src/renderers/*
1399+Copyright: 2012-2017, Canonical Ltd.
1400+License: LGPL-3 or LGPL-2
1401+ This program is free software: you can redistribute it and/or modify
1402+ it under the terms of the GNU Lesser General Public License version 3 as
1403+ published by the Free Software Foundation.
1404+ .
1405+ This program is distributed in the hope that it will be useful,
1406+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1407+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1408+ GNU Lesser General Public License for more details.
1409+ .
1410+ On Debian systems, the full text of the GNU Lesser General Public
1411+ License version 3 can be found in the file
1412+ `/usr/share/common-licenses/LGPL-3'.
1413+ .
1414+ On Debian systems, the full text of the GNU Lesser General Public
1415+ License version 2 can be found in the file
1416+ `/usr/share/common-licenses/LGPL-2'.
1417
1418 Files: include/test/mir_test/gmock_fixes.h:
1419 Copyright:
1420@@ -49,20 +74,3 @@
1421 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1422 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1423 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1424-
1425-Files: include/client/* include/common/* src/client/* src/common/*
1426-Copyright: 2012-2013, Canonical Ltd.
1427-License: LGPL-3
1428- This program is free software: you can redistribute it and/or modify
1429- it under the terms of the GNU Lesser General Public License version 3 as
1430- published by the Free Software Foundation.
1431- .
1432- This program is distributed in the hope that it will be useful,
1433- but WITHOUT ANY WARRANTY; without even the implied warranty of
1434- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1435- GNU Lesser General Public License for more details.
1436- .
1437- On Debian systems, the full text of the GNU Lesser General Public
1438- License version 3 can be found in the file
1439- `/usr/share/common-licenses/LGPL-3'.
1440-
1441
1442=== added file 'debian/libmiral-dev.install'
1443--- debian/libmiral-dev.install 1970-01-01 00:00:00 +0000
1444+++ debian/libmiral-dev.install 2017-10-08 13:37:01 +0000
1445@@ -0,0 +1,3 @@
1446+usr/include/miral/miral/*
1447+usr/lib/*/pkgconfig/miral.pc
1448+usr/lib/*/libmiral.so
1449
1450=== added file 'debian/libmiral2.install'
1451--- debian/libmiral2.install 1970-01-01 00:00:00 +0000
1452+++ debian/libmiral2.install 2017-10-08 13:37:01 +0000
1453@@ -0,0 +1,1 @@
1454+usr/lib/*/libmiral.so.2
1455
1456=== added file 'debian/libmiral2.symbols'
1457--- debian/libmiral2.symbols 1970-01-01 00:00:00 +0000
1458+++ debian/libmiral2.symbols 2017-10-08 13:37:01 +0000
1459@@ -0,0 +1,399 @@
1460+libmiral.so.2 libmiral2 #MINVER#
1461+ MIRAL_1.0@MIRAL_1.0 1.0.0
1462+ (c++)"miral::WindowInfo::height_inc(mir::geometry::detail::IntWrapper<mir::geometry::DeltaYTag>)@MIRAL_1.0" 1.0.0
1463+ (c++)"miral::WindowInfo::max_aspect(miral::WindowSpecification::AspectRatio)@MIRAL_1.0" 1.0.0
1464+ (c++)"miral::WindowInfo::max_height(mir::geometry::detail::IntWrapper<mir::geometry::HeightTag>)@MIRAL_1.0" 1.0.0
1465+ (c++)"miral::WindowInfo::min_aspect(miral::WindowSpecification::AspectRatio)@MIRAL_1.0" 1.0.0
1466+ (c++)"miral::WindowInfo::min_height(mir::geometry::detail::IntWrapper<mir::geometry::HeightTag>)@MIRAL_1.0" 1.0.0
1467+ (c++)"miral::WindowInfo::remove_child(miral::Window const&)@MIRAL_1.0" 1.0.0
1468+ (c++)"miral::WindowInfo::restore_rect(mir::geometry::Rectangle const&)@MIRAL_1.0" 1.0.0
1469+ (c++)"miral::WindowInfo::needs_titlebar(MirSurfaceType)@MIRAL_1.0" 1.0.0
1470+ (c++)"miral::WindowInfo::confine_pointer(MirPointerConfinementState)@MIRAL_1.0" 1.0.0
1471+ (c++)"miral::WindowInfo::preferred_orientation(MirOrientationMode)@MIRAL_1.0" 1.0.0
1472+ (c++)"miral::WindowInfo::name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1473+ (c++)"miral::WindowInfo::type(MirSurfaceType)@MIRAL_1.0" 1.0.0
1474+ (c++)"miral::WindowInfo::state(MirSurfaceState)@MIRAL_1.0" 1.0.0
1475+ (c++)"miral::WindowInfo::parent(miral::Window const&)@MIRAL_1.0" 1.0.0
1476+ (c++)"miral::WindowInfo::userdata(std::shared_ptr<void>)@MIRAL_1.0" 1.0.0
1477+ (c++)"miral::WindowInfo::add_child(miral::Window const&)@MIRAL_1.0" 1.0.0
1478+ (c++)"miral::WindowInfo::max_width(mir::geometry::detail::IntWrapper<mir::geometry::WidthTag>)@MIRAL_1.0" 1.0.0
1479+ (c++)"miral::WindowInfo::min_width(mir::geometry::detail::IntWrapper<mir::geometry::WidthTag>)@MIRAL_1.0" 1.0.0
1480+ (c++)"miral::WindowInfo::output_id(mir::optional_value<int>)@MIRAL_1.0" 1.0.0
1481+ (c++)"miral::WindowInfo::width_inc(mir::geometry::detail::IntWrapper<mir::geometry::DeltaXTag>)@MIRAL_1.0" 1.0.0
1482+ (c++)"miral::WindowInfo::WindowInfo(miral::Window const&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
1483+ (c++)"miral::WindowInfo::WindowInfo(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
1484+ (c++)"miral::WindowInfo::WindowInfo()@MIRAL_1.0" 1.0.0
1485+ (c++)"miral::WindowInfo::WindowInfo(miral::Window const&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
1486+ (c++)"miral::WindowInfo::WindowInfo(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
1487+ (c++)"miral::WindowInfo::WindowInfo()@MIRAL_1.0" 1.0.0
1488+ (c++)"miral::WindowInfo::~WindowInfo()@MIRAL_1.0" 1.0.0
1489+ (c++)"miral::WindowInfo::~WindowInfo()@MIRAL_1.0" 1.0.0
1490+ (c++)"miral::WindowInfo::operator=(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
1491+ (c++)"miral::CursorTheme::CursorTheme(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1492+ (c++)"miral::CursorTheme::CursorTheme(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1493+ (c++)"miral::CursorTheme::~CursorTheme()@MIRAL_1.0" 1.0.0
1494+ (c++)"miral::CursorTheme::~CursorTheme()@MIRAL_1.0" 1.0.0
1495+ (c++)"miral::SetTerminator::SetTerminator(std::function<void (int)> const&)@MIRAL_1.0" 1.0.0
1496+ (c++)"miral::SetTerminator::SetTerminator(std::function<void (int)> const&)@MIRAL_1.0" 1.0.0
1497+ (c++)"miral::SetTerminator::~SetTerminator()@MIRAL_1.0" 1.0.0
1498+ (c++)"miral::SetTerminator::~SetTerminator()@MIRAL_1.0" 1.0.0
1499+ (c++)"miral::DebugExtension::enable()@MIRAL_1.0" 1.0.0
1500+ (c++)"miral::DebugExtension::disable()@MIRAL_1.0" 1.0.0
1501+ (c++)"miral::DebugExtension::DebugExtension(miral::DebugExtension const&)@MIRAL_1.0" 1.0.0
1502+ (c++)"miral::DebugExtension::DebugExtension()@MIRAL_1.0" 1.0.0
1503+ (c++)"miral::DebugExtension::DebugExtension(miral::DebugExtension const&)@MIRAL_1.0" 1.0.0
1504+ (c++)"miral::DebugExtension::DebugExtension()@MIRAL_1.0" 1.0.0
1505+ (c++)"miral::DebugExtension::operator=(miral::DebugExtension const&)@MIRAL_1.0" 1.0.0
1506+ (c++)"miral::AddInitCallback::AddInitCallback(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
1507+ (c++)"miral::AddInitCallback::AddInitCallback(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
1508+ (c++)"miral::AddInitCallback::~AddInitCallback()@MIRAL_1.0" 1.0.0
1509+ (c++)"miral::AddInitCallback::~AddInitCallback()@MIRAL_1.0" 1.0.0
1510+ (c++)"miral::ApplicationInfo::add_window(miral::Window const&)@MIRAL_1.0" 1.0.0
1511+ (c++)"miral::ApplicationInfo::remove_window(miral::Window const&)@MIRAL_1.0" 1.0.0
1512+ (c++)"miral::ApplicationInfo::userdata(std::shared_ptr<void>)@MIRAL_1.0" 1.0.0
1513+ (c++)"miral::ApplicationInfo::ApplicationInfo(miral::ApplicationInfo const&)@MIRAL_1.0" 1.0.0
1514+ (c++)"miral::ApplicationInfo::ApplicationInfo(std::shared_ptr<mir::scene::Session> const&)@MIRAL_1.0" 1.0.0
1515+ (c++)"miral::ApplicationInfo::ApplicationInfo()@MIRAL_1.0" 1.0.0
1516+ (c++)"miral::ApplicationInfo::ApplicationInfo(miral::ApplicationInfo const&)@MIRAL_1.0" 1.0.0
1517+ (c++)"miral::ApplicationInfo::ApplicationInfo(std::shared_ptr<mir::scene::Session> const&)@MIRAL_1.0" 1.0.0
1518+ (c++)"miral::ApplicationInfo::ApplicationInfo()@MIRAL_1.0" 1.0.0
1519+ (c++)"miral::ApplicationInfo::~ApplicationInfo()@MIRAL_1.0" 1.0.0
1520+ (c++)"miral::ApplicationInfo::~ApplicationInfo()@MIRAL_1.0" 1.0.0
1521+ (c++)"miral::ApplicationInfo::operator=(miral::ApplicationInfo const&)@MIRAL_1.0" 1.0.0
1522+ (c++)"miral::AppendEventFilter::AppendEventFilter(std::function<int (MirEvent const*)> const&)@MIRAL_1.0" 1.0.0
1523+ (c++)"miral::AppendEventFilter::AppendEventFilter(std::function<int (MirEvent const*)> const&)@MIRAL_1.0" 1.0.0
1524+ (c++)"miral::AppendEventFilter::operator()(mir::Server&)@MIRAL_1.0" 1.0.0
1525+ (c++)"miral::CommandLineOption::CommandLineOption(miral::CommandLineOption const&)@MIRAL_1.0" 1.0.0
1526+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (mir::optional_value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1527+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (mir::optional_value<bool> const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1528+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (mir::optional_value<int> const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1529+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@MIRAL_1.0" 1.0.0
1530+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1531+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (bool)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1532+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (bool)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@MIRAL_1.0" 1.0.0
1533+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (double)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double)@MIRAL_1.0" 1.0.0
1534+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (int)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)@MIRAL_1.0" 1.0.0
1535+ (c++)"miral::CommandLineOption::CommandLineOption(miral::CommandLineOption const&)@MIRAL_1.0" 1.0.0
1536+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (mir::optional_value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1537+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (mir::optional_value<bool> const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1538+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (mir::optional_value<int> const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1539+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@MIRAL_1.0" 1.0.0
1540+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1541+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (bool)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1542+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (bool)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@MIRAL_1.0" 1.0.0
1543+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (double)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double)@MIRAL_1.0" 1.0.0
1544+ (c++)"miral::CommandLineOption::CommandLineOption(std::function<void (int)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)@MIRAL_1.0" 1.0.0
1545+ (c++)"miral::CommandLineOption::~CommandLineOption()@MIRAL_1.0" 1.0.0
1546+ (c++)"miral::CommandLineOption::~CommandLineOption()@MIRAL_1.0" 1.0.0
1547+ (c++)"miral::CommandLineOption::operator=(miral::CommandLineOption const&)@MIRAL_1.0" 1.0.0
1548+ (c++)"miral::WindowManagerTools::raise_tree(miral::Window const&)@MIRAL_1.0" 1.0.0
1549+ (c++)"miral::WindowManagerTools::force_close(miral::Window const&)@MIRAL_1.0" 1.0.0
1550+ (c++)"miral::WindowManagerTools::modify_window(miral::Window const&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
1551+ (c++)"miral::WindowManagerTools::modify_window(miral::WindowInfo&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
1552+ (c++)"miral::WindowManagerTools::active_display()@MIRAL_1.0" 1.0.0
1553+ (c++)"miral::WindowManagerTools::find_application(std::function<bool (miral::ApplicationInfo const&)> const&)@MIRAL_1.0" 1.0.0
1554+ (c++)"miral::WindowManagerTools::invoke_under_lock(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
1555+ (c++)"miral::WindowManagerTools::drag_active_window(mir::geometry::Displacement)@MIRAL_1.0" 1.0.0
1556+ (c++)"miral::WindowManagerTools::ask_client_to_close(miral::Window const&)@MIRAL_1.0" 1.0.0
1557+ (c++)"miral::WindowManagerTools::for_each_application(std::function<void (miral::ApplicationInfo&)> const&)@MIRAL_1.0" 1.0.0
1558+ (c++)"miral::WindowManagerTools::select_active_window(miral::Window const&)@MIRAL_1.0" 1.0.0
1559+ (c++)"miral::WindowManagerTools::focus_next_application()@MIRAL_1.0" 1.0.0
1560+ (c++)"miral::WindowManagerTools::focus_next_within_application()@MIRAL_1.0" 1.0.0
1561+ (c++)"miral::WindowManagerTools::WindowManagerTools(miral::WindowManagerToolsImplementation*)@MIRAL_1.0" 1.0.0
1562+ (c++)"miral::WindowManagerTools::WindowManagerTools(miral::WindowManagerTools const&)@MIRAL_1.0" 1.0.0
1563+ (c++)"miral::WindowManagerTools::WindowManagerTools(miral::WindowManagerToolsImplementation*)@MIRAL_1.0" 1.0.0
1564+ (c++)"miral::WindowManagerTools::WindowManagerTools(miral::WindowManagerTools const&)@MIRAL_1.0" 1.0.0
1565+ (c++)"miral::WindowManagerTools::~WindowManagerTools()@MIRAL_1.0" 1.0.0
1566+ (c++)"miral::WindowManagerTools::~WindowManagerTools()@MIRAL_1.0" 1.0.0
1567+ (c++)"miral::WindowManagerTools::operator=(miral::WindowManagerTools const&)@MIRAL_1.0" 1.0.0
1568+ (c++)"miral::WindowSpecification::height_inc()@MIRAL_1.0" 1.0.0
1569+ (c++)"miral::WindowSpecification::input_mode()@MIRAL_1.0" 1.0.0
1570+ (c++)"miral::WindowSpecification::max_aspect()@MIRAL_1.0" 1.0.0
1571+ (c++)"miral::WindowSpecification::max_height()@MIRAL_1.0" 1.0.0
1572+ (c++)"miral::WindowSpecification::min_aspect()@MIRAL_1.0" 1.0.0
1573+ (c++)"miral::WindowSpecification::min_height()@MIRAL_1.0" 1.0.0
1574+ (c++)"miral::WindowSpecification::input_shape()@MIRAL_1.0" 1.0.0
1575+ (c++)"miral::WindowSpecification::shell_chrome()@MIRAL_1.0" 1.0.0
1576+ (c++)"miral::WindowSpecification::confine_pointer()@MIRAL_1.0" 1.0.0
1577+ (c++)"miral::WindowSpecification::placement_hints()@MIRAL_1.0" 1.0.0
1578+ (c++)"miral::WindowSpecification::preferred_orientation()@MIRAL_1.0" 1.0.0
1579+ (c++)"miral::WindowSpecification::window_placement_gravity()@MIRAL_1.0" 1.0.0
1580+ (c++)"miral::WindowSpecification::aux_rect_placement_offset()@MIRAL_1.0" 1.0.0
1581+ (c++)"miral::WindowSpecification::aux_rect_placement_gravity()@MIRAL_1.0" 1.0.0
1582+ (c++)"miral::WindowSpecification::name[abi:cxx11]()@MIRAL_1.0" 1.0.0
1583+ (c++)"miral::WindowSpecification::size()@MIRAL_1.0" 1.0.0
1584+ (c++)"miral::WindowSpecification::type()@MIRAL_1.0" 1.0.0
1585+ (c++)"miral::WindowSpecification::state()@MIRAL_1.0" 1.0.0
1586+ (c++)"miral::WindowSpecification::parent()@MIRAL_1.0" 1.0.0
1587+ (c++)"miral::WindowSpecification::aux_rect()@MIRAL_1.0" 1.0.0
1588+ (c++)"miral::WindowSpecification::top_left()@MIRAL_1.0" 1.0.0
1589+ (c++)"miral::WindowSpecification::userdata()@MIRAL_1.0" 1.0.0
1590+ (c++)"miral::WindowSpecification::max_width()@MIRAL_1.0" 1.0.0
1591+ (c++)"miral::WindowSpecification::min_width()@MIRAL_1.0" 1.0.0
1592+ (c++)"miral::WindowSpecification::output_id()@MIRAL_1.0" 1.0.0
1593+ (c++)"miral::WindowSpecification::width_inc()@MIRAL_1.0" 1.0.0
1594+ (c++)"miral::WindowSpecification::WindowSpecification(mir::scene::SurfaceCreationParameters const&)@MIRAL_1.0" 1.0.0
1595+ (c++)"miral::WindowSpecification::WindowSpecification(mir::shell::SurfaceSpecification const&)@MIRAL_1.0" 1.0.0
1596+ (c++)"miral::WindowSpecification::WindowSpecification(miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
1597+ (c++)"miral::WindowSpecification::WindowSpecification()@MIRAL_1.0" 1.0.0
1598+ (c++)"miral::WindowSpecification::WindowSpecification(mir::scene::SurfaceCreationParameters const&)@MIRAL_1.0" 1.0.0
1599+ (c++)"miral::WindowSpecification::WindowSpecification(mir::shell::SurfaceSpecification const&)@MIRAL_1.0" 1.0.0
1600+ (c++)"miral::WindowSpecification::WindowSpecification(miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
1601+ (c++)"miral::WindowSpecification::WindowSpecification()@MIRAL_1.0" 1.0.0
1602+ (c++)"miral::WindowSpecification::~WindowSpecification()@MIRAL_1.0" 1.0.0
1603+ (c++)"miral::WindowSpecification::~WindowSpecification()@MIRAL_1.0" 1.0.0
1604+ (c++)"miral::WindowSpecification::operator=(miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
1605+ (c++)"miral::ActiveOutputsMonitor::add_listener(miral::ActiveOutputsListener*)@MIRAL_1.0" 1.0.0
1606+ (c++)"miral::ActiveOutputsMonitor::delete_listener(miral::ActiveOutputsListener*)@MIRAL_1.0" 1.0.0
1607+ (c++)"miral::ActiveOutputsMonitor::ActiveOutputsMonitor(miral::ActiveOutputsMonitor const&)@MIRAL_1.0" 1.0.0
1608+ (c++)"miral::ActiveOutputsMonitor::ActiveOutputsMonitor()@MIRAL_1.0" 1.0.0
1609+ (c++)"miral::ActiveOutputsMonitor::ActiveOutputsMonitor(miral::ActiveOutputsMonitor const&)@MIRAL_1.0" 1.0.0
1610+ (c++)"miral::ActiveOutputsMonitor::ActiveOutputsMonitor()@MIRAL_1.0" 1.0.0
1611+ (c++)"miral::ActiveOutputsMonitor::~ActiveOutputsMonitor()@MIRAL_1.0" 1.0.0
1612+ (c++)"miral::ActiveOutputsMonitor::~ActiveOutputsMonitor()@MIRAL_1.0" 1.0.0
1613+ (c++)"miral::ActiveOutputsMonitor::operator=(miral::ActiveOutputsMonitor const&)@MIRAL_1.0" 1.0.0
1614+ (c++)"miral::ActiveOutputsMonitor::operator()(mir::Server&)@MIRAL_1.0" 1.0.0
1615+ (c++)"miral::ActiveOutputsListener::advise_output_end()@MIRAL_1.0" 1.0.0
1616+ (c++)"miral::ActiveOutputsListener::advise_output_begin()@MIRAL_1.0" 1.0.0
1617+ (c++)"miral::ActiveOutputsListener::advise_output_create(miral::Output const&)@MIRAL_1.0" 1.0.0
1618+ (c++)"miral::ActiveOutputsListener::advise_output_delete(miral::Output const&)@MIRAL_1.0" 1.0.0
1619+ (c++)"miral::ActiveOutputsListener::advise_output_update(miral::Output const&, miral::Output const&)@MIRAL_1.0" 1.0.0
1620+ (c++)"miral::SetCommandLineHandler::SetCommandLineHandler(std::function<void (int, char const* const*)> const&)@MIRAL_1.0" 1.0.0
1621+ (c++)"miral::SetCommandLineHandler::SetCommandLineHandler(std::function<void (int, char const* const*)> const&)@MIRAL_1.0" 1.0.0
1622+ (c++)"miral::SetCommandLineHandler::~SetCommandLineHandler()@MIRAL_1.0" 1.0.0
1623+ (c++)"miral::SetCommandLineHandler::~SetCommandLineHandler()@MIRAL_1.0" 1.0.0
1624+ (c++)"miral::StartupInternalClient::StartupInternalClient(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void (miral::toolkit::Connection)>, std::function<void (std::weak_ptr<mir::scene::Session>)>)@MIRAL_1.0" 1.0.0
1625+ (c++)"miral::StartupInternalClient::StartupInternalClient(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void (miral::toolkit::Connection)>, std::function<void (std::weak_ptr<mir::scene::Session>)>)@MIRAL_1.0" 1.0.0
1626+ (c++)"miral::StartupInternalClient::~StartupInternalClient()@MIRAL_1.0" 1.0.0
1627+ (c++)"miral::StartupInternalClient::~StartupInternalClient()@MIRAL_1.0" 1.0.0
1628+ (c++)"miral::StartupInternalClient::operator()(mir::Server&)@MIRAL_1.0" 1.0.0
1629+ (c++)"miral::ApplicationCredentials::ApplicationCredentials(mir::frontend::SessionCredentials const&)@MIRAL_1.0" 1.0.0
1630+ (c++)"miral::ApplicationCredentials::ApplicationCredentials(mir::frontend::SessionCredentials const&)@MIRAL_1.0" 1.0.0
1631+ (c++)"miral::InternalClientLauncher::InternalClientLauncher()@MIRAL_1.0" 1.0.0
1632+ (c++)"miral::InternalClientLauncher::InternalClientLauncher()@MIRAL_1.0" 1.0.0
1633+ (c++)"miral::InternalClientLauncher::~InternalClientLauncher()@MIRAL_1.0" 1.0.0
1634+ (c++)"miral::InternalClientLauncher::~InternalClientLauncher()@MIRAL_1.0" 1.0.0
1635+ (c++)"miral::InternalClientLauncher::operator()(mir::Server&)@MIRAL_1.0" 1.0.0
1636+ (c++)"miral::WindowManagementPolicy::advise_end()@MIRAL_1.0" 1.0.0
1637+ (c++)"miral::WindowManagementPolicy::advise_begin()@MIRAL_1.0" 1.0.0
1638+ (c++)"miral::WindowManagementPolicy::advise_raise(std::vector<miral::Window, std::allocator<miral::Window> > const&)@MIRAL_1.0" 1.0.0
1639+ (c++)"miral::WindowManagementPolicy::advise_resize(miral::WindowInfo const&, mir::geometry::Size const&)@MIRAL_1.0" 1.0.0
1640+ (c++)"miral::WindowManagementPolicy::advise_move_to(miral::WindowInfo const&, mir::geometry::Point)@MIRAL_1.0" 1.0.0
1641+ (c++)"miral::WindowManagementPolicy::advise_new_app(miral::ApplicationInfo&)@MIRAL_1.0" 1.0.0
1642+ (c++)"miral::WindowManagementPolicy::advise_delete_app(miral::ApplicationInfo const&)@MIRAL_1.0" 1.0.0
1643+ (c++)"miral::WindowManagementPolicy::advise_focus_lost(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
1644+ (c++)"miral::WindowManagementPolicy::advise_new_window(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
1645+ (c++)"miral::WindowManagementPolicy::advise_focus_gained(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
1646+ (c++)"miral::WindowManagementPolicy::advise_state_change(miral::WindowInfo const&, MirSurfaceState)@MIRAL_1.0" 1.0.0
1647+ (c++)"miral::WindowManagementPolicy::advise_delete_window(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
1648+ (c++)"miral::equivalent_display_area(miral::Output const&, miral::Output const&)@MIRAL_1.0" 1.0.0
1649+ (c++)"miral::SetWindowManagmentPolicy::SetWindowManagmentPolicy(std::function<std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> > (miral::WindowManagerTools const&)> const&)@MIRAL_1.0" 1.0.0
1650+ (c++)"miral::SetWindowManagmentPolicy::SetWindowManagmentPolicy(std::function<std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> > (miral::WindowManagerTools const&)> const&)@MIRAL_1.0" 1.0.0
1651+ (c++)"miral::SetWindowManagmentPolicy::~SetWindowManagmentPolicy()@MIRAL_1.0" 1.0.0
1652+ (c++)"miral::SetWindowManagmentPolicy::~SetWindowManagmentPolicy()@MIRAL_1.0" 1.0.0
1653+ (c++)"miral::apply_lifecycle_state_to(std::shared_ptr<mir::scene::Session> const&, MirLifecycleState)@MIRAL_1.0" 1.0.0
1654+ (c++)"miral::CanonicalWindowManagerPolicy::place_new_surface(miral::ApplicationInfo const&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
1655+ (c++)"miral::CanonicalWindowManagerPolicy::advise_focus_gained(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
1656+ (c++)"miral::CanonicalWindowManagerPolicy::handle_raise_window(miral::WindowInfo&)@MIRAL_1.0" 1.0.0
1657+ (c++)"miral::CanonicalWindowManagerPolicy::handle_window_ready(miral::WindowInfo&)@MIRAL_1.0" 1.0.0
1658+ (c++)"miral::CanonicalWindowManagerPolicy::handle_modify_window(miral::WindowInfo&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
1659+ (c++)"miral::CanonicalWindowManagerPolicy::confirm_inherited_move(miral::WindowInfo const&, mir::geometry::Displacement)@MIRAL_1.0" 1.0.0
1660+ (c++)"miral::CanonicalWindowManagerPolicy::CanonicalWindowManagerPolicy(miral::WindowManagerTools const&)@MIRAL_1.0" 1.0.0
1661+ (c++)"miral::CanonicalWindowManagerPolicy::CanonicalWindowManagerPolicy(miral::WindowManagerTools const&)@MIRAL_1.0" 1.0.0
1662+ (c++)"miral::BasicSetApplicationAuthorizer::BasicSetApplicationAuthorizer(std::function<std::shared_ptr<miral::ApplicationAuthorizer> ()> const&)@MIRAL_1.0" 1.0.0
1663+ (c++)"miral::BasicSetApplicationAuthorizer::BasicSetApplicationAuthorizer(std::function<std::shared_ptr<miral::ApplicationAuthorizer> ()> const&)@MIRAL_1.0" 1.0.0
1664+ (c++)"miral::BasicSetApplicationAuthorizer::~BasicSetApplicationAuthorizer()@MIRAL_1.0" 1.0.0
1665+ (c++)"miral::BasicSetApplicationAuthorizer::~BasicSetApplicationAuthorizer()@MIRAL_1.0" 1.0.0
1666+ (c++)"miral::BasicSetApplicationAuthorizer::operator()(mir::Server&)@MIRAL_1.0" 1.0.0
1667+ (c++)"miral::display_configuration_options(mir::Server&)@MIRAL_1.0" 1.0.0
1668+ (c++)"miral::kill(std::shared_ptr<mir::scene::Session> const&, int)@MIRAL_1.0" 1.0.0
1669+ (c++)"miral::Keymap::set_keymap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1670+ (c++)"miral::Keymap::Keymap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1671+ (c++)"miral::Keymap::Keymap(miral::Keymap const&)@MIRAL_1.0" 1.0.0
1672+ (c++)"miral::Keymap::Keymap()@MIRAL_1.0" 1.0.0
1673+ (c++)"miral::Keymap::Keymap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
1674+ (c++)"miral::Keymap::Keymap(miral::Keymap const&)@MIRAL_1.0" 1.0.0
1675+ (c++)"miral::Keymap::Keymap()@MIRAL_1.0" 1.0.0
1676+ (c++)"miral::Keymap::~Keymap()@MIRAL_1.0" 1.0.0
1677+ (c++)"miral::Keymap::~Keymap()@MIRAL_1.0" 1.0.0
1678+ (c++)"miral::Keymap::operator=(miral::Keymap const&)@MIRAL_1.0" 1.0.0
1679+ (c++)"miral::Output::Output(mir::graphics::DisplayConfigurationOutput const&)@MIRAL_1.0" 1.0.0
1680+ (c++)"miral::Output::Output(miral::Output const&)@MIRAL_1.0" 1.0.0
1681+ (c++)"miral::Output::Output(mir::graphics::DisplayConfigurationOutput const&)@MIRAL_1.0" 1.0.0
1682+ (c++)"miral::Output::Output(miral::Output const&)@MIRAL_1.0" 1.0.0
1683+ (c++)"miral::Output::~Output()@MIRAL_1.0" 1.0.0
1684+ (c++)"miral::Output::~Output()@MIRAL_1.0" 1.0.0
1685+ (c++)"miral::Output::operator=(miral::Output const&)@MIRAL_1.0" 1.0.0
1686+ (c++)"miral::Window::resize(mir::geometry::Size const&)@MIRAL_1.0" 1.0.0
1687+ (c++)"miral::Window::move_to(mir::geometry::Point)@MIRAL_1.0" 1.0.0
1688+ (c++)"miral::Window::Window(std::shared_ptr<mir::scene::Session> const&, std::shared_ptr<mir::scene::Surface> const&)@MIRAL_1.0" 1.0.0
1689+ (c++)"miral::Window::Window()@MIRAL_1.0" 1.0.0
1690+ (c++)"miral::Window::Window(std::shared_ptr<mir::scene::Session> const&, std::shared_ptr<mir::scene::Surface> const&)@MIRAL_1.0" 1.0.0
1691+ (c++)"miral::Window::Window()@MIRAL_1.0" 1.0.0
1692+ (c++)"miral::Window::~Window()@MIRAL_1.0" 1.0.0
1693+ (c++)"miral::Window::~Window()@MIRAL_1.0" 1.0.0
1694+ (c++)"miral::pid_of(std::shared_ptr<mir::scene::Session> const&)@MIRAL_1.0" 1.0.0
1695+ (c++)"miral::name_of[abi:cxx11](std::shared_ptr<mir::scene::Session> const&)@MIRAL_1.0" 1.0.0
1696+ (c++)"miral::MirRunner::add_stop_callback(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
1697+ (c++)"miral::MirRunner::add_start_callback(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
1698+ (c++)"miral::MirRunner::set_exception_handler(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
1699+ (c++)"miral::MirRunner::stop()@MIRAL_1.0" 1.0.0
1700+ (c++)"miral::MirRunner::run_with(std::initializer_list<std::function<void (mir::Server&)> >)@MIRAL_1.0" 1.0.0
1701+ (c++)"miral::MirRunner::MirRunner(int, char const**)@MIRAL_1.0" 1.0.0
1702+ (c++)"miral::MirRunner::MirRunner(int, char const**, char const*)@MIRAL_1.0" 1.0.0
1703+ (c++)"miral::MirRunner::MirRunner(int, char const**)@MIRAL_1.0" 1.0.0
1704+ (c++)"miral::MirRunner::MirRunner(int, char const**, char const*)@MIRAL_1.0" 1.0.0
1705+ (c++)"miral::MirRunner::~MirRunner()@MIRAL_1.0" 1.0.0
1706+ (c++)"miral::MirRunner::~MirRunner()@MIRAL_1.0" 1.0.0
1707+ (c++)"miral::operator==(miral::Output::PhysicalSizeMM const&, miral::Output::PhysicalSizeMM const&)@MIRAL_1.0" 1.0.0
1708+ (c++)"miral::operator==(miral::Window const&, std::shared_ptr<mir::scene::Surface> const&)@MIRAL_1.0" 1.0.0
1709+ (c++)"miral::operator==(miral::Window const&, miral::Window const&)@MIRAL_1.0" 1.0.0
1710+ (c++)"miral::operator==(std::shared_ptr<mir::scene::Surface> const&, miral::Window const&)@MIRAL_1.0" 1.0.0
1711+ (c++)"miral::WindowInfo::height_inc() const@MIRAL_1.0" 1.0.0
1712+ (c++)"miral::WindowInfo::is_visible() const@MIRAL_1.0" 1.0.0
1713+ (c++)"miral::WindowInfo::max_aspect() const@MIRAL_1.0" 1.0.0
1714+ (c++)"miral::WindowInfo::max_height() const@MIRAL_1.0" 1.0.0
1715+ (c++)"miral::WindowInfo::min_aspect() const@MIRAL_1.0" 1.0.0
1716+ (c++)"miral::WindowInfo::min_height() const@MIRAL_1.0" 1.0.0
1717+ (c++)"miral::WindowInfo::can_morph_to(MirSurfaceType) const@MIRAL_1.0" 1.0.0
1718+ (c++)"miral::WindowInfo::restore_rect() const@MIRAL_1.0" 1.0.0
1719+ (c++)"miral::WindowInfo::can_be_active() const@MIRAL_1.0" 1.0.0
1720+ (c++)"miral::WindowInfo::has_output_id() const@MIRAL_1.0" 1.0.0
1721+ (c++)"miral::WindowInfo::confine_pointer() const@MIRAL_1.0" 1.0.0
1722+ (c++)"miral::WindowInfo::constrain_resize(mir::geometry::Point&, mir::geometry::Size&) const@MIRAL_1.0" 1.0.0
1723+ (c++)"miral::WindowInfo::must_have_parent() const@MIRAL_1.0" 1.0.0
1724+ (c++)"miral::WindowInfo::must_not_have_parent() const@MIRAL_1.0" 1.0.0
1725+ (c++)"miral::WindowInfo::preferred_orientation() const@MIRAL_1.0" 1.0.0
1726+ (c++)"miral::WindowInfo::name[abi:cxx11]() const@MIRAL_1.0" 1.0.0
1727+ (c++)"miral::WindowInfo::type() const@MIRAL_1.0" 1.0.0
1728+ (c++)"miral::WindowInfo::state() const@MIRAL_1.0" 1.0.0
1729+ (c++)"miral::WindowInfo::parent() const@MIRAL_1.0" 1.0.0
1730+ (c++)"miral::WindowInfo::window() const@MIRAL_1.0" 1.0.0
1731+ (c++)"miral::WindowInfo::children() const@MIRAL_1.0" 1.0.0
1732+ (c++)"miral::WindowInfo::userdata() const@MIRAL_1.0" 1.0.0
1733+ (c++)"miral::WindowInfo::max_width() const@MIRAL_1.0" 1.0.0
1734+ (c++)"miral::WindowInfo::min_width() const@MIRAL_1.0" 1.0.0
1735+ (c++)"miral::WindowInfo::output_id() const@MIRAL_1.0" 1.0.0
1736+ (c++)"miral::WindowInfo::width_inc() const@MIRAL_1.0" 1.0.0
1737+ (c++)"miral::CursorTheme::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
1738+ (c++)"miral::SetTerminator::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
1739+ (c++)"miral::DebugExtension::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
1740+ (c++)"miral::AddInitCallback::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
1741+ (c++)"miral::ApplicationInfo::application() const@MIRAL_1.0" 1.0.0
1742+ (c++)"miral::ApplicationInfo::name[abi:cxx11]() const@MIRAL_1.0" 1.0.0
1743+ (c++)"miral::ApplicationInfo::windows() const@MIRAL_1.0" 1.0.0
1744+ (c++)"miral::ApplicationInfo::userdata() const@MIRAL_1.0" 1.0.0
1745+ (c++)"miral::CommandLineOption::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
1746+ (c++)"miral::WindowManagerTools::active_window() const@MIRAL_1.0" 1.0.0
1747+ (c++)"miral::WindowManagerTools::id_for_window[abi:cxx11](miral::Window const&) const@MIRAL_1.0" 1.0.0
1748+ (c++)"miral::WindowManagerTools::count_applications() const@MIRAL_1.0" 1.0.0
1749+ (c++)"miral::WindowManagerTools::info_for_window_id(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@MIRAL_1.0" 1.0.0
1750+ (c++)"miral::WindowManagerTools::place_and_size_for_state(miral::WindowSpecification&, miral::WindowInfo const&) const@MIRAL_1.0" 1.0.0
1751+ (c++)"miral::WindowManagerTools::info_for(miral::Window const&) const@MIRAL_1.0" 1.0.0
1752+ (c++)"miral::WindowManagerTools::info_for(std::weak_ptr<mir::scene::Session> const&) const@MIRAL_1.0" 1.0.0
1753+ (c++)"miral::WindowManagerTools::info_for(std::weak_ptr<mir::scene::Surface> const&) const@MIRAL_1.0" 1.0.0
1754+ (c++)"miral::WindowManagerTools::window_at(mir::geometry::Point) const@MIRAL_1.0" 1.0.0
1755+ (c++)"miral::WindowSpecification::height_inc() const@MIRAL_1.0" 1.0.0
1756+ (c++)"miral::WindowSpecification::input_mode() const@MIRAL_1.0" 1.0.0
1757+ (c++)"miral::WindowSpecification::max_aspect() const@MIRAL_1.0" 1.0.0
1758+ (c++)"miral::WindowSpecification::max_height() const@MIRAL_1.0" 1.0.0
1759+ (c++)"miral::WindowSpecification::min_aspect() const@MIRAL_1.0" 1.0.0
1760+ (c++)"miral::WindowSpecification::min_height() const@MIRAL_1.0" 1.0.0
1761+ (c++)"miral::WindowSpecification::input_shape() const@MIRAL_1.0" 1.0.0
1762+ (c++)"miral::WindowSpecification::shell_chrome() const@MIRAL_1.0" 1.0.0
1763+ (c++)"miral::WindowSpecification::confine_pointer() const@MIRAL_1.0" 1.0.0
1764+ (c++)"miral::WindowSpecification::placement_hints() const@MIRAL_1.0" 1.0.0
1765+ (c++)"miral::WindowSpecification::preferred_orientation() const@MIRAL_1.0" 1.0.0
1766+ (c++)"miral::WindowSpecification::window_placement_gravity() const@MIRAL_1.0" 1.0.0
1767+ (c++)"miral::WindowSpecification::aux_rect_placement_offset() const@MIRAL_1.0" 1.0.0
1768+ (c++)"miral::WindowSpecification::aux_rect_placement_gravity() const@MIRAL_1.0" 1.0.0
1769+ (c++)"miral::WindowSpecification::name[abi:cxx11]() const@MIRAL_1.0" 1.0.0
1770+ (c++)"miral::WindowSpecification::size() const@MIRAL_1.0" 1.0.0
1771+ (c++)"miral::WindowSpecification::type() const@MIRAL_1.0" 1.0.0
1772+ (c++)"miral::WindowSpecification::state() const@MIRAL_1.0" 1.0.0
1773+ (c++)"miral::WindowSpecification::parent() const@MIRAL_1.0" 1.0.0
1774+ (c++)"miral::WindowSpecification::update(mir::scene::SurfaceCreationParameters&) const@MIRAL_1.0" 1.0.0
1775+ (c++)"miral::WindowSpecification::aux_rect() const@MIRAL_1.0" 1.0.0
1776+ (c++)"miral::WindowSpecification::top_left() const@MIRAL_1.0" 1.0.0
1777+ (c++)"miral::WindowSpecification::userdata() const@MIRAL_1.0" 1.0.0
1778+ (c++)"miral::WindowSpecification::max_width() const@MIRAL_1.0" 1.0.0
1779+ (c++)"miral::WindowSpecification::min_width() const@MIRAL_1.0" 1.0.0
1780+ (c++)"miral::WindowSpecification::output_id() const@MIRAL_1.0" 1.0.0
1781+ (c++)"miral::WindowSpecification::width_inc() const@MIRAL_1.0" 1.0.0
1782+ (c++)"miral::ActiveOutputsMonitor::process_outputs(std::function<void (std::vector<miral::Output, std::allocator<miral::Output> > const&)> const&) const@MIRAL_1.0" 1.0.0
1783+ (c++)"miral::WindowManagerOptions::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
1784+ (c++)"miral::SetCommandLineHandler::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
1785+ (c++)"miral::ApplicationCredentials::gid() const@MIRAL_1.0" 1.0.0
1786+ (c++)"miral::ApplicationCredentials::pid() const@MIRAL_1.0" 1.0.0
1787+ (c++)"miral::ApplicationCredentials::uid() const@MIRAL_1.0" 1.0.0
1788+ (c++)"miral::InternalClientLauncher::launch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (miral::toolkit::Connection)> const&, std::function<void (std::weak_ptr<mir::scene::Session>)> const&) const@MIRAL_1.0" 1.0.0
1789+ (c++)"miral::SetWindowManagmentPolicy::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
1790+ (c++)"miral::BasicSetApplicationAuthorizer::the_application_authorizer() const@MIRAL_1.0" 1.0.0
1791+ (c++)"miral::Keymap::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
1792+ (c++)"miral::Output::power_mode() const@MIRAL_1.0" 1.0.0
1793+ (c++)"miral::Output::form_factor() const@MIRAL_1.0" 1.0.0
1794+ (c++)"miral::Output::orientation() const@MIRAL_1.0" 1.0.0
1795+ (c++)"miral::Output::pixel_format() const@MIRAL_1.0" 1.0.0
1796+ (c++)"miral::Output::refresh_rate() const@MIRAL_1.0" 1.0.0
1797+ (c++)"miral::Output::is_same_output(miral::Output const&) const@MIRAL_1.0" 1.0.0
1798+ (c++)"miral::Output::physical_size_mm() const@MIRAL_1.0" 1.0.0
1799+ (c++)"miral::Output::type() const@MIRAL_1.0" 1.0.0
1800+ (c++)"miral::Output::used() const@MIRAL_1.0" 1.0.0
1801+ (c++)"miral::Output::scale() const@MIRAL_1.0" 1.0.0
1802+ (c++)"miral::Output::valid() const@MIRAL_1.0" 1.0.0
1803+ (c++)"miral::Output::extents() const@MIRAL_1.0" 1.0.0
1804+ (c++)"miral::Output::connected() const@MIRAL_1.0" 1.0.0
1805+ (c++)"miral::Window::application() const@MIRAL_1.0" 1.0.0
1806+ (c++)"miral::Window::size() const@MIRAL_1.0" 1.0.0
1807+ (c++)"miral::Window::top_left() const@MIRAL_1.0" 1.0.0
1808+ (c++)"miral::Window::operator std::shared_ptr<mir::scene::Surface>() const@MIRAL_1.0" 1.0.0
1809+ (c++)"miral::Window::operator std::weak_ptr<mir::scene::Surface>() const@MIRAL_1.0" 1.0.0
1810+ (c++)"miral::Window::operator bool() const@MIRAL_1.0" 1.0.0
1811+ (c++)"typeinfo for miral::ActiveOutputsListener@MIRAL_1.0" 1.0.0
1812+ (c++)"typeinfo for miral::WindowManagementPolicy@MIRAL_1.0" 1.0.0
1813+ (c++)"typeinfo for miral::CanonicalWindowManagerPolicy@MIRAL_1.0" 1.0.0
1814+ (c++)"vtable for miral::ActiveOutputsListener@MIRAL_1.0" 1.0.0
1815+ (c++)"vtable for miral::WindowManagementPolicy@MIRAL_1.0" 1.0.0
1816+ (c++)"vtable for miral::CanonicalWindowManagerPolicy@MIRAL_1.0" 1.0.0
1817+ MIRAL_1.1@MIRAL_1.1 1.1.0
1818+ (c++)"miral::WindowInfo::needs_titlebar(MirWindowType)@MIRAL_1.1" 1.1.0
1819+ (c++)"miral::WindowInfo::type(MirWindowType)@MIRAL_1.1" 1.1.0
1820+ (c++)"miral::WindowInfo::state(MirWindowState)@MIRAL_1.1" 1.1.0
1821+ (c++)"miral::WindowManagementPolicy::advise_state_change(miral::WindowInfo const&, MirWindowState)@MIRAL_1.1" 1.1.0
1822+ (c++)"miral::WindowInfo::can_morph_to(MirWindowType) const@MIRAL_1.1" 1.1.0
1823+ (c++)"miral::CanonicalWindowManagerPolicy::place_new_window(miral::ApplicationInfo const&, miral::WindowSpecification const&)@MIRAL_1.1" 1.1.0
1824+ MIRAL_1.2@MIRAL_1.2 1.2.0
1825+ (c++)"miral::StartupInternalClient::StartupInternalClient(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void (mir::client::Connection)>, std::function<void (std::weak_ptr<mir::scene::Session>)>)@MIRAL_1.2" 1.2.0
1826+ (c++)"miral::InternalClientLauncher::launch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (mir::client::Connection)> const&, std::function<void (std::weak_ptr<mir::scene::Session>)> const&) const@MIRAL_1.2" 1.2.0
1827+ (c++)"miral::WindowInfo::shell_chrome(MirShellChrome)@MIRAL_1.2" 1.2.0
1828+ (c++)"miral::WindowInfo::shell_chrome() const@MIRAL_1.2" 1.2.0
1829+ (c++)"miral::WindowManagerTools::drag_window(miral::Window const&, mir::geometry::Displacement)@MIRAL_1.2" 1.2.0
1830+ (c++)"typeinfo for miral::ApplicationAuthorizer@MIRAL_1.0" 1.2.0
1831+ (c++)"typeinfo for miral::ApplicationAuthorizer1@MIRAL_1.2" 1.2.0
1832+ MIRAL_1.3@MIRAL_1.3 1.3.0
1833+ (c++)"miral::operator<(miral::Window const&, miral::Window const&)@MIRAL_1.0" 1.3.0
1834+ (c++)"miral::WindowManagerTools::create_workspace()@MIRAL_1.3" 1.3.0
1835+ (c++)"miral::WindowManagerTools::add_tree_to_workspace(miral::Window const&, std::shared_ptr<miral::Workspace> const&)@MIRAL_1.3" 1.3.0
1836+ (c++)"miral::WindowManagerTools::focus_prev_within_application()@MIRAL_1.3" 1.3.0
1837+ (c++)"miral::WindowManagerTools::remove_tree_from_workspace(miral::Window const&, std::shared_ptr<miral::Workspace> const&)@MIRAL_1.3" 1.3.0
1838+ (c++)"miral::WindowManagerTools::move_workspace_content_to_workspace(std::shared_ptr<miral::Workspace> const&, std::shared_ptr<miral::Workspace> const&)@MIRAL_1.3" 1.3.0
1839+ (c++)"miral::WorkspacePolicy::advise_adding_to_workspace(std::shared_ptr<miral::Workspace> const&, std::vector<miral::Window, std::allocator<miral::Window> > const&)@MIRAL_1.3" 1.3.0
1840+ (c++)"miral::WorkspacePolicy::advise_removing_from_workspace(std::shared_ptr<miral::Workspace> const&, std::vector<miral::Window, std::allocator<miral::Window> > const&)@MIRAL_1.3" 1.3.0
1841+ (c++)"miral::WindowManagerTools::for_each_window_in_workspace(std::shared_ptr<miral::Workspace> const&, std::function<void (miral::Window const&)> const&)@MIRAL_1.3" 1.3.0
1842+ (c++)"miral::WindowManagerTools::for_each_workspace_containing(miral::Window const&, std::function<void (std::shared_ptr<miral::Workspace> const&)> const&)@MIRAL_1.3" 1.3.0
1843+ (c++)"typeinfo for miral::WorkspacePolicy@MIRAL_1.3" 1.3.0
1844+ (c++)"vtable for miral::WorkspacePolicy@MIRAL_1.3" 1.3.0
1845+ MIRAL_1.3.1@MIRAL_1.3.1 1.3.1
1846+ (c++)"miral::SetWindowManagementPolicy::SetWindowManagementPolicy(std::function<std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> > (miral::WindowManagerTools const&)> const&)@MIRAL_1.3.1" 1.3.1
1847+ (c++)"miral::SetWindowManagementPolicy::SetWindowManagementPolicy(std::function<std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> > (miral::WindowManagerTools const&)> const&)@MIRAL_1.3.1" 1.3.1
1848+ (c++)"miral::SetWindowManagementPolicy::~SetWindowManagementPolicy()@MIRAL_1.3.1" 1.3.1
1849+ (c++)"miral::SetWindowManagementPolicy::~SetWindowManagementPolicy()@MIRAL_1.3.1" 1.3.1
1850+ (c++)"miral::SetWindowManagementPolicy::operator()(mir::Server&) const@MIRAL_1.3.1" 1.3.1
1851+ MIRAL_1.4.0@MIRAL_1.4.0 1.4.0
1852+ (c++)"miral::WindowManagerTools::end_drag_and_drop()@MIRAL_1.4.0" 1.4.0
1853+ (c++)"miral::WindowManagerTools::start_drag_and_drop(miral::WindowInfo&, std::vector<unsigned char, std::allocator<unsigned char> > const&)@MIRAL_1.4.0" 1.4.0
1854+ (c++)"typeinfo for miral::WindowManagementPolicyAddendum2@MIRAL_1.4.0" 1.4.0
1855+ MIRAL_1.5.0@MIRAL_1.5.0 1.5.0
1856+ (c++)"miral::pre_init(miral::CommandLineOption const&)@MIRAL_1.5.0" 1.5.0
1857+ (c++)"typeinfo for miral::WindowManagementPolicyAddendum3@MIRAL_1.5.0" 1.5.0
1858+ (c++)"miral::WindowManagerTools::active_output()@MIRAL_1.5.0" 1.5.0
1859\ No newline at end of file
1860
1861=== modified file 'debian/libmirclient-dev.install'
1862--- debian/libmirclient-dev.install 2017-05-17 04:48:46 +0000
1863+++ debian/libmirclient-dev.install 2017-10-08 13:37:01 +0000
1864@@ -1,8 +1,10 @@
1865 usr/include/mirclient/mir_toolkit/*.h
1866 usr/include/mirclient/mir_toolkit/extensions/*.h
1867+usr/include/mirclient/mir/client/*.h
1868 usr/include/mirclient/mir/events/*.h
1869 usr/include/mirclient/mir/event_printer.h
1870 usr/include/mirclient/mir_toolkit/events
1871 usr/include/mirclient/mir_toolkit/rs/mir_render_surface.h
1872 usr/lib/*/pkgconfig/mirclient.pc
1873+usr/lib/*/pkgconfig/mirclientcpp.pc
1874 usr/lib/*/libmirclient.so
1875
1876=== renamed file 'debian/libmirserver44.install' => 'debian/libmirserver45.install'
1877--- debian/libmirserver44.install 2017-05-08 03:04:26 +0000
1878+++ debian/libmirserver45.install 2017-10-08 13:37:01 +0000
1879@@ -1,1 +1,1 @@
1880-usr/lib/*/libmirserver.so.44
1881+usr/lib/*/libmirserver.so.45
1882
1883=== modified file 'debian/mir-demos.install'
1884--- debian/mir-demos.install 2015-06-17 05:20:42 +0000
1885+++ debian/mir-demos.install 2017-10-08 13:37:01 +0000
1886@@ -1,3 +1,11 @@
1887 usr/bin/mir_demo_*
1888-usr/bin/mir_proving_*
1889 usr/lib/*/libmir_demo_*
1890+usr/bin/miral-shell
1891+usr/bin/miral-run
1892+usr/bin/miral-kiosk
1893+usr/bin/miral-xrun
1894+usr/bin/miral-screencast
1895+usr/bin/miral-desktop
1896+usr/bin/miral-app
1897+usr/share/applications/miral-shell.desktop
1898+usr/share/icons/hicolor/scalable/apps/ubuntu-logo.svg
1899
1900=== modified file 'debian/rules'
1901--- debian/rules 2017-06-28 16:02:35 +0000
1902+++ debian/rules 2017-10-08 13:37:01 +0000
1903@@ -1,10 +1,6 @@
1904 #!/usr/bin/make -f
1905
1906-DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
1907-DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
1908-DEB_HOST_ARCH_ENDIAN ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_ENDIAN)
1909-EXACT_PACKAGE_VERSION = $(shell dpkg-parsechangelog | grep Version | cut -d' ' -f 2)
1910-DISTRIB_CODENAME = $(shell grep DISTRIB_CODENAME /etc/lsb-release | cut -d= -f2)
1911+include /usr/share/dpkg/default.mk
1912
1913 export DPKG_GENSYMBOLS_CHECK_LEVEL = 4
1914
1915@@ -57,16 +53,25 @@
1916 override_dh_auto_build-indep:
1917 dh_auto_build -- doc
1918
1919+# Reconstruct the MirAL version
1920+MIRAL_VERSION_MAJOR = $(shell perl -n -e '/^set\(MIRAL_VERSION_MAJOR ([0-9]*)\)$$/ && print $$1' src/CMakeLists.txt)
1921+MIRAL_VERSION_MINOR = $(shell perl -n -e '/^set\(MIRAL_VERSION_MINOR ([0-9]*)\)$$/ && print $$1' src/CMakeLists.txt)
1922+MIRAL_VERSION_PATCH = $(shell perl -n -e '/^set\(MIRAL_VERSION_PATCH ([0-9]*)\)$$/ && print $$1' src/CMakeLists.txt)
1923+MIRAL_RELEASE=$(MIRAL_VERSION_MAJOR).$(MIRAL_VERSION_MINOR).$(MIRAL_VERSION_PATCH)
1924+MIRAL_VERSION=$(MIRAL_RELEASE).$(DEB_VERSION)
1925+
1926 # TODO: we'll use a symbol file once mir is abi stable
1927 override_dh_makeshlibs:
1928- dh_makeshlibs -V -Nmir-test-tools
1929+ dh_makeshlibs -Nlibmiral2 -V -Nmir-test-tools
1930+ # libmiral2 *has* a symbols file, so we don't need to -V it!
1931+ dh_makeshlibs -plibmiral2 -- -v$(MIRAL_RELEASE)
1932
1933 override_dh_install:
1934 # Nothing outside Mir should link to libmirprotobuf directly.
1935 # Delete the symlink so that --fail-missing doesn't think we've missed it
1936 # accidentally.
1937 -rm debian/tmp/usr/lib/*/libmirprotobuf.so
1938-ifeq ($(filter xenial yakkety zesty,$(DISTRIB_CODENAME)),)
1939+ifeq ($(filter xenial yakkety zesty,$(DEB_DISTRIBUTION)),)
1940 dh_install
1941 else
1942 # xenial, yakkety & zesty predate dh_missing
1943@@ -80,3 +85,7 @@
1944 # Don't try to find dependencies of libraries used as test data
1945 override_dh_shlibdeps:
1946 dh_shlibdeps -Xmir-test-data
1947+
1948+override_dh_gencontrol:
1949+ dh_gencontrol -Nlibmiral2 -Nlibmiral-dev
1950+ dh_gencontrol -plibmiral2 -plibmiral-dev -- -v$(MIRAL_VERSION) -V'libmiral2:Version=$(MIRAL_VERSION)'
1951
1952=== modified file 'doc/Doxyfile.in'
1953--- doc/Doxyfile.in 2017-05-08 03:04:26 +0000
1954+++ doc/Doxyfile.in 2017-10-08 13:37:01 +0000
1955@@ -784,7 +784,8 @@
1956 INPUT = @CMAKE_CURRENT_SOURCE_DIR@/README.md \
1957 @CMAKE_CURRENT_SOURCE_DIR@/HACKING.md \
1958 @CMAKE_CURRENT_SOURCE_DIR@/doc \
1959- @CMAKE_CURRENT_SOURCE_DIR@/examples \
1960+ @CMAKE_CURRENT_SOURCE_DIR@/examples/miral-kiosk \
1961+ @CMAKE_CURRENT_SOURCE_DIR@/examples/miral-shell \
1962 @CMAKE_CURRENT_SOURCE_DIR@/include \
1963 @MIR_GENERATED_INCLUDE_DIRECTORIES_FLATTENED@
1964
1965@@ -859,7 +860,9 @@
1966 # Note that relative paths are relative to the directory from which doxygen is
1967 # run.
1968
1969-EXCLUDE =
1970+EXCLUDE = @CMAKE_CURRENT_SOURCE_DIR@/include/server \
1971+ @CMAKE_CURRENT_SOURCE_DIR@/include/platform \
1972+ @CMAKE_CURRENT_SOURCE_DIR@/include/platforms
1973
1974 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
1975 # directories that are symbolic links (a Unix file system feature) are excluded
1976@@ -875,7 +878,11 @@
1977 # Note that the wildcards are matched against the file with absolute path, so to
1978 # exclude all test directories for example use the pattern */test/*
1979
1980-EXCLUDE_PATTERNS = */include/test/*
1981+EXCLUDE_PATTERNS = *.capnp.c++ \
1982+ */detail/* \
1983+ @CMAKE_CURRENT_SOURCE_DIR@/examples/multi_stream.cpp \
1984+ @CMAKE_CURRENT_SOURCE_DIR@/examples/uses_non_client_symbol.cpp \
1985+ @CMAKE_CURRENT_SOURCE_DIR@/examples/miral-shell/titlebar_config.*
1986
1987 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
1988 # (namespaces, classes, functions, etc.) that should be excluded from the
1989
1990=== removed file 'doc/building_source_for_pc.md'
1991--- doc/building_source_for_pc.md 2017-05-08 03:04:26 +0000
1992+++ doc/building_source_for_pc.md 1970-01-01 00:00:00 +0000
1993@@ -1,101 +0,0 @@
1994-Building the source for a PC {#building_source_for_pc}
1995-============================
1996-
1997-Getting Mir
1998------------
1999-
2000-Mir is a project on Launchpad (https://launchpad.net/mir). To grab a copy use
2001-the command:
2002-
2003- $ bzr branch lp:mir
2004-
2005-The command above will download the latest development version of Mir into
2006-the 'mir' directory (called the 'project directory' from now on).
2007-
2008-Getting dependencies
2009---------------------
2010-
2011-To succesfully build Mir there are a few packages required. The easiest way
2012-to get them is to use the packaging build dependencies:
2013-
2014- $ sudo apt-get install devscripts equivs cmake
2015-
2016-Then, in the project directory:
2017-
2018- $ sudo mk-build-deps -i
2019-
2020-
2021-Building Mir
2022-------------
2023-
2024-Mir is built using CMake. You first need to create the build directory and
2025-configure the build. In the project directory do:
2026-
2027- $ mkdir build
2028- $ cd build
2029- $ cmake .. (possibly passing configuration options to CMake)
2030-
2031-There are many configuration options for the Mir project. The default options
2032-will work fine, but you may want to customize the build depending on your
2033-needs. The best way to get an overview and set them is to use the cmake-gui
2034-tool:
2035-
2036- $ cmake-gui ..
2037-
2038-The next step is to build the source and run the tests:
2039-
2040- $ make (-j8)
2041- $ ctest
2042-
2043-
2044-Running Mir
2045------------
2046-
2047-The binaries created in the bin subdirectory of the project directory can be
2048-used directly. For example,
2049-
2050- $ bin/mir_demo_server --launch-client bin/mir_demo_client_multiwin
2051-
2052-Other examples described elsewhere in this documentation assume you're using the
2053-installed version and simply need "bin/" adding to specify the local build.
2054-
2055-
2056-Install Mir
2057------------
2058-
2059-*It should not be necessary to install Mir for experimental purposes (see
2060-"Running Mir" above).* Further, if you are using an Ubuntu derived disto then
2061-there's likely to be existing Mir binaries elsewhere that may interact badly
2062-with a second install.
2063-
2064-To install Mir just use the normal make install command:
2065-
2066- $ sudo make install
2067-
2068-This will install the Mir libraries, executable, example clients and header
2069-files to the configured installation location (/usr/local by default).
2070-
2071-NB You may need "sudo ldconfig" to refresh the cache before the installed
2072-programs work.
2073-
2074-If you install to a non-standard location, keep in mind that you will probably
2075-need to properly set the PKG_CONFIG_PATH environment variable to allow other
2076-applications to build against Mir, and LD_LIBRARY_PATH to allow applications to
2077-find the Mir libraries at runtime.
2078-
2079-
2080-Building Mesa
2081--------------
2082-
2083-*The Mesa packages shipped with Ubuntu are already built with the relevant Mir patches
2084-and should work out of the box with Mir.*
2085-
2086-For GL accelerated clients to use Mir they need to use a patched version of Mesa
2087-that supports Mir.
2088-
2089-The patch is hosted on GitHub:
2090-
2091- $ git clone https://github.com/RAOF/mesa.git
2092-
2093-Compile as per normal instructions and pass --with-egl-platforms="mir,drm" to
2094-the configure options. You will need libmirclient installed as shown above.
2095
2096=== removed file 'doc/demo_server_controls.md'
2097--- doc/demo_server_controls.md 2017-05-08 03:04:26 +0000
2098+++ doc/demo_server_controls.md 1970-01-01 00:00:00 +0000
2099@@ -1,69 +0,0 @@
2100-Demo Server {#demo_server}
2101-===========
2102-
2103-Mir's demo server (`mir_demo_server`) is an example of using the Mir to
2104-build a server. It uses only functionality supported by the public Mir API.
2105-
2106-Running Demo Server
2107--------------------
2108-
2109-Remember to always run `mir_demo_server` as root on PC (not required on
2110-Android), as this is required for input device support (open bug
2111-https://bugs.launchpad.net/mir/+bug/1286252);
2112-
2113- sudo mir_demo_server
2114-
2115-And if you're not already on the VT you wish to use, that needs to be
2116-specified:
2117-
2118- sudo mir_demo_server --vt 1
2119-
2120-There are plenty more options available if you run:
2121-
2122- mir_demo_server --help
2123-
2124-The following operations are supported:
2125-
2126- - Quit (shut down the Mir server): *Ctrl-Alt-Backspace*
2127- - Switch back to X: *Ctrl-Alt-F7*
2128- - Switch virtual terminals (VTs): *Ctrl-Alt-(F1-F12)*
2129- - Switch apps: *Alt-Tab*, tap or click on the corresponding app
2130- - Close app: *Alt-F4*
2131- - Switch window within app: *Alt-`*, tap or click on the window
2132- - Close surface: *Ctrl-F4*
2133- - Move window: *Alt-leftmousebutton* drag
2134- - Resize window: *Alt-middle_button* drag
2135- - Maximize/restore current window: *Alt-F11*
2136- - Vertically maximize/restore current window: *Shift-F11*
2137- - Horizontally maximize/restore current window: *Ctrl-F11*
2138-
2139-For those writing client code request to set the surface attribute
2140-`mir_surface_attrib_state` are honoured:
2141- - `mir_window_state_restored`: restores the window
2142- - `mir_window_state_maximized`: maximizes size
2143- - `mir_window_state_vertmaximized`: maximizes height
2144- - `mir_window_state_horizmaximized`: maximizes width
2145-
2146-For a quick demo try:
2147-
2148- sudo DISPLAY= mir_demo_server --vt 1 --launch bin/mir_demo_client_egltriangle\
2149- --test-client bin/mir_demo_client_multiwin --test-timeout 60
2150-
2151-(Remember to unwrap the line)
2152-
2153-### Tiling Window Manager
2154-
2155-One option that needs elaboration is "--window-manager tiling".
2156-
2157-This starts a (rather primitive) tiling window manager. It tracks the available
2158-displays and splits the available workspace into "tiles" (one per client).
2159-
2160-For a quick demo try:
2161-
2162- sudo DISPLAY= mir_demo_server --vt 1 --launch bin/mir_demo_client_egltriangle\
2163- --test-client bin/mir_demo_client_multiwin --test-timeout 60\
2164- --window-manager tiling
2165-
2166-(Remember to unwrap the line)
2167-
2168-Want more? Log your requests at: https://bugs.launchpad.net/mir/+filebug
2169
2170=== removed file 'doc/demo_shell_controls.md'
2171--- doc/demo_shell_controls.md 2016-01-29 08:18:22 +0000
2172+++ doc/demo_shell_controls.md 1970-01-01 00:00:00 +0000
2173@@ -1,53 +0,0 @@
2174-Demo Shell Controls {#demo_shell_controls}
2175-===================
2176-
2177-Mir's demo shell (`mir_proving_server`) is a basic environment for testing
2178-Mir server features as well as running natively ported apps/toolkits. It is
2179-still primitive and requires some explaining to make proper use of, so read
2180-on.
2181-
2182-Running Demo Shell
2183-------------------
2184-
2185-Remember to always run `mir_proving_server` as root on PC (not required on
2186-Android), as this is required for input device support (open bug
2187-https://bugs.launchpad.net/mir/+bug/1286252);
2188-
2189- sudo mir_proving_server
2190-
2191-And if you're not already on the VT you wish to use, that needs to be
2192-specified:
2193-
2194- sudo mir_proving_server --vt 1
2195-
2196-There are plenty more options available if you run:
2197-
2198- mir_proving_server --help
2199-
2200-Controls
2201---------
2202-
2203-All controls have a keyboard/mouse combination and where possible also have
2204-touch alternatives for phones/tablets:
2205-
2206- - Quit the shell (shut down the Mir server): *Ctrl-Alt-Backspace*
2207- - Switch back to X: *Ctrl-Alt-F7*
2208- - Switch virtual terminals (VTs): *Ctrl-Alt-(F1-F12)*
2209- - Switch apps: *Alt-Tab* or *4-finger swipe left/right*
2210- - Switch windows of the current app: *Alt-grave*
2211- - Ask an app to close: *Alt-F4* (it may refuse or not understand)
2212- - Move window: *Alt-leftmousebutton* or *3-finger drag*
2213- - Resize window: *Alt-middlemousebutton* or *3-finger pinch/zoom*
2214- - Toggle negative rendering: *Super-N*
2215- - Toggle high-contrast rendering: *Super-C*
2216- - Sleep/wake all displays: *Alt-P* or *Android power button*
2217- - Rotate the focussed monitor: *Ctrl-Alt-(Left/Right/Up/Down)* or
2218- *Volume up/down while touching the screen*
2219- - Change display mode of the focussed monitor: *Ctrl-Alt-(=/-)*
2220- - Reset display mode to default, on focussed monitor: *Ctrl-Alt-0*
2221- - Adjust window opacity/alpha: *Alt-mousewheel*
2222- - Zoom in/out: *Super-mousewheel*
2223-
2224-*Super* means the Windows key on a PC, or the search key on a Chromebook.
2225-
2226-Want more? Log your requests at: https://bugs.launchpad.net/mir/+filebug
2227
2228=== added file 'doc/getting_and_using_mir.md'
2229--- doc/getting_and_using_mir.md 1970-01-01 00:00:00 +0000
2230+++ doc/getting_and_using_mir.md 2017-10-08 13:37:01 +0000
2231@@ -0,0 +1,106 @@
2232+Getting and Using Mir {#getting_and_using_mir}
2233+=====================
2234+
2235+Getting Mir examples
2236+--------------------
2237+
2238+You can install the Mir examples as follows:
2239+
2240+ $ sudo apt install mir-demos qterminal
2241+ $ sudo apt install mir-graphics-drivers-desktop qtubuntu-desktop
2242+
2243+Using Mir examples
2244+------------------
2245+
2246+For convenient testing there's a "miral-app" script that wraps the commands used
2247+to start a server and then launches a terminal (as the current user):
2248+
2249+ $ miral-app
2250+
2251+To run independently of X11 you need to grant access to the graphics hardware
2252+(by running as root) and specify a VT to run in. There's a "miral-desktop"
2253+script that wraps to start the server (as root) and then launch a terminal
2254+(as the current user):
2255+
2256+ $ miral-desktop
2257+
2258+For more options see *Options when running the Mir example shell* below.
2259+
2260+### Running applications on Mir
2261+
2262+If you use the command-line launched by miral-app or miral-desktop native Mir
2263+applications (which include native Mir clients and those that use SDL or the
2264+GTK+, Qt toolkits) can be started as usual:
2265+
2266+ $ mir_demo_client_egltriangle
2267+ $ gedit
2268+ $ sudo apt install kate neverball
2269+ $ kate
2270+ $ neverball
2271+
2272+From outside the MirAL session GTK+, Qt and SDL applications can still be run
2273+using the miral-run script:
2274+
2275+ $ miral-run gedit
2276+ $ miral-run 7kaa
2277+
2278+### Running for X11 applications
2279+
2280+If you want to run X11 applications that do not have native Mir support in the
2281+toolkit they use then the answer is Xmir: an X11 server that runs on Mir. First
2282+you need Xmir installed:
2283+
2284+ $ sudo apt install xmir
2285+
2286+Then once you have started a miral shell (as above) you can use miral-xrun to
2287+run applications under Xmir:
2288+
2289+ $ miral-xrun firefox
2290+
2291+This automatically starts a Xmir X11 server on a new $DISPLAY for the
2292+application to use. You can use miral-xrun both from a command-line outside the
2293+miral-shell or, for example, from the terminal running in the shell.
2294+
2295+### Options when running the Mir example shell
2296+
2297+#### Script Options
2298+
2299+Both the "miral-app" and "miral-desktop" scripts provide options for using an
2300+alternative example shell (miral-kiosk) and an alternative to gnome-terminal.
2301+
2302+ -kiosk use miral-kiosk instead of miral-shell
2303+ -launcher <launcher> use <launcher> instead of qterminal
2304+
2305+In addition miral-desktop has the option to set the VT that is used:
2306+
2307+ -vt <termid> set the virtual terminal [4]
2308+
2309+There are some additional options (listed with "-h") but those are the important
2310+ones.
2311+
2312+#### miral-shell Options
2313+
2314+The scripts can also be used to pass options to Mir: they pass everything on
2315+the command-line following the first thing they don't understand. These can be
2316+listed by `miral-shell --help`. Most of these options are inherited from Mir,
2317+but the following MirAL specific are likely to be of interest:
2318+
2319+ --window-management-trace log trace message
2320+
2321+Probably the main use for MirAL is to test window-management (either of a
2322+toolkit or of a server) and this logs all calls to and from the window
2323+management policy. This option is supported directly in the MirAL library and
2324+works for any MirAL based shell - even one you write yourself.
2325+
2326+ --keymap arg (=us) keymap <layout>[+<variant>[+<options>]]
2327+ , e,g, "gb" or "cz+qwerty" or
2328+ "de++compose:caps"
2329+
2330+For those of us not in the USA this is very useful. Both the -shell and -kiosk
2331+examples support this option.
2332+
2333+ --window-manager arg (=floating) window management strategy
2334+ [{floating|tiling|system-compositor}]
2335+
2336+Is only supported by miral-shell and its main use is to allow an alternative
2337+"tiling" window manager to be selected.
2338
2339=== added file 'doc/getting_involved_in_mir.md'
2340--- doc/getting_involved_in_mir.md 1970-01-01 00:00:00 +0000
2341+++ doc/getting_involved_in_mir.md 2017-10-08 13:37:01 +0000
2342@@ -0,0 +1,106 @@
2343+Getting Involved in Mir {#getting_involved_in_mir}
2344+=======================
2345+
2346+Getting involved
2347+----------------
2348+
2349+The best place to ask questions and discuss about the Mir project is
2350+the \#ubuntu-mir IRC channel on freenode.
2351+
2352+The Mir project is hosted on Launchpad: https://launchpad.net/mir
2353+
2354+Building Mir
2355+------------
2356+
2357+These instructions assume that you’re using Ubuntu 16.04LTS or later, I’ve not
2358+earlier Ubuntu versions or other distributions.
2359+
2360+You’ll need a few development and utility packages installed, along with the
2361+Mir graphics drivers:
2362+
2363+ $ sudo apt install devscripts equivs bzr
2364+ $ sudo apt install mir-graphics-drivers-desktop
2365+
2366+If you’re working on a phone or tablet use mir-graphics-drivers-android in
2367+place of mir-graphics-drivers-desktop. (See \ref building_source_for_arm for
2368+more on this.)
2369+
2370+With these installed you can checkout and build Mir:
2371+
2372+ $ bzr branch lp:mir
2373+ $ sudo mk-build-deps -i
2374+ $ mkdir mir/build
2375+ $ cd mir/build
2376+ $ cmake ..
2377+ $ make
2378+
2379+This creates an example shell (miral-shell) in the bin directory. This can be
2380+run directly:
2381+
2382+ $ bin/miral-shell
2383+
2384+With the default options this runs in a window on X (which is convenient for
2385+development).
2386+
2387+The miral-shell example is simple, don’t expect to see a sophisticated launcher
2388+by default. You can start mir apps from the command-line. For example:
2389+
2390+ $ bin/miral-run gnome-terminal
2391+
2392+That’s right, a lot of standard GTK+ applications will “just work” (the GDK
2393+toolkit has a Mir backend). Any that assume the existence of an X11 and bypass
2394+the toolkit my making X11 protocol calls will have problems though.
2395+
2396+To exit from miral-shell press Ctrl-Alt-BkSp.
2397+
2398+You can install the Mir examples, headers and libraries you've built with:
2399+
2400+ $ sudo make install
2401+
2402+### Preparing a VM to run Mir
2403+
2404+Especially if you want to debug the shell without locking your system this might be a helpful setup:
2405+
2406+- \ref setup_kvm_for_mir
2407+- \ref setup_vmware_for_mir
2408+
2409+### Contributing to Mir
2410+
2411+Currently, the Mir code activity is performed on a development branch:
2412+lp:~mir-team/mir/development-branch
2413+
2414+This development branch is promoted to the branch used for the ubuntu archive
2415+and touch images. Please submit any merge proposals against the development
2416+branch.
2417+
2418+Please file bug reports at: https://bugs.launchpad.net/mir
2419+
2420+The Mir development mailing list can be found at: https://lists.ubuntu.com/mailman/listinfo/Mir-devel
2421+
2422+The Mir coding guidelines are [here](cppguide/index.html).
2423+
2424+### Working on Mir code
2425+
2426+ - \ref md_README "Mir Read me"
2427+ - \ref md_HACKING "Mir hacking guide"
2428+ - \ref component_reports
2429+ - \ref dso_versioning_guide
2430+ - \ref abi_compatibility_tools
2431+ - \ref performance_framework
2432+ - \ref latency "Measuring visual latency"
2433+
2434+Building Mesa
2435+-------------
2436+
2437+*The Mesa packages shipped with Ubuntu are already built with the relevant Mir patches
2438+and should work out of the box with Mir.*
2439+
2440+For GL accelerated clients to use Mir they need to use a patched version of Mesa
2441+that supports Mir.
2442+
2443+The patch is hosted on GitHub:
2444+
2445+ $ git clone https://github.com/RAOF/mesa.git
2446+
2447+Compile as per normal instructions and pass --with-egl-platforms="mir,drm" to
2448+the configure options. You will need libmirclient installed as shown above.
2449
2450=== removed file 'doc/installing_prebuilt_on_pc.md'
2451--- doc/installing_prebuilt_on_pc.md 2016-01-29 08:18:22 +0000
2452+++ doc/installing_prebuilt_on_pc.md 1970-01-01 00:00:00 +0000
2453@@ -1,8 +0,0 @@
2454-Installing pre-built packages on a PC {#installing_prebuilt_on_pc}
2455-=====================================
2456-
2457-Install Ubuntu 13.10 or later if you haven't done so already. Uninstall any
2458-proprietary drivers (-nvidia, -fglrx) and reboot on the FOSS drivers.
2459-
2460- sudo apt-get update
2461- sudo apt-get install mir-demos
2462
2463=== added file 'doc/introducing_the_miral_api.md'
2464--- doc/introducing_the_miral_api.md 1970-01-01 00:00:00 +0000
2465+++ doc/introducing_the_miral_api.md 2017-10-08 13:37:01 +0000
2466@@ -0,0 +1,25 @@
2467+Introducing the Miral API {#introducing_the_miral_api}
2468+=========================
2469+
2470+The main() program
2471+------------------
2472+
2473+The main() program from miral-shell looks like this:
2474+
2475+\include shell_main.cpp
2476+
2477+This shell is providing FloatingWindowManagerPolicy, TilingWindowManagerPolicy
2478+and SpinnerSplash. The rest is from MirAL.
2479+
2480+If you look for the corresponding code in lp:qtmir and lp:mir you’ll find it
2481+less clear, more verbose and scattered over multiple files.
2482+
2483+A shell has to provide a window management policy (miral-shell provides two:
2484+FloatingWindowManagerPolicy and TilingWindowManagerPolicy). A window management
2485+policy needs to implement the \ref miral::WindowManagementPolicy interface for
2486+handling a set of window management events.
2487+
2488+The way these events are handled determines the behaviour of the shell.
2489+
2490+The \ref miral::WindowManagerTools interface provides the principle methods for
2491+a window management policy to control Mir.
2492
2493=== modified file 'doc/mainpage.md'
2494--- doc/mainpage.md 2017-05-08 03:04:26 +0000
2495+++ doc/mainpage.md 2017-10-08 13:37:01 +0000
2496@@ -3,104 +3,66 @@
2497
2498 Mir is a next generation display server targeted as a replacement for the X
2499 window server system to unlock next-generation user experiences for devices
2500-ranging from Linux desktop to mobile devices powered by Ubuntu. The primary
2501-purpose of Mir is to enable the development of the next generation
2502-[Unity](http://unity.ubuntu.com).
2503+ranging from Linux desktop to mobile and IoT devices powered by Ubuntu.
2504+
2505+ - If you want to use the Mir snaps, see:
2506+ [Run a kiosk snap on Ubuntu Core](https://developer.ubuntu.com/core/examples/snaps-on-mir)
2507+
2508+ - If you want to try out the Mir demos on desktop, see: \ref getting_and_using_mir
2509+
2510+ - If you want to get involved in Mir development, see: \ref getting_involved_in_mir
2511+
2512+Using Mir for client development
2513+--------------------------------
2514+
2515+This is usually something you don't need to do explicitly, it is normally
2516+handled by a GUI toolkit (or library).
2517+
2518+A toolkit can run on Mir in three ways: using Wayland protocols, using the Mir
2519+client API or using X11 translation by the Xmir server.
2520+
2521+ - Qt, has "wayland" and "mir" plugins that can be selected by setting
2522+ the QT_QPA_PLATFORM environment variable to "wayland" or "ubuntumirclient"
2523+ respectively.
2524+
2525+ - SDL can be built with "wayland" and "mir" support and these options selected
2526+ by setting the SDL_VIDEODRIVER environment variable to "wayland" or "mir".
2527+
2528+If want to use the Mir client library directly (e.g. you are working on "mir"
2529+support for a toolkit or library) Install the headers and libraries for using
2530+libmirclient in development:
2531+
2532+ $ sudo apt install libmirclient-dev
2533+
2534+A `miral.pc` file is provided for use with `pkg-config` or other tools. For
2535+example:
2536+
2537+ $ pkg-config --cflags mirclient
2538+
2539+The client API documentation is here: \ref mir_toolkit
2540+
2541+Using Mir for server development
2542+--------------------------------
2543+
2544+Install the headers and libraries for using libmiral in development:
2545+
2546+ $ sudo apt install libmiral-dev
2547+
2548+A `miral.pc` file is provided for use with `pkg-config` or other tools. For
2549+example:
2550+
2551+ $ pkg-config --cflags miral
2552+
2553+The server API is introduced here: \ref introducing_the_miral_api
2554+
2555+The Mir Documentation
2556+---------------------
2557+
2558+The Mir documentation can be installed and read like this:
2559+
2560+ $ sudo apt install mir-doc
2561+ $ xdg-open /usr/share/doc/mir-doc/html/index.html
2562
2563 More detailed information about the motivation, scope, and high-level design
2564 of Mir can be found at http://wiki.ubuntu.com/MirSpec .
2565
2566-Getting and installing Mir
2567---------------------------
2568-
2569-### Using pre-built packages
2570-
2571-If you just want to try out mir, or write client applications, then the easiest
2572-way is to use the pre-built packages:
2573-
2574- - \ref installing_prebuilt_on_pc
2575-
2576-### Building and installing from source
2577-
2578-If you are curious about Mir internals or intend to contribute to it, you should
2579-get the source and build it:
2580-
2581- - \ref building_source_for_pc
2582- - \ref building_source_for_arm
2583-
2584-### Preparing a VM to run Mir
2585-
2586-Especially if you want to debug the shell without locking your system this might be a helpful setup:
2587-
2588-- \ref setup_kvm_for_mir
2589-- \ref setup_vmware_for_mir
2590-
2591-Using Mir
2592----------
2593-
2594- - \ref using_mir_on_pc
2595- - \ref demo_shell_controls
2596- - \ref demo_server
2597-
2598-Getting involved
2599-----------------
2600-
2601-The best place to ask questions and discuss about the Mir project is
2602-the \#ubuntu-mir IRC channel on freenode.
2603-
2604-The Mir project is hosted on Launchpad: https://launchpad.net/mir
2605-
2606-Currently, the Mir code activity is performed on a development branch:
2607-lp:~mir-team/mir/development-branch
2608-
2609-Approximately fortnightly, this development branch is promoted to the branch
2610-used for the ubuntu archive and touch images. Please submit any merge proposals
2611-against the development branch.
2612-
2613-Please file bug reports at: https://bugs.launchpad.net/mir
2614-
2615-The Mir development mailing list can be found at: https://lists.ubuntu.com/mailman/listinfo/Mir-devel
2616-
2617-The Mir coding guidelines are [here](cppguide/index.html).
2618-
2619-Writing client applications
2620----------------------------
2621-
2622- - \ref mir_toolkit "Mir API Documentation"
2623- - \subpage basic.c "basic.c: A basic Mir client (which does nothing)"
2624-
2625-Writing server applications
2626----------------------------
2627-
2628-Mir server is written as a library which allows the server code to be adapted
2629-for bespoke applications.
2630-
2631- - \subpage server_example.cpp
2632- "server_example.cpp: a test executable hosting the following"
2633- - \subpage server_example_input_event_filter.cpp
2634- "server_example_input_event_filter.cpp: provide a Quit command"
2635- - \subpage server_example_display_configuration_policy.cpp
2636- "server_example_display_configuration_policy.cpp: configuring display layout"
2637- - \subpage server_example_input_filter.cpp
2638- "server_example_input_filter.cpp: print input events to stdout"
2639- - \subpage server_example_log_options.cpp
2640- "server_example_log_options.cpp: replace Mir logger with glog"
2641- - \subpage server_example_basic_window_manager.h
2642- "server_example_basic_window_manager.h: How to wire up a window manager"
2643- - \subpage server_example_window_management.cpp
2644- "server_example_window_management.cpp: simple window management examples"
2645- - \subpage server_example_canonical_window_manager.cpp
2646- "server_example_canonical_window_manager.cpp: canonical window management policy"
2647- - \subpage server_example_custom_compositor.cpp
2648- "server_example_custom_compositor.cpp: demonstrate writing an alternative GL rendering code"
2649-
2650-Working on Mir code
2651--------------------
2652-
2653- - \ref md_README "Mir Read me"
2654- - \ref md_HACKING "Mir hacking guide"
2655- - \ref component_reports
2656- - \ref dso_versioning_guide
2657- - \ref abi_compatibility_tools
2658- - \ref performance_framework
2659- - \ref latency "Measuring visual latency"
2660
2661=== removed file 'doc/using_mir_on_pc.md'
2662--- doc/using_mir_on_pc.md 2016-01-29 08:18:22 +0000
2663+++ doc/using_mir_on_pc.md 1970-01-01 00:00:00 +0000
2664@@ -1,91 +0,0 @@
2665-Using Mir on a PC {#using_mir_on_pc}
2666-=================
2667-
2668-Before you begin
2669-----------------
2670-
2671-Make sure your hardware is supported. That means you're using a Mesa driver,
2672-of which intel, radeon, and nouveau families are supported. If you're logged
2673-in to X then run this command to verify an appropriate DRI driver is active:
2674-
2675- sudo pmap `pidof X` | grep dri.so
2676-
2677-or
2678-
2679- lsmod | grep drm
2680-
2681-Before you can use Mir you need to ensure you have the proper custom Mesa
2682-build installed. If you are running Ubuntu 13.10 or later
2683-(see \ref installing_prebuilt_on_pc), you should be good to go.
2684-
2685-If you built Mir from source code (see \ref building_source_for_pc), you
2686-need to ensure you are using the proper Mesa at runtime. You can do that by
2687-installing the Mesa packages from Ubuntu 13.10 (or later) or by building the
2688-custom Mesa yourself and ensuring it can be found by Mir, e.g., by using
2689-`LD_LIBRARY_PATH`.
2690-
2691-### Getting some example client applications
2692-
2693-You can get some example programs by installing the `mir-demos` package:
2694-
2695- $ sudo apt-get install mir-demos
2696-
2697-If you are building from source you can find client applications in the `bin/`
2698-subdirectory of the build directory.
2699-
2700-Running Mir
2701------------
2702-
2703-Mir can run run either natively on mesa-kms or as an X application.
2704-
2705-### Running Mir on X
2706-
2707-To run Mir as an X client start it from an X terminal:
2708-
2709- $ mir_demo_server --launch-client mir_demo_client_multiwin
2710-
2711-You can start additional Mir clients, for example (in a new terminal):
2712-
2713- $ mir_demo_egltriangle
2714-
2715-To exit from Mir:
2716-
2717- <Ctrl+Alt+BkSp>
2718-
2719-Note: up to Mir 0.18 it is also necessary to specify `--platform-input-lib` when
2720-starting the server:
2721- - for Mir-0.17 add: `--platform-input-lib server-mesa-x11.so.6`
2722- - for Mir-0.18 add: `--platform-input-lib server-mesa-x11.so.7`
2723-
2724-### Running Mir natively
2725-
2726-To run Mir natively on a PC/desktop/laptop:
2727-
2728- $ sudo DISPLAY= mir_demo_server --vt 1 --arw-file
2729-
2730-This will switch you to a Mir session on VT1. Switch back to your X-based
2731-desktop:
2732-
2733- <Ctrl+Alt+F7>
2734-
2735-In a new terminal:
2736-
2737- $ mir_demo_client_multiwin -m /tmp/mir_socket
2738-
2739-Switch back to Mir.
2740-
2741- <Ctrl+Alt+F1>
2742-
2743-Watch your friends be amazed!
2744-
2745-To exit from Mir:
2746-
2747- <Ctrl+Alt+BkSp>
2748-
2749-In case you accidentally killed your X login and ended up with a failsafe
2750-screen, you might find on subsequent reboots you can't log in to X at all any
2751-more (it instantly and silently takes you back to the login screen). The fix
2752-for this is to log in to a VT and:
2753-
2754- $ rm .Xauthority
2755- $ sudo restart lightdm
2756
2757=== modified file 'examples/CMakeLists.txt'
2758--- examples/CMakeLists.txt 2017-06-06 16:26:18 +0000
2759+++ examples/CMakeLists.txt 2017-10-08 13:37:01 +0000
2760@@ -1,14 +1,5 @@
2761-mir_add_wrapped_executable(mir_demo_standalone_render_surfaces
2762- render_surfaces.cpp
2763- buffer_render_target.cpp
2764- image_renderer.cpp
2765-)
2766-
2767-target_link_libraries(mir_demo_standalone_render_surfaces
2768- mirserver
2769- exampleserverconfig
2770- ${Boost_LIBRARIES}
2771-)
2772+add_subdirectory(miral-kiosk)
2773+add_subdirectory(miral-shell)
2774
2775 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -fno-strict-aliasing -Wextra")
2776
2777@@ -18,26 +9,17 @@
2778 )
2779
2780 add_library(exampleserverconfig STATIC
2781- server_example_basic_window_manager.cpp
2782- server_example_basic_window_manager.h
2783- server_example_canonical_window_manager.cpp
2784- server_example_display_configuration_policy.cpp
2785 server_example_input_device_config.cpp
2786 server_example_input_event_filter.cpp
2787 server_example_log_options.cpp
2788 server_example_input_filter.cpp
2789 server_example_host_lifecycle_event.cpp
2790- server_example_window_management.cpp
2791 server_example_custom_compositor.cpp
2792 server_example_adorning_compositor.cpp
2793- server_example_cursor_images.cpp
2794- server_example_cursor_images.h
2795- xcursor_loader.cpp
2796- xcursor_loader.h
2797- xcursor.c
2798- xcursor.h
2799 )
2800
2801+target_link_libraries(exampleserverconfig mirserver)
2802+
2803 target_link_libraries(eglapp
2804 mirclient
2805 ${EGL_LIBRARIES}
2806@@ -184,6 +166,7 @@
2807 add_library(mirdraw STATIC graphics_utils.cpp)
2808
2809 include_directories(
2810+ ${PROJECT_SOURCE_DIR}/include/miral
2811 ${PROJECT_SOURCE_DIR}/include/server
2812 ${PROJECT_SOURCE_DIR}/include/client
2813 ${PROJECT_SOURCE_DIR}/include/platform
2814@@ -192,17 +175,6 @@
2815 ${GL_INCLUDE_DIRS}
2816 )
2817
2818-mir_add_wrapped_executable(mir_demo_standalone_render_to_fb
2819- render_to_fb.cpp
2820-)
2821-
2822-target_link_libraries(mir_demo_standalone_render_to_fb
2823- mirserver
2824- mirdraw
2825- ${GL_LIBRARIES}
2826- ${Boost_LIBRARIES}
2827-)
2828-
2829 add_library(mir_demo_server_loadable MODULE
2830 server_example.cpp
2831 glog_logger.cpp
2832@@ -210,7 +182,8 @@
2833 )
2834
2835 target_link_libraries(mir_demo_server_loadable
2836- mirserver
2837+ miral-shell-lib
2838+ miral
2839 exampleserverconfig
2840 ${GLog_LIBRARY}
2841 ${GFlags_LIBRARY}
2842@@ -229,9 +202,6 @@
2843 dl
2844 )
2845
2846-mir_add_wrapped_executable(mir_demo_server_minimal server_minimal.cpp)
2847-target_link_libraries(mir_demo_server_minimal mirserver)
2848-
2849 if (MIR_ENABLE_TESTS)
2850 add_executable(mir_symbol_test
2851 uses_non_client_symbol.cpp
2852@@ -268,15 +238,6 @@
2853 endif ()
2854 endif ()
2855
2856-add_executable(mir_cursor_theme_dump
2857- cursor-theme-dump.cpp
2858-)
2859-
2860-target_link_libraries(mir_cursor_theme_dump
2861- exampleserverconfig
2862- mirserver
2863-)
2864-
2865 mir_add_wrapped_executable(mir_demo_client_multistream
2866 multi_stream.cpp
2867 )
2868@@ -313,6 +274,15 @@
2869 mirclient
2870 )
2871
2872+include_directories(${MIR_GENERATED_INCLUDE_DIRECTORIES})
2873+
2874+mir_add_wrapped_executable(mir_demo_client_wayland wayland_client.c)
2875+target_link_libraries(mir_demo_client_wayland
2876+
2877+ ${WAYLAND_CLIENT_LIBRARIES}
2878+)
2879+
2880 mir_add_wrapped_executable(mir_demo_client_screencast screencast.cpp)
2881
2882 target_link_libraries(mir_demo_client_screencast mirclient)
2883+
2884
2885=== modified file 'examples/animated_cursor_demo_client.c'
2886--- examples/animated_cursor_demo_client.c 2017-05-19 13:51:47 +0000
2887+++ examples/animated_cursor_demo_client.c 2017-10-08 13:37:01 +0000
2888@@ -2,7 +2,7 @@
2889 * Copyright © 2015 Canonical LTD
2890 *
2891 * This program is free software: you can redistribute it and/or modify
2892- * it under the terms of the GNU General Public License version 3 as
2893+ * it under the terms of the GNU General Public License version 2 or 3 as
2894 * published by the Free Software Foundation.
2895 *
2896 * This program is distributed in the hope that it will be useful,
2897
2898=== modified file 'examples/as_render_target.h'
2899--- examples/as_render_target.h 2015-10-01 08:58:30 +0000
2900+++ examples/as_render_target.h 2017-10-08 13:37:01 +0000
2901@@ -2,7 +2,7 @@
2902 * Copyright © 2015 Canonical Ltd.
2903 *
2904 * This program is free software: you can redistribute it and/or modify
2905- * it under the terms of the GNU General Public License version 3 as
2906+ * it under the terms of the GNU General Public License version 2 or 3 as
2907 * published by the Free Software Foundation.
2908 *
2909 * This program is distributed in the hope that it will be useful,
2910
2911=== modified file 'examples/basic.c'
2912--- examples/basic.c 2017-05-19 13:49:04 +0000
2913+++ examples/basic.c 2017-10-08 13:37:01 +0000
2914@@ -2,7 +2,7 @@
2915 * Copyright © 2012 Canonical Ltd.
2916 *
2917 * This program is free software: you can redistribute it and/or modify
2918- * it under the terms of the GNU General Public License version 3 as
2919+ * it under the terms of the GNU General Public License version 2 or 3 as
2920 * published by the Free Software Foundation.
2921 *
2922 * This program is distributed in the hope that it will be useful,
2923@@ -41,16 +41,12 @@
2924 /// \snippet basic.c surface_release_tag
2925 ///\subsection connection_release We release our connection
2926 /// \snippet basic.c connection_release_tag
2927-///\subsection get the raw, platform-specific buffer handle for the current buffer
2928-/// \snippet basic.c get_current_buffer_tag
2929+///\subsection get graphics region for the current buffer
2930+/// \snippet basic.c get_graphics_region_tag
2931 /// \example basic.c A simple mir client
2932 ///\section MirDemoState MirDemoState
2933 /// The handles needs to be accessible both to callbacks and to the control function.
2934 /// \snippet basic.c MirDemoState_tag
2935-///\section Callbacks Callbacks
2936-/// This program opens a mir connection and creates a surface. The handles
2937-/// needs to be accessible both to callbacks and to the control function.
2938-/// \snippet basic.c Callback_tag
2939
2940 ///\internal [MirDemoState_tag]
2941 // Utility structure for the state of a single surface session.
2942@@ -143,11 +139,12 @@
2943 {
2944 // We can query the current graphics buffer attributes
2945 {
2946+ ///\internal [get_graphics_region_tag]
2947 MirGraphicsRegion graphics_region;
2948 mir_buffer_stream_get_graphics_region(bs, &graphics_region);
2949
2950- ///\internal [get_current_buffer_tag]
2951- // In a real application we'd render into the current buffer
2952+ ///\internal [get_graphics_region_tag]
2953+ // In a real application we'd render into the graphics_region
2954 }
2955
2956 ///\internal [swap_buffers_tag]
2957
2958=== modified file 'examples/buffer_render_target.cpp'
2959--- examples/buffer_render_target.cpp 2016-01-29 08:18:22 +0000
2960+++ examples/buffer_render_target.cpp 2017-10-08 13:37:01 +0000
2961@@ -2,7 +2,7 @@
2962 * Copyright © 2012 Canonical Ltd.
2963 *
2964 * This program is free software: you can redistribute it and/or modify
2965- * it under the terms of the GNU General Public License version 3 as
2966+ * it under the terms of the GNU General Public License version 2 or 3 as
2967 * published by the Free Software Foundation.
2968 *
2969 * This program is distributed in the hope that it will be useful,
2970
2971=== modified file 'examples/buffer_render_target.h'
2972--- examples/buffer_render_target.h 2015-02-22 07:46:25 +0000
2973+++ examples/buffer_render_target.h 2017-10-08 13:37:01 +0000
2974@@ -2,7 +2,7 @@
2975 * Copyright © 2012 Canonical Ltd.
2976 *
2977 * This program is free software: you can redistribute it and/or modify
2978- * it under the terms of the GNU General Public License version 3 as
2979+ * it under the terms of the GNU General Public License version 2 or 3 as
2980 * published by the Free Software Foundation.
2981 *
2982 * This program is distributed in the hope that it will be useful,
2983
2984=== modified file 'examples/camera.c'
2985--- examples/camera.c 2017-05-19 13:49:04 +0000
2986+++ examples/camera.c 2017-10-08 13:37:01 +0000
2987@@ -2,7 +2,7 @@
2988 * Copyright © 2015-2016 Canonical Ltd.
2989 *
2990 * This program is free software: you can redistribute it and/or modify
2991- * it under the terms of the GNU General Public License version 3 as
2992+ * it under the terms of the GNU General Public License version 2 or 3 as
2993 * published by the Free Software Foundation.
2994 *
2995 * This program is distributed in the hope that it will be useful,
2996
2997=== modified file 'examples/chain_jumping_buffers.c'
2998--- examples/chain_jumping_buffers.c 2017-05-19 13:54:14 +0000
2999+++ examples/chain_jumping_buffers.c 2017-10-08 13:37:01 +0000
3000@@ -2,7 +2,7 @@
3001 * Copyright © 2016 Canonical Ltd.
3002 *
3003 * This program is free software: you can redistribute it and/or modify
3004- * it under the terms of the GNU General Public License version 3 as
3005+ * it under the terms of the GNU General Public License version 2 or 3 as
3006 * published by the Free Software Foundation.
3007 *
3008 * This program is distributed in the hope that it will be useful,
3009
3010=== modified file 'examples/client_helpers.cpp'
3011--- examples/client_helpers.cpp 2017-06-06 14:57:41 +0000
3012+++ examples/client_helpers.cpp 2017-10-08 13:37:01 +0000
3013@@ -2,7 +2,7 @@
3014 * Copyright © 2015-2017 Canonical Ltd.
3015 *
3016 * This program is free software: you can redistribute it and/or modify
3017- * it under the terms of the GNU General Public License version 3 as
3018+ * it under the terms of the GNU General Public License version 2 or 3 as
3019 * published by the Free Software Foundation.
3020 *
3021 * This program is distributed in the hope that it will be useful,
3022@@ -18,6 +18,8 @@
3023
3024 #include "client_helpers.h"
3025 #include "mir_toolkit/mir_client_library.h"
3026+#include <unistd.h>
3027+#include <signal.h>
3028
3029 namespace me = mir::examples;
3030
3031@@ -89,6 +91,10 @@
3032 break;
3033 }
3034
3035+ case mir_event_type_close_window:
3036+ kill(getpid(), SIGTERM);
3037+ break;
3038+
3039 default:
3040 break;
3041 }
3042
3043=== modified file 'examples/client_helpers.h'
3044--- examples/client_helpers.h 2017-06-06 14:57:41 +0000
3045+++ examples/client_helpers.h 2017-10-08 13:37:01 +0000
3046@@ -2,7 +2,7 @@
3047 * Copyright © 2015-2017 Canonical Ltd.
3048 *
3049 * This program is free software: you can redistribute it and/or modify
3050- * it under the terms of the GNU General Public License version 3 as
3051+ * it under the terms of the GNU General Public License version 2 or 3 as
3052 * published by the Free Software Foundation.
3053 *
3054 * This program is distributed in the hope that it will be useful,
3055
3056=== modified file 'examples/client_touch_validator.cpp'
3057--- examples/client_touch_validator.cpp 2017-06-06 15:41:28 +0000
3058+++ examples/client_touch_validator.cpp 2017-10-08 13:37:01 +0000
3059@@ -4,7 +4,7 @@
3060 * Copyright © 2015 Canonical Ltd.
3061 *
3062 * This program is free software: you can redistribute it and/or modify
3063- * it under the terms of the GNU General Public License version 3 as
3064+ * it under the terms of the GNU General Public License version 2 or 3 as
3065 * published by the Free Software Foundation.
3066 *
3067 * This program is distributed in the hope that it will be useful,
3068
3069=== removed file 'examples/cursor-theme-dump.cpp'
3070--- examples/cursor-theme-dump.cpp 2016-01-29 08:18:22 +0000
3071+++ examples/cursor-theme-dump.cpp 1970-01-01 00:00:00 +0000
3072@@ -1,127 +0,0 @@
3073-/*
3074- * Copyright © 2015 Canonical Ltd.
3075- *
3076- * This program is free software: you can redistribute it and/or modify it
3077- * under the terms of the GNU General Public License version 3,
3078- * as published by the Free Software Foundation.
3079- *
3080- * This program is distributed in the hope that it will be useful,
3081- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3082- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3083- * GNU General Public License for more details.
3084- *
3085- * You should have received a copy of the GNU General Public License
3086- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3087- *
3088- * Authored by: Alan Griffiths <alan@octopull.co.uk>
3089- */
3090-
3091-#include "xcursor_loader.h"
3092-
3093-#include "mir/graphics/cursor_image.h"
3094-#include <mir_toolkit/cursors.h>
3095-
3096-#include <fstream>
3097-
3098-using namespace mir::examples;
3099-using namespace mir::geometry;
3100-
3101-namespace
3102-{
3103-auto const cursor_names = {
3104- mir_arrow_cursor_name,
3105- mir_busy_cursor_name,
3106- mir_caret_cursor_name,
3107- mir_default_cursor_name,
3108- mir_pointing_hand_cursor_name,
3109- mir_open_hand_cursor_name,
3110- mir_closed_hand_cursor_name,
3111- mir_horizontal_resize_cursor_name,
3112- mir_vertical_resize_cursor_name,
3113- mir_diagonal_resize_bottom_to_top_cursor_name,
3114- mir_diagonal_resize_top_to_bottom_cursor_name,
3115- mir_omnidirectional_resize_cursor_name,
3116- mir_vsplit_resize_cursor_name,
3117- mir_hsplit_resize_cursor_name,
3118- mir_crosshair_cursor_name };
3119-}
3120-
3121-
3122-int main(int argc, char const* argv[])
3123-try
3124-{
3125- if (argc != 2)
3126- {
3127- puts("Usage mir_cursor_theme_dump <cursor theme>\n");
3128- exit(-1);
3129- }
3130-
3131- auto const theme = argv[1];
3132- std::ofstream output(std::string{theme} + "-theme.h");
3133-
3134- output << "#include <initializer_list>\n"
3135- "\n"
3136- "namespace\n"
3137- "{\n"
3138- "struct CursorData\n"
3139- "{\n"
3140- " CursorData(char const* name, unsigned int hotspot_x, unsigned int hotspot_y, char const* pixel_data) :\n"
3141- " name(name), hotspot_x(hotspot_x), hotspot_y(hotspot_y), pixel_data(reinterpret_cast<unsigned char const*>(pixel_data)) {}\n"
3142- "\n"
3143- " unsigned int const width{" << mir::input::default_cursor_size.width.as_int() << "};\n"
3144- " unsigned int const height{" << mir::input::default_cursor_size.height.as_int() << "};\n"
3145- " char const* const name;\n"
3146- " unsigned int const hotspot_x;\n"
3147- " unsigned int const hotspot_y;\n"
3148- " unsigned char const* const pixel_data;\n"
3149- "};\n"
3150- "auto const cursor_data = {\n";
3151-
3152- auto const buffer_size = 4*mir::input::default_cursor_size.height.as_int()*mir::input::default_cursor_size.height.as_int();
3153-
3154- auto const xcursor_loader = std::make_shared<XCursorLoader>(theme);
3155-
3156- for (auto cursor : cursor_names)
3157- {
3158- if (auto const image = xcursor_loader->image(cursor, mir::input::default_cursor_size))
3159- {
3160- printf("Have image for %s:%s\n", theme, cursor);
3161-
3162- auto const hotspot = image->hotspot();
3163- auto const argb_8888 = static_cast<uint8_t const*>(image->as_argb_8888());
3164-
3165- output << "CursorData{\"" << cursor << "\", " << hotspot.dx.as_int() << ", " << hotspot.dy.as_int() << ",\n";
3166-
3167- int chars = 0;
3168-
3169- output << std::oct << " \"";
3170-
3171- for (auto pbyte = argb_8888; pbyte != argb_8888 + buffer_size; ++pbyte)
3172- {
3173- auto step = (*pbyte < 010) ? 2 : (*pbyte < 0100) ? 3 : 4;
3174-
3175- if ((chars += step) > 80)
3176- {
3177- output << "\"\n \"";
3178- chars = step;
3179- }
3180-
3181- output << '\\' << static_cast<unsigned>(*pbyte);
3182- }
3183-
3184- output << "\"\n";
3185-
3186- output << "},\n";
3187- }
3188- else
3189- {
3190- printf("** WARNING ** No image for %s:%s\n", theme, cursor);
3191- }
3192- }
3193- output << "};\n";
3194- output << "}\n";
3195-}
3196-catch (std::exception const& error)
3197-{
3198- printf("** ERROR **: %s", error.what());
3199-}
3200\ No newline at end of file
3201
3202=== modified file 'examples/cursors_demo_client.c'
3203--- examples/cursors_demo_client.c 2017-05-08 03:04:26 +0000
3204+++ examples/cursors_demo_client.c 2017-10-08 13:37:01 +0000
3205@@ -2,7 +2,7 @@
3206 * Copyright © 2014 Canonical LTD
3207 *
3208 * This program is free software: you can redistribute it and/or modify
3209- * it under the terms of the GNU General Public License version 3 as
3210+ * it under the terms of the GNU General Public License version 2 or 3 as
3211 * published by the Free Software Foundation.
3212 *
3213 * This program is distributed in the hope that it will be useful,
3214
3215=== modified file 'examples/demo_client_display_config.c'
3216--- examples/demo_client_display_config.c 2017-05-08 03:04:26 +0000
3217+++ examples/demo_client_display_config.c 2017-10-08 13:37:01 +0000
3218@@ -1,10 +1,10 @@
3219 /*
3220 * Client-side display configuration demo.
3221 *
3222- * Copyright © 2013 Canonical Ltd.
3223+ * Copyright © 2013, 2017 Canonical Ltd.
3224 *
3225 * This program is free software: you can redistribute it and/or modify
3226- * it under the terms of the GNU General Public License version 3 as
3227+ * it under the terms of the GNU General Public License version 2 or 3 as
3228 * published by the Free Software Foundation.
3229 *
3230 * This program is distributed in the hope that it will be useful,
3231@@ -37,7 +37,11 @@
3232 configuration_mode_clone,
3233 configuration_mode_horizontal,
3234 configuration_mode_vertical,
3235- configuration_mode_single
3236+ configuration_mode_single,
3237+ configuration_mode_left,
3238+ configuration_mode_right,
3239+ configuration_mode_up,
3240+ configuration_mode_down,
3241 } ConfigurationMode;
3242
3243 struct ClientContext
3244@@ -49,9 +53,13 @@
3245 volatile sig_atomic_t reconfigure;
3246 };
3247
3248-static void print_current_configuration(MirConnection *connection)
3249+static MirDisplayConfig *conf = NULL;
3250+
3251+static void print_current_configuration()
3252 {
3253- MirDisplayConfig *conf = mir_connection_create_display_configuration(connection);
3254+ if (!conf)
3255+ return;
3256+
3257 size_t num_outputs = mir_display_config_get_num_outputs(conf);
3258
3259 for (uint32_t i = 0; i < num_outputs; i++)
3260@@ -64,8 +72,8 @@
3261 bool connected = mir_output_get_connection_state(output) ==
3262 mir_output_connection_state_connected;
3263
3264- printf("Output id: %d connected: %d used: %d position_x: %d position_y: %d",
3265- id, connected, used, position_x, position_y);
3266+ printf("Output id: %d connected: %d used: %d position_x: %d position_y: %d orientation: %d",
3267+ id, connected, used, position_x, position_y, mir_output_get_orientation(output));
3268
3269 MirOutputMode const* current = mir_output_get_current_mode(output);
3270 if (current)
3271@@ -80,8 +88,6 @@
3272 printf("\n");
3273 }
3274 }
3275-
3276- mir_display_config_release(conf);
3277 }
3278
3279 static int apply_configuration(MirConnection *connection, MirDisplayConfig *conf)
3280@@ -208,31 +214,67 @@
3281 }
3282 }
3283
3284+static void orient_display(MirDisplayConfig *conf, MirOrientation orientation)
3285+{
3286+ size_t num_outputs = mir_display_config_get_num_outputs(conf);
3287+
3288+ for (size_t i = 0; i < num_outputs; i++)
3289+ {
3290+ MirOutput *output = mir_display_config_get_mutable_output(conf, i);
3291+ mir_output_set_orientation(output, orientation);
3292+ }
3293+}
3294+
3295 static void configure_display(struct ClientContext *context, ConfigurationMode mode,
3296 int mode_data)
3297 {
3298- MirDisplayConfig *conf =
3299- mir_connection_create_display_configuration(context->connection);
3300+ if (!conf)
3301+ conf = mir_connection_create_display_configuration(context->connection);
3302
3303- if (mode == configuration_mode_clone)
3304+ switch (mode)
3305 {
3306+ case configuration_mode_clone:
3307 configure_display_clone(conf);
3308 printf("Applying clone configuration: ");
3309- }
3310- else if (mode == configuration_mode_vertical)
3311- {
3312+ break;
3313+
3314+ case configuration_mode_vertical:
3315 configure_display_vertical(conf);
3316 printf("Applying vertical configuration: ");
3317- }
3318- else if (mode == configuration_mode_horizontal)
3319- {
3320+ break;
3321+
3322+ case configuration_mode_horizontal:
3323 configure_display_horizontal(conf);
3324 printf("Applying horizontal configuration: ");
3325- }
3326- else if (mode == configuration_mode_single)
3327- {
3328+ break;
3329+
3330+ case configuration_mode_single:
3331 configure_display_single(conf, mode_data);
3332 printf("Applying single configuration for output %d: ", mode_data);
3333+ break;
3334+
3335+ case configuration_mode_left:
3336+ orient_display(conf, mir_orientation_left);
3337+ printf("Applying orientation left: ");
3338+ break;
3339+
3340+ case configuration_mode_right:
3341+ orient_display(conf, mir_orientation_right);
3342+ printf("Applying orientation right: ");
3343+ break;
3344+
3345+ case configuration_mode_up:
3346+ orient_display(conf, mir_orientation_inverted);
3347+ printf("Applying orientation up: ");
3348+ break;
3349+
3350+ case configuration_mode_down:
3351+ orient_display(conf, mir_orientation_normal);
3352+ printf("Applying orientation down: ");
3353+ break;
3354+
3355+ default:
3356+ break;
3357 }
3358
3359 if (apply_configuration(context->connection, conf))
3360@@ -240,22 +282,33 @@
3361 context->mode = mode;
3362 context->mode_data = mode_data;
3363 }
3364-
3365- mir_display_config_release(conf);
3366 }
3367
3368 static void display_change_callback(MirConnection *connection, void *context)
3369 {
3370- (void)context;
3371-
3372 printf("=== Display configuration changed === \n");
3373
3374- print_current_configuration(connection);
3375+ if (conf)
3376+ mir_display_config_release(conf);
3377+
3378+ conf = mir_connection_create_display_configuration(connection);
3379+
3380+ print_current_configuration();
3381
3382 struct ClientContext *ctx = (struct ClientContext*) context;
3383 ctx->reconfigure = 1;
3384 }
3385
3386+static void apply_to_base_configuration(MirConnection *connection)
3387+{
3388+ if (!conf)
3389+ return;
3390+
3391+ mir_connection_preview_base_display_configuration(connection, conf, 2);
3392+ puts("Applying to base configuration");
3393+ mir_connection_confirm_base_display_configuration(connection, conf);
3394+}
3395+
3396 static void handle_keyboard_event(struct ClientContext *ctx, MirKeyboardEvent const* event)
3397 {
3398 if (mir_keyboard_event_action(event) != mir_keyboard_action_up)
3399@@ -271,6 +324,9 @@
3400
3401 switch (key_code)
3402 {
3403+ case XKB_KEY_a:
3404+ apply_to_base_configuration(ctx->connection);
3405+ break;
3406 case XKB_KEY_q:
3407 ctx->running = 0;
3408 break;
3409@@ -284,7 +340,21 @@
3410 configure_display(ctx, configuration_mode_vertical, 0);
3411 break;
3412 case XKB_KEY_p:
3413- print_current_configuration(ctx->connection);
3414+ if (!conf)
3415+ conf = mir_connection_create_display_configuration(ctx->connection);
3416+ print_current_configuration();
3417+ break;
3418+ case XKB_KEY_Left:
3419+ configure_display(ctx, configuration_mode_right, 0);
3420+ break;
3421+ case XKB_KEY_Up:
3422+ configure_display(ctx, configuration_mode_up, 0);
3423+ break;
3424+ case XKB_KEY_Right:
3425+ configure_display(ctx, configuration_mode_left, 0);
3426+ break;
3427+ case XKB_KEY_Down:
3428+ configure_display(ctx, configuration_mode_down, 0);
3429 break;
3430 }
3431 }
3432@@ -292,15 +362,16 @@
3433 static void event_callback(
3434 MirWindow* surface, MirEvent const* event, void* context)
3435 {
3436- (void) surface;
3437+ mir_eglapp_handle_event(surface, event, context);
3438+
3439 struct ClientContext *ctx = (struct ClientContext*) context;
3440-
3441+
3442 if (mir_event_get_type(event) != mir_event_type_input)
3443 return;
3444 MirInputEvent const* input_event = mir_event_get_input_event(event);
3445 if (mir_input_event_get_type(input_event) != mir_input_event_type_key)
3446 return;
3447-
3448+
3449 handle_keyboard_event(ctx, mir_input_event_get_keyboard_event(input_event));
3450 }
3451
3452@@ -317,7 +388,9 @@
3453 " h: arrange outputs horizontally in the virtual space\n"
3454 " v: arrange outputs vertically in the virtual space\n"
3455 " 1-9: enable only the Nth connected output (in the order returned by the hardware)\n"
3456- " p: print current display configuration\n");
3457+ " Arrows: orient display (sets \"down\" direction)\n"
3458+ " p: print current display configuration\n"
3459+ " a: apply current display configuration globally\n");
3460
3461 return 1;
3462 }
3463@@ -351,6 +424,9 @@
3464 }
3465 }
3466
3467+ if (conf)
3468+ mir_display_config_release(conf);
3469+
3470 mir_eglapp_cleanup();
3471
3472 return 0;
3473
3474=== modified file 'examples/eglapp.c'
3475--- examples/eglapp.c 2017-06-30 11:35:46 +0000
3476+++ examples/eglapp.c 2017-10-08 13:37:01 +0000
3477@@ -2,7 +2,7 @@
3478 * Copyright © 2013 Canonical Ltd.
3479 *
3480 * This program is free software: you can redistribute it and/or modify
3481- * it under the terms of the GNU General Public License version 3 as
3482+ * it under the terms of the GNU General Public License version 2 or 3 as
3483 * published by the Free Software Foundation.
3484 *
3485 * This program is distributed in the hope that it will be useful,
3486
3487=== modified file 'examples/eglapp.h'
3488--- examples/eglapp.h 2017-06-06 15:41:28 +0000
3489+++ examples/eglapp.h 2017-10-08 13:37:01 +0000
3490@@ -2,7 +2,7 @@
3491 * Copyright © 2013 Canonical Ltd.
3492 *
3493 * This program is free software: you can redistribute it and/or modify
3494- * it under the terms of the GNU General Public License version 3 as
3495+ * it under the terms of the GNU General Public License version 2 or 3 as
3496 * published by the Free Software Foundation.
3497 *
3498 * This program is distributed in the hope that it will be useful,
3499
3500=== modified file 'examples/eglcounter.cpp'
3501--- examples/eglcounter.cpp 2017-05-08 03:04:26 +0000
3502+++ examples/eglcounter.cpp 2017-10-08 13:37:01 +0000
3503@@ -2,7 +2,7 @@
3504 * Copyright © 2014 Canonical Ltd.
3505 *
3506 * This program is free software: you can redistribute it and/or modify
3507- * it under the terms of the GNU General Public License version 3 as
3508+ * it under the terms of the GNU General Public License version 2 or 3 as
3509 * published by the Free Software Foundation.
3510 *
3511 * This program is distributed in the hope that it will be useful,
3512
3513=== modified file 'examples/eglflash.c'
3514--- examples/eglflash.c 2017-05-08 03:04:26 +0000
3515+++ examples/eglflash.c 2017-10-08 13:37:01 +0000
3516@@ -4,7 +4,7 @@
3517 * Copyright © 2013 Canonical Ltd.
3518 *
3519 * This program is free software: you can redistribute it and/or modify
3520- * it under the terms of the GNU General Public License version 3 as
3521+ * it under the terms of the GNU General Public License version 2 or 3 as
3522 * published by the Free Software Foundation.
3523 *
3524 * This program is distributed in the hope that it will be useful,
3525
3526=== modified file 'examples/eglplasma.c'
3527--- examples/eglplasma.c 2017-05-08 03:04:26 +0000
3528+++ examples/eglplasma.c 2017-10-08 13:37:01 +0000
3529@@ -2,7 +2,7 @@
3530 * Copyright © 2013 Canonical Ltd.
3531 *
3532 * This program is free software: you can redistribute it and/or modify
3533- * it under the terms of the GNU General Public License version 3 as
3534+ * it under the terms of the GNU General Public License version 2 or 3 as
3535 * published by the Free Software Foundation.
3536 *
3537 * This program is distributed in the hope that it will be useful,
3538
3539=== modified file 'examples/eglsquare.cpp'
3540--- examples/eglsquare.cpp 2017-06-06 13:55:51 +0000
3541+++ examples/eglsquare.cpp 2017-10-08 13:37:01 +0000
3542@@ -2,7 +2,7 @@
3543 * Copyright © 2015 Canonical Ltd.
3544 *
3545 * This program is free software: you can redistribute it and/or modify
3546- * it under the terms of the GNU General Public License version 3 as
3547+ * it under the terms of the GNU General Public License version 2 or 3 as
3548 * published by the Free Software Foundation.
3549 *
3550 * This program is distributed in the hope that it will be useful,
3551@@ -169,84 +169,89 @@
3552
3553 pos = Pos{x, y};
3554 cv.notify_one();
3555+ break;
3556 }
3557
3558+ case mir_event_type_close_window:
3559+ kill(getpid(), SIGTERM);
3560+ break;
3561+
3562 default:;
3563 }
3564- }
3565-
3566- SquareRenderingSurface(SquareRenderingSurface const&) = delete;
3567- SquareRenderingSurface& operator=(SquareRenderingSurface const&) = delete;
3568- private:
3569- struct OutputDimensions
3570- {
3571- unsigned int const width;
3572- unsigned int const height;
3573- } const dimensions;
3574-
3575- me::Context context;
3576- me::NormalWindow window;
3577- RenderProgram program;
3578-
3579- OutputDimensions active_output_dimensions(MirConnection* connection)
3580- {
3581- unsigned int width{0};
3582- unsigned int height{0};
3583- auto display_config = mir_connection_create_display_configuration(connection);
3584- auto num_outputs = mir_display_config_get_num_outputs(display_config);
3585- for (auto i = 0; i < num_outputs; i++)
3586- {
3587- auto output = mir_display_config_get_output(display_config, i);
3588- auto state = mir_output_get_connection_state(output);
3589- if (state == mir_output_connection_state_connected && mir_output_is_enabled(output))
3590- {
3591- auto mode = mir_output_get_current_mode(output);
3592- width = mir_output_mode_get_width(mode);
3593- height = mir_output_mode_get_height(mode);
3594- break;
3595- }
3596- }
3597- mir_display_config_release(display_config);
3598- if (width == 0 || height == 0)
3599- throw std::logic_error("could not determine display size");
3600- return {width, height};
3601- }
3602-
3603- static void on_event(MirWindow*, const MirEvent *event, void *context)
3604- {
3605- auto surface = reinterpret_cast<SquareRenderingSurface*>(context);
3606- if (surface) surface->on_event(event);
3607- }
3608-
3609- private:
3610- void do_work()
3611- {
3612- std::unique_lock<decltype(mutex)> lock(mutex);
3613-
3614- while (true)
3615- {
3616- cv.wait(lock);
3617-
3618- if (!running) return;
3619-
3620- Pos pos = this->pos;
3621-
3622- context.make_current();
3623- program.draw(
3624- pos.x/static_cast<float>(dimensions.width)*2.0 - 1.0,
3625- pos.y/static_cast<float>(dimensions.height)*-2.0 + 1.0);
3626- context.swapbuffers();
3627- }
3628- }
3629-
3630- struct Pos { float x; float y; };
3631- std::atomic<Pos> pos;
3632-
3633- std::thread worker;
3634- std::condition_variable cv;
3635- std::mutex mutex;
3636- bool running{true};
3637- };
3638+ }
3639+
3640+ SquareRenderingSurface(SquareRenderingSurface const&) = delete;
3641+ SquareRenderingSurface& operator=(SquareRenderingSurface const&) = delete;
3642+private:
3643+ struct OutputDimensions
3644+ {
3645+ unsigned int const width;
3646+ unsigned int const height;
3647+ } const dimensions;
3648+
3649+ me::Context context;
3650+ me::NormalWindow window;
3651+ RenderProgram program;
3652+
3653+ OutputDimensions active_output_dimensions(MirConnection* connection)
3654+ {
3655+ unsigned int width{0};
3656+ unsigned int height{0};
3657+ auto display_config = mir_connection_create_display_configuration(connection);
3658+ auto num_outputs = mir_display_config_get_num_outputs(display_config);
3659+ for (auto i = 0; i < num_outputs; i++)
3660+ {
3661+ auto output = mir_display_config_get_output(display_config, i);
3662+ auto state = mir_output_get_connection_state(output);
3663+ if (state == mir_output_connection_state_connected && mir_output_is_enabled(output))
3664+ {
3665+ auto mode = mir_output_get_current_mode(output);
3666+ width = mir_output_mode_get_width(mode);
3667+ height = mir_output_mode_get_height(mode);
3668+ break;
3669+ }
3670+ }
3671+ mir_display_config_release(display_config);
3672+ if (width == 0 || height == 0)
3673+ throw std::logic_error("could not determine display size");
3674+ return {width, height};
3675+ }
3676+
3677+ static void on_event(MirWindow*, const MirEvent *event, void *context)
3678+ {
3679+ auto surface = reinterpret_cast<SquareRenderingSurface*>(context);
3680+ if (surface) surface->on_event(event);
3681+ }
3682+
3683+private:
3684+ void do_work()
3685+ {
3686+ std::unique_lock<decltype(mutex)> lock(mutex);
3687+
3688+ while (true)
3689+ {
3690+ cv.wait(lock);
3691+
3692+ if (!running) return;
3693+
3694+ Pos pos = this->pos;
3695+
3696+ context.make_current();
3697+ program.draw(
3698+ pos.x/static_cast<float>(dimensions.width)*2.0 - 1.0,
3699+ pos.y/static_cast<float>(dimensions.height)*-2.0 + 1.0);
3700+ context.swapbuffers();
3701+ }
3702+ }
3703+
3704+ struct Pos { float x; float y; };
3705+ std::atomic<Pos> pos;
3706+
3707+ std::thread worker;
3708+ std::condition_variable cv;
3709+ std::mutex mutex;
3710+ bool running{true};
3711+};
3712 }
3713
3714 int main(int argc, char *argv[])
3715
3716=== modified file 'examples/eglstateswitcher.c'
3717--- examples/eglstateswitcher.c 2017-05-08 03:04:26 +0000
3718+++ examples/eglstateswitcher.c 2017-10-08 13:37:01 +0000
3719@@ -4,7 +4,7 @@
3720 * Copyright © 2014 Canonical Ltd.
3721 *
3722 * This program is free software: you can redistribute it and/or modify
3723- * it under the terms of the GNU General Public License version 3 as
3724+ * it under the terms of the GNU General Public License version 2 or 3 as
3725 * published by the Free Software Foundation.
3726 *
3727 * This program is distributed in the hope that it will be useful,
3728
3729=== modified file 'examples/egltriangle.c'
3730--- examples/egltriangle.c 2017-05-08 03:04:26 +0000
3731+++ examples/egltriangle.c 2017-10-08 13:37:01 +0000
3732@@ -2,7 +2,7 @@
3733 * Copyright © 2013 Canonical Ltd.
3734 *
3735 * This program is free software: you can redistribute it and/or modify
3736- * it under the terms of the GNU General Public License version 3 as
3737+ * it under the terms of the GNU General Public License version 2 or 3 as
3738 * published by the Free Software Foundation.
3739 *
3740 * This program is distributed in the hope that it will be useful,
3741
3742=== modified file 'examples/fingerpaint.c'
3743--- examples/fingerpaint.c 2017-05-19 13:49:04 +0000
3744+++ examples/fingerpaint.c 2017-10-08 13:37:01 +0000
3745@@ -2,7 +2,7 @@
3746 * Copyright © 2013 Canonical Ltd.
3747 *
3748 * This program is free software: you can redistribute it and/or modify
3749- * it under the terms of the GNU General Public License version 3 as
3750+ * it under the terms of the GNU General Public License version 2 or 3 as
3751 * published by the Free Software Foundation.
3752 *
3753 * This program is distributed in the hope that it will be useful,
3754
3755=== modified file 'examples/flicker.c'
3756--- examples/flicker.c 2017-06-06 09:02:33 +0000
3757+++ examples/flicker.c 2017-10-08 13:37:01 +0000
3758@@ -2,7 +2,7 @@
3759 * Copyright © 2012 Canonical Ltd.
3760 *
3761 * This program is free software: you can redistribute it and/or modify
3762- * it under the terms of the GNU General Public License version 3 as
3763+ * it under the terms of the GNU General Public License version 2 or 3 as
3764 * published by the Free Software Foundation.
3765 *
3766 * This program is distributed in the hope that it will be useful,
3767
3768=== modified file 'examples/glog_logger.cpp'
3769--- examples/glog_logger.cpp 2015-02-22 07:46:25 +0000
3770+++ examples/glog_logger.cpp 2017-10-08 13:37:01 +0000
3771@@ -2,7 +2,7 @@
3772 * Copyright © 2013 Canonical Ltd.
3773 *
3774 * This program is free software: you can redistribute it and/or modify
3775- * it under the terms of the GNU General Public License version 3 as
3776+ * it under the terms of the GNU General Public License version 2 or 3 as
3777 * published by the Free Software Foundation.
3778 *
3779 * This program is distributed in the hope that it will be useful,
3780
3781=== modified file 'examples/glog_logger.h'
3782--- examples/glog_logger.h 2015-02-22 07:46:25 +0000
3783+++ examples/glog_logger.h 2017-10-08 13:37:01 +0000
3784@@ -2,7 +2,7 @@
3785 * Copyright © 2013 Canonical Ltd.
3786 *
3787 * This program is free software: you can redistribute it and/or modify
3788- * it under the terms of the GNU General Public License version 3 as
3789+ * it under the terms of the GNU General Public License version 2 or 3 as
3790 * published by the Free Software Foundation.
3791 *
3792 * This program is distributed in the hope that it will be useful,
3793
3794=== modified file 'examples/graphics.h'
3795--- examples/graphics.h 2013-04-24 05:22:20 +0000
3796+++ examples/graphics.h 2017-10-08 13:37:01 +0000
3797@@ -2,7 +2,7 @@
3798 * Copyright © 2012 Canonical Ltd.
3799 *
3800 * This program is free software: you can redistribute it and/or modify it
3801- * under the terms of the GNU General Public License version 3,
3802+ * under the terms of the GNU General Public License version 2 or 3,
3803 * as published by the Free Software Foundation.
3804 *
3805 * This program is distributed in the hope that it will be useful,
3806
3807=== modified file 'examples/graphics_utils.cpp'
3808--- examples/graphics_utils.cpp 2017-05-08 03:04:26 +0000
3809+++ examples/graphics_utils.cpp 2017-10-08 13:37:01 +0000
3810@@ -2,7 +2,7 @@
3811 * Copyright © 2012 Canonical Ltd.
3812 *
3813 * This program is free software: you can redistribute it and/or modify it
3814- * under the terms of the GNU General Public License version 3,
3815+ * under the terms of the GNU General Public License version 2 or 3,
3816 * as published by the Free Software Foundation.
3817 *
3818 * This program is distributed in the hope that it will be useful,
3819
3820=== modified file 'examples/image_renderer.cpp'
3821--- examples/image_renderer.cpp 2017-05-08 03:04:26 +0000
3822+++ examples/image_renderer.cpp 2017-10-08 13:37:01 +0000
3823@@ -2,7 +2,7 @@
3824 * Copyright © 2012 Canonical Ltd.
3825 *
3826 * This program is free software: you can redistribute it and/or modify
3827- * it under the terms of the GNU General Public License version 3 as
3828+ * it under the terms of the GNU General Public License version 2 or 3 as
3829 * published by the Free Software Foundation.
3830 *
3831 * This program is distributed in the hope that it will be useful,
3832
3833=== modified file 'examples/image_renderer.h'
3834--- examples/image_renderer.h 2015-02-22 07:46:25 +0000
3835+++ examples/image_renderer.h 2017-10-08 13:37:01 +0000
3836@@ -2,7 +2,7 @@
3837 * Copyright © 2012 Canonical Ltd.
3838 *
3839 * This program is free software: you can redistribute it and/or modify
3840- * it under the terms of the GNU General Public License version 3 as
3841+ * it under the terms of the GNU General Public License version 2 or 3 as
3842 * published by the Free Software Foundation.
3843 *
3844 * This program is distributed in the hope that it will be useful,
3845
3846=== modified file 'examples/input_shapes.cpp'
3847--- examples/input_shapes.cpp 2017-05-23 10:51:47 +0000
3848+++ examples/input_shapes.cpp 2017-10-08 13:37:01 +0000
3849@@ -2,7 +2,7 @@
3850 * Copyright © 2015 Canonical Ltd.
3851 *
3852 * This program is free software: you can redistribute it and/or modify
3853- * it under the terms of the GNU General Public License version 3 as
3854+ * it under the terms of the GNU General Public License version 2 or 3 as
3855 * published by the Free Software Foundation.
3856 *
3857 * This program is distributed in the hope that it will be useful,
3858
3859=== modified file 'examples/mir_demo_server_loader.cpp'
3860--- examples/mir_demo_server_loader.cpp 2017-05-08 03:04:26 +0000
3861+++ examples/mir_demo_server_loader.cpp 2017-10-08 13:37:01 +0000
3862@@ -2,7 +2,7 @@
3863 * Copyright © 2015 Canonical Ltd.
3864 *
3865 * This program is free software: you can redistribute it and/or modify
3866- * it under the terms of the GNU General Public License version 3 as
3867+ * it under the terms of the GNU General Public License version 2 or 3 as
3868 * published by the Free Software Foundation.
3869 *
3870 * This program is distributed in the hope that it will be useful,
3871
3872=== modified file 'examples/mir_image.h'
3873--- examples/mir_image.h 2013-04-24 05:22:20 +0000
3874+++ examples/mir_image.h 2017-10-08 13:37:01 +0000
3875@@ -2,7 +2,7 @@
3876 * Copyright © 2012 Canonical Ltd.
3877 *
3878 * This program is free software: you can redistribute it and/or modify it
3879- * under the terms of the GNU General Public License version 3,
3880+ * under the terms of the GNU General Public License version 2 or 3,
3881 * as published by the Free Software Foundation.
3882 *
3883 * This program is distributed in the hope that it will be useful,
3884
3885=== added directory 'examples/miral-kiosk'
3886=== added file 'examples/miral-kiosk/CMakeLists.txt'
3887--- examples/miral-kiosk/CMakeLists.txt 1970-01-01 00:00:00 +0000
3888+++ examples/miral-kiosk/CMakeLists.txt 2017-10-08 13:37:01 +0000
3889@@ -0,0 +1,12 @@
3890+include_directories(
3891+ ${PROJECT_SOURCE_DIR}/include/miral
3892+ ${PROJECT_SOURCE_DIR}/include/client
3893+)
3894+
3895+mir_add_wrapped_executable(miral-kiosk
3896+ kiosk_main.cpp
3897+ kiosk_window_manager.cpp kiosk_window_manager.h
3898+ sw_splash.cpp sw_splash.h
3899+)
3900+
3901+target_link_libraries(miral-kiosk miral)
3902
3903=== added file 'examples/miral-kiosk/kiosk_main.cpp'
3904--- examples/miral-kiosk/kiosk_main.cpp 1970-01-01 00:00:00 +0000
3905+++ examples/miral-kiosk/kiosk_main.cpp 2017-10-08 13:37:01 +0000
3906@@ -0,0 +1,94 @@
3907+/*
3908+ * Copyright © 2016 Canonical Ltd.
3909+ *
3910+ * This program is free software: you can redistribute it and/or modify
3911+ * under the terms of the GNU General Public License version 2 or 3 as as
3912+ * published by the Free Software Foundation.
3913+ *
3914+ * This program is distributed in the hope that it will be useful,
3915+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3916+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3917+ * GNU General Public License for more details.
3918+ *
3919+ * You should have received a copy of the GNU General Public License
3920+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
3921+ *
3922+ * Authored by: Alan Griffiths <alan@octopull.co.uk>
3923+ */
3924+
3925+#include "kiosk_window_manager.h"
3926+
3927+#include <miral/runner.h>
3928+#include <miral/application_authorizer.h>
3929+#include <miral/command_line_option.h>
3930+#include <miral/keymap.h>
3931+#include <miral/set_window_management_policy.h>
3932+#include <miral/internal_client.h>
3933+
3934+#include <unistd.h>
3935+#include <atomic>
3936+
3937+namespace
3938+{
3939+struct KioskAuthorizer : miral::ApplicationAuthorizer
3940+{
3941+ KioskAuthorizer(SwSplash const& splash) : splash{splash}{}
3942+
3943+ virtual bool connection_is_allowed(miral::ApplicationCredentials const& creds) override
3944+ {
3945+ // Allow internal applications and (optionally) only ones that start "immediately"
3946+ // (For the sake of an example "immediately" means while the spash is running)
3947+ return getpid() == creds.pid() || !startup_only || splash.session().lock();
3948+ }
3949+
3950+ virtual bool configure_display_is_allowed(miral::ApplicationCredentials const& /*creds*/) override
3951+ {
3952+ return false;
3953+ }
3954+
3955+ virtual bool set_base_display_configuration_is_allowed(miral::ApplicationCredentials const& /*creds*/) override
3956+ {
3957+ return false;
3958+ }
3959+
3960+ virtual bool screencast_is_allowed(miral::ApplicationCredentials const& /*creds*/) override
3961+ {
3962+ return true;
3963+ }
3964+
3965+ virtual bool prompt_session_is_allowed(miral::ApplicationCredentials const& /*creds*/) override
3966+ {
3967+ return false;
3968+ }
3969+
3970+ static std::atomic<bool> startup_only;
3971+
3972+ SwSplash splash;
3973+};
3974+
3975+std::atomic<bool> KioskAuthorizer::startup_only{false};
3976+}
3977+
3978+int main(int argc, char const* argv[])
3979+{
3980+ using namespace miral;
3981+
3982+ SwSplash splash;
3983+
3984+ CommandLineOption startup_only{
3985+ [&](bool startup_only) {KioskAuthorizer::startup_only = startup_only; },
3986+ "kiosk-startup-apps-only",
3987+ "Only allow applications to connect during startup",
3988+ KioskAuthorizer::startup_only};
3989+
3990+ return MirRunner{argc, argv}.run_with(
3991+ {
3992+ CommandLineOption{[&](std::string const& ) { },
3993+ "desktop_file_hint", "Ignored for Unity8 compatability", "miral-shell.desktop"},
3994+ set_window_management_policy<KioskWindowManagerPolicy>(splash),
3995+ SetApplicationAuthorizer<KioskAuthorizer>{splash},
3996+ Keymap{},
3997+ startup_only,
3998+ StartupInternalClient{"Intro", splash}
3999+ });
4000+}
4001
4002=== added file 'examples/miral-kiosk/kiosk_window_manager.cpp'
4003--- examples/miral-kiosk/kiosk_window_manager.cpp 1970-01-01 00:00:00 +0000
4004+++ examples/miral-kiosk/kiosk_window_manager.cpp 2017-10-08 13:37:01 +0000
4005@@ -0,0 +1,164 @@
4006+/*
4007+ * Copyright © 2016-2017 Canonical Ltd.
4008+ *
4009+ * This program is free software: you can redistribute it and/or modify it
4010+ * under the terms of the GNU General Public License version 2 or 3 as
4011+ * published by the Free Software Foundation.
4012+ *
4013+ * This program is distributed in the hope that it will be useful,
4014+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4015+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4016+ * GNU General Public License for more details.
4017+ *
4018+ * You should have received a copy of the GNU General Public License
4019+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4020+ *
4021+ * Authored By: Alan Griffiths <alan@octopull.co.uk>
4022+ */
4023+
4024+#include "kiosk_window_manager.h"
4025+
4026+#include <miral/application_info.h>
4027+#include <miral/window_info.h>
4028+#include <miral/window_manager_tools.h>
4029+
4030+#include <linux/input.h>
4031+
4032+namespace ms = mir::scene;
4033+using namespace miral;
4034+
4035+KioskWindowManagerPolicy::KioskWindowManagerPolicy(WindowManagerTools const& tools, SwSplash const& splash) :
4036+ CanonicalWindowManagerPolicy{tools},
4037+ splash{splash}
4038+{
4039+}
4040+
4041+bool KioskWindowManagerPolicy::handle_keyboard_event(MirKeyboardEvent const* event)
4042+{
4043+ auto const action = mir_keyboard_event_action(event);
4044+ auto const scan_code = mir_keyboard_event_scan_code(event);
4045+ auto const modifiers = mir_keyboard_event_modifiers(event) & modifier_mask;
4046+
4047+ if (action == mir_keyboard_action_down &&
4048+ modifiers == mir_input_event_modifier_alt &&
4049+ scan_code == KEY_TAB)
4050+ {
4051+ tools.focus_next_application();
4052+
4053+ return true;
4054+ }
4055+ else if (action == mir_keyboard_action_down &&
4056+ modifiers == mir_input_event_modifier_alt &&
4057+ scan_code == KEY_GRAVE)
4058+ {
4059+ tools.focus_next_within_application();
4060+
4061+ return true;
4062+ }
4063+ else if (action == mir_keyboard_action_down &&
4064+ modifiers == (mir_input_event_modifier_alt | mir_input_event_modifier_shift) &&
4065+ scan_code == KEY_GRAVE)
4066+ {
4067+ tools.focus_prev_within_application();
4068+
4069+ return true;
4070+ }
4071+ else if (action == mir_keyboard_action_down && scan_code == KEY_F4)
4072+ {
4073+ switch (modifiers & modifier_mask)
4074+ {
4075+ case mir_input_event_modifier_alt:
4076+ tools.ask_client_to_close(tools.active_window());;
4077+ return true;
4078+
4079+ default:
4080+ break;
4081+ }
4082+ }
4083+
4084+ return false;
4085+}
4086+
4087+bool KioskWindowManagerPolicy::handle_touch_event(MirTouchEvent const* event)
4088+{
4089+ auto const count = mir_touch_event_point_count(event);
4090+
4091+ long total_x = 0;
4092+ long total_y = 0;
4093+
4094+ for (auto i = 0U; i != count; ++i)
4095+ {
4096+ total_x += mir_touch_event_axis_value(event, i, mir_touch_axis_x);
4097+ total_y += mir_touch_event_axis_value(event, i, mir_touch_axis_y);
4098+ }
4099+
4100+ Point const cursor{total_x/count, total_y/count};
4101+
4102+ tools.select_active_window(tools.window_at(cursor));
4103+
4104+ return false;
4105+}
4106+
4107+bool KioskWindowManagerPolicy::handle_pointer_event(MirPointerEvent const* event)
4108+{
4109+ auto const action = mir_pointer_event_action(event);
4110+
4111+ Point const cursor{
4112+ mir_pointer_event_axis_value(event, mir_pointer_axis_x),
4113+ mir_pointer_event_axis_value(event, mir_pointer_axis_y)};
4114+
4115+ if (action == mir_pointer_action_button_down)
4116+ {
4117+ tools.select_active_window(tools.window_at(cursor));
4118+ }
4119+
4120+ return false;
4121+}
4122+
4123+void KioskWindowManagerPolicy::advise_focus_gained(WindowInfo const& info)
4124+{
4125+ CanonicalWindowManagerPolicy::advise_focus_gained(info);
4126+
4127+ if (auto session = splash.session().lock())
4128+ {
4129+ auto const& app_info = tools.info_for(session);
4130+
4131+ for (auto const& s : app_info.windows())
4132+ tools.raise_tree(s);
4133+ }
4134+}
4135+
4136+auto KioskWindowManagerPolicy::place_new_window(ApplicationInfo const& app_info, WindowSpecification const& request)
4137+-> WindowSpecification
4138+{
4139+ WindowSpecification specification = CanonicalWindowManagerPolicy::place_new_window(app_info, request);
4140+
4141+ if ((specification.type() == mir_window_type_normal || specification.type() == mir_window_type_freestyle) &&
4142+ (!specification.parent().is_set() || !specification.parent().value().lock()))
4143+ {
4144+ specification.state() = mir_window_state_maximized;
4145+ tools.place_and_size_for_state(specification, WindowInfo{});
4146+
4147+ if (!request.state().is_set() || request.state().value() != mir_window_state_restored)
4148+ specification.state() = request.state();
4149+ }
4150+
4151+ return specification;
4152+}
4153+
4154+void KioskWindowManagerPolicy::handle_modify_window(WindowInfo& window_info, WindowSpecification const& modifications)
4155+{
4156+ WindowSpecification specification = modifications;
4157+
4158+ if ((window_info.type() == mir_window_type_normal || window_info.type() == mir_window_type_freestyle) &&
4159+ !window_info.parent())
4160+ {
4161+ specification.state() = mir_window_state_maximized;
4162+ tools.place_and_size_for_state(specification, window_info);
4163+
4164+ if (!modifications.state().is_set() || modifications.state().value() != mir_window_state_restored)
4165+ specification.state() = modifications.state();
4166+ }
4167+
4168+ CanonicalWindowManagerPolicy::handle_modify_window(window_info, specification);
4169+}
4170
4171=== added file 'examples/miral-kiosk/kiosk_window_manager.h'
4172--- examples/miral-kiosk/kiosk_window_manager.h 1970-01-01 00:00:00 +0000
4173+++ examples/miral-kiosk/kiosk_window_manager.h 2017-10-08 13:37:01 +0000
4174@@ -0,0 +1,54 @@
4175+/*
4176+ * Copyright © 2016-2017 Canonical Ltd.
4177+ *
4178+ * This program is free software: you can redistribute it and/or modify it
4179+ * under the terms of the GNU General Public License version 2 or 3 as
4180+ * published by the Free Software Foundation.
4181+ *
4182+ * This program is distributed in the hope that it will be useful,
4183+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4184+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4185+ * GNU General Public License for more details.
4186+ *
4187+ * You should have received a copy of the GNU General Public License
4188+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4189+ *
4190+ * Authored By: Alan Griffiths <alan@octopull.co.uk>
4191+ */
4192+
4193+#ifndef MIRAL_KIOSK_WINDOW_MANAGER_H
4194+#define MIRAL_KIOSK_WINDOW_MANAGER_H
4195+
4196+#include "sw_splash.h"
4197+
4198+#include <miral/canonical_window_manager.h>
4199+
4200+using namespace mir::geometry;
4201+
4202+class KioskWindowManagerPolicy : public miral::CanonicalWindowManagerPolicy
4203+{
4204+public:
4205+ KioskWindowManagerPolicy(miral::WindowManagerTools const& tools, SwSplash const&);
4206+
4207+ auto place_new_window(miral::ApplicationInfo const& app_info, miral::WindowSpecification const& request)
4208+ -> miral::WindowSpecification override;
4209+
4210+ void advise_focus_gained(miral::WindowInfo const& info) override;
4211+
4212+ bool handle_keyboard_event(MirKeyboardEvent const* event) override;
4213+ bool handle_touch_event(MirTouchEvent const* event) override;
4214+ bool handle_pointer_event(MirPointerEvent const* event) override;
4215+ void handle_modify_window(miral::WindowInfo& window_info, miral::WindowSpecification const& modifications) override;
4216+
4217+private:
4218+ static const int modifier_mask =
4219+ mir_input_event_modifier_alt |
4220+ mir_input_event_modifier_shift |
4221+ mir_input_event_modifier_sym |
4222+ mir_input_event_modifier_ctrl |
4223+ mir_input_event_modifier_meta;
4224+
4225+ SwSplash const splash;
4226+};
4227+
4228+#endif /* MIRAL_KIOSK_WINDOW_MANAGER_H */
4229
4230=== added file 'examples/miral-kiosk/sw_splash.cpp'
4231--- examples/miral-kiosk/sw_splash.cpp 1970-01-01 00:00:00 +0000
4232+++ examples/miral-kiosk/sw_splash.cpp 2017-10-08 13:37:01 +0000
4233@@ -0,0 +1,173 @@
4234+/*
4235+ * Copyright © 2016 Canonical Ltd.
4236+ *
4237+ * This program is free software: you can redistribute it and/or modify it
4238+ * under the terms of the GNU General Public License version 2 or 3 as
4239+ * published by the Free Software Foundation.
4240+ *
4241+ * This program is distributed in the hope that it will be useful,
4242+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4243+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4244+ * GNU General Public License for more details.
4245+ *
4246+ * You should have received a copy of the GNU General Public License
4247+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4248+ *
4249+ * Authored by: Alan Griffiths <alan@octopull.co.uk>
4250+ */
4251+
4252+#include "sw_splash.h"
4253+
4254+#include <mir/client/display_config.h>
4255+#include <mir/client/surface.h>
4256+#include <mir/client/window.h>
4257+#include <mir/client/window_spec.h>
4258+
4259+#include <mir_toolkit/mir_buffer_stream.h>
4260+
4261+#include <chrono>
4262+#include <cstring>
4263+#include <thread>
4264+#include <mutex>
4265+
4266+namespace
4267+{
4268+MirPixelFormat find_8888_format(MirConnection* connection)
4269+{
4270+ unsigned int const num_formats = 32;
4271+ MirPixelFormat pixel_formats[num_formats];
4272+ unsigned int valid_formats;
4273+ mir_connection_get_available_surface_formats(connection, pixel_formats, num_formats, &valid_formats);
4274+
4275+ for (unsigned int i = 0; i < num_formats; ++i)
4276+ {
4277+ MirPixelFormat cur_pf = pixel_formats[i];
4278+ if (cur_pf == mir_pixel_format_abgr_8888 ||
4279+ cur_pf == mir_pixel_format_argb_8888)
4280+ {
4281+ return cur_pf;
4282+ }
4283+ }
4284+
4285+ for (unsigned int i = 0; i < num_formats; ++i)
4286+ {
4287+ MirPixelFormat cur_pf = pixel_formats[i];
4288+ if (cur_pf == mir_pixel_format_xbgr_8888 ||
4289+ cur_pf == mir_pixel_format_xrgb_8888)
4290+ {
4291+ return cur_pf;
4292+ }
4293+ }
4294+
4295+ return *pixel_formats;
4296+}
4297+
4298+auto create_window(MirConnection* connection, mir::client::Surface const& surface) -> mir::client::Window
4299+{
4300+ int id = 0;
4301+ int width = 0;
4302+ int height = 0;
4303+
4304+ mir::client::DisplayConfig{connection}.for_each_output([&](MirOutput const* output)
4305+ {
4306+ if (mir_output_get_connection_state(output) == mir_output_connection_state_connected &&
4307+ mir_output_is_enabled(output))
4308+ {
4309+ id = mir_output_get_id(output);
4310+
4311+ MirOutputMode const* mode = mir_output_get_current_mode(output);
4312+ width = mir_output_mode_get_width(mode);
4313+ height = mir_output_mode_get_height(mode);
4314+ }
4315+ });
4316+
4317+ return mir::client::WindowSpec::for_normal_window(connection, width, height)
4318+ .set_name("splash")
4319+ .set_fullscreen_on_output(id)
4320+ .add_surface(surface, width, height, 0, 0)
4321+ .create_window();
4322+}
4323+
4324+void render_pattern(MirGraphicsRegion *region, uint8_t pattern[])
4325+{
4326+ char *row = region->vaddr;
4327+
4328+ for (int j = 0; j < region->height; j++)
4329+ {
4330+ uint32_t *pixel = (uint32_t*)row;
4331+
4332+ for (int i = 0; i < region->width; i++)
4333+ memcpy(pixel+i, pattern, sizeof pixel[i]);
4334+
4335+ row += region->stride;
4336+ }
4337+}
4338+}
4339+
4340+struct SwSplash::Self
4341+{
4342+ std::mutex mutex;
4343+ std::weak_ptr<mir::scene::Session> session;
4344+};
4345+
4346+SwSplash::SwSplash() : self{std::make_shared<Self>()} {}
4347+
4348+SwSplash::~SwSplash() = default;
4349+
4350+void SwSplash::operator()(std::weak_ptr<mir::scene::Session> const& session)
4351+{
4352+ std::lock_guard<decltype(self->mutex)> lock{self->mutex};
4353+ self->session = session;
4354+}
4355+
4356+auto SwSplash::session() const -> std::weak_ptr<mir::scene::Session>
4357+{
4358+ std::lock_guard<decltype(self->mutex)> lock{self->mutex};
4359+ return self->session;
4360+}
4361+
4362+void SwSplash::operator()(MirConnection* connection)
4363+{
4364+ MirPixelFormat pixel_format = find_8888_format(connection);
4365+
4366+ uint8_t pattern[4] = { 0x14, 0x48, 0xDD, 0xFF };
4367+
4368+ switch(pixel_format)
4369+ {
4370+ case mir_pixel_format_abgr_8888:
4371+ case mir_pixel_format_xbgr_8888:
4372+ std::swap(pattern[2],pattern[0]);
4373+ break;
4374+
4375+ case mir_pixel_format_argb_8888:
4376+ case mir_pixel_format_xrgb_8888:
4377+ break;
4378+
4379+ default:
4380+ return;
4381+ };
4382+
4383+
4384+ mir::client::Surface surface{mir_connection_create_render_surface_sync(connection, 42, 42)};
4385+ MirBufferStream* buffer_stream = mir_render_surface_get_buffer_stream(surface, 42, 42, pixel_format);
4386+
4387+ auto const window = create_window(connection, surface);
4388+
4389+ MirGraphicsRegion graphics_region;
4390+
4391+ auto const time_limit = std::chrono::steady_clock::now() + std::chrono::seconds(2);
4392+
4393+ do
4394+ {
4395+ mir_buffer_stream_get_graphics_region(buffer_stream, &graphics_region);
4396+
4397+ render_pattern(&graphics_region, pattern);
4398+ mir_buffer_stream_swap_buffers_sync(buffer_stream);
4399+
4400+ for (auto& x : pattern)
4401+ x = 3*x/4;
4402+
4403+ std::this_thread::sleep_for(std::chrono::milliseconds(200));
4404+ }
4405+ while (std::chrono::steady_clock::now() < time_limit);
4406+}
4407
4408=== added file 'examples/miral-kiosk/sw_splash.h'
4409--- examples/miral-kiosk/sw_splash.h 1970-01-01 00:00:00 +0000
4410+++ examples/miral-kiosk/sw_splash.h 2017-10-08 13:37:01 +0000
4411@@ -0,0 +1,44 @@
4412+/*
4413+ * Copyright © 2016 Canonical Ltd.
4414+ *
4415+ * This program is free software: you can redistribute it and/or modify it
4416+ * under the terms of the GNU General Public License version 2 or 3 as
4417+ * published by the Free Software Foundation.
4418+ *
4419+ * This program is distributed in the hope that it will be useful,
4420+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4421+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4422+ * GNU General Public License for more details.
4423+ *
4424+ * You should have received a copy of the GNU General Public License
4425+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4426+ *
4427+ * Authored by: Alan Griffiths <alan@octopull.co.uk>
4428+ */
4429+
4430+#ifndef MIRAL_SHELL_SW_SPLASH_H
4431+#define MIRAL_SHELL_SW_SPLASH_H
4432+
4433+#include <mir_toolkit/client_types.h>
4434+
4435+#include <memory>
4436+
4437+namespace mir { class Server; namespace scene { class Session; }}
4438+
4439+// A very simple s/w rendered splash animation
4440+class SwSplash
4441+{
4442+public:
4443+ SwSplash();
4444+ ~SwSplash();
4445+
4446+ void operator()(MirConnection* connection);
4447+ void operator()(std::weak_ptr<mir::scene::Session> const& session);
4448+ auto session() const -> std::weak_ptr<mir::scene::Session>;
4449+
4450+private:
4451+ struct Self;
4452+ std::shared_ptr<Self> const self;
4453+};
4454+
4455+#endif //MIRAL_SHELL_SW_SPLASH_H
4456
4457=== added directory 'examples/miral-shell'
4458=== added file 'examples/miral-shell/CMakeLists.txt'
4459--- examples/miral-shell/CMakeLists.txt 1970-01-01 00:00:00 +0000
4460+++ examples/miral-shell/CMakeLists.txt 2017-10-08 13:37:01 +0000
4461@@ -0,0 +1,69 @@
4462+include_directories(
4463+ ${PROJECT_SOURCE_DIR}/include/miral
4464+ ${PROJECT_SOURCE_DIR}/include/client
4465+)
4466+
4467+add_subdirectory(spinner)
4468+add_subdirectory(desktop)
4469+
4470+add_custom_target(miral-run ALL
4471+ cp ${CMAKE_CURRENT_SOURCE_DIR}/miral-run.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-run
4472+)
4473+
4474+install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-run
4475+ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
4476+)
4477+
4478+add_custom_target(miral-xrun ALL
4479+ cp ${CMAKE_CURRENT_SOURCE_DIR}/miral-xrun.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-xrun
4480+)
4481+
4482+install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-xrun
4483+ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
4484+)
4485+
4486+add_custom_target(miral-screencast ALL
4487+ cp ${CMAKE_CURRENT_SOURCE_DIR}/miral-screencast.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-screencast
4488+)
4489+
4490+install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-screencast
4491+ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
4492+)
4493+
4494+add_custom_target(miral-desktop ALL
4495+ cp ${CMAKE_CURRENT_SOURCE_DIR}/miral-desktop.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-desktop
4496+)
4497+
4498+install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-desktop
4499+ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
4500+)
4501+
4502+add_custom_target(miral-app ALL
4503+ cp ${CMAKE_CURRENT_SOURCE_DIR}/miral-app.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-app
4504+)
4505+
4506+install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-app
4507+ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
4508+)
4509+
4510+add_library(miral-shell-lib STATIC
4511+ tiling_window_manager.cpp tiling_window_manager.h
4512+ floating_window_manager.cpp floating_window_manager.h
4513+ decoration_provider.cpp decoration_provider.h
4514+ titlebar_config.cpp titlebar_config.h
4515+)
4516+
4517+pkg_check_modules(FREETYPE freetype2 REQUIRED)
4518+target_include_directories(miral-shell-lib PRIVATE ${FREETYPE_INCLUDE_DIRS})
4519+target_compile_definitions(miral-shell-lib PRIVATE -DTYPO_SUPPORTS_FREETYPE)
4520+target_link_libraries(miral-shell-lib miral-spinner miral ${FREETYPE_LIBRARIES})
4521+
4522+mir_add_wrapped_executable(miral-shell
4523+ shell_main.cpp
4524+)
4525+
4526+target_link_libraries(miral-shell
4527+ miral-shell-lib
4528+ miral
4529+)
4530+
4531
4532=== added file 'examples/miral-shell/decoration_provider.cpp'
4533--- examples/miral-shell/decoration_provider.cpp 1970-01-01 00:00:00 +0000
4534+++ examples/miral-shell/decoration_provider.cpp 2017-10-08 13:37:01 +0000
4535@@ -0,0 +1,666 @@
4536+/*
4537+ * Copyright © 2016-2017 Canonical Ltd.
4538+ *
4539+ * This program is free software: you can redistribute it and/or modify it
4540+ * under the terms of the GNU General Public License version 2 or 3 as
4541+ * published by the Free Software Foundation.
4542+ *
4543+ * This program is distributed in the hope that it will be useful,
4544+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4545+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4546+ * GNU General Public License for more details.
4547+ *
4548+ * You should have received a copy of the GNU General Public License
4549+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4550+ *
4551+ * Authored by: Alan Griffiths <alan@octopull.co.uk>
4552+ */
4553+
4554+#include "decoration_provider.h"
4555+#include "titlebar_config.h"
4556+
4557+#include <mir/client/display_config.h>
4558+#include <mir/client/window_spec.h>
4559+
4560+#include <mir_toolkit/mir_buffer_stream.h>
4561+
4562+#include <ft2build.h>
4563+#include FT_FREETYPE_H
4564+
4565+#include <locale>
4566+#include <codecvt>
4567+#include <string>
4568+#include <cstring>
4569+#include <sstream>
4570+
4571+#include <iostream>
4572+
4573+namespace
4574+{
4575+int const title_bar_height = 12;
4576+char const* const wallpaper_name = "wallpaper";
4577+
4578+void null_window_callback(MirWindow*, void*) {}
4579+
4580+struct preferred_codecvt : std::codecvt_byname<wchar_t, char, std::mbstate_t>
4581+{
4582+ preferred_codecvt() : std::codecvt_byname<wchar_t, char, std::mbstate_t>("") {}
4583+ ~preferred_codecvt() = default;
4584+};
4585+
4586+struct Printer
4587+{
4588+ Printer();
4589+ ~Printer();
4590+ Printer(Printer const&) = delete;
4591+ Printer& operator=(Printer const&) = delete;
4592+
4593+ void print(MirGraphicsRegion const& region, std::string const& title, int const intensity);
4594+ void printhelp(MirGraphicsRegion const& region);
4595+
4596+private:
4597+ std::wstring_convert<preferred_codecvt> converter;
4598+
4599+ bool working = false;
4600+ FT_Library lib;
4601+ FT_Face face;
4602+};
4603+
4604+void paint_surface(MirBufferStream* buffer_stream, std::string const& title, int const intensity)
4605+{
4606+ // TODO sometimes buffer_stream is nullptr - find out why (and fix).
4607+ // (Only observed when creating a lot of clients at once)
4608+ if (!buffer_stream)
4609+ return;
4610+
4611+ MirGraphicsRegion region;
4612+ mir_buffer_stream_get_graphics_region(buffer_stream, &region);
4613+
4614+ char* row = region.vaddr;
4615+
4616+ for (int j = 0; j != region.height; ++j)
4617+ {
4618+ memset(row, intensity, 4*region.width);
4619+ row += region.stride;
4620+ }
4621+
4622+ static Printer printer;
4623+ printer.print(region, title, intensity);
4624+
4625+ mir_buffer_stream_swap_buffers_sync(buffer_stream);
4626+}
4627+
4628+Printer::Printer()
4629+{
4630+ if (FT_Init_FreeType(&lib))
4631+ return;
4632+
4633+ if (FT_New_Face(lib, titlebar::font_file().c_str(), 0, &face))
4634+ {
4635+ std::cerr << "WARNING: failed to load titlebar font: \"" << titlebar::font_file() << "\"\n";
4636+ FT_Done_FreeType(lib);
4637+ return;
4638+ }
4639+
4640+ FT_Set_Pixel_Sizes(face, 0, 10);
4641+ working = true;
4642+}
4643+
4644+Printer::~Printer()
4645+{
4646+ if (working)
4647+ {
4648+ FT_Done_Face(face);
4649+ FT_Done_FreeType(lib);
4650+ }
4651+}
4652+
4653+void Printer::print(MirGraphicsRegion const& region, std::string const& title_, int const intensity)
4654+try
4655+{
4656+ if (!working)
4657+ return;
4658+
4659+ auto title = converter.from_bytes(title_);
4660+
4661+ int base_x = 2;
4662+ int base_y = region.height-2;
4663+
4664+ for (auto const& ch : title)
4665+ {
4666+ FT_Load_Glyph(face, FT_Get_Char_Index(face, ch), FT_LOAD_DEFAULT);
4667+ auto const glyph = face->glyph;
4668+ FT_Render_Glyph(glyph, FT_RENDER_MODE_NORMAL);
4669+
4670+ auto const& bitmap = glyph->bitmap;
4671+ auto const x = base_x + glyph->bitmap_left;
4672+
4673+ if (static_cast<int>(x + bitmap.width) <= region.width)
4674+ {
4675+ unsigned char* src = bitmap.buffer;
4676+
4677+ auto const y = base_y - glyph->bitmap_top;
4678+ char* dest = region.vaddr + y*region.stride + 4*x;
4679+
4680+ for (auto row = 0u; row != std::min(bitmap.rows, glyph->bitmap_top+2u); ++row)
4681+ {
4682+ for (auto col = 0u; col != bitmap.width; ++col)
4683+ memset(dest+ 4*col, (intensity*(0xff^src[col]))/0xff, 4);
4684+
4685+ src += bitmap.pitch;
4686+ dest += region.stride;
4687+ }
4688+ }
4689+
4690+ base_x += glyph->advance.x >> 6;
4691+ base_y += glyph->advance.y >> 6;
4692+ }
4693+}
4694+catch (...)
4695+{
4696+ std::cerr << "WARNING: failed render title: \"" << title_ << "\"\n";
4697+}
4698+
4699+void Printer::printhelp(MirGraphicsRegion const& region)
4700+{
4701+ if (!working)
4702+ return;
4703+
4704+ static char const* const helptext[] =
4705+ {
4706+ "Welcome to miral-shell",
4707+ "",
4708+ "Keyboard shortcuts:",
4709+ "",
4710+ " o Switch apps: Alt-Tab, tap or click on the corresponding window",
4711+ " o Next (previous) app window: Alt-` (Alt-Shift-`)",
4712+ "",
4713+ " o Move window: Alt-leftmousebutton drag (three finger drag)",
4714+ " o Resize window: Alt-middle_button drag (three finger pinch)",
4715+ "",
4716+ " o Maximize/restore current window (to display size). : Alt-F11",
4717+ " o Maximize/restore current window (to display height): Shift-F11",
4718+ " o Maximize/restore current window (to display width) : Ctrl-F11",
4719+ "",
4720+ " o Switch workspace: Meta-Alt-[F1|F2|F3|F4]",
4721+ " o Switch workspace taking active window: Meta-Ctrl-[F1|F2|F3|F4]",
4722+ "",
4723+ " o To exit: Ctrl-Alt-BkSp",
4724+ };
4725+
4726+ int help_width = 0;
4727+ unsigned int help_height = 0;
4728+ unsigned int line_height = 0;
4729+
4730+ for (auto const* rawline : helptext)
4731+ {
4732+ int line_width = 0;
4733+
4734+ auto const line = converter.from_bytes(rawline);
4735+
4736+ auto const fwidth = std::min(region.width / 60, 20);
4737+
4738+ FT_Set_Pixel_Sizes(face, fwidth, 0);
4739+
4740+ for (auto const& ch : line)
4741+ {
4742+ FT_Load_Glyph(face, FT_Get_Char_Index(face, ch), FT_LOAD_DEFAULT);
4743+ auto const glyph = face->glyph;
4744+ FT_Render_Glyph(glyph, FT_RENDER_MODE_NORMAL);
4745+
4746+ line_width += glyph->advance.x >> 6;
4747+ line_height = std::max(line_height, glyph->bitmap.rows + glyph->bitmap.rows/2);
4748+ }
4749+
4750+ if (help_width < line_width) help_width = line_width;
4751+ help_height += line_height;
4752+ }
4753+
4754+ int base_y = (region.height - help_height)/2;
4755+
4756+ for (auto const* rawline : helptext)
4757+ {
4758+ int base_x = (region.width - help_width)/2;
4759+
4760+ auto const line = converter.from_bytes(rawline);
4761+
4762+ for (auto const& ch : line)
4763+ {
4764+ FT_Load_Glyph(face, FT_Get_Char_Index(face, ch), FT_LOAD_DEFAULT);
4765+ auto const glyph = face->glyph;
4766+ FT_Render_Glyph(glyph, FT_RENDER_MODE_NORMAL);
4767+
4768+ auto const& bitmap = glyph->bitmap;
4769+ auto const x = base_x + glyph->bitmap_left;
4770+
4771+ if (static_cast<int>(x + bitmap.width) <= region.width)
4772+ {
4773+ unsigned char* src = bitmap.buffer;
4774+
4775+ auto const y = base_y - glyph->bitmap_top;
4776+ char* dest = region.vaddr + y * region.stride + 4 * x;
4777+
4778+ for (auto row = 0u; row != bitmap.rows; ++row)
4779+ {
4780+ for (auto col = 0u; col != 4 * bitmap.width; ++col)
4781+ dest[col] |= src[col / 4]/2;
4782+
4783+ src += bitmap.pitch;
4784+ dest += region.stride;
4785+
4786+ if (dest > region.vaddr + region.height * region.stride)
4787+ break;
4788+ }
4789+ }
4790+
4791+ base_x += glyph->advance.x >> 6;
4792+ }
4793+ base_y += line_height;
4794+ }
4795+}
4796+
4797+void render_background(MirBufferStream* buffer_stream, MirGraphicsRegion& graphics_region)
4798+{
4799+ static uint8_t const pattern[4] = {0x00, 0x00, 0x00, 0x00 };
4800+
4801+ char* row = (&graphics_region)->vaddr;
4802+
4803+ for (int j = 0; j < (&graphics_region)->height; j++)
4804+ {
4805+ uint32_t* pixel = (uint32_t*)row;
4806+
4807+ for (int i = 0; i < (&graphics_region)->width; i++)
4808+ memcpy(pixel + i, pattern, sizeof pixel[i]);
4809+
4810+ row += (&graphics_region)->stride;
4811+ }
4812+
4813+ static Printer printer;
4814+ printer.printhelp(*&graphics_region);
4815+
4816+ mir_buffer_stream_swap_buffers_sync(buffer_stream);
4817+}
4818+}
4819+
4820+using namespace mir::client;
4821+using namespace mir::geometry;
4822+
4823+DecorationProvider::DecorationProvider(miral::WindowManagerTools const& tools) : tools{tools}
4824+{
4825+
4826+}
4827+
4828+DecorationProvider::~DecorationProvider()
4829+{
4830+}
4831+
4832+void DecorationProvider::stop()
4833+{
4834+ enqueue_work([this]
4835+ {
4836+ std::lock_guard<decltype(mutex)> lock{mutex};
4837+ window_to_titlebar.clear();
4838+ });
4839+
4840+ enqueue_work([this]
4841+ {
4842+ if (connection)
4843+ {
4844+ wallpaper.erase(begin(wallpaper), end(wallpaper));
4845+ }
4846+ connection.reset();
4847+ });
4848+ stop_work();
4849+}
4850+
4851+void DecorationProvider::operator()(Connection connection)
4852+{
4853+ this->connection = connection;
4854+
4855+ DisplayConfig const display_conf{this->connection};
4856+
4857+ display_conf.for_each_output([this](MirOutput const* output)
4858+ {
4859+ if (!mir_output_is_enabled(output))
4860+ return;
4861+
4862+ auto const mode = mir_output_get_current_mode(output);
4863+ auto const output_id = mir_output_get_id(output);
4864+ auto const width = mir_output_mode_get_width(mode);
4865+ auto const height = mir_output_mode_get_height(mode);
4866+
4867+ Surface surface{mir_connection_create_render_surface_sync(DecorationProvider::connection, width, height)};
4868+
4869+ auto const buffer_stream =
4870+ mir_render_surface_get_buffer_stream(surface, width, height, mir_pixel_format_xrgb_8888);
4871+
4872+ auto window = WindowSpec::for_gloss(DecorationProvider::connection, width, height)
4873+ .set_fullscreen_on_output(output_id)
4874+ .set_event_handler(&handle_event_for_background, this)
4875+ .add_surface(surface, width, height, 0, 0)
4876+ .set_name(wallpaper_name).create_window();
4877+
4878+ wallpaper.push_back(Wallpaper{surface, window, buffer_stream});
4879+
4880+ MirGraphicsRegion graphics_region;
4881+ mir_buffer_stream_get_graphics_region(buffer_stream, &graphics_region);
4882+ render_background(buffer_stream, graphics_region);
4883+ });
4884+
4885+ start_work();
4886+}
4887+
4888+void DecorationProvider::operator()(std::weak_ptr<mir::scene::Session> const& session)
4889+{
4890+ std::lock_guard<decltype(mutex)> lock{mutex};
4891+ this->weak_session = session;
4892+}
4893+
4894+auto DecorationProvider::session() const -> std::shared_ptr<mir::scene::Session>
4895+{
4896+ std::lock_guard<decltype(mutex)> lock{mutex};
4897+ return weak_session.lock();
4898+}
4899+
4900+void DecorationProvider::handle_event(MirWindow* window, MirEvent const* ev, void* context_)
4901+{
4902+ auto* const context = (Data*)context_;
4903+
4904+ switch (mir_event_get_type(ev))
4905+ {
4906+ case mir_event_type_resize:
4907+ {
4908+ MirResizeEvent const* resize = mir_event_get_resize_event(ev);
4909+ int const new_width = mir_resize_event_get_width(resize);
4910+ int const new_height = mir_resize_event_get_height(resize);
4911+ mir_render_surface_set_size(context->surface, new_width, new_height);
4912+ WindowSpec::for_changes(context->connection)
4913+ .add_surface(context->surface, new_width, new_height, 0, 0)
4914+ .apply_to(window);
4915+ break;
4916+ }
4917+
4918+ default:
4919+ break;
4920+ }
4921+}
4922+
4923+void DecorationProvider::create_titlebar_for(miral::Window const& window)
4924+{
4925+ if (is_decoration(window)) return;
4926+
4927+ enqueue_work([this, window]
4928+ {
4929+ auto const width = window.size().width.as_int();
4930+ std::ostringstream buffer;
4931+ buffer << std::shared_ptr<mir::scene::Surface>(window).get();
4932+
4933+ Surface surface{mir_connection_create_render_surface_sync(this->connection, width, title_bar_height)};
4934+
4935+ std::lock_guard<decltype(mutex)> lock{mutex};
4936+
4937+ auto const data = &window_to_titlebar[window];
4938+ data->connection = connection;
4939+ data->surface = surface;
4940+ data->stream = mir_render_surface_get_buffer_stream(surface, width, title_bar_height, mir_pixel_format_xrgb_8888);
4941+ windows_awaiting_titlebar[buffer.str()] = window;
4942+
4943+ WindowSpec::for_gloss(connection, width, title_bar_height)
4944+ .add_surface(surface, width, title_bar_height, 0, 0)
4945+ .set_name(buffer.str().c_str())
4946+ .set_event_handler(&handle_event, data)
4947+ .create_window(insert, data);
4948+ });
4949+}
4950+
4951+void DecorationProvider::paint_titlebar_for(miral::WindowInfo const& info, int intensity)
4952+{
4953+ if (auto data = find_titlebar_data(info.window()))
4954+ {
4955+ data->intensity = intensity;
4956+
4957+ auto const title = info.name();
4958+
4959+ enqueue_work([stream=data->stream, title, intensity]{ paint_surface(stream, title, intensity); });
4960+ }
4961+}
4962+
4963+void DecorationProvider::destroy_titlebar_for(miral::Window const& window)
4964+{
4965+ if (auto data = find_titlebar_data(window))
4966+ {
4967+ if (auto surface = data->titlebar.exchange(nullptr))
4968+ {
4969+ enqueue_work([surface]
4970+ {
4971+ mir_window_release(surface, &null_window_callback, nullptr);
4972+ });
4973+ }
4974+
4975+ if (data->titlebar.load())
4976+ {
4977+ enqueue_work([this, window]
4978+ {
4979+ std::lock_guard<decltype(mutex)> lock{mutex};
4980+ window_to_titlebar.erase(window);
4981+ });
4982+ }
4983+ else
4984+ {
4985+ data->on_create = [this, window](MirWindow*)
4986+ {
4987+ enqueue_work([this, window]
4988+ {
4989+ std::lock_guard<decltype(mutex)> lock{mutex};
4990+ window_to_titlebar.erase(window);
4991+ });
4992+ };
4993+ }
4994+ }
4995+}
4996+
4997+void DecorationProvider::resize_titlebar_for(miral::WindowInfo const& window_info, Size const& size)
4998+{
4999+ auto const window = window_info.window();
5000+
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: