Mir

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

Proposed by Alan Griffiths
Status: Merged
Approved by: Alan Griffiths
Approved revision: no longer in the source branch.
Merged at revision: 1306
Proposed branch: lp:~mir-team/mir/1.0-artful
Merge into: lp:mir/ubuntu
Diff against target: 71231 lines (+34525/-11921)
1961 files modified
.bzrignore (+2/-0)
CMakeLists.txt (+16/-6)
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 (+58/-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 (+13/-15)
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 (+3/-3)
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)
To merge this branch: bzr merge lp:~mir-team/mir/1.0-artful
Reviewer Review Type Date Requested Status
Gerry Boland (community) Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+331993@code.launchpad.net

Commit message

Mir 0.28 release to artful

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

PASSED: Continuous integration, rev:4282
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/130/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/5103
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5341
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5328
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5328
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5328
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/5147
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/5147/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/5147
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/5147/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/5147
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/5147/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/5147
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/5147/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/5147
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/5147/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/5147
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/5147/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/5147
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/5147/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/5147
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/5147/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Revision history for this message
Gerry Boland (gerboland) wrote :

To be noted that this causes the miral-examples package to be deprecated and removed by mir-demos. A dist-upgrade is needed to do this. But all packages installed/upgraded ok.

It is a large diff, but it mainly consists of 2 changes:
1. adding MirAL from lp:miral to Mir itself, and adapting the tests to suit
2. relicencing changes, which touch every file
MirAL's inter-operability with Mir has long been good quality, and in my testing of lp:mir this hasn't changed.

I've run through the testing plan, found no new issues

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file '.bzrignore'
--- .bzrignore 2017-05-08 03:04:26 +0000
+++ .bzrignore 2017-10-11 15:01:23 +0000
@@ -2,4 +2,6 @@
2.project2.project
3include/server/mir/version.h3include/server/mir/version.h
4include/client/mir_toolkit/version.h4include/client/mir_toolkit/version.h
5include/miral/version.h
5build-*6build-*
7cmake-*
68
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2017-05-25 08:58:03 +0000
+++ CMakeLists.txt 2017-10-11 15:01:23 +0000
@@ -1,7 +1,7 @@
1# Copyright © 2012 Canonical Ltd.1# Copyright © 2012 Canonical Ltd.
2#2#
3# This program is free software: you can redistribute it and/or modify3# This program is free software: you can redistribute it and/or modify
4# it under the terms of the GNU General Public License version 3 as4# it under the terms of the GNU General Public License version 2 or 3 as
5# published by the Free Software Foundation.5# published by the Free Software Foundation.
6#6#
7# This program is distributed in the hope that it will be useful,7# This program is distributed in the hope that it will be useful,
@@ -28,7 +28,7 @@
28set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)28set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
2929
30set(MIR_VERSION_MAJOR 0)30set(MIR_VERSION_MAJOR 0)
31set(MIR_VERSION_MINOR 27)31set(MIR_VERSION_MINOR 28)
32set(MIR_VERSION_PATCH 0)32set(MIR_VERSION_PATCH 0)
3333
34add_definitions(-DMIR_VERSION_MAJOR=${MIR_VERSION_MAJOR})34add_definitions(-DMIR_VERSION_MAJOR=${MIR_VERSION_MAJOR})
@@ -53,6 +53,7 @@
53include (cmake/EnableCoverageReport.cmake)53include (cmake/EnableCoverageReport.cmake)
54include (cmake/MirCommon.cmake)54include (cmake/MirCommon.cmake)
55include (GNUInstallDirs)55include (GNUInstallDirs)
56include (cmake/Doxygen.cmake)
5657
57set(build_types "None;Debug;Release;RelWithDebInfo;MinSizeRel;Coverage;AddressSanitizer;ThreadSanitizer;UBSanitizer")58set(build_types "None;Debug;Release;RelWithDebInfo;MinSizeRel;Coverage;AddressSanitizer;ThreadSanitizer;UBSanitizer")
58# Change informational string for CMAKE_BUILD_TYPE59# Change informational string for CMAKE_BUILD_TYPE
@@ -73,6 +74,16 @@
73 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-mismatched-tags")74 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-mismatched-tags")
74endif()75endif()
7576
77# GCC 7.1 fixed a bug in the ARM ABI, which results in some std::vector methods
78# (among others) generating this warning.
79#
80# There's nothing we can do about it; everything just needs to be rebuilt with
81# GCC 7.1.
82check_cxx_compiler_flag(-Wpsabi HAS_W_PSABI)
83if(HAS_W_PSABI)
84 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi")
85endif()
86
76option(MIR_USE_LD_GOLD "Enables the \"gold\" linker." OFF)87option(MIR_USE_LD_GOLD "Enables the \"gold\" linker." OFF)
77if(MIR_USE_LD_GOLD)88if(MIR_USE_LD_GOLD)
78 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=gold")89 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=gold")
@@ -81,8 +92,6 @@
81endif()92endif()
8293
83# Link time optimization allows leaner, cleaner libraries94# Link time optimization allows leaner, cleaner libraries
84message(STATUS "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER})
85
86option(MIR_LINK_TIME_OPTIMIZATION "Enables the linker to optimize binaries." OFF)95option(MIR_LINK_TIME_OPTIMIZATION "Enables the linker to optimize binaries." OFF)
87if(MIR_LINK_TIME_OPTIMIZATION)96if(MIR_LINK_TIME_OPTIMIZATION)
88 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto -ffat-lto-objects")97 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto -ffat-lto-objects")
@@ -207,6 +216,8 @@
207216
208pkg_check_modules(UDEV REQUIRED libudev)217pkg_check_modules(UDEV REQUIRED libudev)
209pkg_check_modules(GLIB REQUIRED glib-2.0)218pkg_check_modules(GLIB REQUIRED glib-2.0)
219pkg_check_modules(WAYLAND_SERVER REQUIRED wayland-server)
220pkg_check_modules(WAYLAND_CLIENT REQUIRED wayland-client)
210221
211include_directories (SYSTEM ${GLESv2_INCLUDE_DIRS})222include_directories (SYSTEM ${GLESv2_INCLUDE_DIRS})
212include_directories (SYSTEM ${EGL_INCLUDE_DIRS})223include_directories (SYSTEM ${EGL_INCLUDE_DIRS})
@@ -291,7 +302,7 @@
291302
292 # There's no nice way to format this. Thanks CMake.303 # There's no nice way to format this. Thanks CMake.
293 mir_add_test(NAME LGPL-required304 mir_add_test(NAME LGPL-required
294 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"305 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"
295 )306 )
296 mir_add_test(NAME GPL-required307 mir_add_test(NAME GPL-required
297 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"308 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"
@@ -302,7 +313,6 @@
302endif ()313endif ()
303314
304enable_coverage_report(mirserver)315enable_coverage_report(mirserver)
305include (cmake/Doxygen.cmake)
306include (cmake/ABICheck.cmake)316include (cmake/ABICheck.cmake)
307317
308add_custom_target(ptest318add_custom_target(ptest
309319
=== added file 'COPYING.GPL2'
--- COPYING.GPL2 1970-01-01 00:00:00 +0000
+++ COPYING.GPL2 2017-10-11 15:01:23 +0000
@@ -0,0 +1,339 @@
1 GNU GENERAL PUBLIC LICENSE
2 Version 2, June 1991
3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
8
9 Preamble
10
11 The licenses for most software are designed to take away your
12freedom to share and change it. By contrast, the GNU General Public
13License is intended to guarantee your freedom to share and change free
14software--to make sure the software is free for all its users. This
15General Public License applies to most of the Free Software
16Foundation's software and to any other program whose authors commit to
17using it. (Some other Free Software Foundation software is covered by
18the GNU Lesser General Public License instead.) You can apply it to
19your programs, too.
20
21 When we speak of free software, we are referring to freedom, not
22price. Our General Public Licenses are designed to make sure that you
23have the freedom to distribute copies of free software (and charge for
24this service if you wish), that you receive source code or can get it
25if you want it, that you can change the software or use pieces of it
26in new free programs; and that you know you can do these things.
27
28 To protect your rights, we need to make restrictions that forbid
29anyone to deny you these rights or to ask you to surrender the rights.
30These restrictions translate to certain responsibilities for you if you
31distribute copies of the software, or if you modify it.
32
33 For example, if you distribute copies of such a program, whether
34gratis or for a fee, you must give the recipients all the rights that
35you have. You must make sure that they, too, receive or can get the
36source code. And you must show them these terms so they know their
37rights.
38
39 We protect your rights with two steps: (1) copyright the software, and
40(2) offer you this license which gives you legal permission to copy,
41distribute and/or modify the software.
42
43 Also, for each author's protection and ours, we want to make certain
44that everyone understands that there is no warranty for this free
45software. If the software is modified by someone else and passed on, we
46want its recipients to know that what they have is not the original, so
47that any problems introduced by others will not reflect on the original
48authors' reputations.
49
50 Finally, any free program is threatened constantly by software
51patents. We wish to avoid the danger that redistributors of a free
52program will individually obtain patent licenses, in effect making the
53program proprietary. To prevent this, we have made it clear that any
54patent must be licensed for everyone's free use or not licensed at all.
55
56 The precise terms and conditions for copying, distribution and
57modification follow.
58
59 GNU GENERAL PUBLIC LICENSE
60 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
62 0. This License applies to any program or other work which contains
63a notice placed by the copyright holder saying it may be distributed
64under the terms of this General Public License. The "Program", below,
65refers to any such program or work, and a "work based on the Program"
66means either the Program or any derivative work under copyright law:
67that is to say, a work containing the Program or a portion of it,
68either verbatim or with modifications and/or translated into another
69language. (Hereinafter, translation is included without limitation in
70the term "modification".) Each licensee is addressed as "you".
71
72Activities other than copying, distribution and modification are not
73covered by this License; they are outside its scope. The act of
74running the Program is not restricted, and the output from the Program
75is covered only if its contents constitute a work based on the
76Program (independent of having been made by running the Program).
77Whether that is true depends on what the Program does.
78
79 1. You may copy and distribute verbatim copies of the Program's
80source code as you receive it, in any medium, provided that you
81conspicuously and appropriately publish on each copy an appropriate
82copyright notice and disclaimer of warranty; keep intact all the
83notices that refer to this License and to the absence of any warranty;
84and give any other recipients of the Program a copy of this License
85along with the Program.
86
87You may charge a fee for the physical act of transferring a copy, and
88you may at your option offer warranty protection in exchange for a fee.
89
90 2. You may modify your copy or copies of the Program or any portion
91of it, thus forming a work based on the Program, and copy and
92distribute such modifications or work under the terms of Section 1
93above, provided that you also meet all of these conditions:
94
95 a) You must cause the modified files to carry prominent notices
96 stating that you changed the files and the date of any change.
97
98 b) You must cause any work that you distribute or publish, that in
99 whole or in part contains or is derived from the Program or any
100 part thereof, to be licensed as a whole at no charge to all third
101 parties under the terms of this License.
102
103 c) If the modified program normally reads commands interactively
104 when run, you must cause it, when started running for such
105 interactive use in the most ordinary way, to print or display an
106 announcement including an appropriate copyright notice and a
107 notice that there is no warranty (or else, saying that you provide
108 a warranty) and that users may redistribute the program under
109 these conditions, and telling the user how to view a copy of this
110 License. (Exception: if the Program itself is interactive but
111 does not normally print such an announcement, your work based on
112 the Program is not required to print an announcement.)
113
114These requirements apply to the modified work as a whole. If
115identifiable sections of that work are not derived from the Program,
116and can be reasonably considered independent and separate works in
117themselves, then this License, and its terms, do not apply to those
118sections when you distribute them as separate works. But when you
119distribute the same sections as part of a whole which is a work based
120on the Program, the distribution of the whole must be on the terms of
121this License, whose permissions for other licensees extend to the
122entire whole, and thus to each and every part regardless of who wrote it.
123
124Thus, it is not the intent of this section to claim rights or contest
125your rights to work written entirely by you; rather, the intent is to
126exercise the right to control the distribution of derivative or
127collective works based on the Program.
128
129In addition, mere aggregation of another work not based on the Program
130with the Program (or with a work based on the Program) on a volume of
131a storage or distribution medium does not bring the other work under
132the scope of this License.
133
134 3. You may copy and distribute the Program (or a work based on it,
135under Section 2) in object code or executable form under the terms of
136Sections 1 and 2 above provided that you also do one of the following:
137
138 a) Accompany it with the complete corresponding machine-readable
139 source code, which must be distributed under the terms of Sections
140 1 and 2 above on a medium customarily used for software interchange; or,
141
142 b) Accompany it with a written offer, valid for at least three
143 years, to give any third party, for a charge no more than your
144 cost of physically performing source distribution, a complete
145 machine-readable copy of the corresponding source code, to be
146 distributed under the terms of Sections 1 and 2 above on a medium
147 customarily used for software interchange; or,
148
149 c) Accompany it with the information you received as to the offer
150 to distribute corresponding source code. (This alternative is
151 allowed only for noncommercial distribution and only if you
152 received the program in object code or executable form with such
153 an offer, in accord with Subsection b above.)
154
155The source code for a work means the preferred form of the work for
156making modifications to it. For an executable work, complete source
157code means all the source code for all modules it contains, plus any
158associated interface definition files, plus the scripts used to
159control compilation and installation of the executable. However, as a
160special exception, the source code distributed need not include
161anything that is normally distributed (in either source or binary
162form) with the major components (compiler, kernel, and so on) of the
163operating system on which the executable runs, unless that component
164itself accompanies the executable.
165
166If distribution of executable or object code is made by offering
167access to copy from a designated place, then offering equivalent
168access to copy the source code from the same place counts as
169distribution of the source code, even though third parties are not
170compelled to copy the source along with the object code.
171
172 4. You may not copy, modify, sublicense, or distribute the Program
173except as expressly provided under this License. Any attempt
174otherwise to copy, modify, sublicense or distribute the Program is
175void, and will automatically terminate your rights under this License.
176However, parties who have received copies, or rights, from you under
177this License will not have their licenses terminated so long as such
178parties remain in full compliance.
179
180 5. You are not required to accept this License, since you have not
181signed it. However, nothing else grants you permission to modify or
182distribute the Program or its derivative works. These actions are
183prohibited by law if you do not accept this License. Therefore, by
184modifying or distributing the Program (or any work based on the
185Program), you indicate your acceptance of this License to do so, and
186all its terms and conditions for copying, distributing or modifying
187the Program or works based on it.
188
189 6. Each time you redistribute the Program (or any work based on the
190Program), the recipient automatically receives a license from the
191original licensor to copy, distribute or modify the Program subject to
192these terms and conditions. You may not impose any further
193restrictions on the recipients' exercise of the rights granted herein.
194You are not responsible for enforcing compliance by third parties to
195this License.
196
197 7. If, as a consequence of a court judgment or allegation of patent
198infringement or for any other reason (not limited to patent issues),
199conditions are imposed on you (whether by court order, agreement or
200otherwise) that contradict the conditions of this License, they do not
201excuse you from the conditions of this License. If you cannot
202distribute so as to satisfy simultaneously your obligations under this
203License and any other pertinent obligations, then as a consequence you
204may not distribute the Program at all. For example, if a patent
205license would not permit royalty-free redistribution of the Program by
206all those who receive copies directly or indirectly through you, then
207the only way you could satisfy both it and this License would be to
208refrain entirely from distribution of the Program.
209
210If any portion of this section is held invalid or unenforceable under
211any particular circumstance, the balance of the section is intended to
212apply and the section as a whole is intended to apply in other
213circumstances.
214
215It is not the purpose of this section to induce you to infringe any
216patents or other property right claims or to contest validity of any
217such claims; this section has the sole purpose of protecting the
218integrity of the free software distribution system, which is
219implemented by public license practices. Many people have made
220generous contributions to the wide range of software distributed
221through that system in reliance on consistent application of that
222system; it is up to the author/donor to decide if he or she is willing
223to distribute software through any other system and a licensee cannot
224impose that choice.
225
226This section is intended to make thoroughly clear what is believed to
227be a consequence of the rest of this License.
228
229 8. If the distribution and/or use of the Program is restricted in
230certain countries either by patents or by copyrighted interfaces, the
231original copyright holder who places the Program under this License
232may add an explicit geographical distribution limitation excluding
233those countries, so that distribution is permitted only in or among
234countries not thus excluded. In such case, this License incorporates
235the limitation as if written in the body of this License.
236
237 9. The Free Software Foundation may publish revised and/or new versions
238of the General Public License from time to time. Such new versions will
239be similar in spirit to the present version, but may differ in detail to
240address new problems or concerns.
241
242Each version is given a distinguishing version number. If the Program
243specifies a version number of this License which applies to it and "any
244later version", you have the option of following the terms and conditions
245either of that version or of any later version published by the Free
246Software Foundation. If the Program does not specify a version number of
247this License, you may choose any version ever published by the Free Software
248Foundation.
249
250 10. If you wish to incorporate parts of the Program into other free
251programs whose distribution conditions are different, write to the author
252to ask for permission. For software which is copyrighted by the Free
253Software Foundation, write to the Free Software Foundation; we sometimes
254make exceptions for this. Our decision will be guided by the two goals
255of preserving the free status of all derivatives of our free software and
256of promoting the sharing and reuse of software generally.
257
258 NO WARRANTY
259
260 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268REPAIR OR CORRECTION.
269
270 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278POSSIBILITY OF SUCH DAMAGES.
279
280 END OF TERMS AND CONDITIONS
281
282 How to Apply These Terms to Your New Programs
283
284 If you develop a new program, and you want it to be of the greatest
285possible use to the public, the best way to achieve this is to make it
286free software which everyone can redistribute and change under these terms.
287
288 To do so, attach the following notices to the program. It is safest
289to attach them to the start of each source file to most effectively
290convey the exclusion of warranty; and each file should have at least
291the "copyright" line and a pointer to where the full notice is found.
292
293 <one line to give the program's name and a brief idea of what it does.>
294 Copyright (C) <year> <name of author>
295
296 This program is free software; you can redistribute it and/or modify
297 it under the terms of the GNU General Public License as published by
298 the Free Software Foundation; either version 2 of the License, or
299 (at your option) any later version.
300
301 This program is distributed in the hope that it will be useful,
302 but WITHOUT ANY WARRANTY; without even the implied warranty of
303 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304 GNU General Public License for more details.
305
306 You should have received a copy of the GNU General Public License along
307 with this program; if not, write to the Free Software Foundation, Inc.,
308 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309
310Also add information on how to contact you by electronic and paper mail.
311
312If the program is interactive, make it output a short notice like this
313when it starts in an interactive mode:
314
315 Gnomovision version 69, Copyright (C) year name of author
316 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317 This is free software, and you are welcome to redistribute it
318 under certain conditions; type `show c' for details.
319
320The hypothetical commands `show w' and `show c' should show the appropriate
321parts of the General Public License. Of course, the commands you use may
322be called something other than `show w' and `show c'; they could even be
323mouse-clicks or menu items--whatever suits your program.
324
325You should also get your employer (if you work as a programmer) or your
326school, if any, to sign a "copyright disclaimer" for the program, if
327necessary. Here is a sample; alter the names:
328
329 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330 `Gnomovision' (which makes passes at compilers) written by James Hacker.
331
332 <signature of Ty Coon>, 1 April 1989
333 Ty Coon, President of Vice
334
335This General Public License does not permit incorporating your program into
336proprietary programs. If your program is a subroutine library, you may
337consider it more useful to permit linking proprietary applications with the
338library. If this is what you want to do, use the GNU Lesser General
339Public License instead of this License.
0340
=== renamed file 'COPYING.GPL' => 'COPYING.GPL3'
=== added file 'COPYING.LGPL2'
--- COPYING.LGPL2 1970-01-01 00:00:00 +0000
+++ COPYING.LGPL2 2017-10-11 15:01:23 +0000
@@ -0,0 +1,481 @@
1 GNU LIBRARY GENERAL PUBLIC LICENSE
2 Version 2, June 1991
3
4 Copyright (C) 1991 Free Software Foundation, Inc.
5 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
8
9[This is the first released version of the library GPL. It is
10 numbered 2 because it goes with version 2 of the ordinary GPL.]
11
12 Preamble
13
14 The licenses for most software are designed to take away your
15freedom to share and change it. By contrast, the GNU General Public
16Licenses are intended to guarantee your freedom to share and change
17free software--to make sure the software is free for all its users.
18
19 This license, the Library General Public License, applies to some
20specially designated Free Software Foundation software, and to any
21other libraries whose authors decide to use it. You can use it for
22your libraries, too.
23
24 When we speak of free software, we are referring to freedom, not
25price. Our General Public Licenses are designed to make sure that you
26have the freedom to distribute copies of free software (and charge for
27this service if you wish), that you receive source code or can get it
28if you want it, that you can change the software or use pieces of it
29in new free programs; and that you know you can do these things.
30
31 To protect your rights, we need to make restrictions that forbid
32anyone to deny you these rights or to ask you to surrender the rights.
33These restrictions translate to certain responsibilities for you if
34you distribute copies of the library, or if you modify it.
35
36 For example, if you distribute copies of the library, whether gratis
37or for a fee, you must give the recipients all the rights that we gave
38you. You must make sure that they, too, receive or can get the source
39code. If you link a program with the library, you must provide
40complete object files to the recipients so that they can relink them
41with the library, after making changes to the library and recompiling
42it. And you must show them these terms so they know their rights.
43
44 Our method of protecting your rights has two steps: (1) copyright
45the library, and (2) offer you this license which gives you legal
46permission to copy, distribute and/or modify the library.
47
48 Also, for each distributor's protection, we want to make certain
49that everyone understands that there is no warranty for this free
50library. If the library is modified by someone else and passed on, we
51want its recipients to know that what they have is not the original
52version, so that any problems introduced by others will not reflect on
53the original authors' reputations.
54
055
56 Finally, any free program is threatened constantly by software
57patents. We wish to avoid the danger that companies distributing free
58software will individually obtain patent licenses, thus in effect
59transforming the program into proprietary software. To prevent this,
60we have made it clear that any patent must be licensed for everyone's
61free use or not licensed at all.
62
63 Most GNU software, including some libraries, is covered by the ordinary
64GNU General Public License, which was designed for utility programs. This
65license, the GNU Library General Public License, applies to certain
66designated libraries. This license is quite different from the ordinary
67one; be sure to read it in full, and don't assume that anything in it is
68the same as in the ordinary license.
69
70 The reason we have a separate public license for some libraries is that
71they blur the distinction we usually make between modifying or adding to a
72program and simply using it. Linking a program with a library, without
73changing the library, is in some sense simply using the library, and is
74analogous to running a utility program or application program. However, in
75a textual and legal sense, the linked executable is a combined work, a
76derivative of the original library, and the ordinary General Public License
77treats it as such.
78
79 Because of this blurred distinction, using the ordinary General
80Public License for libraries did not effectively promote software
81sharing, because most developers did not use the libraries. We
82concluded that weaker conditions might promote sharing better.
83
84 However, unrestricted linking of non-free programs would deprive the
85users of those programs of all benefit from the free status of the
86libraries themselves. This Library General Public License is intended to
87permit developers of non-free programs to use free libraries, while
88preserving your freedom as a user of such programs to change the free
89libraries that are incorporated in them. (We have not seen how to achieve
90this as regards changes in header files, but we have achieved it as regards
91changes in the actual functions of the Library.) The hope is that this
92will lead to faster development of free libraries.
93
94 The precise terms and conditions for copying, distribution and
95modification follow. Pay close attention to the difference between a
96"work based on the library" and a "work that uses the library". The
97former contains code derived from the library, while the latter only
98works together with the library.
99
100 Note that it is possible for a library to be covered by the ordinary
101General Public License rather than by this special one.
102
1103
104 GNU LIBRARY GENERAL PUBLIC LICENSE
105 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
106
107 0. This License Agreement applies to any software library which
108contains a notice placed by the copyright holder or other authorized
109party saying it may be distributed under the terms of this Library
110General Public License (also called "this License"). Each licensee is
111addressed as "you".
112
113 A "library" means a collection of software functions and/or data
114prepared so as to be conveniently linked with application programs
115(which use some of those functions and data) to form executables.
116
117 The "Library", below, refers to any such software library or work
118which has been distributed under these terms. A "work based on the
119Library" means either the Library or any derivative work under
120copyright law: that is to say, a work containing the Library or a
121portion of it, either verbatim or with modifications and/or translated
122straightforwardly into another language. (Hereinafter, translation is
123included without limitation in the term "modification".)
124
125 "Source code" for a work means the preferred form of the work for
126making modifications to it. For a library, complete source code means
127all the source code for all modules it contains, plus any associated
128interface definition files, plus the scripts used to control compilation
129and installation of the library.
130
131 Activities other than copying, distribution and modification are not
132covered by this License; they are outside its scope. The act of
133running a program using the Library is not restricted, and output from
134such a program is covered only if its contents constitute a work based
135on the Library (independent of the use of the Library in a tool for
136writing it). Whether that is true depends on what the Library does
137and what the program that uses the Library does.
138
139 1. You may copy and distribute verbatim copies of the Library's
140complete source code as you receive it, in any medium, provided that
141you conspicuously and appropriately publish on each copy an
142appropriate copyright notice and disclaimer of warranty; keep intact
143all the notices that refer to this License and to the absence of any
144warranty; and distribute a copy of this License along with the
145Library.
146
147 You may charge a fee for the physical act of transferring a copy,
148and you may at your option offer warranty protection in exchange for a
149fee.
150
2151
152 2. You may modify your copy or copies of the Library or any portion
153of it, thus forming a work based on the Library, and copy and
154distribute such modifications or work under the terms of Section 1
155above, provided that you also meet all of these conditions:
156
157 a) The modified work must itself be a software library.
158
159 b) You must cause the files modified to carry prominent notices
160 stating that you changed the files and the date of any change.
161
162 c) You must cause the whole of the work to be licensed at no
163 charge to all third parties under the terms of this License.
164
165 d) If a facility in the modified Library refers to a function or a
166 table of data to be supplied by an application program that uses
167 the facility, other than as an argument passed when the facility
168 is invoked, then you must make a good faith effort to ensure that,
169 in the event an application does not supply such function or
170 table, the facility still operates, and performs whatever part of
171 its purpose remains meaningful.
172
173 (For example, a function in a library to compute square roots has
174 a purpose that is entirely well-defined independent of the
175 application. Therefore, Subsection 2d requires that any
176 application-supplied function or table used by this function must
177 be optional: if the application does not supply it, the square
178 root function must still compute square roots.)
179
180These requirements apply to the modified work as a whole. If
181identifiable sections of that work are not derived from the Library,
182and can be reasonably considered independent and separate works in
183themselves, then this License, and its terms, do not apply to those
184sections when you distribute them as separate works. But when you
185distribute the same sections as part of a whole which is a work based
186on the Library, the distribution of the whole must be on the terms of
187this License, whose permissions for other licensees extend to the
188entire whole, and thus to each and every part regardless of who wrote
189it.
190
191Thus, it is not the intent of this section to claim rights or contest
192your rights to work written entirely by you; rather, the intent is to
193exercise the right to control the distribution of derivative or
194collective works based on the Library.
195
196In addition, mere aggregation of another work not based on the Library
197with the Library (or with a work based on the Library) on a volume of
198a storage or distribution medium does not bring the other work under
199the scope of this License.
200
201 3. You may opt to apply the terms of the ordinary GNU General Public
202License instead of this License to a given copy of the Library. To do
203this, you must alter all the notices that refer to this License, so
204that they refer to the ordinary GNU General Public License, version 2,
205instead of to this License. (If a newer version than version 2 of the
206ordinary GNU General Public License has appeared, then you can specify
207that version instead if you wish.) Do not make any other change in
208these notices.
209
3210
211 Once this change is made in a given copy, it is irreversible for
212that copy, so the ordinary GNU General Public License applies to all
213subsequent copies and derivative works made from that copy.
214
215 This option is useful when you wish to copy part of the code of
216the Library into a program that is not a library.
217
218 4. You may copy and distribute the Library (or a portion or
219derivative of it, under Section 2) in object code or executable form
220under the terms of Sections 1 and 2 above provided that you accompany
221it with the complete corresponding machine-readable source code, which
222must be distributed under the terms of Sections 1 and 2 above on a
223medium customarily used for software interchange.
224
225 If distribution of object code is made by offering access to copy
226from a designated place, then offering equivalent access to copy the
227source code from the same place satisfies the requirement to
228distribute the source code, even though third parties are not
229compelled to copy the source along with the object code.
230
231 5. A program that contains no derivative of any portion of the
232Library, but is designed to work with the Library by being compiled or
233linked with it, is called a "work that uses the Library". Such a
234work, in isolation, is not a derivative work of the Library, and
235therefore falls outside the scope of this License.
236
237 However, linking a "work that uses the Library" with the Library
238creates an executable that is a derivative of the Library (because it
239contains portions of the Library), rather than a "work that uses the
240library". The executable is therefore covered by this License.
241Section 6 states terms for distribution of such executables.
242
243 When a "work that uses the Library" uses material from a header file
244that is part of the Library, the object code for the work may be a
245derivative work of the Library even though the source code is not.
246Whether this is true is especially significant if the work can be
247linked without the Library, or if the work is itself a library. The
248threshold for this to be true is not precisely defined by law.
249
250 If such an object file uses only numerical parameters, data
251structure layouts and accessors, and small macros and small inline
252functions (ten lines or less in length), then the use of the object
253file is unrestricted, regardless of whether it is legally a derivative
254work. (Executables containing this object code plus portions of the
255Library will still fall under Section 6.)
256
257 Otherwise, if the work is a derivative of the Library, you may
258distribute the object code for the work under the terms of Section 6.
259Any executables containing that work also fall under Section 6,
260whether or not they are linked directly with the Library itself.
261
4262
263 6. As an exception to the Sections above, you may also compile or
264link a "work that uses the Library" with the Library to produce a
265work containing portions of the Library, and distribute that work
266under terms of your choice, provided that the terms permit
267modification of the work for the customer's own use and reverse
268engineering for debugging such modifications.
269
270 You must give prominent notice with each copy of the work that the
271Library is used in it and that the Library and its use are covered by
272this License. You must supply a copy of this License. If the work
273during execution displays copyright notices, you must include the
274copyright notice for the Library among them, as well as a reference
275directing the user to the copy of this License. Also, you must do one
276of these things:
277
278 a) Accompany the work with the complete corresponding
279 machine-readable source code for the Library including whatever
280 changes were used in the work (which must be distributed under
281 Sections 1 and 2 above); and, if the work is an executable linked
282 with the Library, with the complete machine-readable "work that
283 uses the Library", as object code and/or source code, so that the
284 user can modify the Library and then relink to produce a modified
285 executable containing the modified Library. (It is understood
286 that the user who changes the contents of definitions files in the
287 Library will not necessarily be able to recompile the application
288 to use the modified definitions.)
289
290 b) Accompany the work with a written offer, valid for at
291 least three years, to give the same user the materials
292 specified in Subsection 6a, above, for a charge no more
293 than the cost of performing this distribution.
294
295 c) If distribution of the work is made by offering access to copy
296 from a designated place, offer equivalent access to copy the above
297 specified materials from the same place.
298
299 d) Verify that the user has already received a copy of these
300 materials or that you have already sent this user a copy.
301
302 For an executable, the required form of the "work that uses the
303Library" must include any data and utility programs needed for
304reproducing the executable from it. However, as a special exception,
305the source code distributed need not include anything that is normally
306distributed (in either source or binary form) with the major
307components (compiler, kernel, and so on) of the operating system on
308which the executable runs, unless that component itself accompanies
309the executable.
310
311 It may happen that this requirement contradicts the license
312restrictions of other proprietary libraries that do not normally
313accompany the operating system. Such a contradiction means you cannot
314use both them and the Library together in an executable that you
315distribute.
316
5317
318 7. You may place library facilities that are a work based on the
319Library side-by-side in a single library together with other library
320facilities not covered by this License, and distribute such a combined
321library, provided that the separate distribution of the work based on
322the Library and of the other library facilities is otherwise
323permitted, and provided that you do these two things:
324
325 a) Accompany the combined library with a copy of the same work
326 based on the Library, uncombined with any other library
327 facilities. This must be distributed under the terms of the
328 Sections above.
329
330 b) Give prominent notice with the combined library of the fact
331 that part of it is a work based on the Library, and explaining
332 where to find the accompanying uncombined form of the same work.
333
334 8. You may not copy, modify, sublicense, link with, or distribute
335the Library except as expressly provided under this License. Any
336attempt otherwise to copy, modify, sublicense, link with, or
337distribute the Library is void, and will automatically terminate your
338rights under this License. However, parties who have received copies,
339or rights, from you under this License will not have their licenses
340terminated so long as such parties remain in full compliance.
341
342 9. You are not required to accept this License, since you have not
343signed it. However, nothing else grants you permission to modify or
344distribute the Library or its derivative works. These actions are
345prohibited by law if you do not accept this License. Therefore, by
346modifying or distributing the Library (or any work based on the
347Library), you indicate your acceptance of this License to do so, and
348all its terms and conditions for copying, distributing or modifying
349the Library or works based on it.
350
351 10. Each time you redistribute the Library (or any work based on the
352Library), the recipient automatically receives a license from the
353original licensor to copy, distribute, link with or modify the Library
354subject to these terms and conditions. You may not impose any further
355restrictions on the recipients' exercise of the rights granted herein.
356You are not responsible for enforcing compliance by third parties to
357this License.
358
6359
360 11. If, as a consequence of a court judgment or allegation of patent
361infringement or for any other reason (not limited to patent issues),
362conditions are imposed on you (whether by court order, agreement or
363otherwise) that contradict the conditions of this License, they do not
364excuse you from the conditions of this License. If you cannot
365distribute so as to satisfy simultaneously your obligations under this
366License and any other pertinent obligations, then as a consequence you
367may not distribute the Library at all. For example, if a patent
368license would not permit royalty-free redistribution of the Library by
369all those who receive copies directly or indirectly through you, then
370the only way you could satisfy both it and this License would be to
371refrain entirely from distribution of the Library.
372
373If any portion of this section is held invalid or unenforceable under any
374particular circumstance, the balance of the section is intended to apply,
375and the section as a whole is intended to apply in other circumstances.
376
377It is not the purpose of this section to induce you to infringe any
378patents or other property right claims or to contest validity of any
379such claims; this section has the sole purpose of protecting the
380integrity of the free software distribution system which is
381implemented by public license practices. Many people have made
382generous contributions to the wide range of software distributed
383through that system in reliance on consistent application of that
384system; it is up to the author/donor to decide if he or she is willing
385to distribute software through any other system and a licensee cannot
386impose that choice.
387
388This section is intended to make thoroughly clear what is believed to
389be a consequence of the rest of this License.
390
391 12. If the distribution and/or use of the Library is restricted in
392certain countries either by patents or by copyrighted interfaces, the
393original copyright holder who places the Library under this License may add
394an explicit geographical distribution limitation excluding those countries,
395so that distribution is permitted only in or among countries not thus
396excluded. In such case, this License incorporates the limitation as if
397written in the body of this License.
398
399 13. The Free Software Foundation may publish revised and/or new
400versions of the Library General Public License from time to time.
401Such new versions will be similar in spirit to the present version,
402but may differ in detail to address new problems or concerns.
403
404Each version is given a distinguishing version number. If the Library
405specifies a version number of this License which applies to it and
406"any later version", you have the option of following the terms and
407conditions either of that version or of any later version published by
408the Free Software Foundation. If the Library does not specify a
409license version number, you may choose any version ever published by
410the Free Software Foundation.
411
7412
413 14. If you wish to incorporate parts of the Library into other free
414programs whose distribution conditions are incompatible with these,
415write to the author to ask for permission. For software which is
416copyrighted by the Free Software Foundation, write to the Free
417Software Foundation; we sometimes make exceptions for this. Our
418decision will be guided by the two goals of preserving the free status
419of all derivatives of our free software and of promoting the sharing
420and reuse of software generally.
421
422 NO WARRANTY
423
424 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
425WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
426EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
427OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
428KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
429IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
430PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
431LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
432THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
433
434 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
435WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
436AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
437FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
438CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
439LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
440RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
441FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
442SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
443DAMAGES.
444
445 END OF TERMS AND CONDITIONS
446
8447
448 How to Apply These Terms to Your New Libraries
449
450 If you develop a new library, and you want it to be of the greatest
451possible use to the public, we recommend making it free software that
452everyone can redistribute and change. You can do so by permitting
453redistribution under these terms (or, alternatively, under the terms of the
454ordinary General Public License).
455
456 To apply these terms, attach the following notices to the library. It is
457safest to attach them to the start of each source file to most effectively
458convey the exclusion of warranty; and each file should have at least the
459"copyright" line and a pointer to where the full notice is found.
460
461 <one line to give the library's name and a brief idea of what it does.>
462 Copyright (C) <year> <name of author>
463
464 This library is free software; you can redistribute it and/or
465 modify it under the terms of the GNU Library General Public
466 License as published by the Free Software Foundation; either
467 version 2 of the License, or (at your option) any later version.
468
469 This library is distributed in the hope that it will be useful,
470 but WITHOUT ANY WARRANTY; without even the implied warranty of
471 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
472 Library General Public License for more details.
473
474 You should have received a copy of the GNU Library General Public
475 License along with this library; if not, write to the Free Software
476 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
477
478Also add information on how to contact you by electronic and paper mail.
479
480You should also get your employer (if you work as a programmer) or your
481school, if any, to sign a "copyright disclaimer" for the library, if
482necessary. Here is a sample; alter the names:
483
484 Yoyodyne, Inc., hereby disclaims all copyright interest in the
485 library `Frob' (a library for tweaking knobs) written by James Random Hacker.
486
487 <signature of Ty Coon>, 1 April 1990
488 Ty Coon, President of Vice
489
490That's all there is to it!
9491
=== renamed file 'COPYING.LGPL' => 'COPYING.LGPL3'
=== modified file 'HACKING.md'
--- HACKING.md 2017-05-08 03:04:26 +0000
+++ HACKING.md 2017-10-11 15:01:23 +0000
@@ -1,38 +1,6 @@
1Mir hacking guide1Mir hacking guide
2=================2=================
33
4Getting Mir
5-----------
6
7If you're reading this file then you've probably solved this one. ;)
8
9However, for completeness Mir is a project on LaunchPad (https://launchpad.net/mir)
10to grab a copy use the command:
11
12 $ bzr branch lp:mir
13
14
15Getting dependencies
16--------------------
17To succesfully build Mir there are a few packages required:
18
19 $ apt-get install devscripts equivs cmake
20 $ mk-build-deps --install --tool "apt-get -y" --build-dep debian/control
21
22
23Building Mir
24-----------
25
26Mir is built using cmake. There are other options, but here's one way to
27build the system:
28
29 $ mkdir build
30 $ cd build
31 $ cmake ..
32 $ make -j 8
33 $ ctest
34
35
36Coding Mir4Coding Mir
37----------5----------
386
@@ -109,7 +77,7 @@
109you need to know to get it working, and also to prevent your existing X server77you need to know to get it working, and also to prevent your existing X server
110from dying at the same time.78from dying at the same time.
11179
112 - \ref using_mir_on_pc80 - \ref getting_and_using_mir
11381
114You can configure Mir to provide runtime information helpful for debugging82You can configure Mir to provide runtime information helpful for debugging
115by enabling component reports:83by enabling component reports:
11684
=== modified file 'README.md'
--- README.md 2013-04-24 05:22:20 +0000
+++ README.md 2017-10-11 15:01:23 +0000
@@ -9,7 +9,7 @@
9License (server)9License (server)
10-------10-------
11This program is free software: you can redistribute it and/or modify11This program is free software: you can redistribute it and/or modify
12it under the terms of the GNU General Public License version 3 as12it under the terms of the GNU General Public License version 2 or 3 as
13published by the Free Software Foundation.13published by the Free Software Foundation.
1414
15This program is distributed in the hope that it will be useful,15This program is distributed in the hope that it will be useful,
@@ -23,7 +23,7 @@
23License (client)23License (client)
24-------24-------
25This program is free software: you can redistribute it and/or modify25This program is free software: you can redistribute it and/or modify
26it under the terms of the GNU Lesser General Public License version 3 as26it under the terms of the GNU Lesser General Public License version 2 or 3 as
27published by the Free Software Foundation.27published by the Free Software Foundation.
2828
29This program is distributed in the hope that it will be useful,29This program is distributed in the hope that it will be useful,
3030
=== modified file 'benchmarks/benchmark_multiplexing_dispatchable.cpp'
--- benchmarks/benchmark_multiplexing_dispatchable.cpp 2015-06-17 05:20:42 +0000
+++ benchmarks/benchmark_multiplexing_dispatchable.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2015 Canonical Ltd.2 * Copyright © 2015 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/frame_uniformity_test.cpp'
--- benchmarks/frame-uniformity/frame_uniformity_test.cpp 2014-10-22 19:27:20 +0000
+++ benchmarks/frame-uniformity/frame_uniformity_test.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/frame_uniformity_test.h'
--- benchmarks/frame-uniformity/frame_uniformity_test.h 2015-06-25 03:00:08 +0000
+++ benchmarks/frame-uniformity/frame_uniformity_test.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/main.cpp'
--- benchmarks/frame-uniformity/main.cpp 2015-04-28 07:54:10 +0000
+++ benchmarks/frame-uniformity/main.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/touch_measuring_client.cpp'
--- benchmarks/frame-uniformity/touch_measuring_client.cpp 2017-05-08 03:04:26 +0000
+++ benchmarks/frame-uniformity/touch_measuring_client.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/touch_measuring_client.h'
--- benchmarks/frame-uniformity/touch_measuring_client.h 2015-06-25 03:00:08 +0000
+++ benchmarks/frame-uniformity/touch_measuring_client.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/touch_producing_server.cpp'
--- benchmarks/frame-uniformity/touch_producing_server.cpp 2016-01-29 08:18:22 +0000
+++ benchmarks/frame-uniformity/touch_producing_server.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/touch_producing_server.h'
--- benchmarks/frame-uniformity/touch_producing_server.h 2016-01-29 08:18:22 +0000
+++ benchmarks/frame-uniformity/touch_producing_server.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/touch_samples.cpp'
--- benchmarks/frame-uniformity/touch_samples.cpp 2015-06-17 05:20:42 +0000
+++ benchmarks/frame-uniformity/touch_samples.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/touch_samples.h'
--- benchmarks/frame-uniformity/touch_samples.h 2014-10-22 14:08:51 +0000
+++ benchmarks/frame-uniformity/touch_samples.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/vsync_simulating_graphics_platform.cpp'
--- benchmarks/frame-uniformity/vsync_simulating_graphics_platform.cpp 2016-01-29 08:18:22 +0000
+++ benchmarks/frame-uniformity/vsync_simulating_graphics_platform.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'benchmarks/frame-uniformity/vsync_simulating_graphics_platform.h'
--- benchmarks/frame-uniformity/vsync_simulating_graphics_platform.h 2016-01-29 08:18:22 +0000
+++ benchmarks/frame-uniformity/vsync_simulating_graphics_platform.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== added file 'cmake/FindPIL.cmake'
--- cmake/FindPIL.cmake 1970-01-01 00:00:00 +0000
+++ cmake/FindPIL.cmake 2017-10-11 15:01:23 +0000
@@ -0,0 +1,8 @@
1execute_process(
2 COMMAND python3 -c "from PIL import Image"
3 RESULT_VARIABLE HAVE_PIL
4)
5
6if (NOT ${HAVE_PIL} EQUAL 0)
7 message(FATAL_ERROR "Python Imaging Library (PIL) not found")
8endif()
09
=== modified file 'cmake/MirCommon.cmake'
--- cmake/MirCommon.cmake 2017-05-08 03:04:26 +0000
+++ cmake/MirCommon.cmake 2017-10-11 15:01:23 +0000
@@ -26,6 +26,7 @@
26 set(VALGRIND_CMD "${VALGRIND_EXECUTABLE}" "--error-exitcode=1" "--trace-children=yes")26 set(VALGRIND_CMD "${VALGRIND_EXECUTABLE}" "--error-exitcode=1" "--trace-children=yes")
27 set(VALGRIND_CMD ${VALGRIND_CMD} "--leak-check=full" "--show-leak-kinds=definite" "--errors-for-leak-kinds=definite")27 set(VALGRIND_CMD ${VALGRIND_CMD} "--leak-check=full" "--show-leak-kinds=definite" "--errors-for-leak-kinds=definite")
28 set(VALGRIND_CMD ${VALGRIND_CMD} "--track-fds=yes")28 set(VALGRIND_CMD ${VALGRIND_CMD} "--track-fds=yes")
29 set(VALGRIND_CMD ${VALGRIND_CMD} "--track-origins=yes")
29 set(VALGRIND_CMD ${VALGRIND_CMD} "--num-callers=128")30 set(VALGRIND_CMD ${VALGRIND_CMD} "--num-callers=128")
30 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_generic")31 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_generic")
31 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_glibc_2.23")32 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_glibc_2.23")
3233
=== modified file 'debian/changelog'
--- debian/changelog 2017-06-30 12:00:38 +0000
+++ debian/changelog 2017-10-11 15:01:23 +0000
@@ -1,3 +1,61 @@
1mir (0.28.0-0ubuntu1) UNRELEASED; urgency=medium
2
3 * New upstream release 0.28.0(https://launchpad.net/mir/+milestone/0.28.0)
4 - ABI summary:
5 . mirclient ABI unchanged at 9
6 . miral ABI introduced at 2
7 . mirserver ABI bumped to 45
8 . mircommon ABI unchanged at 7
9 . mirplatform ABI unchanged at 61
10 . mirprotobuf ABI unchanged at 3
11 . mirplatformgraphics ABI unchanged at 13
12 . mirclientplatform ABI unchanged at 5
13 . mirinputplatform ABI unchanged at 7
14 . mircore ABI unchanged at 1
15 - Enhancements:
16 . Update licences to (L)GPL3 or (L)GPL2.
17 . Initial support for Wayland clients
18 . [mir_demo_client_display_config] add orientation changing
19 . RPC: Don't require the server ACK client's buffer-release requests.
20 . Added libmirclientcpp to Mir source package
21 . Added libmiral to Mir source package
22 . Various small improvements to miral-shell example
23 . [libmiral, miral-shell] handle display reconfiguration better and allow
24 shells to customize maximized placements.
25 . Enable CommandLineOptions to be processed before server initialization
26 - Bugs fixed:
27 . Fix handling of invalid display configuration. (LP: #1643446)
28 . Move full responsibility for buffer IPC into frontend. (LP: #1395421)
29 . Don't destroy an IPC "closure" object when it may yet be used
30 (LP: #1672960)
31 . [mesa-kms] Respect display orientation when painting cursor.
32 (LP: #1610078)
33 . Respect cursor hotspot when hosted on Mir. (LP: #1705284)
34 . mcl::BufferVault: Fix lock inversion.
35 . Handle mir_event_type_close_window in examples (LP: #1706004),
36 (LP: #1705439)
37 . Drop BufferStream::suitable_for_cursor()
38 . Only notify resize events for valid surfaces (LP: #1643446)
39 . Don't leak DRM fds in platform-eglstream probe.
40 . Remove obsolete & broken example code. (LP: #1663130)
41 . Move buffer-release IPC to a dedicated IPC thread. (LP: #1395421)
42 . [NestedServerWithTwoDisplays] Look for the last of a series of
43 synthetic events to ensure that the queue is drained before the test
44 exits. (LP: #1709666)
45 . floating window manager allows resizing maximized windows (LP: #1704776)
46 . [miral-shell] doesn't work with breeze X cursor theme (LP: #1699084)
47 . [miral-shell] Don't allow splashscreen to be occluded (LP: #1705973)
48 . [miral-shell] Update maximized windows on display changes (LP: #1705695)
49 . Make racy DragAndDrop test reliable. (LP: #1704780)
50 . [libmiral] Define default window settings in one place and clamp the
51 actual values to avoid ldiv0. (LP: #1717061)
52 . [miral-kiosk] Apply fullscreen logic when hidden windows are restored.
53 (LP: #1717910)
54 . [mir-on-x11] Less annoying clipping of Mir-on-X11 window when it exceeds
55 display bounds. (LP: #1668599)
56
57 -- Alan Griffiths <alan.griffiths@canonical.com> Thu, 10 Aug 2017 11:54:30 +0000
58
1mir (0.27.0+17.10.20170630-0ubuntu1) artful; urgency=medium59mir (0.27.0+17.10.20170630-0ubuntu1) artful; urgency=medium
260
3 [ Daniel van Vugt ]61 [ Daniel van Vugt ]
462
=== modified file 'debian/control'
--- debian/control 2017-06-28 16:02:35 +0000
+++ debian/control 2017-10-11 15:01:23 +0000
@@ -31,6 +31,7 @@
31 libudev-dev,31 libudev-dev,
32 libgtest-dev,32 libgtest-dev,
33 google-mock (>= 1.6.0+svn437),33 google-mock (>= 1.6.0+svn437),
34 libxml++2.6-dev,
34# only enable valgrind once it's been tested to work on each architecture:35# only enable valgrind once it's been tested to work on each architecture:
35 valgrind [amd64 i386 armhf arm64],36 valgrind [amd64 i386 armhf arm64],
36 libglib2.0-dev,37 libglib2.0-dev,
@@ -45,6 +46,8 @@
45 libcapnp-dev,46 libcapnp-dev,
46 capnproto,47 capnproto,
47 libepoxy-dev,48 libepoxy-dev,
49 python3-pil:native,
50 linux-libc-dev,
48Standards-Version: 3.9.451Standards-Version: 3.9.4
49Homepage: https://launchpad.net/mir52Homepage: https://launchpad.net/mir
50# If you aren't a member of ~mir-team but need to upload packaging changes,53# If you aren't a member of ~mir-team but need to upload packaging changes,
@@ -67,7 +70,7 @@
6770
68#TODO: Packaging infrastructure for better dependency generation,71#TODO: Packaging infrastructure for better dependency generation,
69# ala pkg-xorg's xviddriver:Provides and ABI detection.72# ala pkg-xorg's xviddriver:Provides and ABI detection.
70Package: libmirserver4473Package: libmirserver45
71Section: libs74Section: libs
72Architecture: linux-any75Architecture: linux-any
73Multi-Arch: same76Multi-Arch: same
@@ -146,7 +149,7 @@
146Architecture: linux-any149Architecture: linux-any
147Multi-Arch: same150Multi-Arch: same
148Pre-Depends: ${misc:Pre-Depends}151Pre-Depends: ${misc:Pre-Depends}
149Depends: libmirserver44 (= ${binary:Version}),152Depends: libmirserver45 (= ${binary:Version}),
150 libmirplatform-dev (= ${binary:Version}),153 libmirplatform-dev (= ${binary:Version}),
151 libmircommon-dev (= ${binary:Version}),154 libmircommon-dev (= ${binary:Version}),
152 libglm-dev,155 libglm-dev,
@@ -195,6 +198,9 @@
195Architecture: linux-any198Architecture: linux-any
196Multi-Arch: same199Multi-Arch: same
197Pre-Depends: ${misc:Pre-Depends}200Pre-Depends: ${misc:Pre-Depends}
201Breaks: libmirclientcpp-dev
202Replaces: libmirclientcpp-dev
203Provides: libmirclientcpp-dev (=1.5)
198Depends: libmirclient9 (= ${binary:Version}),204Depends: libmirclient9 (= ${binary:Version}),
199 libmircommon-dev (= ${binary:Version}),205 libmircommon-dev (= ${binary:Version}),
200 libmircookie-dev (= ${binary:Version}),206 libmircookie-dev (= ${binary:Version}),
@@ -233,7 +239,7 @@
233Multi-Arch: same239Multi-Arch: same
234Pre-Depends: ${misc:Pre-Depends}240Pre-Depends: ${misc:Pre-Depends}
235Depends: libmirclient-debug-extension1 (= ${binary:Version}),241Depends: libmirclient-debug-extension1 (= ${binary:Version}),
236 ${misc:Depends},242 ${misc:Depends},
237 ${shlibs:Depends},243 ${shlibs:Depends},
238Description: Display server for Ubuntu - client debug interface headers244Description: Display server for Ubuntu - client debug interface headers
239 Mir is a display server running on linux systems, with a focus on efficiency,245 Mir is a display server running on linux systems, with a focus on efficiency,
@@ -254,9 +260,13 @@
254260
255Package: mir-demos261Package: mir-demos
256Architecture: linux-any262Architecture: linux-any
263Breaks: miral-examples
264Replaces: miral-examples
265Provides: miral-examples (=1.5)
257Depends: ${misc:Depends},266Depends: ${misc:Depends},
258 ${shlibs:Depends},267 ${shlibs:Depends},
259Recommends: fonts-liberation268Recommends: dmz-cursor-theme,
269 fonts-liberation
260Description: Display server for Ubuntu - demonstration programs270Description: Display server for Ubuntu - demonstration programs
261 Mir is a display server running on linux systems, with a focus on efficiency,271 Mir is a display server running on linux systems, with a focus on efficiency,
262 robust operation and a well-defined driver model.272 robust operation and a well-defined driver model.
@@ -477,3 +487,33 @@
477 .487 .
478 Contains header files that define the interfaces through which platforms and488 Contains header files that define the interfaces through which platforms and
479 renderers access the functionality needed to render with GL.489 renderers access the functionality needed to render with GL.
490
491Package: libmiral2
492Section: libs
493Architecture: linux-any
494Multi-Arch: same
495Pre-Depends: ${misc:Pre-Depends}
496Depends: ${misc:Depends},
497 ${shlibs:Depends},
498Description: Display server for Ubuntu - ABI preserving abstraction layer
499 MirAL provides an ABI-stable abstraction layer for Mir based shells,
500 insulating them from mirserver ABI breaks.
501 .
502 Contains the shared library containing MirAL abstraction layer.
503
504Package: libmiral-dev
505Section: libdevel
506Architecture: linux-any
507Multi-Arch: same
508Pre-Depends: ${misc:Pre-Depends}
509Depends: libmiral2 (= ${libmiral2:Version}),
510# ${source:Version} is technically incorrect, but Launchpad doesn't do BinNMUs
511# so it's harmless.
512 libmirclient-dev (= ${source:Version}),
513 ${misc:Depends},
514Description: Developer files for the Mir ABI-stable abstraction layer
515 MirAL provides an ABI-stable abstraction layer for Mir based shells,
516 insulating them from mirserver ABI breaks.
517 .
518 Contains header files required for development using the MirAL abstraction
519 layer.
480520
=== modified file 'debian/copyright'
--- debian/copyright 2017-05-08 03:04:26 +0000
+++ debian/copyright 2017-10-11 15:01:23 +0000
@@ -1,11 +1,11 @@
1Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/1Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
2Upstream-Name: Mir2Upstream-Name: Mir
3Upstream-Contact: Thomas Voß <thomas.voss@canonical.com>3Upstream-Contact: Alan Griffiths <alan.griffiths@canonical.com>
4Source: http://launchpad.net/mir4Source: http://launchpad.net/mir
55
6Files: *6Files: *
7Copyright: 2012-2013, Canonical Ltd.7Copyright: 2012-2017, Canonical Ltd.
8License: GPL-38License: GPL-3 or GPL-2
9 This program is free software: you can redistribute it and/or modify9 This program is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License version 3 as10 it under the terms of the GNU General Public License version 3 as
11 published by the Free Software Foundation.11 published by the Free Software Foundation.
@@ -18,6 +18,31 @@
18 On Debian systems, the full text of the GNU General Public18 On Debian systems, the full text of the GNU General Public
19 License version 3 can be found in the file19 License version 3 can be found in the file
20 `/usr/share/common-licenses/GPL-3'.20 `/usr/share/common-licenses/GPL-3'.
21 .
22 On Debian systems, the full text of the GNU General Public
23 License version 2 can be found in the file
24 `/usr/share/common-licenses/GPL-2'.
25
26Files: include/client/* include/common/* include/core/* include/platform/* include/platforms/* include/renderers/*
27 src/client/* src/common/* src/core/* src/platform/* src/platforms/* src/renderers/*
28Copyright: 2012-2017, Canonical Ltd.
29License: LGPL-3 or LGPL-2
30 This program is free software: you can redistribute it and/or modify
31 it under the terms of the GNU Lesser General Public License version 3 as
32 published by the Free Software Foundation.
33 .
34 This program is distributed in the hope that it will be useful,
35 but WITHOUT ANY WARRANTY; without even the implied warranty of
36 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
37 GNU Lesser General Public License for more details.
38 .
39 On Debian systems, the full text of the GNU Lesser General Public
40 License version 3 can be found in the file
41 `/usr/share/common-licenses/LGPL-3'.
42 .
43 On Debian systems, the full text of the GNU Lesser General Public
44 License version 2 can be found in the file
45 `/usr/share/common-licenses/LGPL-2'.
2146
22Files: include/test/mir_test/gmock_fixes.h:47Files: include/test/mir_test/gmock_fixes.h:
23Copyright:48Copyright:
@@ -49,20 +74,3 @@
49 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT74 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
50 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE75 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
51 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.76 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
52
53Files: include/client/* include/common/* src/client/* src/common/*
54Copyright: 2012-2013, Canonical Ltd.
55License: LGPL-3
56 This program is free software: you can redistribute it and/or modify
57 it under the terms of the GNU Lesser General Public License version 3 as
58 published by the Free Software Foundation.
59 .
60 This program is distributed in the hope that it will be useful,
61 but WITHOUT ANY WARRANTY; without even the implied warranty of
62 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
63 GNU Lesser General Public License for more details.
64 .
65 On Debian systems, the full text of the GNU Lesser General Public
66 License version 3 can be found in the file
67 `/usr/share/common-licenses/LGPL-3'.
68
6977
=== added file 'debian/libmiral-dev.install'
--- debian/libmiral-dev.install 1970-01-01 00:00:00 +0000
+++ debian/libmiral-dev.install 2017-10-11 15:01:23 +0000
@@ -0,0 +1,3 @@
1usr/include/miral/miral/*
2usr/lib/*/pkgconfig/miral.pc
3usr/lib/*/libmiral.so
04
=== added file 'debian/libmiral2.install'
--- debian/libmiral2.install 1970-01-01 00:00:00 +0000
+++ debian/libmiral2.install 2017-10-11 15:01:23 +0000
@@ -0,0 +1,1 @@
1usr/lib/*/libmiral.so.2
02
=== added file 'debian/libmiral2.symbols'
--- debian/libmiral2.symbols 1970-01-01 00:00:00 +0000
+++ debian/libmiral2.symbols 2017-10-11 15:01:23 +0000
@@ -0,0 +1,399 @@
1libmiral.so.2 libmiral2 #MINVER#
2 MIRAL_1.0@MIRAL_1.0 1.0.0
3 (c++)"miral::WindowInfo::height_inc(mir::geometry::detail::IntWrapper<mir::geometry::DeltaYTag>)@MIRAL_1.0" 1.0.0
4 (c++)"miral::WindowInfo::max_aspect(miral::WindowSpecification::AspectRatio)@MIRAL_1.0" 1.0.0
5 (c++)"miral::WindowInfo::max_height(mir::geometry::detail::IntWrapper<mir::geometry::HeightTag>)@MIRAL_1.0" 1.0.0
6 (c++)"miral::WindowInfo::min_aspect(miral::WindowSpecification::AspectRatio)@MIRAL_1.0" 1.0.0
7 (c++)"miral::WindowInfo::min_height(mir::geometry::detail::IntWrapper<mir::geometry::HeightTag>)@MIRAL_1.0" 1.0.0
8 (c++)"miral::WindowInfo::remove_child(miral::Window const&)@MIRAL_1.0" 1.0.0
9 (c++)"miral::WindowInfo::restore_rect(mir::geometry::Rectangle const&)@MIRAL_1.0" 1.0.0
10 (c++)"miral::WindowInfo::needs_titlebar(MirSurfaceType)@MIRAL_1.0" 1.0.0
11 (c++)"miral::WindowInfo::confine_pointer(MirPointerConfinementState)@MIRAL_1.0" 1.0.0
12 (c++)"miral::WindowInfo::preferred_orientation(MirOrientationMode)@MIRAL_1.0" 1.0.0
13 (c++)"miral::WindowInfo::name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
14 (c++)"miral::WindowInfo::type(MirSurfaceType)@MIRAL_1.0" 1.0.0
15 (c++)"miral::WindowInfo::state(MirSurfaceState)@MIRAL_1.0" 1.0.0
16 (c++)"miral::WindowInfo::parent(miral::Window const&)@MIRAL_1.0" 1.0.0
17 (c++)"miral::WindowInfo::userdata(std::shared_ptr<void>)@MIRAL_1.0" 1.0.0
18 (c++)"miral::WindowInfo::add_child(miral::Window const&)@MIRAL_1.0" 1.0.0
19 (c++)"miral::WindowInfo::max_width(mir::geometry::detail::IntWrapper<mir::geometry::WidthTag>)@MIRAL_1.0" 1.0.0
20 (c++)"miral::WindowInfo::min_width(mir::geometry::detail::IntWrapper<mir::geometry::WidthTag>)@MIRAL_1.0" 1.0.0
21 (c++)"miral::WindowInfo::output_id(mir::optional_value<int>)@MIRAL_1.0" 1.0.0
22 (c++)"miral::WindowInfo::width_inc(mir::geometry::detail::IntWrapper<mir::geometry::DeltaXTag>)@MIRAL_1.0" 1.0.0
23 (c++)"miral::WindowInfo::WindowInfo(miral::Window const&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
24 (c++)"miral::WindowInfo::WindowInfo(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
25 (c++)"miral::WindowInfo::WindowInfo()@MIRAL_1.0" 1.0.0
26 (c++)"miral::WindowInfo::WindowInfo(miral::Window const&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
27 (c++)"miral::WindowInfo::WindowInfo(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
28 (c++)"miral::WindowInfo::WindowInfo()@MIRAL_1.0" 1.0.0
29 (c++)"miral::WindowInfo::~WindowInfo()@MIRAL_1.0" 1.0.0
30 (c++)"miral::WindowInfo::~WindowInfo()@MIRAL_1.0" 1.0.0
31 (c++)"miral::WindowInfo::operator=(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
32 (c++)"miral::CursorTheme::CursorTheme(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
33 (c++)"miral::CursorTheme::CursorTheme(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
34 (c++)"miral::CursorTheme::~CursorTheme()@MIRAL_1.0" 1.0.0
35 (c++)"miral::CursorTheme::~CursorTheme()@MIRAL_1.0" 1.0.0
36 (c++)"miral::SetTerminator::SetTerminator(std::function<void (int)> const&)@MIRAL_1.0" 1.0.0
37 (c++)"miral::SetTerminator::SetTerminator(std::function<void (int)> const&)@MIRAL_1.0" 1.0.0
38 (c++)"miral::SetTerminator::~SetTerminator()@MIRAL_1.0" 1.0.0
39 (c++)"miral::SetTerminator::~SetTerminator()@MIRAL_1.0" 1.0.0
40 (c++)"miral::DebugExtension::enable()@MIRAL_1.0" 1.0.0
41 (c++)"miral::DebugExtension::disable()@MIRAL_1.0" 1.0.0
42 (c++)"miral::DebugExtension::DebugExtension(miral::DebugExtension const&)@MIRAL_1.0" 1.0.0
43 (c++)"miral::DebugExtension::DebugExtension()@MIRAL_1.0" 1.0.0
44 (c++)"miral::DebugExtension::DebugExtension(miral::DebugExtension const&)@MIRAL_1.0" 1.0.0
45 (c++)"miral::DebugExtension::DebugExtension()@MIRAL_1.0" 1.0.0
46 (c++)"miral::DebugExtension::operator=(miral::DebugExtension const&)@MIRAL_1.0" 1.0.0
47 (c++)"miral::AddInitCallback::AddInitCallback(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
48 (c++)"miral::AddInitCallback::AddInitCallback(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
49 (c++)"miral::AddInitCallback::~AddInitCallback()@MIRAL_1.0" 1.0.0
50 (c++)"miral::AddInitCallback::~AddInitCallback()@MIRAL_1.0" 1.0.0
51 (c++)"miral::ApplicationInfo::add_window(miral::Window const&)@MIRAL_1.0" 1.0.0
52 (c++)"miral::ApplicationInfo::remove_window(miral::Window const&)@MIRAL_1.0" 1.0.0
53 (c++)"miral::ApplicationInfo::userdata(std::shared_ptr<void>)@MIRAL_1.0" 1.0.0
54 (c++)"miral::ApplicationInfo::ApplicationInfo(miral::ApplicationInfo const&)@MIRAL_1.0" 1.0.0
55 (c++)"miral::ApplicationInfo::ApplicationInfo(std::shared_ptr<mir::scene::Session> const&)@MIRAL_1.0" 1.0.0
56 (c++)"miral::ApplicationInfo::ApplicationInfo()@MIRAL_1.0" 1.0.0
57 (c++)"miral::ApplicationInfo::ApplicationInfo(miral::ApplicationInfo const&)@MIRAL_1.0" 1.0.0
58 (c++)"miral::ApplicationInfo::ApplicationInfo(std::shared_ptr<mir::scene::Session> const&)@MIRAL_1.0" 1.0.0
59 (c++)"miral::ApplicationInfo::ApplicationInfo()@MIRAL_1.0" 1.0.0
60 (c++)"miral::ApplicationInfo::~ApplicationInfo()@MIRAL_1.0" 1.0.0
61 (c++)"miral::ApplicationInfo::~ApplicationInfo()@MIRAL_1.0" 1.0.0
62 (c++)"miral::ApplicationInfo::operator=(miral::ApplicationInfo const&)@MIRAL_1.0" 1.0.0
63 (c++)"miral::AppendEventFilter::AppendEventFilter(std::function<int (MirEvent const*)> const&)@MIRAL_1.0" 1.0.0
64 (c++)"miral::AppendEventFilter::AppendEventFilter(std::function<int (MirEvent const*)> const&)@MIRAL_1.0" 1.0.0
65 (c++)"miral::AppendEventFilter::operator()(mir::Server&)@MIRAL_1.0" 1.0.0
66 (c++)"miral::CommandLineOption::CommandLineOption(miral::CommandLineOption const&)@MIRAL_1.0" 1.0.0
67 (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
68 (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
69 (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
70 (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
71 (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
72 (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
73 (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
74 (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
75 (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
76 (c++)"miral::CommandLineOption::CommandLineOption(miral::CommandLineOption const&)@MIRAL_1.0" 1.0.0
77 (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
78 (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
79 (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
80 (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
81 (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
82 (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
83 (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
84 (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
85 (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
86 (c++)"miral::CommandLineOption::~CommandLineOption()@MIRAL_1.0" 1.0.0
87 (c++)"miral::CommandLineOption::~CommandLineOption()@MIRAL_1.0" 1.0.0
88 (c++)"miral::CommandLineOption::operator=(miral::CommandLineOption const&)@MIRAL_1.0" 1.0.0
89 (c++)"miral::WindowManagerTools::raise_tree(miral::Window const&)@MIRAL_1.0" 1.0.0
90 (c++)"miral::WindowManagerTools::force_close(miral::Window const&)@MIRAL_1.0" 1.0.0
91 (c++)"miral::WindowManagerTools::modify_window(miral::Window const&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
92 (c++)"miral::WindowManagerTools::modify_window(miral::WindowInfo&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
93 (c++)"miral::WindowManagerTools::active_display()@MIRAL_1.0" 1.0.0
94 (c++)"miral::WindowManagerTools::find_application(std::function<bool (miral::ApplicationInfo const&)> const&)@MIRAL_1.0" 1.0.0
95 (c++)"miral::WindowManagerTools::invoke_under_lock(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
96 (c++)"miral::WindowManagerTools::drag_active_window(mir::geometry::Displacement)@MIRAL_1.0" 1.0.0
97 (c++)"miral::WindowManagerTools::ask_client_to_close(miral::Window const&)@MIRAL_1.0" 1.0.0
98 (c++)"miral::WindowManagerTools::for_each_application(std::function<void (miral::ApplicationInfo&)> const&)@MIRAL_1.0" 1.0.0
99 (c++)"miral::WindowManagerTools::select_active_window(miral::Window const&)@MIRAL_1.0" 1.0.0
100 (c++)"miral::WindowManagerTools::focus_next_application()@MIRAL_1.0" 1.0.0
101 (c++)"miral::WindowManagerTools::focus_next_within_application()@MIRAL_1.0" 1.0.0
102 (c++)"miral::WindowManagerTools::WindowManagerTools(miral::WindowManagerToolsImplementation*)@MIRAL_1.0" 1.0.0
103 (c++)"miral::WindowManagerTools::WindowManagerTools(miral::WindowManagerTools const&)@MIRAL_1.0" 1.0.0
104 (c++)"miral::WindowManagerTools::WindowManagerTools(miral::WindowManagerToolsImplementation*)@MIRAL_1.0" 1.0.0
105 (c++)"miral::WindowManagerTools::WindowManagerTools(miral::WindowManagerTools const&)@MIRAL_1.0" 1.0.0
106 (c++)"miral::WindowManagerTools::~WindowManagerTools()@MIRAL_1.0" 1.0.0
107 (c++)"miral::WindowManagerTools::~WindowManagerTools()@MIRAL_1.0" 1.0.0
108 (c++)"miral::WindowManagerTools::operator=(miral::WindowManagerTools const&)@MIRAL_1.0" 1.0.0
109 (c++)"miral::WindowSpecification::height_inc()@MIRAL_1.0" 1.0.0
110 (c++)"miral::WindowSpecification::input_mode()@MIRAL_1.0" 1.0.0
111 (c++)"miral::WindowSpecification::max_aspect()@MIRAL_1.0" 1.0.0
112 (c++)"miral::WindowSpecification::max_height()@MIRAL_1.0" 1.0.0
113 (c++)"miral::WindowSpecification::min_aspect()@MIRAL_1.0" 1.0.0
114 (c++)"miral::WindowSpecification::min_height()@MIRAL_1.0" 1.0.0
115 (c++)"miral::WindowSpecification::input_shape()@MIRAL_1.0" 1.0.0
116 (c++)"miral::WindowSpecification::shell_chrome()@MIRAL_1.0" 1.0.0
117 (c++)"miral::WindowSpecification::confine_pointer()@MIRAL_1.0" 1.0.0
118 (c++)"miral::WindowSpecification::placement_hints()@MIRAL_1.0" 1.0.0
119 (c++)"miral::WindowSpecification::preferred_orientation()@MIRAL_1.0" 1.0.0
120 (c++)"miral::WindowSpecification::window_placement_gravity()@MIRAL_1.0" 1.0.0
121 (c++)"miral::WindowSpecification::aux_rect_placement_offset()@MIRAL_1.0" 1.0.0
122 (c++)"miral::WindowSpecification::aux_rect_placement_gravity()@MIRAL_1.0" 1.0.0
123 (c++)"miral::WindowSpecification::name[abi:cxx11]()@MIRAL_1.0" 1.0.0
124 (c++)"miral::WindowSpecification::size()@MIRAL_1.0" 1.0.0
125 (c++)"miral::WindowSpecification::type()@MIRAL_1.0" 1.0.0
126 (c++)"miral::WindowSpecification::state()@MIRAL_1.0" 1.0.0
127 (c++)"miral::WindowSpecification::parent()@MIRAL_1.0" 1.0.0
128 (c++)"miral::WindowSpecification::aux_rect()@MIRAL_1.0" 1.0.0
129 (c++)"miral::WindowSpecification::top_left()@MIRAL_1.0" 1.0.0
130 (c++)"miral::WindowSpecification::userdata()@MIRAL_1.0" 1.0.0
131 (c++)"miral::WindowSpecification::max_width()@MIRAL_1.0" 1.0.0
132 (c++)"miral::WindowSpecification::min_width()@MIRAL_1.0" 1.0.0
133 (c++)"miral::WindowSpecification::output_id()@MIRAL_1.0" 1.0.0
134 (c++)"miral::WindowSpecification::width_inc()@MIRAL_1.0" 1.0.0
135 (c++)"miral::WindowSpecification::WindowSpecification(mir::scene::SurfaceCreationParameters const&)@MIRAL_1.0" 1.0.0
136 (c++)"miral::WindowSpecification::WindowSpecification(mir::shell::SurfaceSpecification const&)@MIRAL_1.0" 1.0.0
137 (c++)"miral::WindowSpecification::WindowSpecification(miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
138 (c++)"miral::WindowSpecification::WindowSpecification()@MIRAL_1.0" 1.0.0
139 (c++)"miral::WindowSpecification::WindowSpecification(mir::scene::SurfaceCreationParameters const&)@MIRAL_1.0" 1.0.0
140 (c++)"miral::WindowSpecification::WindowSpecification(mir::shell::SurfaceSpecification const&)@MIRAL_1.0" 1.0.0
141 (c++)"miral::WindowSpecification::WindowSpecification(miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
142 (c++)"miral::WindowSpecification::WindowSpecification()@MIRAL_1.0" 1.0.0
143 (c++)"miral::WindowSpecification::~WindowSpecification()@MIRAL_1.0" 1.0.0
144 (c++)"miral::WindowSpecification::~WindowSpecification()@MIRAL_1.0" 1.0.0
145 (c++)"miral::WindowSpecification::operator=(miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
146 (c++)"miral::ActiveOutputsMonitor::add_listener(miral::ActiveOutputsListener*)@MIRAL_1.0" 1.0.0
147 (c++)"miral::ActiveOutputsMonitor::delete_listener(miral::ActiveOutputsListener*)@MIRAL_1.0" 1.0.0
148 (c++)"miral::ActiveOutputsMonitor::ActiveOutputsMonitor(miral::ActiveOutputsMonitor const&)@MIRAL_1.0" 1.0.0
149 (c++)"miral::ActiveOutputsMonitor::ActiveOutputsMonitor()@MIRAL_1.0" 1.0.0
150 (c++)"miral::ActiveOutputsMonitor::ActiveOutputsMonitor(miral::ActiveOutputsMonitor const&)@MIRAL_1.0" 1.0.0
151 (c++)"miral::ActiveOutputsMonitor::ActiveOutputsMonitor()@MIRAL_1.0" 1.0.0
152 (c++)"miral::ActiveOutputsMonitor::~ActiveOutputsMonitor()@MIRAL_1.0" 1.0.0
153 (c++)"miral::ActiveOutputsMonitor::~ActiveOutputsMonitor()@MIRAL_1.0" 1.0.0
154 (c++)"miral::ActiveOutputsMonitor::operator=(miral::ActiveOutputsMonitor const&)@MIRAL_1.0" 1.0.0
155 (c++)"miral::ActiveOutputsMonitor::operator()(mir::Server&)@MIRAL_1.0" 1.0.0
156 (c++)"miral::ActiveOutputsListener::advise_output_end()@MIRAL_1.0" 1.0.0
157 (c++)"miral::ActiveOutputsListener::advise_output_begin()@MIRAL_1.0" 1.0.0
158 (c++)"miral::ActiveOutputsListener::advise_output_create(miral::Output const&)@MIRAL_1.0" 1.0.0
159 (c++)"miral::ActiveOutputsListener::advise_output_delete(miral::Output const&)@MIRAL_1.0" 1.0.0
160 (c++)"miral::ActiveOutputsListener::advise_output_update(miral::Output const&, miral::Output const&)@MIRAL_1.0" 1.0.0
161 (c++)"miral::SetCommandLineHandler::SetCommandLineHandler(std::function<void (int, char const* const*)> const&)@MIRAL_1.0" 1.0.0
162 (c++)"miral::SetCommandLineHandler::SetCommandLineHandler(std::function<void (int, char const* const*)> const&)@MIRAL_1.0" 1.0.0
163 (c++)"miral::SetCommandLineHandler::~SetCommandLineHandler()@MIRAL_1.0" 1.0.0
164 (c++)"miral::SetCommandLineHandler::~SetCommandLineHandler()@MIRAL_1.0" 1.0.0
165 (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
166 (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
167 (c++)"miral::StartupInternalClient::~StartupInternalClient()@MIRAL_1.0" 1.0.0
168 (c++)"miral::StartupInternalClient::~StartupInternalClient()@MIRAL_1.0" 1.0.0
169 (c++)"miral::StartupInternalClient::operator()(mir::Server&)@MIRAL_1.0" 1.0.0
170 (c++)"miral::ApplicationCredentials::ApplicationCredentials(mir::frontend::SessionCredentials const&)@MIRAL_1.0" 1.0.0
171 (c++)"miral::ApplicationCredentials::ApplicationCredentials(mir::frontend::SessionCredentials const&)@MIRAL_1.0" 1.0.0
172 (c++)"miral::InternalClientLauncher::InternalClientLauncher()@MIRAL_1.0" 1.0.0
173 (c++)"miral::InternalClientLauncher::InternalClientLauncher()@MIRAL_1.0" 1.0.0
174 (c++)"miral::InternalClientLauncher::~InternalClientLauncher()@MIRAL_1.0" 1.0.0
175 (c++)"miral::InternalClientLauncher::~InternalClientLauncher()@MIRAL_1.0" 1.0.0
176 (c++)"miral::InternalClientLauncher::operator()(mir::Server&)@MIRAL_1.0" 1.0.0
177 (c++)"miral::WindowManagementPolicy::advise_end()@MIRAL_1.0" 1.0.0
178 (c++)"miral::WindowManagementPolicy::advise_begin()@MIRAL_1.0" 1.0.0
179 (c++)"miral::WindowManagementPolicy::advise_raise(std::vector<miral::Window, std::allocator<miral::Window> > const&)@MIRAL_1.0" 1.0.0
180 (c++)"miral::WindowManagementPolicy::advise_resize(miral::WindowInfo const&, mir::geometry::Size const&)@MIRAL_1.0" 1.0.0
181 (c++)"miral::WindowManagementPolicy::advise_move_to(miral::WindowInfo const&, mir::geometry::Point)@MIRAL_1.0" 1.0.0
182 (c++)"miral::WindowManagementPolicy::advise_new_app(miral::ApplicationInfo&)@MIRAL_1.0" 1.0.0
183 (c++)"miral::WindowManagementPolicy::advise_delete_app(miral::ApplicationInfo const&)@MIRAL_1.0" 1.0.0
184 (c++)"miral::WindowManagementPolicy::advise_focus_lost(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
185 (c++)"miral::WindowManagementPolicy::advise_new_window(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
186 (c++)"miral::WindowManagementPolicy::advise_focus_gained(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
187 (c++)"miral::WindowManagementPolicy::advise_state_change(miral::WindowInfo const&, MirSurfaceState)@MIRAL_1.0" 1.0.0
188 (c++)"miral::WindowManagementPolicy::advise_delete_window(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
189 (c++)"miral::equivalent_display_area(miral::Output const&, miral::Output const&)@MIRAL_1.0" 1.0.0
190 (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
191 (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
192 (c++)"miral::SetWindowManagmentPolicy::~SetWindowManagmentPolicy()@MIRAL_1.0" 1.0.0
193 (c++)"miral::SetWindowManagmentPolicy::~SetWindowManagmentPolicy()@MIRAL_1.0" 1.0.0
194 (c++)"miral::apply_lifecycle_state_to(std::shared_ptr<mir::scene::Session> const&, MirLifecycleState)@MIRAL_1.0" 1.0.0
195 (c++)"miral::CanonicalWindowManagerPolicy::place_new_surface(miral::ApplicationInfo const&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
196 (c++)"miral::CanonicalWindowManagerPolicy::advise_focus_gained(miral::WindowInfo const&)@MIRAL_1.0" 1.0.0
197 (c++)"miral::CanonicalWindowManagerPolicy::handle_raise_window(miral::WindowInfo&)@MIRAL_1.0" 1.0.0
198 (c++)"miral::CanonicalWindowManagerPolicy::handle_window_ready(miral::WindowInfo&)@MIRAL_1.0" 1.0.0
199 (c++)"miral::CanonicalWindowManagerPolicy::handle_modify_window(miral::WindowInfo&, miral::WindowSpecification const&)@MIRAL_1.0" 1.0.0
200 (c++)"miral::CanonicalWindowManagerPolicy::confirm_inherited_move(miral::WindowInfo const&, mir::geometry::Displacement)@MIRAL_1.0" 1.0.0
201 (c++)"miral::CanonicalWindowManagerPolicy::CanonicalWindowManagerPolicy(miral::WindowManagerTools const&)@MIRAL_1.0" 1.0.0
202 (c++)"miral::CanonicalWindowManagerPolicy::CanonicalWindowManagerPolicy(miral::WindowManagerTools const&)@MIRAL_1.0" 1.0.0
203 (c++)"miral::BasicSetApplicationAuthorizer::BasicSetApplicationAuthorizer(std::function<std::shared_ptr<miral::ApplicationAuthorizer> ()> const&)@MIRAL_1.0" 1.0.0
204 (c++)"miral::BasicSetApplicationAuthorizer::BasicSetApplicationAuthorizer(std::function<std::shared_ptr<miral::ApplicationAuthorizer> ()> const&)@MIRAL_1.0" 1.0.0
205 (c++)"miral::BasicSetApplicationAuthorizer::~BasicSetApplicationAuthorizer()@MIRAL_1.0" 1.0.0
206 (c++)"miral::BasicSetApplicationAuthorizer::~BasicSetApplicationAuthorizer()@MIRAL_1.0" 1.0.0
207 (c++)"miral::BasicSetApplicationAuthorizer::operator()(mir::Server&)@MIRAL_1.0" 1.0.0
208 (c++)"miral::display_configuration_options(mir::Server&)@MIRAL_1.0" 1.0.0
209 (c++)"miral::kill(std::shared_ptr<mir::scene::Session> const&, int)@MIRAL_1.0" 1.0.0
210 (c++)"miral::Keymap::set_keymap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
211 (c++)"miral::Keymap::Keymap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
212 (c++)"miral::Keymap::Keymap(miral::Keymap const&)@MIRAL_1.0" 1.0.0
213 (c++)"miral::Keymap::Keymap()@MIRAL_1.0" 1.0.0
214 (c++)"miral::Keymap::Keymap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@MIRAL_1.0" 1.0.0
215 (c++)"miral::Keymap::Keymap(miral::Keymap const&)@MIRAL_1.0" 1.0.0
216 (c++)"miral::Keymap::Keymap()@MIRAL_1.0" 1.0.0
217 (c++)"miral::Keymap::~Keymap()@MIRAL_1.0" 1.0.0
218 (c++)"miral::Keymap::~Keymap()@MIRAL_1.0" 1.0.0
219 (c++)"miral::Keymap::operator=(miral::Keymap const&)@MIRAL_1.0" 1.0.0
220 (c++)"miral::Output::Output(mir::graphics::DisplayConfigurationOutput const&)@MIRAL_1.0" 1.0.0
221 (c++)"miral::Output::Output(miral::Output const&)@MIRAL_1.0" 1.0.0
222 (c++)"miral::Output::Output(mir::graphics::DisplayConfigurationOutput const&)@MIRAL_1.0" 1.0.0
223 (c++)"miral::Output::Output(miral::Output const&)@MIRAL_1.0" 1.0.0
224 (c++)"miral::Output::~Output()@MIRAL_1.0" 1.0.0
225 (c++)"miral::Output::~Output()@MIRAL_1.0" 1.0.0
226 (c++)"miral::Output::operator=(miral::Output const&)@MIRAL_1.0" 1.0.0
227 (c++)"miral::Window::resize(mir::geometry::Size const&)@MIRAL_1.0" 1.0.0
228 (c++)"miral::Window::move_to(mir::geometry::Point)@MIRAL_1.0" 1.0.0
229 (c++)"miral::Window::Window(std::shared_ptr<mir::scene::Session> const&, std::shared_ptr<mir::scene::Surface> const&)@MIRAL_1.0" 1.0.0
230 (c++)"miral::Window::Window()@MIRAL_1.0" 1.0.0
231 (c++)"miral::Window::Window(std::shared_ptr<mir::scene::Session> const&, std::shared_ptr<mir::scene::Surface> const&)@MIRAL_1.0" 1.0.0
232 (c++)"miral::Window::Window()@MIRAL_1.0" 1.0.0
233 (c++)"miral::Window::~Window()@MIRAL_1.0" 1.0.0
234 (c++)"miral::Window::~Window()@MIRAL_1.0" 1.0.0
235 (c++)"miral::pid_of(std::shared_ptr<mir::scene::Session> const&)@MIRAL_1.0" 1.0.0
236 (c++)"miral::name_of[abi:cxx11](std::shared_ptr<mir::scene::Session> const&)@MIRAL_1.0" 1.0.0
237 (c++)"miral::MirRunner::add_stop_callback(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
238 (c++)"miral::MirRunner::add_start_callback(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
239 (c++)"miral::MirRunner::set_exception_handler(std::function<void ()> const&)@MIRAL_1.0" 1.0.0
240 (c++)"miral::MirRunner::stop()@MIRAL_1.0" 1.0.0
241 (c++)"miral::MirRunner::run_with(std::initializer_list<std::function<void (mir::Server&)> >)@MIRAL_1.0" 1.0.0
242 (c++)"miral::MirRunner::MirRunner(int, char const**)@MIRAL_1.0" 1.0.0
243 (c++)"miral::MirRunner::MirRunner(int, char const**, char const*)@MIRAL_1.0" 1.0.0
244 (c++)"miral::MirRunner::MirRunner(int, char const**)@MIRAL_1.0" 1.0.0
245 (c++)"miral::MirRunner::MirRunner(int, char const**, char const*)@MIRAL_1.0" 1.0.0
246 (c++)"miral::MirRunner::~MirRunner()@MIRAL_1.0" 1.0.0
247 (c++)"miral::MirRunner::~MirRunner()@MIRAL_1.0" 1.0.0
248 (c++)"miral::operator==(miral::Output::PhysicalSizeMM const&, miral::Output::PhysicalSizeMM const&)@MIRAL_1.0" 1.0.0
249 (c++)"miral::operator==(miral::Window const&, std::shared_ptr<mir::scene::Surface> const&)@MIRAL_1.0" 1.0.0
250 (c++)"miral::operator==(miral::Window const&, miral::Window const&)@MIRAL_1.0" 1.0.0
251 (c++)"miral::operator==(std::shared_ptr<mir::scene::Surface> const&, miral::Window const&)@MIRAL_1.0" 1.0.0
252 (c++)"miral::WindowInfo::height_inc() const@MIRAL_1.0" 1.0.0
253 (c++)"miral::WindowInfo::is_visible() const@MIRAL_1.0" 1.0.0
254 (c++)"miral::WindowInfo::max_aspect() const@MIRAL_1.0" 1.0.0
255 (c++)"miral::WindowInfo::max_height() const@MIRAL_1.0" 1.0.0
256 (c++)"miral::WindowInfo::min_aspect() const@MIRAL_1.0" 1.0.0
257 (c++)"miral::WindowInfo::min_height() const@MIRAL_1.0" 1.0.0
258 (c++)"miral::WindowInfo::can_morph_to(MirSurfaceType) const@MIRAL_1.0" 1.0.0
259 (c++)"miral::WindowInfo::restore_rect() const@MIRAL_1.0" 1.0.0
260 (c++)"miral::WindowInfo::can_be_active() const@MIRAL_1.0" 1.0.0
261 (c++)"miral::WindowInfo::has_output_id() const@MIRAL_1.0" 1.0.0
262 (c++)"miral::WindowInfo::confine_pointer() const@MIRAL_1.0" 1.0.0
263 (c++)"miral::WindowInfo::constrain_resize(mir::geometry::Point&, mir::geometry::Size&) const@MIRAL_1.0" 1.0.0
264 (c++)"miral::WindowInfo::must_have_parent() const@MIRAL_1.0" 1.0.0
265 (c++)"miral::WindowInfo::must_not_have_parent() const@MIRAL_1.0" 1.0.0
266 (c++)"miral::WindowInfo::preferred_orientation() const@MIRAL_1.0" 1.0.0
267 (c++)"miral::WindowInfo::name[abi:cxx11]() const@MIRAL_1.0" 1.0.0
268 (c++)"miral::WindowInfo::type() const@MIRAL_1.0" 1.0.0
269 (c++)"miral::WindowInfo::state() const@MIRAL_1.0" 1.0.0
270 (c++)"miral::WindowInfo::parent() const@MIRAL_1.0" 1.0.0
271 (c++)"miral::WindowInfo::window() const@MIRAL_1.0" 1.0.0
272 (c++)"miral::WindowInfo::children() const@MIRAL_1.0" 1.0.0
273 (c++)"miral::WindowInfo::userdata() const@MIRAL_1.0" 1.0.0
274 (c++)"miral::WindowInfo::max_width() const@MIRAL_1.0" 1.0.0
275 (c++)"miral::WindowInfo::min_width() const@MIRAL_1.0" 1.0.0
276 (c++)"miral::WindowInfo::output_id() const@MIRAL_1.0" 1.0.0
277 (c++)"miral::WindowInfo::width_inc() const@MIRAL_1.0" 1.0.0
278 (c++)"miral::CursorTheme::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
279 (c++)"miral::SetTerminator::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
280 (c++)"miral::DebugExtension::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
281 (c++)"miral::AddInitCallback::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
282 (c++)"miral::ApplicationInfo::application() const@MIRAL_1.0" 1.0.0
283 (c++)"miral::ApplicationInfo::name[abi:cxx11]() const@MIRAL_1.0" 1.0.0
284 (c++)"miral::ApplicationInfo::windows() const@MIRAL_1.0" 1.0.0
285 (c++)"miral::ApplicationInfo::userdata() const@MIRAL_1.0" 1.0.0
286 (c++)"miral::CommandLineOption::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
287 (c++)"miral::WindowManagerTools::active_window() const@MIRAL_1.0" 1.0.0
288 (c++)"miral::WindowManagerTools::id_for_window[abi:cxx11](miral::Window const&) const@MIRAL_1.0" 1.0.0
289 (c++)"miral::WindowManagerTools::count_applications() const@MIRAL_1.0" 1.0.0
290 (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
291 (c++)"miral::WindowManagerTools::place_and_size_for_state(miral::WindowSpecification&, miral::WindowInfo const&) const@MIRAL_1.0" 1.0.0
292 (c++)"miral::WindowManagerTools::info_for(miral::Window const&) const@MIRAL_1.0" 1.0.0
293 (c++)"miral::WindowManagerTools::info_for(std::weak_ptr<mir::scene::Session> const&) const@MIRAL_1.0" 1.0.0
294 (c++)"miral::WindowManagerTools::info_for(std::weak_ptr<mir::scene::Surface> const&) const@MIRAL_1.0" 1.0.0
295 (c++)"miral::WindowManagerTools::window_at(mir::geometry::Point) const@MIRAL_1.0" 1.0.0
296 (c++)"miral::WindowSpecification::height_inc() const@MIRAL_1.0" 1.0.0
297 (c++)"miral::WindowSpecification::input_mode() const@MIRAL_1.0" 1.0.0
298 (c++)"miral::WindowSpecification::max_aspect() const@MIRAL_1.0" 1.0.0
299 (c++)"miral::WindowSpecification::max_height() const@MIRAL_1.0" 1.0.0
300 (c++)"miral::WindowSpecification::min_aspect() const@MIRAL_1.0" 1.0.0
301 (c++)"miral::WindowSpecification::min_height() const@MIRAL_1.0" 1.0.0
302 (c++)"miral::WindowSpecification::input_shape() const@MIRAL_1.0" 1.0.0
303 (c++)"miral::WindowSpecification::shell_chrome() const@MIRAL_1.0" 1.0.0
304 (c++)"miral::WindowSpecification::confine_pointer() const@MIRAL_1.0" 1.0.0
305 (c++)"miral::WindowSpecification::placement_hints() const@MIRAL_1.0" 1.0.0
306 (c++)"miral::WindowSpecification::preferred_orientation() const@MIRAL_1.0" 1.0.0
307 (c++)"miral::WindowSpecification::window_placement_gravity() const@MIRAL_1.0" 1.0.0
308 (c++)"miral::WindowSpecification::aux_rect_placement_offset() const@MIRAL_1.0" 1.0.0
309 (c++)"miral::WindowSpecification::aux_rect_placement_gravity() const@MIRAL_1.0" 1.0.0
310 (c++)"miral::WindowSpecification::name[abi:cxx11]() const@MIRAL_1.0" 1.0.0
311 (c++)"miral::WindowSpecification::size() const@MIRAL_1.0" 1.0.0
312 (c++)"miral::WindowSpecification::type() const@MIRAL_1.0" 1.0.0
313 (c++)"miral::WindowSpecification::state() const@MIRAL_1.0" 1.0.0
314 (c++)"miral::WindowSpecification::parent() const@MIRAL_1.0" 1.0.0
315 (c++)"miral::WindowSpecification::update(mir::scene::SurfaceCreationParameters&) const@MIRAL_1.0" 1.0.0
316 (c++)"miral::WindowSpecification::aux_rect() const@MIRAL_1.0" 1.0.0
317 (c++)"miral::WindowSpecification::top_left() const@MIRAL_1.0" 1.0.0
318 (c++)"miral::WindowSpecification::userdata() const@MIRAL_1.0" 1.0.0
319 (c++)"miral::WindowSpecification::max_width() const@MIRAL_1.0" 1.0.0
320 (c++)"miral::WindowSpecification::min_width() const@MIRAL_1.0" 1.0.0
321 (c++)"miral::WindowSpecification::output_id() const@MIRAL_1.0" 1.0.0
322 (c++)"miral::WindowSpecification::width_inc() const@MIRAL_1.0" 1.0.0
323 (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
324 (c++)"miral::WindowManagerOptions::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
325 (c++)"miral::SetCommandLineHandler::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
326 (c++)"miral::ApplicationCredentials::gid() const@MIRAL_1.0" 1.0.0
327 (c++)"miral::ApplicationCredentials::pid() const@MIRAL_1.0" 1.0.0
328 (c++)"miral::ApplicationCredentials::uid() const@MIRAL_1.0" 1.0.0
329 (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
330 (c++)"miral::SetWindowManagmentPolicy::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
331 (c++)"miral::BasicSetApplicationAuthorizer::the_application_authorizer() const@MIRAL_1.0" 1.0.0
332 (c++)"miral::Keymap::operator()(mir::Server&) const@MIRAL_1.0" 1.0.0
333 (c++)"miral::Output::power_mode() const@MIRAL_1.0" 1.0.0
334 (c++)"miral::Output::form_factor() const@MIRAL_1.0" 1.0.0
335 (c++)"miral::Output::orientation() const@MIRAL_1.0" 1.0.0
336 (c++)"miral::Output::pixel_format() const@MIRAL_1.0" 1.0.0
337 (c++)"miral::Output::refresh_rate() const@MIRAL_1.0" 1.0.0
338 (c++)"miral::Output::is_same_output(miral::Output const&) const@MIRAL_1.0" 1.0.0
339 (c++)"miral::Output::physical_size_mm() const@MIRAL_1.0" 1.0.0
340 (c++)"miral::Output::type() const@MIRAL_1.0" 1.0.0
341 (c++)"miral::Output::used() const@MIRAL_1.0" 1.0.0
342 (c++)"miral::Output::scale() const@MIRAL_1.0" 1.0.0
343 (c++)"miral::Output::valid() const@MIRAL_1.0" 1.0.0
344 (c++)"miral::Output::extents() const@MIRAL_1.0" 1.0.0
345 (c++)"miral::Output::connected() const@MIRAL_1.0" 1.0.0
346 (c++)"miral::Window::application() const@MIRAL_1.0" 1.0.0
347 (c++)"miral::Window::size() const@MIRAL_1.0" 1.0.0
348 (c++)"miral::Window::top_left() const@MIRAL_1.0" 1.0.0
349 (c++)"miral::Window::operator std::shared_ptr<mir::scene::Surface>() const@MIRAL_1.0" 1.0.0
350 (c++)"miral::Window::operator std::weak_ptr<mir::scene::Surface>() const@MIRAL_1.0" 1.0.0
351 (c++)"miral::Window::operator bool() const@MIRAL_1.0" 1.0.0
352 (c++)"typeinfo for miral::ActiveOutputsListener@MIRAL_1.0" 1.0.0
353 (c++)"typeinfo for miral::WindowManagementPolicy@MIRAL_1.0" 1.0.0
354 (c++)"typeinfo for miral::CanonicalWindowManagerPolicy@MIRAL_1.0" 1.0.0
355 (c++)"vtable for miral::ActiveOutputsListener@MIRAL_1.0" 1.0.0
356 (c++)"vtable for miral::WindowManagementPolicy@MIRAL_1.0" 1.0.0
357 (c++)"vtable for miral::CanonicalWindowManagerPolicy@MIRAL_1.0" 1.0.0
358 MIRAL_1.1@MIRAL_1.1 1.1.0
359 (c++)"miral::WindowInfo::needs_titlebar(MirWindowType)@MIRAL_1.1" 1.1.0
360 (c++)"miral::WindowInfo::type(MirWindowType)@MIRAL_1.1" 1.1.0
361 (c++)"miral::WindowInfo::state(MirWindowState)@MIRAL_1.1" 1.1.0
362 (c++)"miral::WindowManagementPolicy::advise_state_change(miral::WindowInfo const&, MirWindowState)@MIRAL_1.1" 1.1.0
363 (c++)"miral::WindowInfo::can_morph_to(MirWindowType) const@MIRAL_1.1" 1.1.0
364 (c++)"miral::CanonicalWindowManagerPolicy::place_new_window(miral::ApplicationInfo const&, miral::WindowSpecification const&)@MIRAL_1.1" 1.1.0
365 MIRAL_1.2@MIRAL_1.2 1.2.0
366 (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
367 (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
368 (c++)"miral::WindowInfo::shell_chrome(MirShellChrome)@MIRAL_1.2" 1.2.0
369 (c++)"miral::WindowInfo::shell_chrome() const@MIRAL_1.2" 1.2.0
370 (c++)"miral::WindowManagerTools::drag_window(miral::Window const&, mir::geometry::Displacement)@MIRAL_1.2" 1.2.0
371 (c++)"typeinfo for miral::ApplicationAuthorizer@MIRAL_1.0" 1.2.0
372 (c++)"typeinfo for miral::ApplicationAuthorizer1@MIRAL_1.2" 1.2.0
373 MIRAL_1.3@MIRAL_1.3 1.3.0
374 (c++)"miral::operator<(miral::Window const&, miral::Window const&)@MIRAL_1.0" 1.3.0
375 (c++)"miral::WindowManagerTools::create_workspace()@MIRAL_1.3" 1.3.0
376 (c++)"miral::WindowManagerTools::add_tree_to_workspace(miral::Window const&, std::shared_ptr<miral::Workspace> const&)@MIRAL_1.3" 1.3.0
377 (c++)"miral::WindowManagerTools::focus_prev_within_application()@MIRAL_1.3" 1.3.0
378 (c++)"miral::WindowManagerTools::remove_tree_from_workspace(miral::Window const&, std::shared_ptr<miral::Workspace> const&)@MIRAL_1.3" 1.3.0
379 (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
380 (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
381 (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
382 (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
383 (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
384 (c++)"typeinfo for miral::WorkspacePolicy@MIRAL_1.3" 1.3.0
385 (c++)"vtable for miral::WorkspacePolicy@MIRAL_1.3" 1.3.0
386 MIRAL_1.3.1@MIRAL_1.3.1 1.3.1
387 (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
388 (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
389 (c++)"miral::SetWindowManagementPolicy::~SetWindowManagementPolicy()@MIRAL_1.3.1" 1.3.1
390 (c++)"miral::SetWindowManagementPolicy::~SetWindowManagementPolicy()@MIRAL_1.3.1" 1.3.1
391 (c++)"miral::SetWindowManagementPolicy::operator()(mir::Server&) const@MIRAL_1.3.1" 1.3.1
392 MIRAL_1.4.0@MIRAL_1.4.0 1.4.0
393 (c++)"miral::WindowManagerTools::end_drag_and_drop()@MIRAL_1.4.0" 1.4.0
394 (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
395 (c++)"typeinfo for miral::WindowManagementPolicyAddendum2@MIRAL_1.4.0" 1.4.0
396 MIRAL_1.5.0@MIRAL_1.5.0 1.5.0
397 (c++)"miral::pre_init(miral::CommandLineOption const&)@MIRAL_1.5.0" 1.5.0
398 (c++)"typeinfo for miral::WindowManagementPolicyAddendum3@MIRAL_1.5.0" 1.5.0
399 (c++)"miral::WindowManagerTools::active_output()@MIRAL_1.5.0" 1.5.0
0\ No newline at end of file400\ No newline at end of file
1401
=== modified file 'debian/libmirclient-dev.install'
--- debian/libmirclient-dev.install 2017-05-17 04:48:46 +0000
+++ debian/libmirclient-dev.install 2017-10-11 15:01:23 +0000
@@ -1,8 +1,10 @@
1usr/include/mirclient/mir_toolkit/*.h1usr/include/mirclient/mir_toolkit/*.h
2usr/include/mirclient/mir_toolkit/extensions/*.h2usr/include/mirclient/mir_toolkit/extensions/*.h
3usr/include/mirclient/mir/client/*.h
3usr/include/mirclient/mir/events/*.h4usr/include/mirclient/mir/events/*.h
4usr/include/mirclient/mir/event_printer.h5usr/include/mirclient/mir/event_printer.h
5usr/include/mirclient/mir_toolkit/events6usr/include/mirclient/mir_toolkit/events
6usr/include/mirclient/mir_toolkit/rs/mir_render_surface.h7usr/include/mirclient/mir_toolkit/rs/mir_render_surface.h
7usr/lib/*/pkgconfig/mirclient.pc8usr/lib/*/pkgconfig/mirclient.pc
9usr/lib/*/pkgconfig/mirclientcpp.pc
8usr/lib/*/libmirclient.so10usr/lib/*/libmirclient.so
911
=== renamed file 'debian/libmirserver44.install' => 'debian/libmirserver45.install'
--- debian/libmirserver44.install 2017-05-08 03:04:26 +0000
+++ debian/libmirserver45.install 2017-10-11 15:01:23 +0000
@@ -1,1 +1,1 @@
1usr/lib/*/libmirserver.so.441usr/lib/*/libmirserver.so.45
22
=== modified file 'debian/mir-demos.install'
--- debian/mir-demos.install 2015-06-17 05:20:42 +0000
+++ debian/mir-demos.install 2017-10-11 15:01:23 +0000
@@ -1,3 +1,11 @@
1usr/bin/mir_demo_*1usr/bin/mir_demo_*
2usr/bin/mir_proving_*
3usr/lib/*/libmir_demo_*2usr/lib/*/libmir_demo_*
3usr/bin/miral-shell
4usr/bin/miral-run
5usr/bin/miral-kiosk
6usr/bin/miral-xrun
7usr/bin/miral-screencast
8usr/bin/miral-desktop
9usr/bin/miral-app
10usr/share/applications/miral-shell.desktop
11usr/share/icons/hicolor/scalable/apps/ubuntu-logo.svg
412
=== modified file 'debian/rules'
--- debian/rules 2017-06-28 16:02:35 +0000
+++ debian/rules 2017-10-11 15:01:23 +0000
@@ -1,10 +1,6 @@
1#!/usr/bin/make -f1#!/usr/bin/make -f
22
3DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)3include /usr/share/dpkg/default.mk
4DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
5DEB_HOST_ARCH_ENDIAN ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_ENDIAN)
6EXACT_PACKAGE_VERSION = $(shell dpkg-parsechangelog | grep Version | cut -d' ' -f 2)
7DISTRIB_CODENAME = $(shell grep DISTRIB_CODENAME /etc/lsb-release | cut -d= -f2)
84
9export DPKG_GENSYMBOLS_CHECK_LEVEL = 45export DPKG_GENSYMBOLS_CHECK_LEVEL = 4
106
@@ -57,16 +53,25 @@
57override_dh_auto_build-indep:53override_dh_auto_build-indep:
58 dh_auto_build -- doc54 dh_auto_build -- doc
5955
56# Reconstruct the MirAL version
57MIRAL_VERSION_MAJOR = $(shell perl -n -e '/^set\(MIRAL_VERSION_MAJOR ([0-9]*)\)$$/ && print $$1' src/CMakeLists.txt)
58MIRAL_VERSION_MINOR = $(shell perl -n -e '/^set\(MIRAL_VERSION_MINOR ([0-9]*)\)$$/ && print $$1' src/CMakeLists.txt)
59MIRAL_VERSION_PATCH = $(shell perl -n -e '/^set\(MIRAL_VERSION_PATCH ([0-9]*)\)$$/ && print $$1' src/CMakeLists.txt)
60MIRAL_RELEASE=$(MIRAL_VERSION_MAJOR).$(MIRAL_VERSION_MINOR).$(MIRAL_VERSION_PATCH)
61MIRAL_VERSION=$(MIRAL_RELEASE).$(DEB_VERSION)
62
60# TODO: we'll use a symbol file once mir is abi stable63# TODO: we'll use a symbol file once mir is abi stable
61override_dh_makeshlibs:64override_dh_makeshlibs:
62 dh_makeshlibs -V -Nmir-test-tools65 dh_makeshlibs -Nlibmiral2 -V -Nmir-test-tools
66 # libmiral2 *has* a symbols file, so we don't need to -V it!
67 dh_makeshlibs -plibmiral2 -- -v$(MIRAL_RELEASE)
6368
64override_dh_install:69override_dh_install:
65# Nothing outside Mir should link to libmirprotobuf directly.70# Nothing outside Mir should link to libmirprotobuf directly.
66# Delete the symlink so that --fail-missing doesn't think we've missed it71# Delete the symlink so that --fail-missing doesn't think we've missed it
67# accidentally.72# accidentally.
68 -rm debian/tmp/usr/lib/*/libmirprotobuf.so73 -rm debian/tmp/usr/lib/*/libmirprotobuf.so
69ifeq ($(filter xenial yakkety zesty,$(DISTRIB_CODENAME)),)74ifeq ($(filter xenial yakkety zesty,$(DEB_DISTRIBUTION)),)
70 dh_install75 dh_install
71else76else
72 # xenial, yakkety & zesty predate dh_missing77 # xenial, yakkety & zesty predate dh_missing
@@ -80,3 +85,7 @@
80# Don't try to find dependencies of libraries used as test data85# Don't try to find dependencies of libraries used as test data
81override_dh_shlibdeps:86override_dh_shlibdeps:
82 dh_shlibdeps -Xmir-test-data87 dh_shlibdeps -Xmir-test-data
88
89override_dh_gencontrol:
90 dh_gencontrol -Nlibmiral2 -Nlibmiral-dev
91 dh_gencontrol -plibmiral2 -plibmiral-dev -- -v$(MIRAL_VERSION) -V'libmiral2:Version=$(MIRAL_VERSION)'
8392
=== modified file 'doc/Doxyfile.in'
--- doc/Doxyfile.in 2017-05-08 03:04:26 +0000
+++ doc/Doxyfile.in 2017-10-11 15:01:23 +0000
@@ -784,7 +784,8 @@
784INPUT = @CMAKE_CURRENT_SOURCE_DIR@/README.md \784INPUT = @CMAKE_CURRENT_SOURCE_DIR@/README.md \
785 @CMAKE_CURRENT_SOURCE_DIR@/HACKING.md \785 @CMAKE_CURRENT_SOURCE_DIR@/HACKING.md \
786 @CMAKE_CURRENT_SOURCE_DIR@/doc \786 @CMAKE_CURRENT_SOURCE_DIR@/doc \
787 @CMAKE_CURRENT_SOURCE_DIR@/examples \787 @CMAKE_CURRENT_SOURCE_DIR@/examples/miral-kiosk \
788 @CMAKE_CURRENT_SOURCE_DIR@/examples/miral-shell \
788 @CMAKE_CURRENT_SOURCE_DIR@/include \789 @CMAKE_CURRENT_SOURCE_DIR@/include \
789 @MIR_GENERATED_INCLUDE_DIRECTORIES_FLATTENED@790 @MIR_GENERATED_INCLUDE_DIRECTORIES_FLATTENED@
790791
@@ -859,7 +860,9 @@
859# Note that relative paths are relative to the directory from which doxygen is860# Note that relative paths are relative to the directory from which doxygen is
860# run.861# run.
861862
862EXCLUDE =863EXCLUDE = @CMAKE_CURRENT_SOURCE_DIR@/include/server \
864 @CMAKE_CURRENT_SOURCE_DIR@/include/platform \
865 @CMAKE_CURRENT_SOURCE_DIR@/include/platforms
863866
864# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or867# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
865# directories that are symbolic links (a Unix file system feature) are excluded868# directories that are symbolic links (a Unix file system feature) are excluded
@@ -875,7 +878,11 @@
875# Note that the wildcards are matched against the file with absolute path, so to878# Note that the wildcards are matched against the file with absolute path, so to
876# exclude all test directories for example use the pattern */test/*879# exclude all test directories for example use the pattern */test/*
877880
878EXCLUDE_PATTERNS = */include/test/*881EXCLUDE_PATTERNS = *.capnp.c++ \
882 */detail/* \
883 @CMAKE_CURRENT_SOURCE_DIR@/examples/multi_stream.cpp \
884 @CMAKE_CURRENT_SOURCE_DIR@/examples/uses_non_client_symbol.cpp \
885 @CMAKE_CURRENT_SOURCE_DIR@/examples/miral-shell/titlebar_config.*
879886
880# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names887# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
881# (namespaces, classes, functions, etc.) that should be excluded from the888# (namespaces, classes, functions, etc.) that should be excluded from the
882889
=== removed file 'doc/building_source_for_pc.md'
--- doc/building_source_for_pc.md 2017-05-08 03:04:26 +0000
+++ doc/building_source_for_pc.md 1970-01-01 00:00:00 +0000
@@ -1,101 +0,0 @@
1Building the source for a PC {#building_source_for_pc}
2============================
3
4Getting Mir
5-----------
6
7Mir is a project on Launchpad (https://launchpad.net/mir). To grab a copy use
8the command:
9
10 $ bzr branch lp:mir
11
12The command above will download the latest development version of Mir into
13the 'mir' directory (called the 'project directory' from now on).
14
15Getting dependencies
16--------------------
17
18To succesfully build Mir there are a few packages required. The easiest way
19to get them is to use the packaging build dependencies:
20
21 $ sudo apt-get install devscripts equivs cmake
22
23Then, in the project directory:
24
25 $ sudo mk-build-deps -i
26
27
28Building Mir
29------------
30
31Mir is built using CMake. You first need to create the build directory and
32configure the build. In the project directory do:
33
34 $ mkdir build
35 $ cd build
36 $ cmake .. (possibly passing configuration options to CMake)
37
38There are many configuration options for the Mir project. The default options
39will work fine, but you may want to customize the build depending on your
40needs. The best way to get an overview and set them is to use the cmake-gui
41tool:
42
43 $ cmake-gui ..
44
45The next step is to build the source and run the tests:
46
47 $ make (-j8)
48 $ ctest
49
50
51Running Mir
52-----------
53
54The binaries created in the bin subdirectory of the project directory can be
55used directly. For example,
56
57 $ bin/mir_demo_server --launch-client bin/mir_demo_client_multiwin
58
59Other examples described elsewhere in this documentation assume you're using the
60installed version and simply need "bin/" adding to specify the local build.
61
62
63Install Mir
64-----------
65
66*It should not be necessary to install Mir for experimental purposes (see
67"Running Mir" above).* Further, if you are using an Ubuntu derived disto then
68there's likely to be existing Mir binaries elsewhere that may interact badly
69with a second install.
70
71To install Mir just use the normal make install command:
72
73 $ sudo make install
74
75This will install the Mir libraries, executable, example clients and header
76files to the configured installation location (/usr/local by default).
77
78NB You may need "sudo ldconfig" to refresh the cache before the installed
79programs work.
80
81If you install to a non-standard location, keep in mind that you will probably
82need to properly set the PKG_CONFIG_PATH environment variable to allow other
83applications to build against Mir, and LD_LIBRARY_PATH to allow applications to
84find the Mir libraries at runtime.
85
86
87Building Mesa
88-------------
89
90*The Mesa packages shipped with Ubuntu are already built with the relevant Mir patches
91and should work out of the box with Mir.*
92
93For GL accelerated clients to use Mir they need to use a patched version of Mesa
94that supports Mir.
95
96The patch is hosted on GitHub:
97
98 $ git clone https://github.com/RAOF/mesa.git
99
100Compile as per normal instructions and pass --with-egl-platforms="mir,drm" to
101the configure options. You will need libmirclient installed as shown above.
1020
=== removed file 'doc/demo_server_controls.md'
--- doc/demo_server_controls.md 2017-05-08 03:04:26 +0000
+++ doc/demo_server_controls.md 1970-01-01 00:00:00 +0000
@@ -1,69 +0,0 @@
1Demo Server {#demo_server}
2===========
3
4Mir's demo server (`mir_demo_server`) is an example of using the Mir to
5build a server. It uses only functionality supported by the public Mir API.
6
7Running Demo Server
8-------------------
9
10Remember to always run `mir_demo_server` as root on PC (not required on
11Android), as this is required for input device support (open bug
12https://bugs.launchpad.net/mir/+bug/1286252);
13
14 sudo mir_demo_server
15
16And if you're not already on the VT you wish to use, that needs to be
17specified:
18
19 sudo mir_demo_server --vt 1
20
21There are plenty more options available if you run:
22
23 mir_demo_server --help
24
25The following operations are supported:
26
27 - Quit (shut down the Mir server): *Ctrl-Alt-Backspace*
28 - Switch back to X: *Ctrl-Alt-F7*
29 - Switch virtual terminals (VTs): *Ctrl-Alt-(F1-F12)*
30 - Switch apps: *Alt-Tab*, tap or click on the corresponding app
31 - Close app: *Alt-F4*
32 - Switch window within app: *Alt-`*, tap or click on the window
33 - Close surface: *Ctrl-F4*
34 - Move window: *Alt-leftmousebutton* drag
35 - Resize window: *Alt-middle_button* drag
36 - Maximize/restore current window: *Alt-F11*
37 - Vertically maximize/restore current window: *Shift-F11*
38 - Horizontally maximize/restore current window: *Ctrl-F11*
39
40For those writing client code request to set the surface attribute
41`mir_surface_attrib_state` are honoured:
42 - `mir_window_state_restored`: restores the window
43 - `mir_window_state_maximized`: maximizes size
44 - `mir_window_state_vertmaximized`: maximizes height
45 - `mir_window_state_horizmaximized`: maximizes width
46
47For a quick demo try:
48
49 sudo DISPLAY= mir_demo_server --vt 1 --launch bin/mir_demo_client_egltriangle\
50 --test-client bin/mir_demo_client_multiwin --test-timeout 60
51
52(Remember to unwrap the line)
53
54### Tiling Window Manager
55
56One option that needs elaboration is "--window-manager tiling".
57
58This starts a (rather primitive) tiling window manager. It tracks the available
59displays and splits the available workspace into "tiles" (one per client).
60
61For a quick demo try:
62
63 sudo DISPLAY= mir_demo_server --vt 1 --launch bin/mir_demo_client_egltriangle\
64 --test-client bin/mir_demo_client_multiwin --test-timeout 60\
65 --window-manager tiling
66
67(Remember to unwrap the line)
68
69Want more? Log your requests at: https://bugs.launchpad.net/mir/+filebug
700
=== removed file 'doc/demo_shell_controls.md'
--- doc/demo_shell_controls.md 2016-01-29 08:18:22 +0000
+++ doc/demo_shell_controls.md 1970-01-01 00:00:00 +0000
@@ -1,53 +0,0 @@
1Demo Shell Controls {#demo_shell_controls}
2===================
3
4Mir's demo shell (`mir_proving_server`) is a basic environment for testing
5Mir server features as well as running natively ported apps/toolkits. It is
6still primitive and requires some explaining to make proper use of, so read
7on.
8
9Running Demo Shell
10------------------
11
12Remember to always run `mir_proving_server` as root on PC (not required on
13Android), as this is required for input device support (open bug
14https://bugs.launchpad.net/mir/+bug/1286252);
15
16 sudo mir_proving_server
17
18And if you're not already on the VT you wish to use, that needs to be
19specified:
20
21 sudo mir_proving_server --vt 1
22
23There are plenty more options available if you run:
24
25 mir_proving_server --help
26
27Controls
28--------
29
30All controls have a keyboard/mouse combination and where possible also have
31touch alternatives for phones/tablets:
32
33 - Quit the shell (shut down the Mir server): *Ctrl-Alt-Backspace*
34 - Switch back to X: *Ctrl-Alt-F7*
35 - Switch virtual terminals (VTs): *Ctrl-Alt-(F1-F12)*
36 - Switch apps: *Alt-Tab* or *4-finger swipe left/right*
37 - Switch windows of the current app: *Alt-grave*
38 - Ask an app to close: *Alt-F4* (it may refuse or not understand)
39 - Move window: *Alt-leftmousebutton* or *3-finger drag*
40 - Resize window: *Alt-middlemousebutton* or *3-finger pinch/zoom*
41 - Toggle negative rendering: *Super-N*
42 - Toggle high-contrast rendering: *Super-C*
43 - Sleep/wake all displays: *Alt-P* or *Android power button*
44 - Rotate the focussed monitor: *Ctrl-Alt-(Left/Right/Up/Down)* or
45 *Volume up/down while touching the screen*
46 - Change display mode of the focussed monitor: *Ctrl-Alt-(=/-)*
47 - Reset display mode to default, on focussed monitor: *Ctrl-Alt-0*
48 - Adjust window opacity/alpha: *Alt-mousewheel*
49 - Zoom in/out: *Super-mousewheel*
50
51*Super* means the Windows key on a PC, or the search key on a Chromebook.
52
53Want more? Log your requests at: https://bugs.launchpad.net/mir/+filebug
540
=== added file 'doc/getting_and_using_mir.md'
--- doc/getting_and_using_mir.md 1970-01-01 00:00:00 +0000
+++ doc/getting_and_using_mir.md 2017-10-11 15:01:23 +0000
@@ -0,0 +1,106 @@
1Getting and Using Mir {#getting_and_using_mir}
2=====================
3
4Getting Mir examples
5--------------------
6
7You can install the Mir examples as follows:
8
9 $ sudo apt install mir-demos qterminal
10 $ sudo apt install mir-graphics-drivers-desktop qtubuntu-desktop
11
12Using Mir examples
13------------------
14
15For convenient testing there's a "miral-app" script that wraps the commands used
16to start a server and then launches a terminal (as the current user):
17
18 $ miral-app
19
20To run independently of X11 you need to grant access to the graphics hardware
21(by running as root) and specify a VT to run in. There's a "miral-desktop"
22script that wraps to start the server (as root) and then launch a terminal
23(as the current user):
24
25 $ miral-desktop
26
27For more options see *Options when running the Mir example shell* below.
28
29### Running applications on Mir
30
31If you use the command-line launched by miral-app or miral-desktop native Mir
32applications (which include native Mir clients and those that use SDL or the
33GTK+, Qt toolkits) can be started as usual:
34
35 $ mir_demo_client_egltriangle
36 $ gedit
37 $ sudo apt install kate neverball
38 $ kate
39 $ neverball
40
41From outside the MirAL session GTK+, Qt and SDL applications can still be run
42using the miral-run script:
43
44 $ miral-run gedit
45 $ miral-run 7kaa
46
47### Running for X11 applications
48
49If you want to run X11 applications that do not have native Mir support in the
50toolkit they use then the answer is Xmir: an X11 server that runs on Mir. First
51you need Xmir installed:
52
53 $ sudo apt install xmir
54
55Then once you have started a miral shell (as above) you can use miral-xrun to
56run applications under Xmir:
57
58 $ miral-xrun firefox
59
60This automatically starts a Xmir X11 server on a new $DISPLAY for the
61application to use. You can use miral-xrun both from a command-line outside the
62miral-shell or, for example, from the terminal running in the shell.
63
64### Options when running the Mir example shell
65
66#### Script Options
67
68Both the "miral-app" and "miral-desktop" scripts provide options for using an
69alternative example shell (miral-kiosk) and an alternative to gnome-terminal.
70
71 -kiosk use miral-kiosk instead of miral-shell
72 -launcher <launcher> use <launcher> instead of qterminal
73
74In addition miral-desktop has the option to set the VT that is used:
75
76 -vt <termid> set the virtual terminal [4]
77
78There are some additional options (listed with "-h") but those are the important
79ones.
80
81#### miral-shell Options
82
83The scripts can also be used to pass options to Mir: they pass everything on
84the command-line following the first thing they don't understand. These can be
85listed by `miral-shell --help`. Most of these options are inherited from Mir,
86but the following MirAL specific are likely to be of interest:
87
88 --window-management-trace log trace message
89
90Probably the main use for MirAL is to test window-management (either of a
91toolkit or of a server) and this logs all calls to and from the window
92management policy. This option is supported directly in the MirAL library and
93works for any MirAL based shell - even one you write yourself.
94
95 --keymap arg (=us) keymap <layout>[+<variant>[+<options>]]
96 , e,g, "gb" or "cz+qwerty" or
97 "de++compose:caps"
98
99For those of us not in the USA this is very useful. Both the -shell and -kiosk
100examples support this option.
101
102 --window-manager arg (=floating) window management strategy
103 [{floating|tiling|system-compositor}]
104
105Is only supported by miral-shell and its main use is to allow an alternative
106"tiling" window manager to be selected.
0107
=== added file 'doc/getting_involved_in_mir.md'
--- doc/getting_involved_in_mir.md 1970-01-01 00:00:00 +0000
+++ doc/getting_involved_in_mir.md 2017-10-11 15:01:23 +0000
@@ -0,0 +1,106 @@
1Getting Involved in Mir {#getting_involved_in_mir}
2=======================
3
4Getting involved
5----------------
6
7The best place to ask questions and discuss about the Mir project is
8the \#ubuntu-mir IRC channel on freenode.
9
10The Mir project is hosted on Launchpad: https://launchpad.net/mir
11
12Building Mir
13------------
14
15These instructions assume that you’re using Ubuntu 16.04LTS or later, I’ve not
16earlier Ubuntu versions or other distributions.
17
18You’ll need a few development and utility packages installed, along with the
19Mir graphics drivers:
20
21 $ sudo apt install devscripts equivs bzr
22 $ sudo apt install mir-graphics-drivers-desktop
23
24If you’re working on a phone or tablet use mir-graphics-drivers-android in
25place of mir-graphics-drivers-desktop. (See \ref building_source_for_arm for
26more on this.)
27
28With these installed you can checkout and build Mir:
29
30 $ bzr branch lp:mir
31 $ sudo mk-build-deps -i
32 $ mkdir mir/build
33 $ cd mir/build
34 $ cmake ..
35 $ make
36
37This creates an example shell (miral-shell) in the bin directory. This can be
38run directly:
39
40 $ bin/miral-shell
41
42With the default options this runs in a window on X (which is convenient for
43development).
44
45The miral-shell example is simple, don’t expect to see a sophisticated launcher
46by default. You can start mir apps from the command-line. For example:
47
48 $ bin/miral-run gnome-terminal
49
50That’s right, a lot of standard GTK+ applications will “just work” (the GDK
51toolkit has a Mir backend). Any that assume the existence of an X11 and bypass
52the toolkit my making X11 protocol calls will have problems though.
53
54To exit from miral-shell press Ctrl-Alt-BkSp.
55
56You can install the Mir examples, headers and libraries you've built with:
57
58 $ sudo make install
59
60### Preparing a VM to run Mir
61
62Especially if you want to debug the shell without locking your system this might be a helpful setup:
63
64- \ref setup_kvm_for_mir
65- \ref setup_vmware_for_mir
66
67### Contributing to Mir
68
69Currently, the Mir code activity is performed on a development branch:
70lp:~mir-team/mir/development-branch
71
72This development branch is promoted to the branch used for the ubuntu archive
73and touch images. Please submit any merge proposals against the development
74branch.
75
76Please file bug reports at: https://bugs.launchpad.net/mir
77
78The Mir development mailing list can be found at: https://lists.ubuntu.com/mailman/listinfo/Mir-devel
79
80The Mir coding guidelines are [here](cppguide/index.html).
81
82### Working on Mir code
83
84 - \ref md_README "Mir Read me"
85 - \ref md_HACKING "Mir hacking guide"
86 - \ref component_reports
87 - \ref dso_versioning_guide
88 - \ref abi_compatibility_tools
89 - \ref performance_framework
90 - \ref latency "Measuring visual latency"
91
92Building Mesa
93-------------
94
95*The Mesa packages shipped with Ubuntu are already built with the relevant Mir patches
96and should work out of the box with Mir.*
97
98For GL accelerated clients to use Mir they need to use a patched version of Mesa
99that supports Mir.
100
101The patch is hosted on GitHub:
102
103 $ git clone https://github.com/RAOF/mesa.git
104
105Compile as per normal instructions and pass --with-egl-platforms="mir,drm" to
106the configure options. You will need libmirclient installed as shown above.
0107
=== removed file 'doc/installing_prebuilt_on_pc.md'
--- doc/installing_prebuilt_on_pc.md 2016-01-29 08:18:22 +0000
+++ doc/installing_prebuilt_on_pc.md 1970-01-01 00:00:00 +0000
@@ -1,8 +0,0 @@
1Installing pre-built packages on a PC {#installing_prebuilt_on_pc}
2=====================================
3
4Install Ubuntu 13.10 or later if you haven't done so already. Uninstall any
5proprietary drivers (-nvidia, -fglrx) and reboot on the FOSS drivers.
6
7 sudo apt-get update
8 sudo apt-get install mir-demos
90
=== added file 'doc/introducing_the_miral_api.md'
--- doc/introducing_the_miral_api.md 1970-01-01 00:00:00 +0000
+++ doc/introducing_the_miral_api.md 2017-10-11 15:01:23 +0000
@@ -0,0 +1,25 @@
1Introducing the Miral API {#introducing_the_miral_api}
2=========================
3
4The main() program
5------------------
6
7The main() program from miral-shell looks like this:
8
9\include shell_main.cpp
10
11This shell is providing FloatingWindowManagerPolicy, TilingWindowManagerPolicy
12and SpinnerSplash. The rest is from MirAL.
13
14If you look for the corresponding code in lp:qtmir and lp:mir you’ll find it
15less clear, more verbose and scattered over multiple files.
16
17A shell has to provide a window management policy (miral-shell provides two:
18FloatingWindowManagerPolicy and TilingWindowManagerPolicy). A window management
19policy needs to implement the \ref miral::WindowManagementPolicy interface for
20handling a set of window management events.
21
22The way these events are handled determines the behaviour of the shell.
23
24The \ref miral::WindowManagerTools interface provides the principle methods for
25a window management policy to control Mir.
026
=== modified file 'doc/mainpage.md'
--- doc/mainpage.md 2017-05-08 03:04:26 +0000
+++ doc/mainpage.md 2017-10-11 15:01:23 +0000
@@ -3,104 +3,66 @@
33
4Mir is a next generation display server targeted as a replacement for the X4Mir is a next generation display server targeted as a replacement for the X
5window server system to unlock next-generation user experiences for devices5window server system to unlock next-generation user experiences for devices
6ranging from Linux desktop to mobile devices powered by Ubuntu. The primary6ranging from Linux desktop to mobile and IoT devices powered by Ubuntu.
7purpose of Mir is to enable the development of the next generation7
8[Unity](http://unity.ubuntu.com).8 - If you want to use the Mir snaps, see:
9 [Run a kiosk snap on Ubuntu Core](https://developer.ubuntu.com/core/examples/snaps-on-mir)
10
11 - If you want to try out the Mir demos on desktop, see: \ref getting_and_using_mir
12
13 - If you want to get involved in Mir development, see: \ref getting_involved_in_mir
14
15Using Mir for client development
16--------------------------------
17
18This is usually something you don't need to do explicitly, it is normally
19handled by a GUI toolkit (or library).
20
21A toolkit can run on Mir in three ways: using Wayland protocols, using the Mir
22client API or using X11 translation by the Xmir server.
23
24 - Qt, has "wayland" and "mir" plugins that can be selected by setting
25 the QT_QPA_PLATFORM environment variable to "wayland" or "ubuntumirclient"
26 respectively.
27
28 - SDL can be built with "wayland" and "mir" support and these options selected
29 by setting the SDL_VIDEODRIVER environment variable to "wayland" or "mir".
30
31If want to use the Mir client library directly (e.g. you are working on "mir"
32support for a toolkit or library) Install the headers and libraries for using
33libmirclient in development:
34
35 $ sudo apt install libmirclient-dev
36
37A `miral.pc` file is provided for use with `pkg-config` or other tools. For
38example:
39
40 $ pkg-config --cflags mirclient
41
42The client API documentation is here: \ref mir_toolkit
43
44Using Mir for server development
45--------------------------------
46
47Install the headers and libraries for using libmiral in development:
48
49 $ sudo apt install libmiral-dev
50
51A `miral.pc` file is provided for use with `pkg-config` or other tools. For
52example:
53
54 $ pkg-config --cflags miral
55
56The server API is introduced here: \ref introducing_the_miral_api
57
58The Mir Documentation
59---------------------
60
61The Mir documentation can be installed and read like this:
62
63 $ sudo apt install mir-doc
64 $ xdg-open /usr/share/doc/mir-doc/html/index.html
965
10More detailed information about the motivation, scope, and high-level design66More detailed information about the motivation, scope, and high-level design
11of Mir can be found at http://wiki.ubuntu.com/MirSpec .67of Mir can be found at http://wiki.ubuntu.com/MirSpec .
1268
13Getting and installing Mir
14--------------------------
15
16### Using pre-built packages
17
18If you just want to try out mir, or write client applications, then the easiest
19way is to use the pre-built packages:
20
21 - \ref installing_prebuilt_on_pc
22
23### Building and installing from source
24
25If you are curious about Mir internals or intend to contribute to it, you should
26get the source and build it:
27
28 - \ref building_source_for_pc
29 - \ref building_source_for_arm
30
31### Preparing a VM to run Mir
32
33Especially if you want to debug the shell without locking your system this might be a helpful setup:
34
35- \ref setup_kvm_for_mir
36- \ref setup_vmware_for_mir
37
38Using Mir
39---------
40
41 - \ref using_mir_on_pc
42 - \ref demo_shell_controls
43 - \ref demo_server
44
45Getting involved
46----------------
47
48The best place to ask questions and discuss about the Mir project is
49the \#ubuntu-mir IRC channel on freenode.
50
51The Mir project is hosted on Launchpad: https://launchpad.net/mir
52
53Currently, the Mir code activity is performed on a development branch:
54lp:~mir-team/mir/development-branch
55
56Approximately fortnightly, this development branch is promoted to the branch
57used for the ubuntu archive and touch images. Please submit any merge proposals
58against the development branch.
59
60Please file bug reports at: https://bugs.launchpad.net/mir
61
62The Mir development mailing list can be found at: https://lists.ubuntu.com/mailman/listinfo/Mir-devel
63
64The Mir coding guidelines are [here](cppguide/index.html).
65
66Writing client applications
67---------------------------
68
69 - \ref mir_toolkit "Mir API Documentation"
70 - \subpage basic.c "basic.c: A basic Mir client (which does nothing)"
71
72Writing server applications
73---------------------------
74
75Mir server is written as a library which allows the server code to be adapted
76for bespoke applications.
77
78 - \subpage server_example.cpp
79 "server_example.cpp: a test executable hosting the following"
80 - \subpage server_example_input_event_filter.cpp
81 "server_example_input_event_filter.cpp: provide a Quit command"
82 - \subpage server_example_display_configuration_policy.cpp
83 "server_example_display_configuration_policy.cpp: configuring display layout"
84 - \subpage server_example_input_filter.cpp
85 "server_example_input_filter.cpp: print input events to stdout"
86 - \subpage server_example_log_options.cpp
87 "server_example_log_options.cpp: replace Mir logger with glog"
88 - \subpage server_example_basic_window_manager.h
89 "server_example_basic_window_manager.h: How to wire up a window manager"
90 - \subpage server_example_window_management.cpp
91 "server_example_window_management.cpp: simple window management examples"
92 - \subpage server_example_canonical_window_manager.cpp
93 "server_example_canonical_window_manager.cpp: canonical window management policy"
94 - \subpage server_example_custom_compositor.cpp
95 "server_example_custom_compositor.cpp: demonstrate writing an alternative GL rendering code"
96
97Working on Mir code
98-------------------
99
100 - \ref md_README "Mir Read me"
101 - \ref md_HACKING "Mir hacking guide"
102 - \ref component_reports
103 - \ref dso_versioning_guide
104 - \ref abi_compatibility_tools
105 - \ref performance_framework
106 - \ref latency "Measuring visual latency"
10769
=== removed file 'doc/using_mir_on_pc.md'
--- doc/using_mir_on_pc.md 2016-01-29 08:18:22 +0000
+++ doc/using_mir_on_pc.md 1970-01-01 00:00:00 +0000
@@ -1,91 +0,0 @@
1Using Mir on a PC {#using_mir_on_pc}
2=================
3
4Before you begin
5----------------
6
7Make sure your hardware is supported. That means you're using a Mesa driver,
8of which intel, radeon, and nouveau families are supported. If you're logged
9in to X then run this command to verify an appropriate DRI driver is active:
10
11 sudo pmap `pidof X` | grep dri.so
12
13or
14
15 lsmod | grep drm
16
17Before you can use Mir you need to ensure you have the proper custom Mesa
18build installed. If you are running Ubuntu 13.10 or later
19(see \ref installing_prebuilt_on_pc), you should be good to go.
20
21If you built Mir from source code (see \ref building_source_for_pc), you
22need to ensure you are using the proper Mesa at runtime. You can do that by
23installing the Mesa packages from Ubuntu 13.10 (or later) or by building the
24custom Mesa yourself and ensuring it can be found by Mir, e.g., by using
25`LD_LIBRARY_PATH`.
26
27### Getting some example client applications
28
29You can get some example programs by installing the `mir-demos` package:
30
31 $ sudo apt-get install mir-demos
32
33If you are building from source you can find client applications in the `bin/`
34subdirectory of the build directory.
35
36Running Mir
37-----------
38
39Mir can run run either natively on mesa-kms or as an X application.
40
41### Running Mir on X
42
43To run Mir as an X client start it from an X terminal:
44
45 $ mir_demo_server --launch-client mir_demo_client_multiwin
46
47You can start additional Mir clients, for example (in a new terminal):
48
49 $ mir_demo_egltriangle
50
51To exit from Mir:
52
53 <Ctrl+Alt+BkSp>
54
55Note: up to Mir 0.18 it is also necessary to specify `--platform-input-lib` when
56starting the server:
57 - for Mir-0.17 add: `--platform-input-lib server-mesa-x11.so.6`
58 - for Mir-0.18 add: `--platform-input-lib server-mesa-x11.so.7`
59
60### Running Mir natively
61
62To run Mir natively on a PC/desktop/laptop:
63
64 $ sudo DISPLAY= mir_demo_server --vt 1 --arw-file
65
66This will switch you to a Mir session on VT1. Switch back to your X-based
67desktop:
68
69 <Ctrl+Alt+F7>
70
71In a new terminal:
72
73 $ mir_demo_client_multiwin -m /tmp/mir_socket
74
75Switch back to Mir.
76
77 <Ctrl+Alt+F1>
78
79Watch your friends be amazed!
80
81To exit from Mir:
82
83 <Ctrl+Alt+BkSp>
84
85In case you accidentally killed your X login and ended up with a failsafe
86screen, you might find on subsequent reboots you can't log in to X at all any
87more (it instantly and silently takes you back to the login screen). The fix
88for this is to log in to a VT and:
89
90 $ rm .Xauthority
91 $ sudo restart lightdm
920
=== modified file 'examples/CMakeLists.txt'
--- examples/CMakeLists.txt 2017-06-06 16:26:18 +0000
+++ examples/CMakeLists.txt 2017-10-11 15:01:23 +0000
@@ -1,14 +1,5 @@
1mir_add_wrapped_executable(mir_demo_standalone_render_surfaces1add_subdirectory(miral-kiosk)
2 render_surfaces.cpp2add_subdirectory(miral-shell)
3 buffer_render_target.cpp
4 image_renderer.cpp
5)
6
7target_link_libraries(mir_demo_standalone_render_surfaces
8 mirserver
9 exampleserverconfig
10 ${Boost_LIBRARIES}
11)
123
13set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -fno-strict-aliasing -Wextra")4set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -fno-strict-aliasing -Wextra")
145
@@ -18,26 +9,17 @@
18)9)
1910
20add_library(exampleserverconfig STATIC11add_library(exampleserverconfig STATIC
21 server_example_basic_window_manager.cpp
22 server_example_basic_window_manager.h
23 server_example_canonical_window_manager.cpp
24 server_example_display_configuration_policy.cpp
25 server_example_input_device_config.cpp12 server_example_input_device_config.cpp
26 server_example_input_event_filter.cpp13 server_example_input_event_filter.cpp
27 server_example_log_options.cpp14 server_example_log_options.cpp
28 server_example_input_filter.cpp15 server_example_input_filter.cpp
29 server_example_host_lifecycle_event.cpp16 server_example_host_lifecycle_event.cpp
30 server_example_window_management.cpp
31 server_example_custom_compositor.cpp17 server_example_custom_compositor.cpp
32 server_example_adorning_compositor.cpp18 server_example_adorning_compositor.cpp
33 server_example_cursor_images.cpp
34 server_example_cursor_images.h
35 xcursor_loader.cpp
36 xcursor_loader.h
37 xcursor.c
38 xcursor.h
39)19)
4020
21target_link_libraries(exampleserverconfig mirserver)
22
41target_link_libraries(eglapp23target_link_libraries(eglapp
42 mirclient24 mirclient
43 ${EGL_LIBRARIES}25 ${EGL_LIBRARIES}
@@ -184,6 +166,7 @@
184add_library(mirdraw STATIC graphics_utils.cpp)166add_library(mirdraw STATIC graphics_utils.cpp)
185167
186include_directories(168include_directories(
169 ${PROJECT_SOURCE_DIR}/include/miral
187 ${PROJECT_SOURCE_DIR}/include/server170 ${PROJECT_SOURCE_DIR}/include/server
188 ${PROJECT_SOURCE_DIR}/include/client171 ${PROJECT_SOURCE_DIR}/include/client
189 ${PROJECT_SOURCE_DIR}/include/platform172 ${PROJECT_SOURCE_DIR}/include/platform
@@ -192,17 +175,6 @@
192 ${GL_INCLUDE_DIRS}175 ${GL_INCLUDE_DIRS}
193)176)
194177
195mir_add_wrapped_executable(mir_demo_standalone_render_to_fb
196 render_to_fb.cpp
197)
198
199target_link_libraries(mir_demo_standalone_render_to_fb
200 mirserver
201 mirdraw
202 ${GL_LIBRARIES}
203 ${Boost_LIBRARIES}
204)
205
206add_library(mir_demo_server_loadable MODULE178add_library(mir_demo_server_loadable MODULE
207 server_example.cpp179 server_example.cpp
208 glog_logger.cpp180 glog_logger.cpp
@@ -210,7 +182,8 @@
210)182)
211183
212target_link_libraries(mir_demo_server_loadable184target_link_libraries(mir_demo_server_loadable
213 mirserver185 miral-shell-lib
186 miral
214 exampleserverconfig187 exampleserverconfig
215 ${GLog_LIBRARY}188 ${GLog_LIBRARY}
216 ${GFlags_LIBRARY}189 ${GFlags_LIBRARY}
@@ -229,9 +202,6 @@
229 dl202 dl
230)203)
231204
232mir_add_wrapped_executable(mir_demo_server_minimal server_minimal.cpp)
233target_link_libraries(mir_demo_server_minimal mirserver)
234
235if (MIR_ENABLE_TESTS)205if (MIR_ENABLE_TESTS)
236 add_executable(mir_symbol_test206 add_executable(mir_symbol_test
237 uses_non_client_symbol.cpp207 uses_non_client_symbol.cpp
@@ -268,15 +238,6 @@
268 endif ()238 endif ()
269endif ()239endif ()
270240
271add_executable(mir_cursor_theme_dump
272 cursor-theme-dump.cpp
273)
274
275target_link_libraries(mir_cursor_theme_dump
276 exampleserverconfig
277 mirserver
278)
279
280mir_add_wrapped_executable(mir_demo_client_multistream241mir_add_wrapped_executable(mir_demo_client_multistream
281 multi_stream.cpp242 multi_stream.cpp
282)243)
@@ -313,6 +274,15 @@
313 mirclient274 mirclient
314)275)
315276
277include_directories(${MIR_GENERATED_INCLUDE_DIRECTORIES})
278
279mir_add_wrapped_executable(mir_demo_client_wayland wayland_client.c)
280target_link_libraries(mir_demo_client_wayland
281
282 ${WAYLAND_CLIENT_LIBRARIES}
283)
284
316mir_add_wrapped_executable(mir_demo_client_screencast screencast.cpp)285mir_add_wrapped_executable(mir_demo_client_screencast screencast.cpp)
317286
318target_link_libraries(mir_demo_client_screencast mirclient)287target_link_libraries(mir_demo_client_screencast mirclient)
288
319289
=== modified file 'examples/animated_cursor_demo_client.c'
--- examples/animated_cursor_demo_client.c 2017-05-19 13:51:47 +0000
+++ examples/animated_cursor_demo_client.c 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2015 Canonical LTD2 * Copyright © 2015 Canonical LTD
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/as_render_target.h'
--- examples/as_render_target.h 2015-10-01 08:58:30 +0000
+++ examples/as_render_target.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2015 Canonical Ltd.2 * Copyright © 2015 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/basic.c'
--- examples/basic.c 2017-05-19 13:49:04 +0000
+++ examples/basic.c 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2012 Canonical Ltd.2 * Copyright © 2012 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
@@ -41,16 +41,12 @@
41/// \snippet basic.c surface_release_tag41/// \snippet basic.c surface_release_tag
42///\subsection connection_release We release our connection42///\subsection connection_release We release our connection
43/// \snippet basic.c connection_release_tag43/// \snippet basic.c connection_release_tag
44///\subsection get the raw, platform-specific buffer handle for the current buffer44///\subsection get graphics region for the current buffer
45/// \snippet basic.c get_current_buffer_tag45/// \snippet basic.c get_graphics_region_tag
46/// \example basic.c A simple mir client46/// \example basic.c A simple mir client
47///\section MirDemoState MirDemoState47///\section MirDemoState MirDemoState
48/// The handles needs to be accessible both to callbacks and to the control function.48/// The handles needs to be accessible both to callbacks and to the control function.
49/// \snippet basic.c MirDemoState_tag49/// \snippet basic.c MirDemoState_tag
50///\section Callbacks Callbacks
51/// This program opens a mir connection and creates a surface. The handles
52/// needs to be accessible both to callbacks and to the control function.
53/// \snippet basic.c Callback_tag
5450
55///\internal [MirDemoState_tag]51///\internal [MirDemoState_tag]
56// Utility structure for the state of a single surface session.52// Utility structure for the state of a single surface session.
@@ -143,11 +139,12 @@
143 {139 {
144 // We can query the current graphics buffer attributes140 // We can query the current graphics buffer attributes
145 {141 {
142 ///\internal [get_graphics_region_tag]
146 MirGraphicsRegion graphics_region;143 MirGraphicsRegion graphics_region;
147 mir_buffer_stream_get_graphics_region(bs, &graphics_region);144 mir_buffer_stream_get_graphics_region(bs, &graphics_region);
148145
149 ///\internal [get_current_buffer_tag]146 ///\internal [get_graphics_region_tag]
150 // In a real application we'd render into the current buffer147 // In a real application we'd render into the graphics_region
151 }148 }
152149
153 ///\internal [swap_buffers_tag]150 ///\internal [swap_buffers_tag]
154151
=== modified file 'examples/buffer_render_target.cpp'
--- examples/buffer_render_target.cpp 2016-01-29 08:18:22 +0000
+++ examples/buffer_render_target.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2012 Canonical Ltd.2 * Copyright © 2012 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/buffer_render_target.h'
--- examples/buffer_render_target.h 2015-02-22 07:46:25 +0000
+++ examples/buffer_render_target.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2012 Canonical Ltd.2 * Copyright © 2012 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/camera.c'
--- examples/camera.c 2017-05-19 13:49:04 +0000
+++ examples/camera.c 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2015-2016 Canonical Ltd.2 * Copyright © 2015-2016 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/chain_jumping_buffers.c'
--- examples/chain_jumping_buffers.c 2017-05-19 13:54:14 +0000
+++ examples/chain_jumping_buffers.c 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2016 Canonical Ltd.2 * Copyright © 2016 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/client_helpers.cpp'
--- examples/client_helpers.cpp 2017-06-06 14:57:41 +0000
+++ examples/client_helpers.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2015-2017 Canonical Ltd.2 * Copyright © 2015-2017 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
@@ -18,6 +18,8 @@
1818
19#include "client_helpers.h"19#include "client_helpers.h"
20#include "mir_toolkit/mir_client_library.h"20#include "mir_toolkit/mir_client_library.h"
21#include <unistd.h>
22#include <signal.h>
2123
22namespace me = mir::examples;24namespace me = mir::examples;
2325
@@ -89,6 +91,10 @@
89 break;91 break;
90 }92 }
9193
94 case mir_event_type_close_window:
95 kill(getpid(), SIGTERM);
96 break;
97
92 default:98 default:
93 break;99 break;
94 }100 }
95101
=== modified file 'examples/client_helpers.h'
--- examples/client_helpers.h 2017-06-06 14:57:41 +0000
+++ examples/client_helpers.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2015-2017 Canonical Ltd.2 * Copyright © 2015-2017 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/client_touch_validator.cpp'
--- examples/client_touch_validator.cpp 2017-06-06 15:41:28 +0000
+++ examples/client_touch_validator.cpp 2017-10-11 15:01:23 +0000
@@ -4,7 +4,7 @@
4 * Copyright © 2015 Canonical Ltd.4 * Copyright © 2015 Canonical Ltd.
5 *5 *
6 * This program is free software: you can redistribute it and/or modify6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 3 as7 * it under the terms of the GNU General Public License version 2 or 3 as
8 * published by the Free Software Foundation.8 * published by the Free Software Foundation.
9 *9 *
10 * This program is distributed in the hope that it will be useful,10 * This program is distributed in the hope that it will be useful,
1111
=== removed file 'examples/cursor-theme-dump.cpp'
--- examples/cursor-theme-dump.cpp 2016-01-29 08:18:22 +0000
+++ examples/cursor-theme-dump.cpp 1970-01-01 00:00:00 +0000
@@ -1,127 +0,0 @@
1/*
2 * Copyright © 2015 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 3,
6 * as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Alan Griffiths <alan@octopull.co.uk>
17 */
18
19#include "xcursor_loader.h"
20
21#include "mir/graphics/cursor_image.h"
22#include <mir_toolkit/cursors.h>
23
24#include <fstream>
25
26using namespace mir::examples;
27using namespace mir::geometry;
28
29namespace
30{
31auto const cursor_names = {
32 mir_arrow_cursor_name,
33 mir_busy_cursor_name,
34 mir_caret_cursor_name,
35 mir_default_cursor_name,
36 mir_pointing_hand_cursor_name,
37 mir_open_hand_cursor_name,
38 mir_closed_hand_cursor_name,
39 mir_horizontal_resize_cursor_name,
40 mir_vertical_resize_cursor_name,
41 mir_diagonal_resize_bottom_to_top_cursor_name,
42 mir_diagonal_resize_top_to_bottom_cursor_name,
43 mir_omnidirectional_resize_cursor_name,
44 mir_vsplit_resize_cursor_name,
45 mir_hsplit_resize_cursor_name,
46 mir_crosshair_cursor_name };
47}
48
49
50int main(int argc, char const* argv[])
51try
52{
53 if (argc != 2)
54 {
55 puts("Usage mir_cursor_theme_dump <cursor theme>\n");
56 exit(-1);
57 }
58
59 auto const theme = argv[1];
60 std::ofstream output(std::string{theme} + "-theme.h");
61
62 output << "#include <initializer_list>\n"
63 "\n"
64 "namespace\n"
65 "{\n"
66 "struct CursorData\n"
67 "{\n"
68 " CursorData(char const* name, unsigned int hotspot_x, unsigned int hotspot_y, char const* pixel_data) :\n"
69 " name(name), hotspot_x(hotspot_x), hotspot_y(hotspot_y), pixel_data(reinterpret_cast<unsigned char const*>(pixel_data)) {}\n"
70 "\n"
71 " unsigned int const width{" << mir::input::default_cursor_size.width.as_int() << "};\n"
72 " unsigned int const height{" << mir::input::default_cursor_size.height.as_int() << "};\n"
73 " char const* const name;\n"
74 " unsigned int const hotspot_x;\n"
75 " unsigned int const hotspot_y;\n"
76 " unsigned char const* const pixel_data;\n"
77 "};\n"
78 "auto const cursor_data = {\n";
79
80 auto const buffer_size = 4*mir::input::default_cursor_size.height.as_int()*mir::input::default_cursor_size.height.as_int();
81
82 auto const xcursor_loader = std::make_shared<XCursorLoader>(theme);
83
84 for (auto cursor : cursor_names)
85 {
86 if (auto const image = xcursor_loader->image(cursor, mir::input::default_cursor_size))
87 {
88 printf("Have image for %s:%s\n", theme, cursor);
89
90 auto const hotspot = image->hotspot();
91 auto const argb_8888 = static_cast<uint8_t const*>(image->as_argb_8888());
92
93 output << "CursorData{\"" << cursor << "\", " << hotspot.dx.as_int() << ", " << hotspot.dy.as_int() << ",\n";
94
95 int chars = 0;
96
97 output << std::oct << " \"";
98
99 for (auto pbyte = argb_8888; pbyte != argb_8888 + buffer_size; ++pbyte)
100 {
101 auto step = (*pbyte < 010) ? 2 : (*pbyte < 0100) ? 3 : 4;
102
103 if ((chars += step) > 80)
104 {
105 output << "\"\n \"";
106 chars = step;
107 }
108
109 output << '\\' << static_cast<unsigned>(*pbyte);
110 }
111
112 output << "\"\n";
113
114 output << "},\n";
115 }
116 else
117 {
118 printf("** WARNING ** No image for %s:%s\n", theme, cursor);
119 }
120 }
121 output << "};\n";
122 output << "}\n";
123}
124catch (std::exception const& error)
125{
126 printf("** ERROR **: %s", error.what());
127}
128\ No newline at end of file0\ No newline at end of file
1291
=== modified file 'examples/cursors_demo_client.c'
--- examples/cursors_demo_client.c 2017-05-08 03:04:26 +0000
+++ examples/cursors_demo_client.c 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical LTD2 * Copyright © 2014 Canonical LTD
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/demo_client_display_config.c'
--- examples/demo_client_display_config.c 2017-05-08 03:04:26 +0000
+++ examples/demo_client_display_config.c 2017-10-11 15:01:23 +0000
@@ -1,10 +1,10 @@
1/*1/*
2 * Client-side display configuration demo.2 * Client-side display configuration demo.
3 *3 *
4 * Copyright © 2013 Canonical Ltd.4 * Copyright © 2013, 2017 Canonical Ltd.
5 *5 *
6 * This program is free software: you can redistribute it and/or modify6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 3 as7 * it under the terms of the GNU General Public License version 2 or 3 as
8 * published by the Free Software Foundation.8 * published by the Free Software Foundation.
9 *9 *
10 * This program is distributed in the hope that it will be useful,10 * This program is distributed in the hope that it will be useful,
@@ -37,7 +37,11 @@
37 configuration_mode_clone,37 configuration_mode_clone,
38 configuration_mode_horizontal,38 configuration_mode_horizontal,
39 configuration_mode_vertical,39 configuration_mode_vertical,
40 configuration_mode_single40 configuration_mode_single,
41 configuration_mode_left,
42 configuration_mode_right,
43 configuration_mode_up,
44 configuration_mode_down,
41} ConfigurationMode;45} ConfigurationMode;
4246
43struct ClientContext47struct ClientContext
@@ -49,9 +53,13 @@
49 volatile sig_atomic_t reconfigure;53 volatile sig_atomic_t reconfigure;
50};54};
5155
52static void print_current_configuration(MirConnection *connection)56static MirDisplayConfig *conf = NULL;
57
58static void print_current_configuration()
53{59{
54 MirDisplayConfig *conf = mir_connection_create_display_configuration(connection);60 if (!conf)
61 return;
62
55 size_t num_outputs = mir_display_config_get_num_outputs(conf);63 size_t num_outputs = mir_display_config_get_num_outputs(conf);
5664
57 for (uint32_t i = 0; i < num_outputs; i++)65 for (uint32_t i = 0; i < num_outputs; i++)
@@ -64,8 +72,8 @@
64 bool connected = mir_output_get_connection_state(output) ==72 bool connected = mir_output_get_connection_state(output) ==
65 mir_output_connection_state_connected;73 mir_output_connection_state_connected;
6674
67 printf("Output id: %d connected: %d used: %d position_x: %d position_y: %d",75 printf("Output id: %d connected: %d used: %d position_x: %d position_y: %d orientation: %d",
68 id, connected, used, position_x, position_y);76 id, connected, used, position_x, position_y, mir_output_get_orientation(output));
6977
70 MirOutputMode const* current = mir_output_get_current_mode(output);78 MirOutputMode const* current = mir_output_get_current_mode(output);
71 if (current)79 if (current)
@@ -80,8 +88,6 @@
80 printf("\n");88 printf("\n");
81 }89 }
82 }90 }
83
84 mir_display_config_release(conf);
85}91}
8692
87static int apply_configuration(MirConnection *connection, MirDisplayConfig *conf)93static int apply_configuration(MirConnection *connection, MirDisplayConfig *conf)
@@ -208,31 +214,67 @@
208 }214 }
209}215}
210216
217static void orient_display(MirDisplayConfig *conf, MirOrientation orientation)
218{
219 size_t num_outputs = mir_display_config_get_num_outputs(conf);
220
221 for (size_t i = 0; i < num_outputs; i++)
222 {
223 MirOutput *output = mir_display_config_get_mutable_output(conf, i);
224 mir_output_set_orientation(output, orientation);
225 }
226}
227
211static void configure_display(struct ClientContext *context, ConfigurationMode mode,228static void configure_display(struct ClientContext *context, ConfigurationMode mode,
212 int mode_data)229 int mode_data)
213{230{
214 MirDisplayConfig *conf =231 if (!conf)
215 mir_connection_create_display_configuration(context->connection);232 conf = mir_connection_create_display_configuration(context->connection);
216233
217 if (mode == configuration_mode_clone)234 switch (mode)
218 {235 {
236 case configuration_mode_clone:
219 configure_display_clone(conf);237 configure_display_clone(conf);
220 printf("Applying clone configuration: ");238 printf("Applying clone configuration: ");
221 }239 break;
222 else if (mode == configuration_mode_vertical)240
223 {241 case configuration_mode_vertical:
224 configure_display_vertical(conf);242 configure_display_vertical(conf);
225 printf("Applying vertical configuration: ");243 printf("Applying vertical configuration: ");
226 }244 break;
227 else if (mode == configuration_mode_horizontal)245
228 {246 case configuration_mode_horizontal:
229 configure_display_horizontal(conf);247 configure_display_horizontal(conf);
230 printf("Applying horizontal configuration: ");248 printf("Applying horizontal configuration: ");
231 }249 break;
232 else if (mode == configuration_mode_single)250
233 {251 case configuration_mode_single:
234 configure_display_single(conf, mode_data);252 configure_display_single(conf, mode_data);
235 printf("Applying single configuration for output %d: ", mode_data);253 printf("Applying single configuration for output %d: ", mode_data);
254 break;
255
256 case configuration_mode_left:
257 orient_display(conf, mir_orientation_left);
258 printf("Applying orientation left: ");
259 break;
260
261 case configuration_mode_right:
262 orient_display(conf, mir_orientation_right);
263 printf("Applying orientation right: ");
264 break;
265
266 case configuration_mode_up:
267 orient_display(conf, mir_orientation_inverted);
268 printf("Applying orientation up: ");
269 break;
270
271 case configuration_mode_down:
272 orient_display(conf, mir_orientation_normal);
273 printf("Applying orientation down: ");
274 break;
275
276 default:
277 break;
236 }278 }
237279
238 if (apply_configuration(context->connection, conf))280 if (apply_configuration(context->connection, conf))
@@ -240,22 +282,33 @@
240 context->mode = mode;282 context->mode = mode;
241 context->mode_data = mode_data;283 context->mode_data = mode_data;
242 }284 }
243
244 mir_display_config_release(conf);
245}285}
246286
247static void display_change_callback(MirConnection *connection, void *context)287static void display_change_callback(MirConnection *connection, void *context)
248{288{
249 (void)context;
250
251 printf("=== Display configuration changed === \n");289 printf("=== Display configuration changed === \n");
252290
253 print_current_configuration(connection);291 if (conf)
292 mir_display_config_release(conf);
293
294 conf = mir_connection_create_display_configuration(connection);
295
296 print_current_configuration();
254297
255 struct ClientContext *ctx = (struct ClientContext*) context;298 struct ClientContext *ctx = (struct ClientContext*) context;
256 ctx->reconfigure = 1;299 ctx->reconfigure = 1;
257}300}
258301
302static void apply_to_base_configuration(MirConnection *connection)
303{
304 if (!conf)
305 return;
306
307 mir_connection_preview_base_display_configuration(connection, conf, 2);
308 puts("Applying to base configuration");
309 mir_connection_confirm_base_display_configuration(connection, conf);
310}
311
259static void handle_keyboard_event(struct ClientContext *ctx, MirKeyboardEvent const* event)312static void handle_keyboard_event(struct ClientContext *ctx, MirKeyboardEvent const* event)
260{313{
261 if (mir_keyboard_event_action(event) != mir_keyboard_action_up)314 if (mir_keyboard_event_action(event) != mir_keyboard_action_up)
@@ -271,6 +324,9 @@
271324
272 switch (key_code)325 switch (key_code)
273 {326 {
327 case XKB_KEY_a:
328 apply_to_base_configuration(ctx->connection);
329 break;
274 case XKB_KEY_q:330 case XKB_KEY_q:
275 ctx->running = 0;331 ctx->running = 0;
276 break;332 break;
@@ -284,7 +340,21 @@
284 configure_display(ctx, configuration_mode_vertical, 0);340 configure_display(ctx, configuration_mode_vertical, 0);
285 break;341 break;
286 case XKB_KEY_p:342 case XKB_KEY_p:
287 print_current_configuration(ctx->connection);343 if (!conf)
344 conf = mir_connection_create_display_configuration(ctx->connection);
345 print_current_configuration();
346 break;
347 case XKB_KEY_Left:
348 configure_display(ctx, configuration_mode_right, 0);
349 break;
350 case XKB_KEY_Up:
351 configure_display(ctx, configuration_mode_up, 0);
352 break;
353 case XKB_KEY_Right:
354 configure_display(ctx, configuration_mode_left, 0);
355 break;
356 case XKB_KEY_Down:
357 configure_display(ctx, configuration_mode_down, 0);
288 break;358 break;
289 }359 }
290}360}
@@ -292,15 +362,16 @@
292static void event_callback(362static void event_callback(
293 MirWindow* surface, MirEvent const* event, void* context)363 MirWindow* surface, MirEvent const* event, void* context)
294{364{
295 (void) surface;365 mir_eglapp_handle_event(surface, event, context);
366
296 struct ClientContext *ctx = (struct ClientContext*) context;367 struct ClientContext *ctx = (struct ClientContext*) context;
297 368
298 if (mir_event_get_type(event) != mir_event_type_input)369 if (mir_event_get_type(event) != mir_event_type_input)
299 return;370 return;
300 MirInputEvent const* input_event = mir_event_get_input_event(event);371 MirInputEvent const* input_event = mir_event_get_input_event(event);
301 if (mir_input_event_get_type(input_event) != mir_input_event_type_key)372 if (mir_input_event_get_type(input_event) != mir_input_event_type_key)
302 return;373 return;
303 374
304 handle_keyboard_event(ctx, mir_input_event_get_keyboard_event(input_event));375 handle_keyboard_event(ctx, mir_input_event_get_keyboard_event(input_event));
305}376}
306377
@@ -317,7 +388,9 @@
317 " h: arrange outputs horizontally in the virtual space\n"388 " h: arrange outputs horizontally in the virtual space\n"
318 " v: arrange outputs vertically in the virtual space\n"389 " v: arrange outputs vertically in the virtual space\n"
319 " 1-9: enable only the Nth connected output (in the order returned by the hardware)\n"390 " 1-9: enable only the Nth connected output (in the order returned by the hardware)\n"
320 " p: print current display configuration\n");391 " Arrows: orient display (sets \"down\" direction)\n"
392 " p: print current display configuration\n"
393 " a: apply current display configuration globally\n");
321394
322 return 1;395 return 1;
323 }396 }
@@ -351,6 +424,9 @@
351 }424 }
352 }425 }
353426
427 if (conf)
428 mir_display_config_release(conf);
429
354 mir_eglapp_cleanup();430 mir_eglapp_cleanup();
355431
356 return 0;432 return 0;
357433
=== modified file 'examples/eglapp.c'
--- examples/eglapp.c 2017-06-30 11:35:46 +0000
+++ examples/eglapp.c 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2013 Canonical Ltd.2 * Copyright © 2013 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/eglapp.h'
--- examples/eglapp.h 2017-06-06 15:41:28 +0000
+++ examples/eglapp.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2013 Canonical Ltd.2 * Copyright © 2013 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/eglcounter.cpp'
--- examples/eglcounter.cpp 2017-05-08 03:04:26 +0000
+++ examples/eglcounter.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2014 Canonical Ltd.2 * Copyright © 2014 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/eglflash.c'
--- examples/eglflash.c 2017-05-08 03:04:26 +0000
+++ examples/eglflash.c 2017-10-11 15:01:23 +0000
@@ -4,7 +4,7 @@
4 * Copyright © 2013 Canonical Ltd.4 * Copyright © 2013 Canonical Ltd.
5 *5 *
6 * This program is free software: you can redistribute it and/or modify6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 3 as7 * it under the terms of the GNU General Public License version 2 or 3 as
8 * published by the Free Software Foundation.8 * published by the Free Software Foundation.
9 *9 *
10 * This program is distributed in the hope that it will be useful,10 * This program is distributed in the hope that it will be useful,
1111
=== modified file 'examples/eglplasma.c'
--- examples/eglplasma.c 2017-05-08 03:04:26 +0000
+++ examples/eglplasma.c 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2013 Canonical Ltd.2 * Copyright © 2013 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/eglsquare.cpp'
--- examples/eglsquare.cpp 2017-06-06 13:55:51 +0000
+++ examples/eglsquare.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2015 Canonical Ltd.2 * Copyright © 2015 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
@@ -169,84 +169,89 @@
169169
170 pos = Pos{x, y};170 pos = Pos{x, y};
171 cv.notify_one();171 cv.notify_one();
172 break;
172 }173 }
173174
175 case mir_event_type_close_window:
176 kill(getpid(), SIGTERM);
177 break;
178
174 default:;179 default:;
175 }180 }
176 }181 }
177182
178 SquareRenderingSurface(SquareRenderingSurface const&) = delete;183 SquareRenderingSurface(SquareRenderingSurface const&) = delete;
179 SquareRenderingSurface& operator=(SquareRenderingSurface const&) = delete;184 SquareRenderingSurface& operator=(SquareRenderingSurface const&) = delete;
180 private:185private:
181 struct OutputDimensions186 struct OutputDimensions
182 {187 {
183 unsigned int const width;188 unsigned int const width;
184 unsigned int const height;189 unsigned int const height;
185 } const dimensions;190 } const dimensions;
186191
187 me::Context context;192 me::Context context;
188 me::NormalWindow window;193 me::NormalWindow window;
189 RenderProgram program;194 RenderProgram program;
190195
191 OutputDimensions active_output_dimensions(MirConnection* connection)196 OutputDimensions active_output_dimensions(MirConnection* connection)
192 {197 {
193 unsigned int width{0};198 unsigned int width{0};
194 unsigned int height{0};199 unsigned int height{0};
195 auto display_config = mir_connection_create_display_configuration(connection);200 auto display_config = mir_connection_create_display_configuration(connection);
196 auto num_outputs = mir_display_config_get_num_outputs(display_config);201 auto num_outputs = mir_display_config_get_num_outputs(display_config);
197 for (auto i = 0; i < num_outputs; i++)202 for (auto i = 0; i < num_outputs; i++)
198 {203 {
199 auto output = mir_display_config_get_output(display_config, i);204 auto output = mir_display_config_get_output(display_config, i);
200 auto state = mir_output_get_connection_state(output);205 auto state = mir_output_get_connection_state(output);
201 if (state == mir_output_connection_state_connected && mir_output_is_enabled(output))206 if (state == mir_output_connection_state_connected && mir_output_is_enabled(output))
202 {207 {
203 auto mode = mir_output_get_current_mode(output);208 auto mode = mir_output_get_current_mode(output);
204 width = mir_output_mode_get_width(mode);209 width = mir_output_mode_get_width(mode);
205 height = mir_output_mode_get_height(mode);210 height = mir_output_mode_get_height(mode);
206 break;211 break;
207 }212 }
208 }213 }
209 mir_display_config_release(display_config);214 mir_display_config_release(display_config);
210 if (width == 0 || height == 0)215 if (width == 0 || height == 0)
211 throw std::logic_error("could not determine display size");216 throw std::logic_error("could not determine display size");
212 return {width, height};217 return {width, height};
213 }218 }
214219
215 static void on_event(MirWindow*, const MirEvent *event, void *context)220 static void on_event(MirWindow*, const MirEvent *event, void *context)
216 {221 {
217 auto surface = reinterpret_cast<SquareRenderingSurface*>(context);222 auto surface = reinterpret_cast<SquareRenderingSurface*>(context);
218 if (surface) surface->on_event(event);223 if (surface) surface->on_event(event);
219 }224 }
220225
221 private:226private:
222 void do_work()227 void do_work()
223 {228 {
224 std::unique_lock<decltype(mutex)> lock(mutex);229 std::unique_lock<decltype(mutex)> lock(mutex);
225230
226 while (true)231 while (true)
227 {232 {
228 cv.wait(lock);233 cv.wait(lock);
229234
230 if (!running) return;235 if (!running) return;
231236
232 Pos pos = this->pos;237 Pos pos = this->pos;
233238
234 context.make_current();239 context.make_current();
235 program.draw(240 program.draw(
236 pos.x/static_cast<float>(dimensions.width)*2.0 - 1.0,241 pos.x/static_cast<float>(dimensions.width)*2.0 - 1.0,
237 pos.y/static_cast<float>(dimensions.height)*-2.0 + 1.0);242 pos.y/static_cast<float>(dimensions.height)*-2.0 + 1.0);
238 context.swapbuffers();243 context.swapbuffers();
239 }244 }
240 }245 }
241246
242 struct Pos { float x; float y; };247 struct Pos { float x; float y; };
243 std::atomic<Pos> pos;248 std::atomic<Pos> pos;
244249
245 std::thread worker;250 std::thread worker;
246 std::condition_variable cv;251 std::condition_variable cv;
247 std::mutex mutex;252 std::mutex mutex;
248 bool running{true};253 bool running{true};
249 };254};
250}255}
251256
252int main(int argc, char *argv[])257int main(int argc, char *argv[])
253258
=== modified file 'examples/eglstateswitcher.c'
--- examples/eglstateswitcher.c 2017-05-08 03:04:26 +0000
+++ examples/eglstateswitcher.c 2017-10-11 15:01:23 +0000
@@ -4,7 +4,7 @@
4 * Copyright © 2014 Canonical Ltd.4 * Copyright © 2014 Canonical Ltd.
5 *5 *
6 * This program is free software: you can redistribute it and/or modify6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 3 as7 * it under the terms of the GNU General Public License version 2 or 3 as
8 * published by the Free Software Foundation.8 * published by the Free Software Foundation.
9 *9 *
10 * This program is distributed in the hope that it will be useful,10 * This program is distributed in the hope that it will be useful,
1111
=== modified file 'examples/egltriangle.c'
--- examples/egltriangle.c 2017-05-08 03:04:26 +0000
+++ examples/egltriangle.c 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2013 Canonical Ltd.2 * Copyright © 2013 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/fingerpaint.c'
--- examples/fingerpaint.c 2017-05-19 13:49:04 +0000
+++ examples/fingerpaint.c 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2013 Canonical Ltd.2 * Copyright © 2013 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/flicker.c'
--- examples/flicker.c 2017-06-06 09:02:33 +0000
+++ examples/flicker.c 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2012 Canonical Ltd.2 * Copyright © 2012 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/glog_logger.cpp'
--- examples/glog_logger.cpp 2015-02-22 07:46:25 +0000
+++ examples/glog_logger.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2013 Canonical Ltd.2 * Copyright © 2013 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/glog_logger.h'
--- examples/glog_logger.h 2015-02-22 07:46:25 +0000
+++ examples/glog_logger.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2013 Canonical Ltd.2 * Copyright © 2013 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/graphics.h'
--- examples/graphics.h 2013-04-24 05:22:20 +0000
+++ examples/graphics.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2012 Canonical Ltd.2 * Copyright © 2012 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify it4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 3,5 * under the terms of the GNU General Public License version 2 or 3,
6 * as published by the Free Software Foundation.6 * as published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/graphics_utils.cpp'
--- examples/graphics_utils.cpp 2017-05-08 03:04:26 +0000
+++ examples/graphics_utils.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2012 Canonical Ltd.2 * Copyright © 2012 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify it4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 3,5 * under the terms of the GNU General Public License version 2 or 3,
6 * as published by the Free Software Foundation.6 * as published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/image_renderer.cpp'
--- examples/image_renderer.cpp 2017-05-08 03:04:26 +0000
+++ examples/image_renderer.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2012 Canonical Ltd.2 * Copyright © 2012 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/image_renderer.h'
--- examples/image_renderer.h 2015-02-22 07:46:25 +0000
+++ examples/image_renderer.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2012 Canonical Ltd.2 * Copyright © 2012 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/input_shapes.cpp'
--- examples/input_shapes.cpp 2017-05-23 10:51:47 +0000
+++ examples/input_shapes.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2015 Canonical Ltd.2 * Copyright © 2015 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/mir_demo_server_loader.cpp'
--- examples/mir_demo_server_loader.cpp 2017-05-08 03:04:26 +0000
+++ examples/mir_demo_server_loader.cpp 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2015 Canonical Ltd.2 * Copyright © 2015 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as5 * it under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.6 * published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== modified file 'examples/mir_image.h'
--- examples/mir_image.h 2013-04-24 05:22:20 +0000
+++ examples/mir_image.h 2017-10-11 15:01:23 +0000
@@ -2,7 +2,7 @@
2 * Copyright © 2012 Canonical Ltd.2 * Copyright © 2012 Canonical Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify it4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 3,5 * under the terms of the GNU General Public License version 2 or 3,
6 * as published by the Free Software Foundation.6 * as published by the Free Software Foundation.
7 *7 *
8 * This program is distributed in the hope that it will be useful,8 * This program is distributed in the hope that it will be useful,
99
=== added directory 'examples/miral-kiosk'
=== added file 'examples/miral-kiosk/CMakeLists.txt'
--- examples/miral-kiosk/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ examples/miral-kiosk/CMakeLists.txt 2017-10-11 15:01:23 +0000
@@ -0,0 +1,12 @@
1include_directories(
2 ${PROJECT_SOURCE_DIR}/include/miral
3 ${PROJECT_SOURCE_DIR}/include/client
4)
5
6mir_add_wrapped_executable(miral-kiosk
7 kiosk_main.cpp
8 kiosk_window_manager.cpp kiosk_window_manager.h
9 sw_splash.cpp sw_splash.h
10)
11
12target_link_libraries(miral-kiosk miral)
013
=== added file 'examples/miral-kiosk/kiosk_main.cpp'
--- examples/miral-kiosk/kiosk_main.cpp 1970-01-01 00:00:00 +0000
+++ examples/miral-kiosk/kiosk_main.cpp 2017-10-11 15:01:23 +0000
@@ -0,0 +1,94 @@
1/*
2 * Copyright © 2016 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * under the terms of the GNU General Public License version 2 or 3 as as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Alan Griffiths <alan@octopull.co.uk>
17 */
18
19#include "kiosk_window_manager.h"
20
21#include <miral/runner.h>
22#include <miral/application_authorizer.h>
23#include <miral/command_line_option.h>
24#include <miral/keymap.h>
25#include <miral/set_window_management_policy.h>
26#include <miral/internal_client.h>
27
28#include <unistd.h>
29#include <atomic>
30
31namespace
32{
33struct KioskAuthorizer : miral::ApplicationAuthorizer
34{
35 KioskAuthorizer(SwSplash const& splash) : splash{splash}{}
36
37 virtual bool connection_is_allowed(miral::ApplicationCredentials const& creds) override
38 {
39 // Allow internal applications and (optionally) only ones that start "immediately"
40 // (For the sake of an example "immediately" means while the spash is running)
41 return getpid() == creds.pid() || !startup_only || splash.session().lock();
42 }
43
44 virtual bool configure_display_is_allowed(miral::ApplicationCredentials const& /*creds*/) override
45 {
46 return false;
47 }
48
49 virtual bool set_base_display_configuration_is_allowed(miral::ApplicationCredentials const& /*creds*/) override
50 {
51 return false;
52 }
53
54 virtual bool screencast_is_allowed(miral::ApplicationCredentials const& /*creds*/) override
55 {
56 return true;
57 }
58
59 virtual bool prompt_session_is_allowed(miral::ApplicationCredentials const& /*creds*/) override
60 {
61 return false;
62 }
63
64 static std::atomic<bool> startup_only;
65
66 SwSplash splash;
67};
68
69std::atomic<bool> KioskAuthorizer::startup_only{false};
70}
71
72int main(int argc, char const* argv[])
73{
74 using namespace miral;
75
76 SwSplash splash;
77
78 CommandLineOption startup_only{
79 [&](bool startup_only) {KioskAuthorizer::startup_only = startup_only; },
80 "kiosk-startup-apps-only",
81 "Only allow applications to connect during startup",
82 KioskAuthorizer::startup_only};
83
84 return MirRunner{argc, argv}.run_with(
85 {
86 CommandLineOption{[&](std::string const& ) { },
87 "desktop_file_hint", "Ignored for Unity8 compatability", "miral-shell.desktop"},
88 set_window_management_policy<KioskWindowManagerPolicy>(splash),
89 SetApplicationAuthorizer<KioskAuthorizer>{splash},
90 Keymap{},
91 startup_only,
92 StartupInternalClient{"Intro", splash}
93 });
94}
095
=== added file 'examples/miral-kiosk/kiosk_window_manager.cpp'
--- examples/miral-kiosk/kiosk_window_manager.cpp 1970-01-01 00:00:00 +0000
+++ examples/miral-kiosk/kiosk_window_manager.cpp 2017-10-11 15:01:23 +0000
@@ -0,0 +1,164 @@
1/*
2 * Copyright © 2016-2017 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored By: Alan Griffiths <alan@octopull.co.uk>
17 */
18
19#include "kiosk_window_manager.h"
20
21#include <miral/application_info.h>
22#include <miral/window_info.h>
23#include <miral/window_manager_tools.h>
24
25#include <linux/input.h>
26
27namespace ms = mir::scene;
28using namespace miral;
29
30KioskWindowManagerPolicy::KioskWindowManagerPolicy(WindowManagerTools const& tools, SwSplash const& splash) :
31 CanonicalWindowManagerPolicy{tools},
32 splash{splash}
33{
34}
35
36bool KioskWindowManagerPolicy::handle_keyboard_event(MirKeyboardEvent const* event)
37{
38 auto const action = mir_keyboard_event_action(event);
39 auto const scan_code = mir_keyboard_event_scan_code(event);
40 auto const modifiers = mir_keyboard_event_modifiers(event) & modifier_mask;
41
42 if (action == mir_keyboard_action_down &&
43 modifiers == mir_input_event_modifier_alt &&
44 scan_code == KEY_TAB)
45 {
46 tools.focus_next_application();
47
48 return true;
49 }
50 else if (action == mir_keyboard_action_down &&
51 modifiers == mir_input_event_modifier_alt &&
52 scan_code == KEY_GRAVE)
53 {
54 tools.focus_next_within_application();
55
56 return true;
57 }
58 else if (action == mir_keyboard_action_down &&
59 modifiers == (mir_input_event_modifier_alt | mir_input_event_modifier_shift) &&
60 scan_code == KEY_GRAVE)
61 {
62 tools.focus_prev_within_application();
63
64 return true;
65 }
66 else if (action == mir_keyboard_action_down && scan_code == KEY_F4)
67 {
68 switch (modifiers & modifier_mask)
69 {
70 case mir_input_event_modifier_alt:
71 tools.ask_client_to_close(tools.active_window());;
72 return true;
73
74 default:
75 break;
76 }
77 }
78
79 return false;
80}
81
82bool KioskWindowManagerPolicy::handle_touch_event(MirTouchEvent const* event)
83{
84 auto const count = mir_touch_event_point_count(event);
85
86 long total_x = 0;
87 long total_y = 0;
88
89 for (auto i = 0U; i != count; ++i)
90 {
91 total_x += mir_touch_event_axis_value(event, i, mir_touch_axis_x);
92 total_y += mir_touch_event_axis_value(event, i, mir_touch_axis_y);
93 }
94
95 Point const cursor{total_x/count, total_y/count};
96
97 tools.select_active_window(tools.window_at(cursor));
98
99 return false;
100}
101
102bool KioskWindowManagerPolicy::handle_pointer_event(MirPointerEvent const* event)
103{
104 auto const action = mir_pointer_event_action(event);
105
106 Point const cursor{
107 mir_pointer_event_axis_value(event, mir_pointer_axis_x),
108 mir_pointer_event_axis_value(event, mir_pointer_axis_y)};
109
110 if (action == mir_pointer_action_button_down)
111 {
112 tools.select_active_window(tools.window_at(cursor));
113 }
114
115 return false;
116}
117
118void KioskWindowManagerPolicy::advise_focus_gained(WindowInfo const& info)
119{
120 CanonicalWindowManagerPolicy::advise_focus_gained(info);
121
122 if (auto session = splash.session().lock())
123 {
124 auto const& app_info = tools.info_for(session);
125
126 for (auto const& s : app_info.windows())
127 tools.raise_tree(s);
128 }
129}
130
131auto KioskWindowManagerPolicy::place_new_window(ApplicationInfo const& app_info, WindowSpecification const& request)
132-> WindowSpecification
133{
134 WindowSpecification specification = CanonicalWindowManagerPolicy::place_new_window(app_info, request);
135
136 if ((specification.type() == mir_window_type_normal || specification.type() == mir_window_type_freestyle) &&
137 (!specification.parent().is_set() || !specification.parent().value().lock()))
138 {
139 specification.state() = mir_window_state_maximized;
140 tools.place_and_size_for_state(specification, WindowInfo{});
141
142 if (!request.state().is_set() || request.state().value() != mir_window_state_restored)
143 specification.state() = request.state();
144 }
145
146 return specification;
147}
148
149void KioskWindowManagerPolicy::handle_modify_window(WindowInfo& window_info, WindowSpecification const& modifications)
150{
151 WindowSpecification specification = modifications;
152
153 if ((window_info.type() == mir_window_type_normal || window_info.type() == mir_window_type_freestyle) &&
154 !window_info.parent())
155 {
156 specification.state() = mir_window_state_maximized;
157 tools.place_and_size_for_state(specification, window_info);
158
159 if (!modifications.state().is_set() || modifications.state().value() != mir_window_state_restored)
160 specification.state() = modifications.state();
161 }
162
163 CanonicalWindowManagerPolicy::handle_modify_window(window_info, specification);
164}
0165
=== added file 'examples/miral-kiosk/kiosk_window_manager.h'
--- examples/miral-kiosk/kiosk_window_manager.h 1970-01-01 00:00:00 +0000
+++ examples/miral-kiosk/kiosk_window_manager.h 2017-10-11 15:01:23 +0000
@@ -0,0 +1,54 @@
1/*
2 * Copyright © 2016-2017 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored By: Alan Griffiths <alan@octopull.co.uk>
17 */
18
19#ifndef MIRAL_KIOSK_WINDOW_MANAGER_H
20#define MIRAL_KIOSK_WINDOW_MANAGER_H
21
22#include "sw_splash.h"
23
24#include <miral/canonical_window_manager.h>
25
26using namespace mir::geometry;
27
28class KioskWindowManagerPolicy : public miral::CanonicalWindowManagerPolicy
29{
30public:
31 KioskWindowManagerPolicy(miral::WindowManagerTools const& tools, SwSplash const&);
32
33 auto place_new_window(miral::ApplicationInfo const& app_info, miral::WindowSpecification const& request)
34 -> miral::WindowSpecification override;
35
36 void advise_focus_gained(miral::WindowInfo const& info) override;
37
38 bool handle_keyboard_event(MirKeyboardEvent const* event) override;
39 bool handle_touch_event(MirTouchEvent const* event) override;
40 bool handle_pointer_event(MirPointerEvent const* event) override;
41 void handle_modify_window(miral::WindowInfo& window_info, miral::WindowSpecification const& modifications) override;
42
43private:
44 static const int modifier_mask =
45 mir_input_event_modifier_alt |
46 mir_input_event_modifier_shift |
47 mir_input_event_modifier_sym |
48 mir_input_event_modifier_ctrl |
49 mir_input_event_modifier_meta;
50
51 SwSplash const splash;
52};
53
54#endif /* MIRAL_KIOSK_WINDOW_MANAGER_H */
055
=== added file 'examples/miral-kiosk/sw_splash.cpp'
--- examples/miral-kiosk/sw_splash.cpp 1970-01-01 00:00:00 +0000
+++ examples/miral-kiosk/sw_splash.cpp 2017-10-11 15:01:23 +0000
@@ -0,0 +1,173 @@
1/*
2 * Copyright © 2016 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Alan Griffiths <alan@octopull.co.uk>
17 */
18
19#include "sw_splash.h"
20
21#include <mir/client/display_config.h>
22#include <mir/client/surface.h>
23#include <mir/client/window.h>
24#include <mir/client/window_spec.h>
25
26#include <mir_toolkit/mir_buffer_stream.h>
27
28#include <chrono>
29#include <cstring>
30#include <thread>
31#include <mutex>
32
33namespace
34{
35MirPixelFormat find_8888_format(MirConnection* connection)
36{
37 unsigned int const num_formats = 32;
38 MirPixelFormat pixel_formats[num_formats];
39 unsigned int valid_formats;
40 mir_connection_get_available_surface_formats(connection, pixel_formats, num_formats, &valid_formats);
41
42 for (unsigned int i = 0; i < num_formats; ++i)
43 {
44 MirPixelFormat cur_pf = pixel_formats[i];
45 if (cur_pf == mir_pixel_format_abgr_8888 ||
46 cur_pf == mir_pixel_format_argb_8888)
47 {
48 return cur_pf;
49 }
50 }
51
52 for (unsigned int i = 0; i < num_formats; ++i)
53 {
54 MirPixelFormat cur_pf = pixel_formats[i];
55 if (cur_pf == mir_pixel_format_xbgr_8888 ||
56 cur_pf == mir_pixel_format_xrgb_8888)
57 {
58 return cur_pf;
59 }
60 }
61
62 return *pixel_formats;
63}
64
65auto create_window(MirConnection* connection, mir::client::Surface const& surface) -> mir::client::Window
66{
67 int id = 0;
68 int width = 0;
69 int height = 0;
70
71 mir::client::DisplayConfig{connection}.for_each_output([&](MirOutput const* output)
72 {
73 if (mir_output_get_connection_state(output) == mir_output_connection_state_connected &&
74 mir_output_is_enabled(output))
75 {
76 id = mir_output_get_id(output);
77
78 MirOutputMode const* mode = mir_output_get_current_mode(output);
79 width = mir_output_mode_get_width(mode);
80 height = mir_output_mode_get_height(mode);
81 }
82 });
83
84 return mir::client::WindowSpec::for_normal_window(connection, width, height)
85 .set_name("splash")
86 .set_fullscreen_on_output(id)
87 .add_surface(surface, width, height, 0, 0)
88 .create_window();
89}
90
91void render_pattern(MirGraphicsRegion *region, uint8_t pattern[])
92{
93 char *row = region->vaddr;
94
95 for (int j = 0; j < region->height; j++)
96 {
97 uint32_t *pixel = (uint32_t*)row;
98
99 for (int i = 0; i < region->width; i++)
100 memcpy(pixel+i, pattern, sizeof pixel[i]);
101
102 row += region->stride;
103 }
104}
105}
106
107struct SwSplash::Self
108{
109 std::mutex mutex;
110 std::weak_ptr<mir::scene::Session> session;
111};
112
113SwSplash::SwSplash() : self{std::make_shared<Self>()} {}
114
115SwSplash::~SwSplash() = default;
116
117void SwSplash::operator()(std::weak_ptr<mir::scene::Session> const& session)
118{
119 std::lock_guard<decltype(self->mutex)> lock{self->mutex};
120 self->session = session;
121}
122
123auto SwSplash::session() const -> std::weak_ptr<mir::scene::Session>
124{
125 std::lock_guard<decltype(self->mutex)> lock{self->mutex};
126 return self->session;
127}
128
129void SwSplash::operator()(MirConnection* connection)
130{
131 MirPixelFormat pixel_format = find_8888_format(connection);
132
133 uint8_t pattern[4] = { 0x14, 0x48, 0xDD, 0xFF };
134
135 switch(pixel_format)
136 {
137 case mir_pixel_format_abgr_8888:
138 case mir_pixel_format_xbgr_8888:
139 std::swap(pattern[2],pattern[0]);
140 break;
141
142 case mir_pixel_format_argb_8888:
143 case mir_pixel_format_xrgb_8888:
144 break;
145
146 default:
147 return;
148 };
149
150
151 mir::client::Surface surface{mir_connection_create_render_surface_sync(connection, 42, 42)};
152 MirBufferStream* buffer_stream = mir_render_surface_get_buffer_stream(surface, 42, 42, pixel_format);
153
154 auto const window = create_window(connection, surface);
155
156 MirGraphicsRegion graphics_region;
157
158 auto const time_limit = std::chrono::steady_clock::now() + std::chrono::seconds(2);
159
160 do
161 {
162 mir_buffer_stream_get_graphics_region(buffer_stream, &graphics_region);
163
164 render_pattern(&graphics_region, pattern);
165 mir_buffer_stream_swap_buffers_sync(buffer_stream);
166
167 for (auto& x : pattern)
168 x = 3*x/4;
169
170 std::this_thread::sleep_for(std::chrono::milliseconds(200));
171 }
172 while (std::chrono::steady_clock::now() < time_limit);
173}
0174
=== added file 'examples/miral-kiosk/sw_splash.h'
--- examples/miral-kiosk/sw_splash.h 1970-01-01 00:00:00 +0000
+++ examples/miral-kiosk/sw_splash.h 2017-10-11 15:01:23 +0000
@@ -0,0 +1,44 @@
1/*
2 * Copyright © 2016 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Alan Griffiths <alan@octopull.co.uk>
17 */
18
19#ifndef MIRAL_SHELL_SW_SPLASH_H
20#define MIRAL_SHELL_SW_SPLASH_H
21
22#include <mir_toolkit/client_types.h>
23
24#include <memory>
25
26namespace mir { class Server; namespace scene { class Session; }}
27
28// A very simple s/w rendered splash animation
29class SwSplash
30{
31public:
32 SwSplash();
33 ~SwSplash();
34
35 void operator()(MirConnection* connection);
36 void operator()(std::weak_ptr<mir::scene::Session> const& session);
37 auto session() const -> std::weak_ptr<mir::scene::Session>;
38
39private:
40 struct Self;
41 std::shared_ptr<Self> const self;
42};
43
44#endif //MIRAL_SHELL_SW_SPLASH_H
045
=== added directory 'examples/miral-shell'
=== added file 'examples/miral-shell/CMakeLists.txt'
--- examples/miral-shell/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ examples/miral-shell/CMakeLists.txt 2017-10-11 15:01:23 +0000
@@ -0,0 +1,69 @@
1include_directories(
2 ${PROJECT_SOURCE_DIR}/include/miral
3 ${PROJECT_SOURCE_DIR}/include/client
4)
5
6add_subdirectory(spinner)
7add_subdirectory(desktop)
8
9add_custom_target(miral-run ALL
10 cp ${CMAKE_CURRENT_SOURCE_DIR}/miral-run.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-run
11)
12
13install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-run
14 DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
15)
16
17add_custom_target(miral-xrun ALL
18 cp ${CMAKE_CURRENT_SOURCE_DIR}/miral-xrun.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-xrun
19)
20
21install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-xrun
22 DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
23)
24
25add_custom_target(miral-screencast ALL
26 cp ${CMAKE_CURRENT_SOURCE_DIR}/miral-screencast.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-screencast
27)
28
29install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-screencast
30 DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
31)
32
33add_custom_target(miral-desktop ALL
34 cp ${CMAKE_CURRENT_SOURCE_DIR}/miral-desktop.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-desktop
35)
36
37install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-desktop
38 DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
39)
40
41add_custom_target(miral-app ALL
42 cp ${CMAKE_CURRENT_SOURCE_DIR}/miral-app.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-app
43)
44
45install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/miral-app
46 DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
47)
48
49add_library(miral-shell-lib STATIC
50 tiling_window_manager.cpp tiling_window_manager.h
51 floating_window_manager.cpp floating_window_manager.h
52 decoration_provider.cpp decoration_provider.h
53 titlebar_config.cpp titlebar_config.h
54)
55
56pkg_check_modules(FREETYPE freetype2 REQUIRED)
57target_include_directories(miral-shell-lib PRIVATE ${FREETYPE_INCLUDE_DIRS})
58target_compile_definitions(miral-shell-lib PRIVATE -DTYPO_SUPPORTS_FREETYPE)
59target_link_libraries(miral-shell-lib miral-spinner miral ${FREETYPE_LIBRARIES})
60
61mir_add_wrapped_executable(miral-shell
62 shell_main.cpp
63)
64
65target_link_libraries(miral-shell
66 miral-shell-lib
67 miral
68)
69
070
=== added file 'examples/miral-shell/decoration_provider.cpp'
--- examples/miral-shell/decoration_provider.cpp 1970-01-01 00:00:00 +0000
+++ examples/miral-shell/decoration_provider.cpp 2017-10-11 15:01:23 +0000
@@ -0,0 +1,666 @@
1/*
2 * Copyright © 2016-2017 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 or 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Alan Griffiths <alan@octopull.co.uk>
17 */
18
19#include "decoration_provider.h"
20#include "titlebar_config.h"
21
22#include <mir/client/display_config.h>
23#include <mir/client/window_spec.h>
24
25#include <mir_toolkit/mir_buffer_stream.h>
26
27#include <ft2build.h>
28#include FT_FREETYPE_H
29
30#include <locale>
31#include <codecvt>
32#include <string>
33#include <cstring>
34#include <sstream>
35
36#include <iostream>
37
38namespace
39{
40int const title_bar_height = 12;
41char const* const wallpaper_name = "wallpaper";
42
43void null_window_callback(MirWindow*, void*) {}
44
45struct preferred_codecvt : std::codecvt_byname<wchar_t, char, std::mbstate_t>
46{
47 preferred_codecvt() : std::codecvt_byname<wchar_t, char, std::mbstate_t>("") {}
48 ~preferred_codecvt() = default;
49};
50
51struct Printer
52{
53 Printer();
54 ~Printer();
55 Printer(Printer const&) = delete;
56 Printer& operator=(Printer const&) = delete;
57
58 void print(MirGraphicsRegion const& region, std::string const& title, int const intensity);
59 void printhelp(MirGraphicsRegion const& region);
60
61private:
62 std::wstring_convert<preferred_codecvt> converter;
63
64 bool working = false;
65 FT_Library lib;
66 FT_Face face;
67};
68
69void paint_surface(MirBufferStream* buffer_stream, std::string const& title, int const intensity)
70{
71 // TODO sometimes buffer_stream is nullptr - find out why (and fix).
72 // (Only observed when creating a lot of clients at once)
73 if (!buffer_stream)
74 return;
75
76 MirGraphicsRegion region;
77 mir_buffer_stream_get_graphics_region(buffer_stream, &region);
78
79 char* row = region.vaddr;
80
81 for (int j = 0; j != region.height; ++j)
82 {
83 memset(row, intensity, 4*region.width);
84 row += region.stride;
85 }
86
87 static Printer printer;
88 printer.print(region, title, intensity);
89
90 mir_buffer_stream_swap_buffers_sync(buffer_stream);
91}
92
93Printer::Printer()
94{
95 if (FT_Init_FreeType(&lib))
96 return;
97
98 if (FT_New_Face(lib, titlebar::font_file().c_str(), 0, &face))
99 {
100 std::cerr << "WARNING: failed to load titlebar font: \"" << titlebar::font_file() << "\"\n";
101 FT_Done_FreeType(lib);
102 return;
103 }
104
105 FT_Set_Pixel_Sizes(face, 0, 10);
106 working = true;
107}
108
109Printer::~Printer()
110{
111 if (working)
112 {
113 FT_Done_Face(face);
114 FT_Done_FreeType(lib);
115 }
116}
117
118void Printer::print(MirGraphicsRegion const& region, std::string const& title_, int const intensity)
119try
120{
121 if (!working)
122 return;
123
124 auto title = converter.from_bytes(title_);
125
126 int base_x = 2;
127 int base_y = region.height-2;
128
129 for (auto const& ch : title)
130 {
131 FT_Load_Glyph(face, FT_Get_Char_Index(face, ch), FT_LOAD_DEFAULT);
132 auto const glyph = face->glyph;
133 FT_Render_Glyph(glyph, FT_RENDER_MODE_NORMAL);
134
135 auto const& bitmap = glyph->bitmap;
136 auto const x = base_x + glyph->bitmap_left;
137
138 if (static_cast<int>(x + bitmap.width) <= region.width)
139 {
140 unsigned char* src = bitmap.buffer;
141
142 auto const y = base_y - glyph->bitmap_top;
143 char* dest = region.vaddr + y*region.stride + 4*x;
144
145 for (auto row = 0u; row != std::min(bitmap.rows, glyph->bitmap_top+2u); ++row)
146 {
147 for (auto col = 0u; col != bitmap.width; ++col)
148 memset(dest+ 4*col, (intensity*(0xff^src[col]))/0xff, 4);
149
150 src += bitmap.pitch;
151 dest += region.stride;
152 }
153 }
154
155 base_x += glyph->advance.x >> 6;
156 base_y += glyph->advance.y >> 6;
157 }
158}
159catch (...)
160{
161 std::cerr << "WARNING: failed render title: \"" << title_ << "\"\n";
162}
163
164void Printer::printhelp(MirGraphicsRegion const& region)
165{
166 if (!working)
167 return;
168
169 static char const* const helptext[] =
170 {
171 "Welcome to miral-shell",
172 "",
173 "Keyboard shortcuts:",
174 "",
175 " o Switch apps: Alt-Tab, tap or click on the corresponding window",
176 " o Next (previous) app window: Alt-` (Alt-Shift-`)",
177 "",
178 " o Move window: Alt-leftmousebutton drag (three finger drag)",
179 " o Resize window: Alt-middle_button drag (three finger pinch)",
180 "",
181 " o Maximize/restore current window (to display size). : Alt-F11",
182 " o Maximize/restore current window (to display height): Shift-F11",
183 " o Maximize/restore current window (to display width) : Ctrl-F11",
184 "",
185 " o Switch workspace: Meta-Alt-[F1|F2|F3|F4]",
186 " o Switch workspace taking active window: Meta-Ctrl-[F1|F2|F3|F4]",
187 "",
188 " o To exit: Ctrl-Alt-BkSp",
189 };
190
191 int help_width = 0;
192 unsigned int help_height = 0;
193 unsigned int line_height = 0;
194
195 for (auto const* rawline : helptext)
196 {
197 int line_width = 0;
198
199 auto const line = converter.from_bytes(rawline);
200
201 auto const fwidth = std::min(region.width / 60, 20);
202
203 FT_Set_Pixel_Sizes(face, fwidth, 0);
204
205 for (auto const& ch : line)
206 {
207 FT_Load_Glyph(face, FT_Get_Char_Index(face, ch), FT_LOAD_DEFAULT);
208 auto const glyph = face->glyph;
209 FT_Render_Glyph(glyph, FT_RENDER_MODE_NORMAL);
210
211 line_width += glyph->advance.x >> 6;
212 line_height = std::max(line_height, glyph->bitmap.rows + glyph->bitmap.rows/2);
213 }
214
215 if (help_width < line_width) help_width = line_width;
216 help_height += line_height;
217 }
218
219 int base_y = (region.height - help_height)/2;
220
221 for (auto const* rawline : helptext)
222 {
223 int base_x = (region.width - help_width)/2;
224
225 auto const line = converter.from_bytes(rawline);
226
227 for (auto const& ch : line)
228 {
229 FT_Load_Glyph(face, FT_Get_Char_Index(face, ch), FT_LOAD_DEFAULT);
230 auto const glyph = face->glyph;
231 FT_Render_Glyph(glyph, FT_RENDER_MODE_NORMAL);
232
233 auto const& bitmap = glyph->bitmap;
234 auto const x = base_x + glyph->bitmap_left;
235
236 if (static_cast<int>(x + bitmap.width) <= region.width)
237 {
238 unsigned char* src = bitmap.buffer;
239
240 auto const y = base_y - glyph->bitmap_top;
241 char* dest = region.vaddr + y * region.stride + 4 * x;
242
243 for (auto row = 0u; row != bitmap.rows; ++row)
244 {
245 for (auto col = 0u; col != 4 * bitmap.width; ++col)
246 dest[col] |= src[col / 4]/2;
247
248 src += bitmap.pitch;
249 dest += region.stride;
250
251 if (dest > region.vaddr + region.height * region.stride)
252 break;
253 }
254 }
255
256 base_x += glyph->advance.x >> 6;
257 }
258 base_y += line_height;
259 }
260}
261
262void render_background(MirBufferStream* buffer_stream, MirGraphicsRegion& graphics_region)
263{
264 static uint8_t const pattern[4] = {0x00, 0x00, 0x00, 0x00 };
265
266 char* row = (&graphics_region)->vaddr;
267
268 for (int j = 0; j < (&graphics_region)->height; j++)
269 {
270 uint32_t* pixel = (uint32_t*)row;
271
272 for (int i = 0; i < (&graphics_region)->width; i++)
273 memcpy(pixel + i, pattern, sizeof pixel[i]);
274
275 row += (&graphics_region)->stride;
276 }
277
278 static Printer printer;
279 printer.printhelp(*&graphics_region);
280
281 mir_buffer_stream_swap_buffers_sync(buffer_stream);
282}
283}
284
285using namespace mir::client;
286using namespace mir::geometry;
287
288DecorationProvider::DecorationProvider(miral::WindowManagerTools const& tools) : tools{tools}
289{
290
291}
292
293DecorationProvider::~DecorationProvider()
294{
295}
296
297void DecorationProvider::stop()
298{
299 enqueue_work([this]
300 {
301 std::lock_guard<decltype(mutex)> lock{mutex};
302 window_to_titlebar.clear();
303 });
304
305 enqueue_work([this]
306 {
307 if (connection)
308 {
309 wallpaper.erase(begin(wallpaper), end(wallpaper));
310 }
311 connection.reset();
312 });
313 stop_work();
314}
315
316void DecorationProvider::operator()(Connection connection)
317{
318 this->connection = connection;
319
320 DisplayConfig const display_conf{this->connection};
321
322 display_conf.for_each_output([this](MirOutput const* output)
323 {
324 if (!mir_output_is_enabled(output))
325 return;
326
327 auto const mode = mir_output_get_current_mode(output);
328 auto const output_id = mir_output_get_id(output);
329 auto const width = mir_output_mode_get_width(mode);
330 auto const height = mir_output_mode_get_height(mode);
331
332 Surface surface{mir_connection_create_render_surface_sync(DecorationProvider::connection, width, height)};
333
334 auto const buffer_stream =
335 mir_render_surface_get_buffer_stream(surface, width, height, mir_pixel_format_xrgb_8888);
336
337 auto window = WindowSpec::for_gloss(DecorationProvider::connection, width, height)
338 .set_fullscreen_on_output(output_id)
339 .set_event_handler(&handle_event_for_background, this)
340 .add_surface(surface, width, height, 0, 0)
341 .set_name(wallpaper_name).create_window();
342
343 wallpaper.push_back(Wallpaper{surface, window, buffer_stream});
344
345 MirGraphicsRegion graphics_region;
346 mir_buffer_stream_get_graphics_region(buffer_stream, &graphics_region);
347 render_background(buffer_stream, graphics_region);
348 });
349
350 start_work();
351}
352
353void DecorationProvider::operator()(std::weak_ptr<mir::scene::Session> const& session)
354{
355 std::lock_guard<decltype(mutex)> lock{mutex};
356 this->weak_session = session;
357}
358
359auto DecorationProvider::session() const -> std::shared_ptr<mir::scene::Session>
360{
361 std::lock_guard<decltype(mutex)> lock{mutex};
362 return weak_session.lock();
363}
364
365void DecorationProvider::handle_event(MirWindow* window, MirEvent const* ev, void* context_)
366{
367 auto* const context = (Data*)context_;
368
369 switch (mir_event_get_type(ev))
370 {
371 case mir_event_type_resize:
372 {
373 MirResizeEvent const* resize = mir_event_get_resize_event(ev);
374 int const new_width = mir_resize_event_get_width(resize);
375 int const new_height = mir_resize_event_get_height(resize);
376 mir_render_surface_set_size(context->surface, new_width, new_height);
377 WindowSpec::for_changes(context->connection)
378 .add_surface(context->surface, new_width, new_height, 0, 0)
379 .apply_to(window);
380 break;
381 }
382
383 default:
384 break;
385 }
386}
387
388void DecorationProvider::create_titlebar_for(miral::Window const& window)
389{
390 if (is_decoration(window)) return;
391
392 enqueue_work([this, window]
393 {
394 auto const width = window.size().width.as_int();
395 std::ostringstream buffer;
396 buffer << std::shared_ptr<mir::scene::Surface>(window).get();
397
398 Surface surface{mir_connection_create_render_surface_sync(this->connection, width, title_bar_height)};
399
400 std::lock_guard<decltype(mutex)> lock{mutex};
401
402 auto const data = &window_to_titlebar[window];
403 data->connection = connection;
404 data->surface = surface;
405 data->stream = mir_render_surface_get_buffer_stream(surface, width, title_bar_height, mir_pixel_format_xrgb_8888);
406 windows_awaiting_titlebar[buffer.str()] = window;
407
408 WindowSpec::for_gloss(connection, width, title_bar_height)
409 .add_surface(surface, width, title_bar_height, 0, 0)
410 .set_name(buffer.str().c_str())
411 .set_event_handler(&handle_event, data)
412 .create_window(insert, data);
413 });
414}
415
416void DecorationProvider::paint_titlebar_for(miral::WindowInfo const& info, int intensity)
417{
418 if (auto data = find_titlebar_data(info.window()))
419 {
420 data->intensity = intensity;
421
422 auto const title = info.name();
423
424 enqueue_work([stream=data->stream, title, intensity]{ paint_surface(stream, title, intensity); });
425 }
426}
427
428void DecorationProvider::destroy_titlebar_for(miral::Window const& window)
429{
430 if (auto data = find_titlebar_data(window))
431 {
432 if (auto surface = data->titlebar.exchange(nullptr))
433 {
434 enqueue_work([surface]
435 {
436 mir_window_release(surface, &null_window_callback, nullptr);
437 });
438 }
439
440 if (data->titlebar.load())
441 {
442 enqueue_work([this, window]
443 {
444 std::lock_guard<decltype(mutex)> lock{mutex};
445 window_to_titlebar.erase(window);
446 });
447 }
448 else
449 {
450 data->on_create = [this, window](MirWindow*)
451 {
452 enqueue_work([this, window]
453 {
454 std::lock_guard<decltype(mutex)> lock{mutex};
455 window_to_titlebar.erase(window);
456 });
457 };
458 }
459 }
460}
461
462void DecorationProvider::resize_titlebar_for(miral::WindowInfo const& window_info, Size const& size)
463{
464 auto const window = window_info.window();
465
466 if (window.size().width == size.width)
467 return;
468
469 if (auto titlebar_window = find_titlebar_window(window))
470 {
471 titlebar_window.resize({size.width, title_bar_height});
472
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: