Mir

Merge lp:~mir-team/mir/xenial-0.26 into lp:mir/xenial

Proposed by MichaƂ Sawicz
Status: Merged
Approved by: Alan Griffiths
Approved revision: no longer in the source branch.
Merged at revision: 1273
Proposed branch: lp:~mir-team/mir/xenial-0.26
Merge into: lp:mir/xenial
Diff against target: 150786 lines (+69411/-31258)
1395 files modified
.bzrignore (+5/-0)
3rd_party/android-deps/android/input.h (+4/-1)
3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h (+0/-36)
3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h (+12/-0)
3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h (+17/-11)
3rd_party/android-input/android/frameworks/base/services/input/Input.cpp (+18/-0)
3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp (+74/-42)
CMakeLists.txt (+69/-13)
benchmarks/frame-uniformity/CMakeLists.txt (+2/-0)
benchmarks/frame-uniformity/touch_measuring_client.cpp (+17/-17)
benchmarks/touch_event_latency.py (+2/-6)
cmake/FindGtestGmock.cmake (+36/-11)
cmake/FindLibHardware.cmake (+1/-1)
cmake/LinuxCrossCompile.cmake (+11/-11)
cmake/MirCommon.cmake (+6/-27)
cross-compile-chroot.sh (+19/-10)
debian/changelog (+655/-0)
debian/control (+70/-21)
debian/copyright (+1/-1)
debian/libmirclient-dev.install (+2/-0)
debian/libmircommon7.install (+1/-1)
debian/libmircore-dev.install (+3/-0)
debian/libmircore1.install (+1/-0)
debian/libmirplatform15.install (+1/-1)
debian/libmirrenderer-dev.install (+2/-0)
debian/libmirserver43.install (+1/-1)
debian/mir-platform-graphics-android12.install (+1/-1)
debian/mir-platform-graphics-mesa-kms12.install (+1/-1)
debian/mir-platform-graphics-mesa-x12.install (+1/-1)
debian/mir-platform-input-evdev6.install (+1/-1)
debian/mir-test-tools.install (+4/-0)
debian/mir-utils.install (+2/-1)
debian/rules (+6/-1)
doc/Doxyfile.in (+1502/-965)
doc/abi_compatibility_tools.md (+1/-1)
doc/building_source_for_arm.md (+3/-3)
doc/building_source_for_pc.md (+1/-1)
doc/component_reports.md (+1/-0)
doc/demo_server_controls.md (+7/-7)
doc/dso_versioning_guide.md (+6/-8)
doc/footer.html.in (+1/-1)
doc/mainpage.md (+4/-5)
doc/measuring_latency.md (+52/-0)
doc/setup_vmware_for_mir.md (+1/-1)
examples/CMakeLists.txt (+10/-9)
examples/animated_cursor_demo_client.c (+5/-5)
examples/basic.c (+26/-55)
examples/camera.c (+48/-19)
examples/client_helpers.cpp (+21/-20)
examples/client_helpers.h (+10/-10)
examples/client_touch_validator.cpp (+6/-6)
examples/cursors_demo_client.c (+9/-10)
examples/demo_client_display_config.c (+93/-132)
examples/eglapp.c (+280/-225)
examples/eglapp.h (+19/-7)
examples/eglcounter.cpp (+2/-2)
examples/eglflash.c (+2/-2)
examples/eglplasma.c (+21/-35)
examples/eglsquare.cpp (+15/-15)
examples/eglstateswitcher.c (+39/-39)
examples/egltriangle.c (+2/-2)
examples/fingerpaint.c (+44/-58)
examples/flicker.c (+18/-18)
examples/graphics_utils.cpp (+2/-0)
examples/image_renderer.cpp (+2/-0)
examples/input_shapes.cpp (+6/-6)
examples/mir_demo_server_loader.cpp (+5/-5)
examples/multi_stream.cpp (+21/-14)
examples/multiwin.c (+20/-20)
examples/pointer_confinement.c (+276/-0)
examples/progressbar.c (+15/-16)
examples/prompt_session.c (+46/-26)
examples/release_at_exit.c (+9/-28)
examples/render_surfaces.cpp (+41/-13)
examples/scroll.cpp (+17/-166)
examples/server_example.cpp (+44/-1)
examples/server_example_adorning_compositor.cpp (+11/-9)
examples/server_example_basic_window_manager.cpp (+3/-3)
examples/server_example_basic_window_manager.h (+2/-2)
examples/server_example_canonical_window_manager.cpp (+133/-74)
examples/server_example_canonical_window_manager.h (+6/-2)
examples/server_example_input_device_config.cpp (+30/-21)
examples/server_example_input_filter.cpp (+38/-3)
examples/server_example_test_client.cpp (+7/-3)
examples/server_example_tiling_window_manager.cpp (+0/-640)
examples/server_example_tiling_window_manager.h (+0/-124)
examples/server_example_window_management.cpp (+3/-9)
examples/server_example_window_management_info.cpp (+68/-101)
examples/server_example_window_management_info.h (+8/-6)
examples/target.c (+64/-29)
examples/tooltip.c (+32/-31)
include/client/mir/event_printer.h (+20/-8)
include/client/mir/events/event_builders.h (+37/-10)
include/client/mir_toolkit/client_types.h (+185/-69)
include/client/mir_toolkit/cursors.h (+4/-2)
include/client/mir_toolkit/debug/surface.h (+27/-14)
include/client/mir_toolkit/events/event.h (+131/-36)
include/client/mir_toolkit/events/input/input_event.h (+12/-11)
include/client/mir_toolkit/events/input/keyboard_event.h (+3/-1)
include/client/mir_toolkit/events/input/pointer_event.h (+5/-2)
include/client/mir_toolkit/events/input/touch_event.h (+9/-3)
include/client/mir_toolkit/events/input_configuration_event.h (+12/-4)
include/client/mir_toolkit/events/input_device_state_event.h (+136/-0)
include/client/mir_toolkit/events/keymap_event.h (+2/-3)
include/client/mir_toolkit/events/prompt_session_event.h (+1/-1)
include/client/mir_toolkit/events/surface_event.h (+11/-4)
include/client/mir_toolkit/events/surface_output_event.h (+41/-18)
include/client/mir_toolkit/events/surface_placement.h (+49/-0)
include/client/mir_toolkit/events/window_event.h (+53/-0)
include/client/mir_toolkit/events/window_output_event.h (+83/-0)
include/client/mir_toolkit/events/window_placement.h (+46/-0)
include/client/mir_toolkit/extensions/android_buffer.h (+72/-0)
include/client/mir_toolkit/extensions/android_egl.h (+65/-0)
include/client/mir_toolkit/extensions/fenced_buffers.h (+104/-0)
include/client/mir_toolkit/extensions/gbm_buffer.h (+161/-0)
include/client/mir_toolkit/extensions/graphics_module.h (+55/-0)
include/client/mir_toolkit/extensions/mesa_drm_auth.h (+68/-0)
include/client/mir_toolkit/extensions/set_gbm_device.h (+53/-0)
include/client/mir_toolkit/extensions/window_coordinate_translation.h (+63/-0)
include/client/mir_toolkit/mir_blob.h (+23/-2)
include/client/mir_toolkit/mir_buffer.h (+77/-86)
include/client/mir_toolkit/mir_buffer_stream.h (+69/-20)
include/client/mir_toolkit/mir_client_library.h (+7/-0)
include/client/mir_toolkit/mir_connection.h (+145/-20)
include/client/mir_toolkit/mir_cookie.h (+7/-6)
include/client/mir_toolkit/mir_cursor_configuration.h (+7/-2)
include/client/mir_toolkit/mir_display_configuration.h (+224/-2)
include/client/mir_toolkit/mir_error.h (+55/-0)
include/client/mir_toolkit/mir_extension_core.h (+49/-0)
include/client/mir_toolkit/mir_input_device.h (+329/-58)
include/client/mir_toolkit/mir_persistent_id.h (+80/-0)
include/client/mir_toolkit/mir_platform_message.h (+8/-0)
include/client/mir_toolkit/mir_presentation_chain.h (+11/-110)
include/client/mir_toolkit/mir_prompt_session.h (+19/-2)
include/client/mir_toolkit/mir_screencast.h (+110/-5)
include/client/mir_toolkit/mir_surface.h (+226/-717)
include/client/mir_toolkit/mir_wait.h (+8/-4)
include/client/mir_toolkit/mir_window.h (+795/-0)
include/client/mir_toolkit/mir_window_id.h (+72/-0)
include/client/mir_toolkit/rs/mir_render_surface.h (+237/-0)
include/common/mir/dispatch/dispatchable.h (+2/-2)
include/common/mir/dispatch/multiplexing_dispatchable.h (+3/-2)
include/common/mir/events/contact_state.h (+58/-0)
include/common/mir/events/input_device_state.h (+41/-0)
include/common/mir/flags.h (+6/-1)
include/common/mir/graphics/native_buffer.h (+8/-12)
include/common/mir/input/keymap.h (+79/-0)
include/common/mir/input/mir_input_config.h (+107/-0)
include/common/mir/input/mir_input_config_serialization.h (+36/-0)
include/common/mir/input/mir_keyboard_config.h (+54/-0)
include/common/mir/input/mir_pointer_config.h (+35/-30)
include/common/mir/input/mir_touchpad_config.h (+42/-30)
include/common/mir/input/mir_touchscreen_config.h (+62/-0)
include/common/mir/posix_rw_mutex.h (+69/-0)
include/common/mir/time/posix_timestamp.h (+129/-0)
include/cookie/mir/cookie/authority.h (+1/-1)
include/core/mir/geometry/dimensions.h (+47/-47)
include/core/mir/geometry/displacement.h (+16/-16)
include/core/mir/geometry/length.h (+30/-30)
include/core/mir/geometry/point.h (+10/-10)
include/core/mir/geometry/rectangle.h (+10/-5)
include/core/mir/geometry/size.h (+10/-10)
include/core/mir/int_wrapper.h (+10/-10)
include/core/mir/optional_value.h (+9/-2)
include/core/mir_toolkit/common.h (+257/-10)
include/core/mir_toolkit/deprecations.h (+36/-0)
include/core/mir_toolkit/mir_input_device_types.h (+133/-0)
include/core/mir_toolkit/mir_native_buffer.h (+2/-1)
include/core/mir_toolkit/mir_version_number.h (+1/-1)
include/platform/mir/graphics/atomic_frame.h (+43/-0)
include/platform/mir/graphics/buffer.h (+0/-6)
include/platform/mir/graphics/display.h (+55/-9)
include/platform/mir/graphics/display_buffer.h (+17/-8)
include/platform/mir/graphics/display_configuration.h (+33/-15)
include/platform/mir/graphics/frame.h (+47/-0)
include/platform/mir/graphics/gamma_curves.h (+60/-0)
include/platform/mir/graphics/gl_context.h (+0/-44)
include/platform/mir/graphics/graphic_buffer_allocator.h (+18/-3)
include/platform/mir/graphics/platform.h (+16/-5)
include/platform/mir/graphics/platform_ipc_operations.h (+2/-2)
include/platform/mir/graphics/renderable.h (+1/-0)
include/platform/mir/input/event_builder.h (+14/-11)
include/platform/mir/input/input_sink.h (+22/-0)
include/platform/mir/input/platform.h (+11/-4)
include/platforms/mesa/mir_toolkit/mesa/native_display.h (+1/-1)
include/renderer/mir/renderer/renderer.h (+8/-8)
include/renderer/mir/renderer/renderer_factory.h (+5/-5)
include/renderers/gl/mir/renderer/gl/context.h (+47/-0)
include/renderers/gl/mir/renderer/gl/context_source.h (+49/-0)
include/renderers/gl/mir/renderer/gl/render_target.h (+5/-1)
include/renderers/sw/mir/renderer/sw/pixel_source.h (+57/-0)
include/server/mir/compositor/scene.h (+1/-1)
include/server/mir/executor.h (+57/-0)
include/server/mir/frontend/buffer_sink.h (+6/-0)
include/server/mir/frontend/buffer_stream.h (+8/-4)
include/server/mir/frontend/client_buffers.h (+2/-3)
include/server/mir/frontend/session.h (+28/-0)
include/server/mir/frontend/session_mediator_observer.h (+9/-9)
include/server/mir/graphics/display_configuration_observer.h (+93/-12)
include/server/mir/input/device.h (+12/-9)
include/server/mir/input/input_device_hub.h (+1/-0)
include/server/mir/input/input_manager.h (+0/-7)
include/server/mir/input/seat_observer.h (+55/-0)
include/server/mir/main_loop.h (+6/-2)
include/server/mir/observer_registrar.h (+92/-0)
include/server/mir/scene/application_not_responding_detector_wrapper.h (+49/-0)
include/server/mir/scene/buffer_stream_factory.h (+5/-3)
include/server/mir/scene/coordinate_translator.h (+1/-0)
include/server/mir/scene/null_surface_observer.h (+2/-1)
include/server/mir/scene/prompt_session.h (+4/-4)
include/server/mir/scene/session.h (+5/-4)
include/server/mir/scene/session_coordinator.h (+1/-1)
include/server/mir/scene/surface.h (+12/-5)
include/server/mir/scene/surface_creation_parameters.h (+12/-5)
include/server/mir/scene/surface_factory.h (+3/-1)
include/server/mir/scene/surface_observer.h (+3/-1)
include/server/mir/server.h (+48/-16)
include/server/mir/server_status_listener.h (+2/-0)
include/server/mir/shell/abstract_shell.h (+13/-3)
include/server/mir/shell/display_configuration_controller.h (+8/-0)
include/server/mir/shell/shell.h (+4/-4)
include/server/mir/shell/shell_report.h (+3/-1)
include/server/mir/shell/shell_wrapper.h (+2/-2)
include/server/mir/shell/surface_specification.h (+20/-4)
include/server/mir/shell/system_compositor_window_manager.h (+1/-1)
include/server/mir/shell/window_manager.h (+1/-1)
include/server/mir/time/alarm_factory.h (+1/-1)
include/test/mir/test/death.h (+49/-0)
include/test/mir/test/display_config_matchers.h (+11/-0)
include/test/mir/test/doubles/fake_display.h (+7/-3)
include/test/mir/test/doubles/mock_display_configuration.h (+4/-4)
include/test/mir/test/doubles/mock_egl.h (+12/-5)
include/test/mir/test/doubles/mock_input_device_hub.h (+2/-1)
include/test/mir/test/doubles/mock_seat_report.h (+52/-0)
include/test/mir/test/doubles/mock_window_manager.h (+1/-1)
include/test/mir/test/doubles/null_display.h (+20/-5)
include/test/mir/test/doubles/null_display_buffer.h (+2/-1)
include/test/mir/test/doubles/null_gl_context.h (+2/-2)
include/test/mir/test/doubles/null_platform.h (+0/-10)
include/test/mir/test/doubles/stub_display_configuration.h (+22/-2)
include/test/mir/test/doubles/stub_input_device.h (+25/-15)
include/test/mir/test/doubles/stub_session.h (+11/-3)
include/test/mir/test/doubles/stub_surface.h (+7/-4)
include/test/mir/test/event_matchers.h (+116/-39)
include/test/mir/test/signal.h (+20/-0)
include/test/mir/test/validity_matchers.h (+1/-1)
include/test/mir/test/wait_condition.h (+0/-84)
include/test/mir_test_framework/any_surface.h (+3/-1)
include/test/mir_test_framework/connected_client_with_a_surface.h (+1/-1)
include/test/mir_test_framework/fake_input_device.h (+9/-5)
include/test/mir_test_framework/headless_display_buffer_compositor_factory.h (+36/-0)
include/test/mir_test_framework/headless_nested_server_runner.h (+12/-0)
include/test/mir_test_framework/headless_test.h (+1/-1)
include/test/mir_test_framework/interprocess_client_server_test.h (+2/-0)
include/test/mir_test_framework/observant_shell.h (+106/-0)
include/test/mir_test_framework/placement_applying_shell.h (+3/-0)
include/test/mir_test_framework/process.h (+3/-0)
include/test/mir_test_framework/stub_client_platform_options.h (+48/-0)
include/test/mir_test_framework/stub_platform_extension.h (+65/-0)
include/test/mir_test_framework/stub_server_platform_factory.h (+2/-10)
include/test/mir_test_framework/using_stub_client_platform.h (+0/-41)
include/test/mir_test_framework/visible_surface.h (+5/-5)
playground/CMakeLists.txt (+30/-0)
playground/README (+3/-4)
playground/demo-shell/CMakeLists.txt (+0/-1)
playground/demo-shell/default_window_manager.cpp (+0/-150)
playground/demo-shell/default_window_manager.h (+0/-86)
playground/demo-shell/demo_compositor.cpp (+4/-4)
playground/demo-shell/demo_renderer.cpp (+4/-0)
playground/demo-shell/demo_shell.cpp (+6/-54)
playground/demo-shell/typo/CMakeLists.txt (+1/-3)
playground/demo-shell/typo/typo_freetype_renderer.cpp (+4/-4)
playground/demo-shell/typo/typo_freetype_renderer.h (+5/-5)
playground/demo-shell/typo/typo_glcache.cpp (+8/-8)
playground/demo-shell/typo/typo_glcache.h (+5/-5)
playground/demo-shell/typo/typo_renderer.cpp (+8/-7)
playground/demo-shell/typo/typo_renderer.h (+22/-8)
playground/demo-shell/typo/typo_stub_renderer.cpp (+3/-3)
playground/demo-shell/typo/typo_stub_renderer.h (+5/-5)
playground/demo-shell/window_manager.cpp (+8/-1)
playground/demo-shell/window_manager.h (+1/-1)
playground/diamond.c (+180/-0)
playground/diamond.h (+47/-0)
playground/egldiamond_render_surface.c (+325/-0)
playground/mir_demo_client_chain_jumping_buffers.c (+276/-0)
playground/mir_demo_client_prerendered_frames.c (+41/-21)
playground/mir_egl_platform_shim.c (+172/-0)
playground/mir_egl_platform_shim.h (+50/-0)
playground/render_surface.cpp (+249/-0)
playground/server_configuration.cpp (+14/-13)
playground/server_configuration.h (+0/-6)
src/CMakeLists.txt (+5/-4)
src/capnproto/CMakeLists.txt (+30/-0)
src/capnproto/mir_event.capnp (+262/-0)
src/capnproto/mir_input_config.capnp (+94/-0)
src/client/CMakeLists.txt (+25/-13)
src/client/atomic_callback.h (+8/-3)
src/client/buffer.cpp (+58/-35)
src/client/buffer.h (+32/-25)
src/client/buffer_factory.cpp (+93/-25)
src/client/buffer_factory.h (+56/-14)
src/client/buffer_receiver.h (+0/-45)
src/client/buffer_stream.cpp (+299/-369)
src/client/buffer_stream.h (+47/-27)
src/client/buffer_stream_configuration.cpp (+61/-0)
src/client/buffer_stream_configuration.h (+51/-0)
src/client/buffer_vault.cpp (+235/-95)
src/client/buffer_vault.h (+38/-21)
src/client/client_buffer_depository.cpp (+0/-85)
src/client/client_buffer_depository.h (+0/-75)
src/client/connection_configuration.h (+2/-0)
src/client/connection_surface_map.cpp (+68/-43)
src/client/connection_surface_map.h (+27/-12)
src/client/cursor_configuration.h (+3/-10)
src/client/default_connection_configuration.cpp (+13/-2)
src/client/default_connection_configuration.h (+2/-0)
src/client/display_configuration.h (+6/-0)
src/client/display_configuration_api.cpp (+200/-120)
src/client/error_buffer.cpp (+75/-0)
src/client/error_buffer.h (+60/-0)
src/client/error_chain.cpp (+8/-18)
src/client/error_chain.h (+2/-5)
src/client/error_connections.cpp (+1/-11)
src/client/error_handler.h (+35/-0)
src/client/error_render_surface.cpp (+73/-0)
src/client/error_render_surface.h (+54/-0)
src/client/error_stream.cpp (+41/-16)
src/client/error_stream.h (+31/-22)
src/client/event.cpp (+317/-156)
src/client/event_printer.cpp (+152/-33)
src/client/events/CMakeLists.txt (+0/-1)
src/client/events/event_builders.cpp (+213/-193)
src/client/events/make_empty_event.cpp (+0/-42)
src/client/events/make_empty_event.h (+0/-32)
src/client/events/serialization.cpp (+2/-81)
src/client/frame_clock.cpp (+156/-0)
src/client/frame_clock.h (+73/-0)
src/client/handle_event_exception.h (+30/-0)
src/client/input/CMakeLists.txt (+1/-0)
src/client/input/android/android_input_lexicon.cpp (+6/-0)
src/client/input/android/android_input_receiver.cpp (+32/-96)
src/client/input/android/android_input_receiver.h (+3/-12)
src/client/input/android/event_conversion_helpers.cpp (+9/-15)
src/client/input/input_devices.cpp (+5/-4)
src/client/input/input_event.cpp (+170/-295)
src/client/input/xkb_mapper.cpp (+368/-96)
src/client/logging/rpc_report.cpp (+3/-3)
src/client/lttng/CMakeLists.txt (+9/-0)
src/client/mir_blob.cpp (+32/-0)
src/client/mir_buffer_api.cpp (+151/-102)
src/client/mir_buffer_stream_api.cpp (+94/-31)
src/client/mir_connection.cpp (+521/-250)
src/client/mir_connection.h (+120/-55)
src/client/mir_connection_api.cpp (+165/-114)
src/client/mir_connection_api.h (+0/-63)
src/client/mir_cookie.cpp (+10/-9)
src/client/mir_cookie.h (+6/-4)
src/client/mir_cursor_api.cpp (+18/-19)
src/client/mir_debug_api.cpp (+24/-9)
src/client/mir_error.cpp (+35/-0)
src/client/mir_error.h (+37/-0)
src/client/mir_error_api.cpp (+30/-0)
src/client/mir_extension_core.cpp (+38/-0)
src/client/mir_input_device_api.cpp (+207/-114)
src/client/mir_platform_message_api.cpp (+1/-10)
src/client/mir_presentation_chain.h (+8/-8)
src/client/mir_presentation_chain_api.cpp (+45/-57)
src/client/mir_prompt_session.cpp (+10/-9)
src/client/mir_prompt_session.h (+9/-8)
src/client/mir_prompt_session_api.cpp (+32/-6)
src/client/mir_render_surface_api.cpp (+252/-0)
src/client/mir_screencast.cpp (+143/-54)
src/client/mir_screencast.h (+41/-23)
src/client/mir_screencast_api.cpp (+80/-45)
src/client/mir_surface.cpp (+214/-56)
src/client/mir_surface.h (+70/-37)
src/client/mir_surface_api.cpp (+1058/-492)
src/client/mirclient.pc.in (+4/-5)
src/client/no_tls_future-inl.h (+373/-73)
src/client/periodic_perf_report.cpp (+7/-1)
src/client/presentation_chain.cpp (+16/-71)
src/client/presentation_chain.h (+6/-8)
src/client/probing_client_platform_factory.cpp (+5/-3)
src/client/probing_client_platform_factory.h (+3/-1)
src/client/render_surface.cpp (+118/-0)
src/client/render_surface.h (+79/-0)
src/client/rpc/CMakeLists.txt (+2/-2)
src/client/rpc/make_rpc_channel.h (+2/-0)
src/client/rpc/make_socket_rpc_channel.cpp (+3/-1)
src/client/rpc/mir_basic_rpc_channel.cpp (+23/-8)
src/client/rpc/mir_basic_rpc_channel.h (+8/-0)
src/client/rpc/mir_display_server.cpp (+37/-16)
src/client/rpc/mir_display_server.h (+22/-10)
src/client/rpc/mir_protobuf_rpc_channel.cpp (+98/-42)
src/client/rpc/mir_protobuf_rpc_channel.h (+6/-0)
src/client/screencast_stream.cpp (+59/-30)
src/client/screencast_stream.h (+15/-8)
src/client/surface_map.h (+11/-11)
src/client/symbols.map (+260/-15)
src/client/version.h.in (+19/-35)
src/common/CMakeLists.txt (+28/-11)
src/common/dispatch/multiplexing_dispatchable.cpp (+8/-78)
src/common/edid.cpp (+67/-0)
src/common/events/CMakeLists.txt (+46/-0)
src/common/events/close_surface_event.cpp (+37/-0)
src/common/events/event.cpp (+214/-0)
src/common/events/input_configuration_event.cpp (+55/-0)
src/common/events/input_device_state_event.cpp (+126/-0)
src/common/events/input_event.cpp (+128/-0)
src/common/events/keyboard_event.cpp (+58/-0)
src/common/events/keymap_event.cpp (+62/-0)
src/common/events/orientation_event.cpp (+44/-0)
src/common/events/pointer_event.cpp (+134/-0)
src/common/events/prompt_session_event.cpp (+34/-0)
src/common/events/resize_event.cpp (+54/-0)
src/common/events/surface_event.cpp (+57/-0)
src/common/events/surface_output_event.cpp (+87/-0)
src/common/events/surface_placement_event.cpp (+58/-0)
src/common/events/touch_event.cpp (+204/-0)
src/common/fatal/CMakeLists.txt (+0/-3)
src/common/geometry/CMakeLists.txt (+0/-27)
src/common/input/mir_input_config.cpp (+308/-0)
src/common/input/mir_input_config_serialization.cpp (+187/-0)
src/common/input/mir_keyboard_config.cpp (+84/-0)
src/common/input/mir_pointer_config.cpp (+150/-0)
src/common/input/mir_touchpad_config.cpp (+189/-0)
src/common/input/mir_touchscreen_config.cpp (+96/-0)
src/common/output_type_names.cpp (+53/-0)
src/common/posix_rw_mutex.cpp (+191/-0)
src/common/sharedlibrary/CMakeLists.txt (+1/-1)
src/common/symbols.map (+349/-87)
src/cookie/CMakeLists.txt (+2/-3)
src/cookie/authority.cpp (+12/-51)
src/core/CMakeLists.txt (+53/-0)
src/core/fatal.cpp (+1/-1)
src/core/geometry/rectangle.cpp (+25/-29)
src/core/mircore.pc.in (+10/-0)
src/core/symbols.map (+51/-0)
src/gl/program.cpp (+2/-0)
src/include/client/mir/client_buffer.h (+7/-6)
src/include/client/mir/client_buffer_factory.h (+2/-0)
src/include/client/mir/client_context.h (+16/-1)
src/include/client/mir/client_platform.h (+9/-1)
src/include/client/mir/client_platform_factory.h (+16/-2)
src/include/client/mir/egl_native_surface.h (+5/-4)
src/include/client/mir/input/input_devices.h (+4/-18)
src/include/client/mir/input/input_platform.h (+1/-1)
src/include/client/mir/mir_buffer.h (+63/-0)
src/include/client/mir/mir_buffer_stream.h (+34/-21)
src/include/client/mir/mir_render_surface.h (+59/-0)
src/include/client/mir/platform_message.h (+32/-0)
src/include/client/mir_toolkit/client_types_nbs.h (+0/-50)
src/include/client/mir_toolkit/extensions/hardware_buffer_stream.h (+60/-0)
src/include/client/mir_toolkit/mir_buffer_private.h (+74/-0)
src/include/common/mir/client_visible_error.h (+55/-0)
src/include/common/mir/events/close_surface_event.h (+32/-0)
src/include/common/mir/events/event.h (+82/-0)
src/include/common/mir/events/event_private.h (+15/-173)
src/include/common/mir/events/input_configuration_event.h (+43/-0)
src/include/common/mir/events/input_device_state_event.h (+55/-0)
src/include/common/mir/events/input_event.h (+59/-0)
src/include/common/mir/events/keyboard_event.h (+42/-0)
src/include/common/mir/events/keymap_event.h (+42/-0)
src/include/common/mir/events/orientation_event.h (+35/-0)
src/include/common/mir/events/pointer_event.h (+66/-0)
src/include/common/mir/events/prompt_session_event.h (+32/-0)
src/include/common/mir/events/resize_event.h (+38/-0)
src/include/common/mir/events/surface_event.h (+38/-0)
src/include/common/mir/events/surface_output_event.h (+49/-0)
src/include/common/mir/events/surface_placement_event.h (+36/-0)
src/include/common/mir/events/touch_event.h (+71/-0)
src/include/common/mir/graphics/edid.h (+111/-0)
src/include/common/mir/input/key_mapper.h (+100/-0)
src/include/common/mir/input/xkb_mapper.h (+55/-18)
src/include/common/mir/output_type_names.h (+26/-0)
src/include/common/mir/protobuf/display_server.h (+22/-10)
src/include/common/mir/protobuf/protocol_version.h (+2/-2)
src/include/gl/mir/gl/primitive.h (+1/-1)
src/include/gl/mir/gl/program.h (+1/-1)
src/include/gl/mir/gl/texture.h (+1/-1)
src/include/platform/mir/graphics/buffer_ipc_message.h (+1/-1)
src/include/platform/mir/graphics/display_report.h (+2/-1)
src/include/platform/mir/graphics/egl_extensions.h (+2/-3)
src/include/platform/mir/graphics/nested_context.h (+30/-1)
src/include/platform/mir/options/configuration.h (+3/-2)
src/include/server/mir/compositor/buffer_stream.h (+2/-1)
src/include/server/mir/compositor/frame_dropping_policy_factory.h (+1/-1)
src/include/server/mir/default_server_configuration.h (+44/-13)
src/include/server/mir/default_server_status_listener.h (+17/-9)
src/include/server/mir/display_changer.h (+1/-4)
src/include/server/mir/frontend/display_changer.h (+10/-0)
src/include/server/mir/frontend/event_sink.h (+4/-5)
src/include/server/mir/frontend/input_configuration_changer.h (+51/-0)
src/include/server/mir/frontend/screencast.h (+4/-1)
src/include/server/mir/frontend/shell.h (+2/-2)
src/include/server/mir/frontend/template_protobuf_message_processor.h (+11/-0)
src/include/server/mir/frontend/unsupported_feature_exception.h (+0/-41)
src/include/server/mir/glib_main_loop.h (+3/-1)
src/include/server/mir/graphics/surfaceless_egl_context.h (+2/-2)
src/include/server/mir/input/seat.h (+10/-0)
src/include/server/mir/input/validator.h (+9/-10)
src/include/server/mir/lockable_callback_wrapper.h (+3/-3)
src/include/server/mir/observer_multiplexer.h (+126/-0)
src/include/server/mir/scene/legacy_scene_change_notification.h (+1/-1)
src/include/server/mir/scene/surface_event_source.h (+2/-1)
src/include/server/mir/scene/surface_observers.h (+2/-1)
src/include/server/mir/server_configuration.h (+3/-2)
src/include/server/mir/shell/basic_window_manager.h (+2/-2)
src/include/server/mir/shell/canonical_window_manager.h (+9/-3)
src/include/server/mir/shell/window_management_info.h (+5/-4)
src/platform/CMakeLists.txt (+2/-1)
src/platform/graphics/CMakeLists.txt (+4/-1)
src/platform/graphics/atomic_frame.cpp (+50/-0)
src/platform/graphics/display_configuration.cpp (+7/-30)
src/platform/graphics/egl_error.cpp (+21/-0)
src/platform/graphics/egl_extensions.cpp (+7/-0)
src/platform/graphics/gamma_curves.cpp (+60/-0)
src/platform/mirplatform.pc.in (+1/-0)
src/platform/options/default_configuration.cpp (+11/-10)
src/platform/symbols.map (+14/-21)
src/platforms/CMakeLists.txt (+11/-7)
src/platforms/android/client/CMakeLists.txt (+2/-4)
src/platforms/android/client/android_client_buffer_factory.cpp (+9/-0)
src/platforms/android/client/android_client_buffer_factory.h (+3/-0)
src/platforms/android/client/android_client_platform.cpp (+218/-34)
src/platforms/android/client/android_client_platform.h (+19/-3)
src/platforms/android/client/buffer.cpp (+26/-24)
src/platforms/android/client/buffer.h (+7/-5)
src/platforms/android/client/buffer_registrar.h (+3/-3)
src/platforms/android/client/client_platform_factory.cpp (+9/-8)
src/platforms/android/client/egl_native_surface_interpreter.cpp (+15/-8)
src/platforms/android/client/egl_native_surface_interpreter.h (+20/-1)
src/platforms/android/client/gralloc_registrar.cpp (+7/-7)
src/platforms/android/client/gralloc_registrar.h (+2/-2)
src/platforms/android/common/CMakeLists.txt (+1/-0)
src/platforms/android/common/android_native_buffer.cpp (+39/-4)
src/platforms/android/common/mir_native_window.cpp (+68/-6)
src/platforms/android/common/native_window_report.cpp (+170/-0)
src/platforms/android/common/syncfence.cpp (+22/-0)
src/platforms/android/include/android_driver_interpreter.h (+2/-0)
src/platforms/android/include/android_format_conversion-inl.h (+16/-0)
src/platforms/android/include/android_native_buffer.h (+5/-2)
src/platforms/android/include/egl_sync_extensions.h (+2/-0)
src/platforms/android/include/fence.h (+4/-0)
src/platforms/android/include/mir_native_window.h (+9/-2)
src/platforms/android/include/native_buffer.h (+12/-7)
src/platforms/android/include/native_window_report.h (+81/-0)
src/platforms/android/include/sync_fence.h (+6/-3)
src/platforms/android/server/CMakeLists.txt (+2/-3)
src/platforms/android/server/buffer.h (+9/-5)
src/platforms/android/server/device_quirks.cpp (+84/-14)
src/platforms/android/server/device_quirks.h (+9/-0)
src/platforms/android/server/display.cpp (+120/-53)
src/platforms/android/server/display.h (+24/-3)
src/platforms/android/server/display_buffer.cpp (+10/-1)
src/platforms/android/server/display_buffer.h (+3/-1)
src/platforms/android/server/display_configuration.cpp (+7/-2)
src/platforms/android/server/display_resource_factory.h (+1/-0)
src/platforms/android/server/fb_device.cpp (+7/-3)
src/platforms/android/server/fb_device.h (+1/-1)
src/platforms/android/server/gl_context.cpp (+42/-1)
src/platforms/android/server/gl_context.h (+8/-3)
src/platforms/android/server/gralloc.h (+3/-9)
src/platforms/android/server/gralloc_module.cpp (+2/-28)
src/platforms/android/server/gralloc_module.h (+1/-5)
src/platforms/android/server/graphic_buffer_allocator.cpp (+34/-23)
src/platforms/android/server/graphic_buffer_allocator.h (+4/-2)
src/platforms/android/server/hal_component_factory.cpp (+6/-1)
src/platforms/android/server/hwc_blanking_control.cpp (+32/-7)
src/platforms/android/server/hwc_configuration.h (+6/-4)
src/platforms/android/server/hwc_device.cpp (+1/-1)
src/platforms/android/server/hwc_fallback_gl_renderer.cpp (+6/-4)
src/platforms/android/server/hwc_fallback_gl_renderer.h (+2/-3)
src/platforms/android/server/hwc_fb_device.cpp (+2/-2)
src/platforms/android/server/hwc_fb_device.h (+2/-1)
src/platforms/android/server/hwc_layers.cpp (+9/-7)
src/platforms/android/server/hwc_layers.h (+0/-1)
src/platforms/android/server/hwc_loggers.cpp (+1/-0)
src/platforms/android/server/hwc_wrapper.h (+2/-2)
src/platforms/android/server/interpreter_cache.cpp (+1/-1)
src/platforms/android/server/interpreter_cache.h (+2/-2)
src/platforms/android/server/interpreter_resource_cache.h (+4/-4)
src/platforms/android/server/ipc_operations.cpp (+7/-4)
src/platforms/android/server/platform.cpp (+69/-41)
src/platforms/android/server/platform.h (+3/-1)
src/platforms/android/server/real_hwc_wrapper.cpp (+11/-3)
src/platforms/android/server/real_hwc_wrapper.h (+3/-3)
src/platforms/android/server/resource_factory.cpp (+1/-0)
src/platforms/android/server/server_render_window.cpp (+6/-2)
src/platforms/android/server/server_render_window.h (+2/-1)
src/platforms/android/utils/CMakeLists.txt (+5/-2)
src/platforms/android/utils/android_graphics_region_factory.cpp (+0/-68)
src/platforms/android/utils/graphics_region_factory.h (+0/-48)
src/platforms/android/utils/render_overlays.cpp (+82/-32)
src/platforms/android/utils/test_android_hardware_sanity.cpp (+39/-23)
src/platforms/common/CMakeLists.txt (+1/-0)
src/platforms/common/server/CMakeLists.txt (+22/-0)
src/platforms/common/server/anonymous_shm_file.cpp (+30/-18)
src/platforms/common/server/anonymous_shm_file.h (+1/-1)
src/platforms/common/server/buffer_texture_binder.h (+1/-1)
src/platforms/common/server/kms-utils/CMakeLists.txt (+18/-0)
src/platforms/common/server/kms-utils/drm_mode_resources.cpp (+409/-74)
src/platforms/common/server/kms-utils/drm_mode_resources.h (+109/-8)
src/platforms/common/server/kms-utils/kms_connector.cpp (+206/-0)
src/platforms/common/server/kms-utils/kms_connector.h (+60/-0)
src/platforms/common/server/shm_buffer.cpp (+25/-25)
src/platforms/common/server/shm_buffer.h (+16/-7)
src/platforms/common/server/shm_file.h (+1/-1)
src/platforms/eglstream-kms/CMakeLists.txt (+4/-0)
src/platforms/eglstream-kms/client/CMakeLists.txt (+37/-0)
src/platforms/eglstream-kms/client/client_buffer.cpp (+156/-0)
src/platforms/eglstream-kms/client/client_buffer.h (+66/-0)
src/platforms/eglstream-kms/client/client_buffer_factory.cpp (+46/-0)
src/platforms/eglstream-kms/client/client_buffer_factory.h (+48/-0)
src/platforms/eglstream-kms/client/client_platform.cpp (+97/-0)
src/platforms/eglstream-kms/client/client_platform.h (+53/-0)
src/platforms/eglstream-kms/client/client_platform_factory.cpp (+61/-0)
src/platforms/eglstream-kms/client/symbols.map (+7/-0)
src/platforms/eglstream-kms/include/native_buffer.h (+39/-0)
src/platforms/eglstream-kms/server/CMakeLists.txt (+58/-0)
src/platforms/eglstream-kms/server/buffer_allocator.cpp (+73/-0)
src/platforms/eglstream-kms/server/buffer_allocator.h (+53/-0)
src/platforms/eglstream-kms/server/display.cpp (+384/-0)
src/platforms/eglstream-kms/server/display.h (+90/-0)
src/platforms/eglstream-kms/server/egl_output.cpp (+357/-0)
src/platforms/eglstream-kms/server/egl_output.h (+79/-0)
src/platforms/eglstream-kms/server/kms_display_configuration.cpp (+331/-0)
src/platforms/eglstream-kms/server/kms_display_configuration.h (+70/-0)
src/platforms/eglstream-kms/server/platform.cpp (+162/-0)
src/platforms/eglstream-kms/server/platform.h (+63/-0)
src/platforms/eglstream-kms/server/platform_symbols.cpp (+178/-0)
src/platforms/eglstream-kms/server/software_buffer.cpp (+48/-0)
src/platforms/eglstream-kms/server/software_buffer.h (+52/-0)
src/platforms/eglstream-kms/server/symbols.map.in (+10/-0)
src/platforms/evdev/CMakeLists.txt (+2/-3)
src/platforms/evdev/libinput_device.cpp (+21/-16)
src/platforms/evdev/libinput_device.h (+1/-1)
src/platforms/evdev/platform.cpp (+1/-1)
src/platforms/mesa/CMakeLists.txt (+2/-1)
src/platforms/mesa/client/CMakeLists.txt (+3/-4)
src/platforms/mesa/client/client_buffer.cpp (+64/-24)
src/platforms/mesa/client/client_buffer.h (+11/-6)
src/platforms/mesa/client/client_buffer_factory.cpp (+12/-0)
src/platforms/mesa/client/client_buffer_factory.h (+3/-0)
src/platforms/mesa/client/client_platform.cpp (+289/-31)
src/platforms/mesa/client/client_platform.h (+15/-2)
src/platforms/mesa/client/client_platform_factory.cpp (+11/-7)
src/platforms/mesa/client/native_surface.cpp (+30/-12)
src/platforms/mesa/client/native_surface.h (+4/-3)
src/platforms/mesa/common/CMakeLists.txt (+10/-0)
src/platforms/mesa/common/gbm_format_conversions.cpp (+108/-0)
src/platforms/mesa/include/gbm_format_conversions.h (+39/-0)
src/platforms/mesa/include/native_buffer.h (+45/-0)
src/platforms/mesa/server/CMakeLists.txt (+24/-2)
src/platforms/mesa/server/buffer_allocator.cpp (+33/-62)
src/platforms/mesa/server/buffer_allocator.h (+6/-8)
src/platforms/mesa/server/common/CMakeLists.txt (+0/-17)
src/platforms/mesa/server/display_helpers.cpp (+21/-6)
src/platforms/mesa/server/display_helpers.h (+0/-1)
src/platforms/mesa/server/gbm_buffer.cpp (+8/-102)
src/platforms/mesa/server/gbm_buffer.h (+9/-18)
src/platforms/mesa/server/ipc_operations.cpp (+5/-2)
src/platforms/mesa/server/kms/CMakeLists.txt (+12/-8)
src/platforms/mesa/server/kms/bypass.cpp (+2/-2)
src/platforms/mesa/server/kms/cursor.cpp (+9/-0)
src/platforms/mesa/server/kms/cursor.h (+1/-0)
src/platforms/mesa/server/kms/display.cpp (+158/-114)
src/platforms/mesa/server/kms/display.h (+15/-3)
src/platforms/mesa/server/kms/display_buffer.cpp (+37/-19)
src/platforms/mesa/server/kms/display_buffer.h (+3/-1)
src/platforms/mesa/server/kms/guest_platform.cpp (+14/-35)
src/platforms/mesa/server/kms/guest_platform.h (+0/-1)
src/platforms/mesa/server/kms/kms_output.h (+3/-0)
src/platforms/mesa/server/kms/kms_page_flipper.cpp (+42/-16)
src/platforms/mesa/server/kms/kms_page_flipper.h (+7/-4)
src/platforms/mesa/server/kms/linux_virtual_terminal.cpp (+1/-1)
src/platforms/mesa/server/kms/nested_authentication.cpp (+22/-60)
src/platforms/mesa/server/kms/nested_authentication.h (+2/-0)
src/platforms/mesa/server/kms/page_flipper.h (+3/-2)
src/platforms/mesa/server/kms/platform.cpp (+0/-5)
src/platforms/mesa/server/kms/platform.h (+0/-2)
src/platforms/mesa/server/kms/platform_symbols.cpp (+16/-1)
src/platforms/mesa/server/kms/real_kms_display_configuration.cpp (+137/-11)
src/platforms/mesa/server/kms/real_kms_display_configuration.h (+2/-1)
src/platforms/mesa/server/kms/real_kms_output.cpp (+95/-167)
src/platforms/mesa/server/kms/real_kms_output.h (+25/-19)
src/platforms/mesa/server/kms/symbols.map.in (+0/-6)
src/platforms/mesa/server/software_buffer.cpp (+48/-0)
src/platforms/mesa/server/software_buffer.h (+54/-0)
src/platforms/mesa/server/x11/CMakeLists.txt (+4/-5)
src/platforms/mesa/server/x11/graphics/CMakeLists.txt (+3/-5)
src/platforms/mesa/server/x11/graphics/display.cpp (+172/-141)
src/platforms/mesa/server/x11/graphics/display.h (+49/-57)
src/platforms/mesa/server/x11/graphics/display_buffer.cpp (+125/-20)
src/platforms/mesa/server/x11/graphics/display_buffer.h (+32/-9)
src/platforms/mesa/server/x11/graphics/display_configuration.cpp (+11/-6)
src/platforms/mesa/server/x11/graphics/display_configuration.h (+7/-1)
src/platforms/mesa/server/x11/graphics/display_group.cpp (+0/-47)
src/platforms/mesa/server/x11/graphics/display_group.h (+0/-52)
src/platforms/mesa/server/x11/graphics/egl_helper.cpp (+185/-0)
src/platforms/mesa/server/x11/graphics/egl_helper.h (+79/-0)
src/platforms/mesa/server/x11/graphics/gl_context.cpp (+0/-45)
src/platforms/mesa/server/x11/graphics/gl_context.h (+0/-52)
src/platforms/mesa/server/x11/graphics/graphics.cpp (+6/-3)
src/platforms/mesa/server/x11/graphics/guest_platform.cpp (+0/-5)
src/platforms/mesa/server/x11/graphics/guest_platform.h (+0/-1)
src/platforms/mesa/server/x11/graphics/platform.cpp (+7/-8)
src/platforms/mesa/server/x11/graphics/platform.h (+5/-2)
src/platforms/mesa/server/x11/input/input_device.cpp (+18/-13)
src/platforms/mesa/server/x11/input/input_platform.cpp (+45/-6)
src/platforms/mesa/server/x11/input/input_platform.h (+2/-0)
src/protobuf/CMakeLists.txt (+3/-2)
src/protobuf/mir_protobuf.proto (+111/-4)
src/protobuf/mir_protobuf_wire.proto (+1/-0)
src/protobuf/symbols.map (+96/-0)
src/renderer/CMakeLists.txt (+18/-0)
src/renderer/mirrenderer.pc.in (+10/-0)
src/renderers/gl/CMakeLists.txt (+1/-0)
src/renderers/gl/mir-renderer-gl-dev.pc.in (+1/-0)
src/renderers/gl/program_family.cpp (+2/-1)
src/renderers/gl/program_family.h (+1/-1)
src/renderers/gl/renderer.cpp (+143/-90)
src/renderers/gl/renderer.h (+9/-7)
src/renderers/gl/renderer_factory.cpp (+1/-3)
src/renderers/gl/renderer_factory.h (+3/-3)
src/server/CMakeLists.txt (+13/-6)
src/server/compositor/CMakeLists.txt (+2/-2)
src/server/compositor/buffer_acquisition.h (+13/-34)
src/server/compositor/buffer_map.cpp (+23/-23)
src/server/compositor/buffer_map.h (+5/-11)
src/server/compositor/buffer_queue.cpp (+0/-691)
src/server/compositor/buffer_queue.h (+0/-131)
src/server/compositor/buffer_stream_factory.cpp (+18/-30)
src/server/compositor/buffer_stream_factory.h (+5/-7)
src/server/compositor/buffer_stream_surfaces.cpp (+0/-173)
src/server/compositor/buffer_stream_surfaces.h (+0/-86)
src/server/compositor/compositing_screencast.cpp (+79/-66)
src/server/compositor/compositing_screencast.h (+10/-4)
src/server/compositor/default_configuration.cpp (+2/-4)
src/server/compositor/default_display_buffer_compositor.cpp (+15/-7)
src/server/compositor/default_display_buffer_compositor.h (+6/-3)
src/server/compositor/default_display_buffer_compositor_factory.cpp (+3/-3)
src/server/compositor/default_display_buffer_compositor_factory.h (+6/-3)
src/server/compositor/multi_monitor_arbiter.cpp (+13/-1)
src/server/compositor/multi_monitor_arbiter.h (+3/-8)
src/server/compositor/multi_threaded_compositor.h (+1/-1)
src/server/compositor/screencast_display_buffer.cpp (+92/-18)
src/server/compositor/screencast_display_buffer.h (+66/-13)
src/server/compositor/stream.cpp (+52/-34)
src/server/compositor/stream.h (+12/-8)
src/server/compositor/temporary_buffers.cpp (+1/-17)
src/server/compositor/temporary_buffers.h (+0/-3)
src/server/compositor/timeout_frame_dropping_policy_factory.cpp (+5/-5)
src/server/compositor/timeout_frame_dropping_policy_factory.h (+1/-1)
src/server/default_server_configuration.cpp (+9/-3)
src/server/display_server.cpp (+6/-3)
src/server/frontend/CMakeLists.txt (+5/-2)
src/server/frontend/authorizing_display_changer.cpp (+68/-0)
src/server/frontend/authorizing_display_changer.h (+11/-0)
src/server/frontend/buffer_stream_tracker.cpp (+0/-95)
src/server/frontend/buffer_stream_tracker.h (+0/-75)
src/server/frontend/client_buffer_tracker.cpp (+0/-74)
src/server/frontend/client_buffer_tracker.h (+0/-63)
src/server/frontend/default_configuration.cpp (+22/-1)
src/server/frontend/default_ipc_factory.cpp (+5/-5)
src/server/frontend/default_ipc_factory.h (+4/-4)
src/server/frontend/event_sender.cpp (+60/-10)
src/server/frontend/event_sender.h (+7/-1)
src/server/frontend/protobuf_buffer_packer.cpp (+23/-0)
src/server/frontend/protobuf_buffer_packer.h (+1/-0)
src/server/frontend/protobuf_input_converter.cpp (+63/-0)
src/server/frontend/protobuf_input_converter.h (+51/-0)
src/server/frontend/protobuf_message_processor.cpp (+31/-16)
src/server/frontend/protobuf_message_processor.h (+1/-1)
src/server/frontend/screencast_buffer_tracker.cpp (+41/-0)
src/server/frontend/screencast_buffer_tracker.h (+67/-0)
src/server/frontend/session_mediator.cpp (+400/-222)
src/server/frontend/session_mediator.h (+52/-20)
src/server/frontend/session_mediator_observer_multiplexer.cpp (+134/-0)
src/server/frontend/session_mediator_observer_multiplexer.h (+77/-0)
src/server/frontend/shell_wrapper.cpp (+2/-2)
src/server/frontend/shell_wrapper.h (+2/-2)
src/server/frontend/unauthorized_screencast.cpp (+9/-3)
src/server/frontend/unauthorized_screencast.h (+6/-3)
src/server/glib_main_loop.cpp (+21/-5)
src/server/graphics/CMakeLists.txt (+7/-2)
src/server/graphics/default_configuration.cpp (+32/-34)
src/server/graphics/default_display_configuration_policy.cpp (+2/-21)
src/server/graphics/display_configuration_observer_multiplexer.cpp (+73/-0)
src/server/graphics/display_configuration_observer_multiplexer.h (+65/-0)
src/server/graphics/nested/CMakeLists.txt (+5/-0)
src/server/graphics/nested/buffer.cpp (+220/-0)
src/server/graphics/nested/buffer.h (+64/-0)
src/server/graphics/nested/display.cpp (+159/-95)
src/server/graphics/nested/display.h (+20/-16)
src/server/graphics/nested/display_buffer.cpp (+133/-51)
src/server/graphics/nested/display_buffer.h (+31/-14)
src/server/graphics/nested/host_chain.h (+54/-0)
src/server/graphics/nested/host_connection.h (+30/-4)
src/server/graphics/nested/host_stream.h (+50/-0)
src/server/graphics/nested/host_surface.h (+3/-2)
src/server/graphics/nested/host_surface_spec.h (+49/-0)
src/server/graphics/nested/input_platform.cpp (+337/-0)
src/server/graphics/nested/input_platform.h (+75/-0)
src/server/graphics/nested/ipc_operations.cpp (+92/-0)
src/server/graphics/nested/ipc_operations.h (+48/-0)
src/server/graphics/nested/mir_client_host_connection.cpp (+680/-241)
src/server/graphics/nested/mir_client_host_connection.h (+47/-23)
src/server/graphics/nested/native_buffer.h (+74/-0)
src/server/graphics/nested/nested_display_configuration.cpp (+127/-116)
src/server/graphics/nested/nested_display_configuration.h (+9/-4)
src/server/graphics/nested/passthrough_option.h (+35/-0)
src/server/graphics/nested/platform.cpp (+146/-0)
src/server/graphics/nested/platform.h (+66/-0)
src/server/graphics/offscreen/CMakeLists.txt (+0/-12)
src/server/graphics/offscreen/display.cpp (+0/-197)
src/server/graphics/offscreen/display.h (+0/-115)
src/server/graphics/offscreen/display_buffer.cpp (+0/-164)
src/server/graphics/offscreen/display_buffer.h (+0/-89)
src/server/graphics/offscreen/display_configuration.cpp (+0/-84)
src/server/graphics/offscreen/display_configuration.h (+0/-51)
src/server/graphics/software_cursor.cpp (+14/-4)
src/server/graphics/surfaceless_egl_context.cpp (+5/-1)
src/server/input/CMakeLists.txt (+7/-1)
src/server/input/android/CMakeLists.txt (+0/-2)
src/server/input/android/input_sender.cpp (+52/-25)
src/server/input/basic_seat.cpp (+42/-2)
src/server/input/basic_seat.h (+16/-1)
src/server/input/channel.cpp (+45/-30)
src/server/input/channel.h (+14/-25)
src/server/input/channel_factory.cpp (+5/-6)
src/server/input/channel_factory.h (+10/-12)
src/server/input/config_changer.cpp (+291/-0)
src/server/input/config_changer.h (+81/-0)
src/server/input/cursor_controller.cpp (+1/-1)
src/server/input/default-theme.h (+165/-165)
src/server/input/default_configuration.cpp (+83/-51)
src/server/input/default_device.cpp (+102/-47)
src/server/input/default_device.h (+15/-6)
src/server/input/default_event_builder.cpp (+44/-27)
src/server/input/default_event_builder.h (+12/-6)
src/server/input/default_input_device_hub.cpp (+94/-15)
src/server/input/default_input_device_hub.h (+26/-6)
src/server/input/default_input_manager.cpp (+5/-32)
src/server/input/default_input_manager.h (+1/-7)
src/server/input/key_repeat_dispatcher.cpp (+33/-31)
src/server/input/key_repeat_dispatcher.h (+4/-4)
src/server/input/null_input_manager.h (+0/-3)
src/server/input/seat_input_device_tracker.cpp (+161/-67)
src/server/input/seat_input_device_tracker.h (+36/-7)
src/server/input/seat_observer_multiplexer.cpp (+80/-0)
src/server/input/seat_observer_multiplexer.h (+61/-0)
src/server/input/surface_input_dispatcher.cpp (+71/-117)
src/server/input/surface_input_dispatcher.h (+3/-16)
src/server/input/touchspot_controller.cpp (+17/-2)
src/server/input/validator.cpp (+112/-192)
src/server/input/vt_filter.cpp (+1/-1)
src/server/lockable_callback_wrapper.cpp (+4/-4)
src/server/mirserver.pc.in (+2/-2)
src/server/report/CMakeLists.txt (+3/-1)
src/server/report/default_server_configuration.cpp (+6/-18)
src/server/report/logging/CMakeLists.txt (+1/-0)
src/server/report/logging/display_configuration_report.cpp (+117/-44)
src/server/report/logging/display_configuration_report.h (+30/-7)
src/server/report/logging/display_report.cpp (+37/-28)
src/server/report/logging/display_report.h (+5/-7)
src/server/report/logging/logging_report_factory.cpp (+8/-2)
src/server/report/logging/seat_report.cpp (+146/-0)
src/server/report/logging/seat_report.h (+67/-0)
src/server/report/logging/session_mediator_report.cpp (+10/-10)
src/server/report/logging/session_mediator_report.h (+6/-6)
src/server/report/logging/shell_report.cpp (+52/-23)
src/server/report/logging/shell_report.h (+28/-28)
src/server/report/logging_report_factory.h (+2/-1)
src/server/report/lttng/CMakeLists.txt (+9/-0)
src/server/report/lttng/display_report.cpp (+3/-2)
src/server/report/lttng/display_report.h (+1/-1)
src/server/report/lttng/lttng_report_factory.cpp (+6/-1)
src/server/report/lttng/session_mediator_report.cpp (+2/-2)
src/server/report/lttng/session_mediator_report.h (+4/-4)
src/server/report/lttng/session_mediator_report_tp.h (+3/-2)
src/server/report/lttng_report_factory.h (+2/-1)
src/server/report/null/CMakeLists.txt (+1/-0)
src/server/report/null/display_report.cpp (+1/-1)
src/server/report/null/display_report.h (+1/-1)
src/server/report/null/null_report_factory.cpp (+13/-2)
src/server/report/null/seat_report.cpp (+58/-0)
src/server/report/null/seat_report.h (+50/-0)
src/server/report/null/session_mediator_report.cpp (+8/-8)
src/server/report/null/session_mediator_report.h (+6/-6)
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 (+4/-2)
src/server/report/report_factory.h (+4/-2)
src/server/report/reports.cpp (+143/-0)
src/server/report/reports.h (+75/-0)
src/server/scene/CMakeLists.txt (+2/-0)
src/server/scene/application_not_responding_detector_wrapper.cpp (+54/-0)
src/server/scene/application_session.cpp (+128/-42)
src/server/scene/application_session.h (+18/-4)
src/server/scene/basic_surface.cpp (+132/-88)
src/server/scene/basic_surface.h (+21/-19)
src/server/scene/broadcasting_session_event_sink.h (+1/-1)
src/server/scene/default_configuration.cpp (+28/-8)
src/server/scene/default_coordinate_translator.cpp (+5/-0)
src/server/scene/default_coordinate_translator.h (+2/-1)
src/server/scene/default_session_container.h (+1/-1)
src/server/scene/gl_pixel_buffer.cpp (+4/-4)
src/server/scene/gl_pixel_buffer.h (+10/-4)
src/server/scene/global_event_sender.cpp (+25/-5)
src/server/scene/global_event_sender.h (+6/-2)
src/server/scene/legacy_surface_change_notification.cpp (+5/-1)
src/server/scene/legacy_surface_change_notification.h (+2/-1)
src/server/scene/mediating_display_changer.cpp (+331/-48)
src/server/scene/mediating_display_changer.h (+29/-9)
src/server/scene/null_surface_observer.cpp (+2/-1)
src/server/scene/output_properties_cache.cpp (+1/-0)
src/server/scene/output_properties_cache.h (+1/-0)
src/server/scene/prompt_session_manager_impl.cpp (+1/-1)
src/server/scene/rendering_tracker.cpp (+5/-5)
src/server/scene/rendering_tracker.h (+1/-1)
src/server/scene/session_manager.cpp (+8/-5)
src/server/scene/session_manager.h (+4/-1)
src/server/scene/surface_allocator.cpp (+5/-13)
src/server/scene/surface_allocator.h (+1/-1)
src/server/scene/surface_creation_parameters.cpp (+2/-2)
src/server/scene/surface_event_source.cpp (+7/-1)
src/server/scene/surface_stack.cpp (+2/-2)
src/server/scene/timeout_application_not_responding_detector.cpp (+17/-0)
src/server/scene/unsupported_coordinate_translator.cpp (+8/-2)
src/server/scene/unsupported_coordinate_translator.h (+1/-0)
src/server/server.cpp (+127/-91)
src/server/shell/abstract_shell.cpp (+104/-7)
src/server/shell/basic_window_manager.cpp (+3/-3)
src/server/shell/canonical_window_manager.cpp (+128/-73)
src/server/shell/default_configuration.cpp (+3/-2)
src/server/shell/frontend_shell.cpp (+4/-4)
src/server/shell/frontend_shell.h (+2/-2)
src/server/shell/shell_wrapper.cpp (+2/-2)
src/server/shell/surface_specification.cpp (+3/-1)
src/server/shell/system_compositor_window_manager.cpp (+1/-1)
src/server/shell/window_management_info.cpp (+41/-41)
src/server/symbols.map (+100/-50)
src/utils/CMakeLists.txt (+7/-3)
src/utils/in.cpp (+1/-1)
src/utils/out.c (+408/-81)
src/utils/ping.c (+0/-134)
src/utils/run.cpp (+144/-0)
src/utils/screencast.cpp (+96/-59)
src/utils/vanity.c (+900/-0)
tests/CMakeLists.txt (+17/-13)
tests/acceptance-tests/CMakeLists.txt (+34/-8)
tests/acceptance-tests/buffer_stream_arrangement.h (+107/-0)
tests/acceptance-tests/server_configuration_options.cpp (+33/-20)
tests/acceptance-tests/server_configuration_wrapping.cpp (+13/-0)
tests/acceptance-tests/server_signal_handling.cpp (+8/-2)
tests/acceptance-tests/server_stop_callback.cpp (+63/-0)
tests/acceptance-tests/strict_close.cpp (+45/-0)
tests/acceptance-tests/test_application_not_responding_detection.cpp (+81/-2)
tests/acceptance-tests/test_buffer_stream_arrangement.cpp (+236/-207)
tests/acceptance-tests/test_buffer_stream_arrangement1.cpp (+144/-0)
tests/acceptance-tests/test_client_cookie.cpp (+29/-30)
tests/acceptance-tests/test_client_cursor_api.cpp (+182/-59)
tests/acceptance-tests/test_client_extensions.cpp (+63/-0)
tests/acceptance-tests/test_client_focus_notification.cpp (+31/-29)
tests/acceptance-tests/test_client_header_version.cpp (+48/-34)
tests/acceptance-tests/test_client_input.cpp (+304/-127)
tests/acceptance-tests/test_client_library.cpp (+557/-368)
tests/acceptance-tests/test_client_library_callbacks.cpp (+53/-38)
tests/acceptance-tests/test_client_library_errors.cpp (+117/-173)
tests/acceptance-tests/test_client_library_old.cpp (+2/-2)
tests/acceptance-tests/test_client_logging.cpp (+57/-13)
tests/acceptance-tests/test_client_platform_operation.cpp (+11/-1)
tests/acceptance-tests/test_client_scaling.cpp (+20/-20)
tests/acceptance-tests/test_client_screencast.cpp (+46/-29)
tests/acceptance-tests/test_client_surface_events.cpp (+299/-84)
tests/acceptance-tests/test_client_surface_swap_buffers.cpp (+74/-2)
tests/acceptance-tests/test_client_surface_visibility.cpp (+124/-80)
tests/acceptance-tests/test_client_surfaces.cpp (+107/-165)
tests/acceptance-tests/test_client_with_custom_display_config_deadlock.cpp (+4/-4)
tests/acceptance-tests/test_confined_pointer.cpp (+311/-0)
tests/acceptance-tests/test_custom_input_dispatcher.cpp (+5/-8)
tests/acceptance-tests/test_custom_window_management.cpp (+332/-47)
tests/acceptance-tests/test_debug_api.cpp (+98/-26)
tests/acceptance-tests/test_display_configuration.cpp (+33/-12)
tests/acceptance-tests/test_input_device_hub.cpp (+6/-6)
tests/acceptance-tests/test_latency.cpp (+229/-94)
tests/acceptance-tests/test_mirblob.cpp (+31/-1)
tests/acceptance-tests/test_nested_input.cpp (+179/-33)
tests/acceptance-tests/test_nested_mir.cpp (+490/-270)
tests/acceptance-tests/test_new_display_configuration.cpp (+1337/-36)
tests/acceptance-tests/test_persistent_surface_store.cpp (+87/-0)
tests/acceptance-tests/test_presentation_chain.cpp (+410/-147)
tests/acceptance-tests/test_prompt_session_client_api.cpp (+110/-26)
tests/acceptance-tests/test_render_override.cpp (+3/-3)
tests/acceptance-tests/test_render_surface.cpp (+329/-0)
tests/acceptance-tests/test_server_disconnect.cpp (+14/-14)
tests/acceptance-tests/test_server_shutdown.cpp (+21/-9)
tests/acceptance-tests/test_server_startup.cpp (+1/-1)
tests/acceptance-tests/test_server_without_active_outputs.cpp (+6/-6)
tests/acceptance-tests/test_session_mediator_report.cpp (+76/-33)
tests/acceptance-tests/test_shell_control_of_surface_configuration.cpp (+38/-13)
tests/acceptance-tests/test_surface_modifications.cpp (+108/-98)
tests/acceptance-tests/test_surface_morphing.cpp (+111/-111)
tests/acceptance-tests/test_surface_placement.cpp (+78/-77)
tests/acceptance-tests/test_surface_raise.cpp (+53/-49)
tests/acceptance-tests/test_surface_specification.cpp (+172/-172)
tests/acceptance-tests/test_surfaces_with_output_id.cpp (+37/-30)
tests/acceptance-tests/test_system_compositor_window_manager.cpp (+109/-53)
tests/acceptance-tests/test_unresponsive_client.cpp (+8/-3)
tests/acceptance-tests/throwback/CMakeLists.txt (+0/-15)
tests/client-language/c99.c (+8/-0)
tests/include/mir/test/doubles/fake_alarm_factory.h (+1/-1)
tests/include/mir/test/doubles/fake_renderable.h (+5/-0)
tests/include/mir/test/doubles/mock_android_native_buffer.h (+7/-3)
tests/include/mir/test/doubles/mock_buffer.h (+3/-1)
tests/include/mir/test/doubles/mock_buffer_bundle.h (+0/-66)
tests/include/mir/test/doubles/mock_buffer_ipc_message.h (+1/-0)
tests/include/mir/test/doubles/mock_buffer_registrar.h (+3/-3)
tests/include/mir/test/doubles/mock_buffer_stream.h (+8/-8)
tests/include/mir/test/doubles/mock_client_buffer.h (+2/-3)
tests/include/mir/test/doubles/mock_client_buffer_factory.h (+2/-0)
tests/include/mir/test/doubles/mock_client_context.h (+6/-0)
tests/include/mir/test/doubles/mock_display.h (+3/-2)
tests/include/mir/test/doubles/mock_display_buffer.h (+2/-1)
tests/include/mir/test/doubles/mock_display_changer.h (+4/-0)
tests/include/mir/test/doubles/mock_display_report.h (+2/-2)
tests/include/mir/test/doubles/mock_drm.h (+18/-1)
tests/include/mir/test/doubles/mock_egl_native_surface.h (+4/-3)
tests/include/mir/test/doubles/mock_event_sink.h (+8/-2)
tests/include/mir/test/doubles/mock_fence.h (+3/-0)
tests/include/mir/test/doubles/mock_frame_dropping_policy_factory.h (+11/-5)
tests/include/mir/test/doubles/mock_frontend_surface.h (+2/-2)
tests/include/mir/test/doubles/mock_gl.h (+1/-0)
tests/include/mir/test/doubles/mock_gl_display_buffer.h (+1/-0)
tests/include/mir/test/doubles/mock_hwc_device_wrapper.h (+1/-1)
tests/include/mir/test/doubles/mock_input_manager.h (+0/-1)
tests/include/mir/test/doubles/mock_input_seat.h (+8/-0)
tests/include/mir/test/doubles/mock_input_sink.h (+2/-0)
tests/include/mir/test/doubles/mock_interpreter_resource_cache.h (+1/-1)
tests/include/mir/test/doubles/mock_key_mapper.h (+51/-0)
tests/include/mir/test/doubles/mock_libinput.h (+1/-1)
tests/include/mir/test/doubles/mock_main_loop.h (+16/-3)
tests/include/mir/test/doubles/mock_mesa_auth_extensions.h (+39/-0)
tests/include/mir/test/doubles/mock_mir_buffer.h (+64/-0)
tests/include/mir/test/doubles/mock_mir_buffer_stream.h (+16/-8)
tests/include/mir/test/doubles/mock_nested_context.h (+3/-0)
tests/include/mir/test/doubles/mock_renderable.h (+1/-0)
tests/include/mir/test/doubles/mock_renderer.h (+3/-3)
tests/include/mir/test/doubles/mock_scene_session.h (+13/-3)
tests/include/mir/test/doubles/mock_screencast.h (+5/-2)
tests/include/mir/test/doubles/mock_server_status_listener.h (+2/-0)
tests/include/mir/test/doubles/mock_shell.h (+2/-2)
tests/include/mir/test/doubles/mock_surface.h (+6/-4)
tests/include/mir/test/doubles/mock_timer.h (+1/-1)
tests/include/mir/test/doubles/mock_x11.h (+9/-0)
tests/include/mir/test/doubles/null_client_buffer.h (+3/-4)
tests/include/mir/test/doubles/null_display_changer.h (+18/-0)
tests/include/mir/test/doubles/null_event_sink.h (+6/-1)
tests/include/mir/test/doubles/null_prompt_session_manager.h (+13/-13)
tests/include/mir/test/doubles/null_screencast.h (+4/-1)
tests/include/mir/test/doubles/stub_android_native_buffer.h (+7/-3)
tests/include/mir/test/doubles/stub_buffer.h (+18/-8)
tests/include/mir/test/doubles/stub_buffer_allocator.h (+17/-1)
tests/include/mir/test/doubles/stub_buffer_stream.h (+17/-15)
tests/include/mir/test/doubles/stub_buffer_stream_factory.h (+31/-2)
tests/include/mir/test/doubles/stub_client_buffer.h (+26/-15)
tests/include/mir/test/doubles/stub_client_buffer_factory.h (+8/-1)
tests/include/mir/test/doubles/stub_connection_configuration.h (+104/-0)
tests/include/mir/test/doubles/stub_display_builder.h (+6/-3)
tests/include/mir/test/doubles/stub_display_server.h (+23/-3)
tests/include/mir/test/doubles/stub_driver_interpreter.h (+7/-2)
tests/include/mir/test/doubles/stub_frame_dropping_policy_factory.h (+1/-1)
tests/include/mir/test/doubles/stub_gbm_native_buffer.h (+3/-2)
tests/include/mir/test/doubles/stub_gl_display_buffer.h (+1/-0)
tests/include/mir/test/doubles/stub_host_connection.h (+166/-25)
tests/include/mir/test/doubles/stub_input_scene.h (+5/-5)
tests/include/mir/test/doubles/stub_renderable.h (+31/-0)
tests/include/mir/test/doubles/stub_renderer.h (+5/-13)
tests/include/mir/test/doubles/stub_scene_element.h (+1/-1)
tests/include/mir/test/doubles/stub_scene_surface.h (+13/-9)
tests/include/mir/test/doubles/stub_session.h (+14/-0)
tests/include/mir/test/doubles/stub_session_container.h (+63/-0)
tests/include/mir/test/doubles/stub_surface_factory.h (+1/-1)
tests/include/mir/test/doubles/triggered_main_loop.h (+4/-0)
tests/include/mir/test/gmock_fixes.h (+4/-0)
tests/include/mir/test/input_config_matchers.h (+148/-0)
tests/include/mir/test/input_devices_matcher.h (+15/-21)
tests/include/mir/test/stub_server_tool.h (+6/-11)
tests/include/mir/test/test_protobuf_client.h (+7/-7)
tests/include/mir_test_framework/basic_client_server_fixture.h (+0/-2)
tests/include/mir_test_framework/client_platform_factory.h (+2/-2)
tests/include/mir_test_framework/fake_input_server_configuration.h (+0/-2)
tests/include/mir_test_framework/stub_client_platform_factory.h (+34/-6)
tests/include/mir_test_framework/stub_platform_native_buffer.h (+37/-0)
tests/include/mir_test_framework/stubbed_server_configuration.h (+1/-1)
tests/include/mir_test_framework/testing_server_configuration.h (+7/-0)
tests/include/mir_test_framework/using_client_platform.h (+0/-97)
tests/integration-tests/CMakeLists.txt (+4/-5)
tests/integration-tests/client/test_mirsurface.cpp (+34/-30)
tests/integration-tests/compositor/CMakeLists.txt (+0/-1)
tests/integration-tests/compositor/test_buffer_stream.cpp (+0/-410)
tests/integration-tests/compositor/test_swapping_swappers.cpp (+20/-48)
tests/integration-tests/graphics/mesa/CMakeLists.txt (+2/-4)
tests/integration-tests/graphics/mesa/test_buffer_integration.cpp (+2/-0)
tests/integration-tests/input/test_cursor_listener.cpp (+4/-4)
tests/integration-tests/input/test_single_seat_setup.cpp (+47/-35)
tests/integration-tests/session_management.cpp (+33/-16)
tests/integration-tests/shell/test_session_lifecycle_event.cpp (+11/-1)
tests/integration-tests/surface_composition.cpp (+0/-126)
tests/integration-tests/test_buffer_scheduling.cpp (+200/-357)
tests/integration-tests/test_client_screencast.cpp (+93/-23)
tests/integration-tests/test_display_info.cpp (+4/-46)
tests/integration-tests/test_display_server_main_loop_events.cpp (+5/-5)
tests/integration-tests/test_error_reporting.cpp (+12/-14)
tests/integration-tests/test_focus_selection.cpp (+3/-3)
tests/integration-tests/test_large_messages.cpp (+0/-3)
tests/integration-tests/test_protobuf.cpp (+9/-11)
tests/integration-tests/test_protobuf.proto (+8/-1)
tests/integration-tests/test_server_client_types.cpp (+4/-0)
tests/integration-tests/test_server_shutdown.cpp (+5/-7)
tests/integration-tests/test_session.cpp (+15/-30)
tests/integration-tests/test_stale_frames.cpp (+148/-34)
tests/integration-tests/test_submit_buffer.cpp (+153/-201)
tests/integration-tests/test_surface_first_frame_sync.cpp (+12/-12)
tests/integration-tests/test_surface_stack_with_compositor.cpp (+47/-32)
tests/integration-tests/test_surfaceloop.cpp (+10/-100)
tests/integration-tests/test_swapinterval.cpp (+27/-23)
tests/integration-tests/test_test_framework.cpp (+20/-16)
tests/integration-tests/test_touchspot_visualization.cpp (+1/-1)
tests/mir_test/CMakeLists.txt (+4/-0)
tests/mir_test/display_config_matchers.cpp (+30/-63)
tests/mir_test/test_dispatchable.cpp (+4/-3)
tests/mir_test/validity_matchers.cpp (+3/-3)
tests/mir_test_doubles/CMakeLists.txt (+7/-3)
tests/mir_test_doubles/fake_alarm_factory.cpp (+1/-1)
tests/mir_test_doubles/fake_display.cpp (+66/-4)
tests/mir_test_doubles/mock_drm.cpp (+60/-1)
tests/mir_test_doubles/mock_egl.cpp (+20/-6)
tests/mir_test_doubles/mock_event_sink_factory.cpp (+35/-4)
tests/mir_test_doubles/mock_frame_dropping_policy_factory.cpp (+3/-3)
tests/mir_test_doubles/mock_gl.cpp (+8/-1)
tests/mir_test_doubles/mock_libinput.cpp (+3/-1)
tests/mir_test_doubles/mock_timer.cpp (+12/-11)
tests/mir_test_doubles/mock_x11.cpp (+61/-2)
tests/mir_test_doubles/stub_buffer.cpp (+0/-37)
tests/mir_test_doubles/stub_display_configuration.cpp (+72/-50)
tests/mir_test_doubles/test_protobuf_client.cpp (+14/-14)
tests/mir_test_doubles/triggered_main_loop.cpp (+19/-2)
tests/mir_test_framework/CMakeLists.txt (+18/-6)
tests/mir_test_framework/any_surface.cpp (+24/-7)
tests/mir_test_framework/async_server_runner.cpp (+1/-1)
tests/mir_test_framework/connected_client_with_a_surface.cpp (+10/-8)
tests/mir_test_framework/executable_path.cpp (+15/-1)
tests/mir_test_framework/fake_input_device_impl.cpp (+33/-28)
tests/mir_test_framework/fake_input_device_impl.h (+12/-9)
tests/mir_test_framework/fake_input_server_configuration.cpp (+20/-2)
tests/mir_test_framework/headless_display_buffer_compositor_factory.cpp (+113/-0)
tests/mir_test_framework/headless_nested_server_runner.cpp (+20/-1)
tests/mir_test_framework/headless_test.cpp (+5/-0)
tests/mir_test_framework/input_testing_server_options.cpp (+5/-5)
tests/mir_test_framework/interprocess_client_server_test.cpp (+11/-0)
tests/mir_test_framework/observant_shell.cpp (+161/-0)
tests/mir_test_framework/placement_applying_shell.cpp (+1/-0)
tests/mir_test_framework/platform_graphics_dummy.cpp (+8/-4)
tests/mir_test_framework/platform_graphics_throw.cpp (+74/-5)
tests/mir_test_framework/process.cpp (+5/-0)
tests/mir_test_framework/stub_client_platform_factory.cpp (+161/-12)
tests/mir_test_framework/stub_client_platform_module.cpp (+27/-3)
tests/mir_test_framework/stub_client_platform_options.cpp (+45/-0)
tests/mir_test_framework/stub_input.cpp (+9/-0)
tests/mir_test_framework/stub_session.cpp (+35/-3)
tests/mir_test_framework/stub_surface.cpp (+25/-12)
tests/mir_test_framework/stubbed_graphics_platform.cpp (+68/-97)
tests/mir_test_framework/stubbed_server_configuration.cpp (+5/-5)
tests/mir_test_framework/symbols-client.map (+5/-0)
tests/mir_test_framework/testing_server_options.cpp (+12/-1)
tests/mir_test_framework/using_stub_client_platform.cpp (+0/-56)
tests/mir_test_framework/visible_surface.cpp (+21/-20)
tests/mirtest.pc.in (+2/-2)
tests/performance-tests/CMakeLists.txt (+47/-20)
tests/performance-tests/performance_tests.sh (+44/-0)
tests/performance-tests/system_performance_test.cpp (+191/-0)
tests/performance-tests/system_performance_test.h (+46/-0)
tests/performance-tests/test_client_startup.cpp (+115/-0)
tests/performance-tests/test_compositor.cpp (+69/-0)
tests/privileged-tests/test_input_events.cpp (+26/-25)
tests/test-clients/CMakeLists.txt (+2/-0)
tests/test-clients/impolite-shutdown/CMakeLists.txt (+15/-0)
tests/test-clients/impolite-shutdown/scroll.cpp (+198/-0)
tests/test-clients/mir-stress/src/client.cpp (+16/-15)
tests/test-clients/mir-stress/src/client.h (+2/-6)
tests/unit-tests/CMakeLists.txt (+21/-29)
tests/unit-tests/client/CMakeLists.txt (+5/-9)
tests/unit-tests/client/input/test_android_input_receiver.cpp (+57/-148)
tests/unit-tests/client/input/test_xkb_mapper.cpp (+411/-39)
tests/unit-tests/client/test_aging_buffer.cpp (+6/-16)
tests/unit-tests/client/test_buffer_vault.cpp (+355/-190)
tests/unit-tests/client/test_client.cpp (+6/-6)
tests/unit-tests/client/test_client_buffer_depository.cpp (+0/-451)
tests/unit-tests/client/test_client_buffer_stream.cpp (+251/-130)
tests/unit-tests/client/test_client_display_conf.cpp (+2/-1)
tests/unit-tests/client/test_client_mir_error.cpp (+42/-0)
tests/unit-tests/client/test_client_mir_surface.cpp (+215/-46)
tests/unit-tests/client/test_client_platform.cpp (+88/-36)
tests/unit-tests/client/test_connection_resource_map.cpp (+51/-29)
tests/unit-tests/client/test_error_buffer.cpp (+77/-0)
tests/unit-tests/client/test_event_distributor.cpp (+15/-19)
tests/unit-tests/client/test_frame_clock.cpp (+420/-0)
tests/unit-tests/client/test_mir_buffer.cpp (+39/-57)
tests/unit-tests/client/test_mir_connection.cpp (+159/-189)
tests/unit-tests/client/test_mir_prompt_session.cpp (+4/-4)
tests/unit-tests/client/test_mir_render_surface.cpp (+511/-0)
tests/unit-tests/client/test_mir_screencast.cpp (+57/-67)
tests/unit-tests/client/test_no_tls_future.cpp (+429/-0)
tests/unit-tests/client/test_presentation_chain.cpp (+23/-256)
tests/unit-tests/client/test_probing_client_platform_factory.cpp (+200/-71)
tests/unit-tests/client/test_protobuf_rpc_channel.cpp (+186/-39)
tests/unit-tests/client/test_screencast_stream.cpp (+63/-7)
tests/unit-tests/client/test_stream_transport.cpp (+29/-22)
tests/unit-tests/compositor/CMakeLists.txt (+0/-2)
tests/unit-tests/compositor/test_buffer_queue.cpp (+0/-1998)
tests/unit-tests/compositor/test_buffer_stream.cpp (+0/-296)
tests/unit-tests/compositor/test_client_buffers.cpp (+38/-97)
tests/unit-tests/compositor/test_compositing_screencast.cpp (+152/-23)
tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp (+19/-12)
tests/unit-tests/compositor/test_dropping_schedule.cpp (+1/-1)
tests/unit-tests/compositor/test_multi_monitor_arbiter.cpp (+31/-1)
tests/unit-tests/compositor/test_multi_threaded_compositor.cpp (+3/-3)
tests/unit-tests/compositor/test_screencast_display_buffer.cpp (+86/-40)
tests/unit-tests/compositor/test_stream.cpp (+57/-52)
tests/unit-tests/compositor/test_temporary_buffers.cpp (+2/-12)
tests/unit-tests/compositor/test_timeout_frame_dropping_policy.cpp (+8/-8)
tests/unit-tests/dispatch/test_multiplexing_dispatchable.cpp (+3/-3)
tests/unit-tests/dispatch/test_threaded_dispatcher.cpp (+39/-17)
tests/unit-tests/frontend/CMakeLists.txt (+0/-1)
tests/unit-tests/frontend/stress_protobuf_communicator.cpp (+16/-16)
tests/unit-tests/frontend/test_authorizing_display_changer.cpp (+40/-0)
tests/unit-tests/frontend/test_client_buffer_tracker.cpp (+0/-258)
tests/unit-tests/frontend/test_event_sender.cpp (+150/-57)
tests/unit-tests/frontend/test_protobuf_buffer_packer.cpp (+3/-3)
tests/unit-tests/frontend/test_protobuf_message_processor.cpp (+2/-47)
tests/unit-tests/frontend/test_protobuf_surface_apis.cpp (+1/-1)
tests/unit-tests/frontend/test_published_socket_connector.cpp (+14/-18)
tests/unit-tests/frontend/test_session_mediator.cpp (+400/-556)
tests/unit-tests/graphics/CMakeLists.txt (+4/-14)
tests/unit-tests/graphics/mesa/common/CMakeLists.txt (+0/-17)
tests/unit-tests/graphics/offscreen/CMakeLists.txt (+0/-6)
tests/unit-tests/graphics/offscreen/test_offscreen_display.cpp (+0/-174)
tests/unit-tests/graphics/test_anonymous_shm_file.cpp (+5/-5)
tests/unit-tests/graphics/test_default_display_configuration_policy.cpp (+7/-69)
tests/unit-tests/graphics/test_display_configuration.cpp (+5/-1)
tests/unit-tests/graphics/test_gamma_curves.cpp (+96/-0)
tests/unit-tests/graphics/test_overlapping_output_grouping.cpp (+7/-3)
tests/unit-tests/graphics/test_platform_prober.cpp (+18/-8)
tests/unit-tests/graphics/test_shm_buffer.cpp (+33/-37)
tests/unit-tests/graphics/test_software_cursor.cpp (+2/-0)
tests/unit-tests/input/CMakeLists.txt (+3/-0)
tests/unit-tests/input/android/CMakeLists.txt (+0/-1)
tests/unit-tests/input/android/test_android_communication_package.cpp (+4/-5)
tests/unit-tests/input/android/test_android_input_lexicon.cpp (+3/-3)
tests/unit-tests/input/android/test_android_input_sender.cpp (+81/-34)
tests/unit-tests/input/android/test_input_consumer.cpp (+123/-15)
tests/unit-tests/input/evdev/test_libinput_device.cpp (+69/-42)
tests/unit-tests/input/test_config_changer.cpp (+266/-0)
tests/unit-tests/input/test_default_device.cpp (+69/-22)
tests/unit-tests/input/test_default_input_device_hub.cpp (+47/-1)
tests/unit-tests/input/test_event_builders.cpp (+107/-2)
tests/unit-tests/input/test_input_channel_factory.cpp (+6/-6)
tests/unit-tests/input/test_input_event.cpp (+62/-169)
tests/unit-tests/input/test_input_platform_probing.cpp (+1/-1)
tests/unit-tests/input/test_key_repeat_dispatcher.cpp (+12/-10)
tests/unit-tests/input/test_nested_input_platform.cpp (+192/-0)
tests/unit-tests/input/test_seat_input_device_tracker.cpp (+115/-91)
tests/unit-tests/input/test_surface_input_dispatcher.cpp (+4/-145)
tests/unit-tests/input/test_touchspot_controller.cpp (+2/-0)
tests/unit-tests/input/test_validator.cpp (+37/-37)
tests/unit-tests/input/test_x11_platform.cpp (+143/-8)
tests/unit-tests/library_example.h (+10/-0)
tests/unit-tests/logging/test_display_report.cpp (+61/-20)
tests/unit-tests/platforms/CMakeLists.txt (+15/-0)
tests/unit-tests/platforms/android/CMakeLists.txt (+46/-0)
tests/unit-tests/platforms/android/client/CMakeLists.txt (+2/-2)
tests/unit-tests/platforms/android/client/test_android_client_platform.cpp (+225/-0)
tests/unit-tests/platforms/android/client/test_android_native_window.cpp (+55/-39)
tests/unit-tests/platforms/android/client/test_buffer.cpp (+15/-14)
tests/unit-tests/platforms/android/client/test_egl_native_surface_interpreter.cpp (+22/-21)
tests/unit-tests/platforms/android/client/test_gralloc_registrar.cpp (+8/-8)
tests/unit-tests/platforms/android/server/CMakeLists.txt (+3/-3)
tests/unit-tests/platforms/android/server/hwc_struct_helpers.cpp (+3/-1)
tests/unit-tests/platforms/android/server/hwc_struct_helpers.h (+3/-0)
tests/unit-tests/platforms/android/server/test_anw_logger.cpp (+107/-0)
tests/unit-tests/platforms/android/server/test_buffer.cpp (+4/-4)
tests/unit-tests/platforms/android/server/test_device_detection.cpp (+57/-10)
tests/unit-tests/platforms/android/server/test_display.cpp (+100/-33)
tests/unit-tests/platforms/android/server/test_display_buffer.cpp (+32/-20)
tests/unit-tests/platforms/android/server/test_display_generic.cpp (+14/-8)
tests/unit-tests/platforms/android/server/test_display_group.cpp (+4/-3)
tests/unit-tests/platforms/android/server/test_display_hotplug.cpp (+4/-2)
tests/unit-tests/platforms/android/server/test_fb_device.cpp (+1/-1)
tests/unit-tests/platforms/android/server/test_gralloc.cpp (+20/-78)
tests/unit-tests/platforms/android/server/test_graphic_buffer_allocator.cpp (+82/-48)
tests/unit-tests/platforms/android/server/test_graphics_platform.cpp (+6/-4)
tests/unit-tests/platforms/android/server/test_hwc_configuration.cpp (+18/-11)
tests/unit-tests/platforms/android/server/test_hwc_device.cpp (+27/-11)
tests/unit-tests/platforms/android/server/test_hwc_fallback_gl_renderer.cpp (+2/-2)
tests/unit-tests/platforms/android/server/test_hwc_fb_device.cpp (+4/-4)
tests/unit-tests/platforms/android/server/test_hwc_layerlist.cpp (+19/-14)
tests/unit-tests/platforms/android/server/test_hwc_layers.cpp (+4/-2)
tests/unit-tests/platforms/android/server/test_hwc_logger.cpp (+20/-16)
tests/unit-tests/platforms/android/server/test_hwc_wrapper.cpp (+17/-15)
tests/unit-tests/platforms/android/server/test_interpreter_buffer_cache.cpp (+5/-5)
tests/unit-tests/platforms/android/server/test_native_buffer.cpp (+19/-0)
tests/unit-tests/platforms/android/server/test_output_builder.cpp (+56/-2)
tests/unit-tests/platforms/android/server/test_platform.cpp (+42/-34)
tests/unit-tests/platforms/android/server/test_resource_factory.cpp (+17/-1)
tests/unit-tests/platforms/android/server/test_server_interpreter.cpp (+7/-3)
tests/unit-tests/platforms/android/server/test_sync_fence.cpp (+23/-0)
tests/unit-tests/platforms/eglstream-kms/CMakeLists.txt (+31/-0)
tests/unit-tests/platforms/eglstream-kms/server/CMakeLists.txt (+5/-0)
tests/unit-tests/platforms/eglstream-kms/server/test_buffer_allocator.cpp (+69/-0)
tests/unit-tests/platforms/mesa/CMakeLists.txt (+4/-3)
tests/unit-tests/platforms/mesa/client/CMakeLists.txt (+2/-1)
tests/unit-tests/platforms/mesa/client/test_client_buffer.cpp (+70/-21)
tests/unit-tests/platforms/mesa/client/test_client_platform.cpp (+196/-7)
tests/unit-tests/platforms/mesa/client/test_native_surface.cpp (+71/-28)
tests/unit-tests/platforms/mesa/kms-utils/CMakeLists.txt (+6/-0)
tests/unit-tests/platforms/mesa/kms-utils/test_connector_utils.cpp (+216/-0)
tests/unit-tests/platforms/mesa/kms-utils/test_drm_mode_resources.cpp (+207/-0)
tests/unit-tests/platforms/mesa/kms/CMakeLists.txt (+4/-1)
tests/unit-tests/platforms/mesa/kms/mock_kms_output.h (+3/-0)
tests/unit-tests/platforms/mesa/kms/test_buffer_allocator.cpp (+31/-70)
tests/unit-tests/platforms/mesa/kms/test_bypass.cpp (+15/-0)
tests/unit-tests/platforms/mesa/kms/test_cursor.cpp (+40/-5)
tests/unit-tests/platforms/mesa/kms/test_display.cpp (+74/-15)
tests/unit-tests/platforms/mesa/kms/test_display_buffer.cpp (+17/-17)
tests/unit-tests/platforms/mesa/kms/test_display_configuration.cpp (+195/-56)
tests/unit-tests/platforms/mesa/kms/test_display_generic.cpp (+0/-1)
tests/unit-tests/platforms/mesa/kms/test_drm_helper.cpp (+1/-1)
tests/unit-tests/platforms/mesa/kms/test_gbm_buffer.cpp (+10/-5)
tests/unit-tests/platforms/mesa/kms/test_guest_platform.cpp (+25/-28)
tests/unit-tests/platforms/mesa/kms/test_ipc_operations.cpp (+11/-6)
tests/unit-tests/platforms/mesa/kms/test_kms_page_flipper.cpp (+22/-13)
tests/unit-tests/platforms/mesa/kms/test_nested_authentication.cpp (+42/-31)
tests/unit-tests/platforms/mesa/kms/test_platform.cpp (+47/-8)
tests/unit-tests/platforms/mesa/kms/test_real_kms_output.cpp (+140/-11)
tests/unit-tests/platforms/mesa/kms/test_software_buffer.cpp (+76/-0)
tests/unit-tests/platforms/mesa/x11/CMakeLists.txt (+1/-0)
tests/unit-tests/platforms/mesa/x11/test_display.cpp (+147/-12)
tests/unit-tests/platforms/mesa/x11/test_display_generic.cpp (+3/-3)
tests/unit-tests/platforms/mesa/x11/test_graphics_platform.cpp (+3/-2)
tests/unit-tests/platforms/mesa/x11/test_platform.cpp (+3/-1)
tests/unit-tests/platforms/nested/CMakeLists.txt (+25/-4)
tests/unit-tests/platforms/nested/mir_display_configuration_builder.cpp (+93/-190)
tests/unit-tests/platforms/nested/mir_display_configuration_builder.h (+2/-2)
tests/unit-tests/platforms/nested/test_buffer.cpp (+271/-0)
tests/unit-tests/platforms/nested/test_ipc_operations.cpp (+197/-0)
tests/unit-tests/platforms/nested/test_nested_display.cpp (+136/-4)
tests/unit-tests/platforms/nested/test_nested_display_buffer.cpp (+483/-0)
tests/unit-tests/platforms/nested/test_nested_display_configuration.cpp (+50/-27)
tests/unit-tests/platforms/test_display.h (+15/-2)
tests/unit-tests/scene/test_abstract_shell.cpp (+112/-34)
tests/unit-tests/scene/test_application_session.cpp (+221/-131)
tests/unit-tests/scene/test_basic_surface.cpp (+99/-96)
tests/unit-tests/scene/test_gl_pixel_buffer.cpp (+6/-5)
tests/unit-tests/scene/test_global_event_sender.cpp (+1/-1)
tests/unit-tests/scene/test_mediating_display_changer.cpp (+667/-75)
tests/unit-tests/scene/test_prompt_session_manager.cpp (+1/-2)
tests/unit-tests/scene/test_rendering_tracker.cpp (+6/-6)
tests/unit-tests/scene/test_session_manager.cpp (+17/-6)
tests/unit-tests/scene/test_surface.cpp (+11/-15)
tests/unit-tests/scene/test_surface_impl.cpp (+84/-73)
tests/unit-tests/scene/test_surface_stack.cpp (+139/-149)
tests/unit-tests/scene/test_threaded_snapshot_strategy.cpp (+7/-7)
tests/unit-tests/test_edid.cpp (+73/-0)
tests/unit-tests/test_fatal.cpp (+9/-5)
tests/unit-tests/test_flags.cpp (+1/-1)
tests/unit-tests/test_glib_main_loop.cpp (+5/-5)
tests/unit-tests/test_lockable_callback.cpp (+5/-5)
tests/unit-tests/test_mir_cookie.cpp (+2/-2)
tests/unit-tests/test_observer_multiplexer.cpp (+608/-0)
tests/unit-tests/test_posix_rw_mutex.cpp (+311/-0)
tests/unit-tests/test_posix_timestamp.cpp (+118/-0)
tests/unit-tests/test_shared_library_prober.cpp (+2/-2)
tests/unit-tests/test_thread_name.cpp (+7/-7)
tests/unit-tests/test_thread_safe_list.cpp (+8/-8)
tests/unit-tests/test_udev_wrapper.cpp (+5/-4)
tools/abigail_check.sh (+290/-0)
tools/abigail_suppressions_client (+7/-0)
tools/abigail_suppressions_generic (+13/-0)
tools/process_doxygen_xml.py (+7/-6)
tools/setup-partial-armhf-chroot.sh (+16/-6)
tools/update_package_abis.sh (+1/-0)
tools/valgrind_suppressions_glibc_2.23 (+60/-48)
tools/valgrind_suppressions_libhybris (+10/-0)
To merge this branch: bzr merge lp:~mir-team/mir/xenial-0.26
Reviewer Review Type Date Requested Status
Alan Griffiths Approve
Review via email: mp+325070@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file '.bzrignore'
2--- .bzrignore 1970-01-01 00:00:00 +0000
3+++ .bzrignore 2017-06-05 10:46:31 +0000
4@@ -0,0 +1,5 @@
5+.idea
6+.project
7+include/server/mir/version.h
8+include/client/mir_toolkit/version.h
9+build-*
10
11=== modified file '3rd_party/android-deps/android/input.h'
12--- 3rd_party/android-deps/android/input.h 2013-09-20 11:55:05 +0000
13+++ 3rd_party/android-deps/android/input.h 2017-06-05 10:46:31 +0000
14@@ -141,7 +141,10 @@
15 AINPUT_EVENT_TYPE_KEY = 1,
16
17 /* Indicates that the input event is a motion event. */
18- AINPUT_EVENT_TYPE_MOTION = 2
19+ AINPUT_EVENT_TYPE_MOTION = 2,
20+
21+ /* Indicates that the event contains a raw buffer. */
22+ AINPUT_EVENT_TYPE_BUFFER = 3
23 };
24
25 /*
26
27=== removed file '3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h'
28--- 3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h 2012-11-13 11:17:46 +0000
29+++ 3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h 1970-01-01 00:00:00 +0000
30@@ -1,36 +0,0 @@
31-// Copyright (C) 2010 The Android Open Source Project
32-//
33-// Licensed under the Apache License, Version 2.0 (the "License");
34-// you may not use this file except in compliance with the License.
35-// You may obtain a copy of the License at
36-//
37-// http://www.apache.org/licenses/LICENSE-2.0
38-//
39-// Unless required by applicable law or agreed to in writing, software
40-// distributed under the License is distributed on an "AS IS" BASIS,
41-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
42-// See the License for the specific language governing permissions and
43-// limitations under the License.
44-//
45-
46-// Generic key layout file for full alphabetic US English PC style
47-// external keyboards. This file is intentionally very generic and is
48-// intended to support a broad rang of keyboards. Do not edit the
49-// generic key layout to support a specific keyboard; instead, create
50-// a new key layout file with the required keyboard configuration.
51-// Taken from android source tree Generic.kl and Generic.kcm
52-
53-#ifndef GENERIC_KEY_MAP_H_
54-#define GENERIC_KEY_MAP_H_
55-
56-namespace android
57-{
58-struct GenericKeyMap
59-{
60- static const char* key_layout_contents();
61-
62- static const char* keymap_contents();
63-};
64-}
65-
66-#endif // GENERIC_KEY_MAP_H_
67
68=== modified file '3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h'
69--- 3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h 2016-03-16 06:59:01 +0000
70+++ 3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h 2017-06-05 10:46:31 +0000
71@@ -571,6 +571,13 @@
72 Vector<PointerCoords> mSamplePointerCoords;
73 };
74
75+struct RawBufferEvent : public InputEvent {
76+
77+ virtual int32_t getType() const { return AINPUT_EVENT_TYPE_BUFFER; }
78+ virtual ~RawBufferEvent() { }
79+ std::string buffer;
80+};
81+
82 /*
83 * Input event factory.
84 */
85@@ -583,6 +590,7 @@
86
87 virtual KeyEvent* createKeyEvent() = 0;
88 virtual MotionEvent* createMotionEvent() = 0;
89+ virtual RawBufferEvent* createRawBufferEvent() = 0;
90 };
91
92 /*
93@@ -596,10 +604,12 @@
94
95 virtual KeyEvent* createKeyEvent() { return & mKeyEvent; }
96 virtual MotionEvent* createMotionEvent() { return & mMotionEvent; }
97+ virtual RawBufferEvent* createRawBufferEvent() { return &mRawEvent; }
98
99 private:
100 KeyEvent mKeyEvent;
101 MotionEvent mMotionEvent;
102+ RawBufferEvent mRawEvent;
103 };
104
105 /*
106@@ -612,6 +622,7 @@
107
108 virtual KeyEvent* createKeyEvent();
109 virtual MotionEvent* createMotionEvent();
110+ virtual RawBufferEvent* createRawBufferEvent();
111
112 void recycle(InputEvent* event);
113
114@@ -620,6 +631,7 @@
115
116 Vector<KeyEvent*> mKeyEventPool;
117 Vector<MotionEvent*> mMotionEventPool;
118+ Vector<RawBufferEvent*> mRawBufferEventPool;
119 };
120
121 } // namespace android
122
123=== modified file '3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h'
124--- 3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h 2016-01-29 08:18:22 +0000
125+++ 3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h 2017-06-05 10:46:31 +0000
126@@ -46,21 +46,26 @@
127 */
128 struct InputMessage {
129 InputMessage();
130+ InputMessage(uint32_t seq, std::string const& buffer);
131+ InputMessage(InputMessage const& cp);
132+ InputMessage& operator=(InputMessage const& cp);
133
134 enum {
135 TYPE_KEY = 1,
136 TYPE_MOTION = 2,
137- TYPE_FINISHED = 3
138+ TYPE_FINISHED = 3,
139+ TYPE_BUFFER = 4
140 };
141
142 struct Header {
143 uint32_t type;
144- uint32_t padding; // 8 byte alignment for the body that follows
145+ uint32_t seq;
146+ uint32_t size; // size of the Body
147+ uint32_t padding; // padding for 8byte tokens in Body
148 } header;
149
150 union Body {
151 struct Key {
152- uint32_t seq;
153 int64_t eventTime;
154 mir::cookie::Blob cookieBlob;
155 int32_t deviceId;
156@@ -79,7 +84,6 @@
157 } key;
158
159 struct Motion {
160- uint32_t seq;
161 int64_t eventTime;
162 mir::cookie::Blob cookieBlob;
163 int32_t deviceId;
164@@ -113,17 +117,22 @@
165 } motion;
166
167 struct Finished {
168- uint32_t seq;
169 bool handled;
170
171 inline size_t size() const {
172 return sizeof(Finished);
173 }
174 } finished;
175+
176+ struct Buffer {
177+ uint8_t buffer[sizeof(Motion)];
178+ } buffer;
179 } body;
180
181 bool isValid(size_t actualSize) const;
182 size_t size() const;
183+
184+ static const size_t raw_event_payload = sizeof(body.buffer);
185 };
186
187 /*
188@@ -141,12 +150,6 @@
189 public:
190 InputChannel(const String8& name, int fd);
191
192- /* Creates a pair of input channels.
193- *
194- * Returns OK on success.
195- */
196- static status_t openInputFdPair(int& server_fd, int& client_fd);
197-
198 inline String8 getName() const { return mName; }
199 inline int getFd() const { return mFd; }
200
201@@ -194,6 +197,8 @@
202 /* Gets the underlying input channel. */
203 inline sp<InputChannel> getChannel() { return mChannel; }
204
205+ status_t publishEventBuffer(uint32_t seq, std::string const& buffer);
206+
207 /* Publishes a key event to the input channel.
208 *
209 * Returns OK on success.
210@@ -436,6 +441,7 @@
211
212 static void initializeKeyEvent(KeyEvent* event, const InputMessage* msg);
213 static void initializeMotionEvent(MotionEvent* event, const InputMessage* msg);
214+ static void initializeBufferEvent(RawBufferEvent* event, const InputMessage* msg);
215 static void addSample(MotionEvent* event, const InputMessage* msg);
216 static bool canAddSample(const Batch& batch, const InputMessage* msg);
217 static ssize_t findSampleNoLaterThan(const Batch& batch, std::chrono::nanoseconds time);
218
219=== modified file '3rd_party/android-input/android/frameworks/base/services/input/Input.cpp'
220--- 3rd_party/android-input/android/frameworks/base/services/input/Input.cpp 2016-03-16 06:59:01 +0000
221+++ 3rd_party/android-input/android/frameworks/base/services/input/Input.cpp 2017-06-05 10:46:31 +0000
222@@ -612,6 +612,9 @@
223 for (size_t i = 0; i < mMotionEventPool.size(); i++) {
224 delete mMotionEventPool.itemAt(i);
225 }
226+ for (size_t i = 0; i < mRawBufferEventPool.size(); i++) {
227+ delete mRawBufferEventPool.itemAt(i);
228+ }
229 }
230
231 KeyEvent* PooledInputEventFactory::createKeyEvent() {
232@@ -632,8 +635,23 @@
233 return new MotionEvent();
234 }
235
236+RawBufferEvent* PooledInputEventFactory::createRawBufferEvent() {
237+ if (!mRawBufferEventPool.isEmpty()) {
238+ RawBufferEvent* event = mRawBufferEventPool.top();
239+ mRawBufferEventPool.pop();
240+ return event;
241+ }
242+ return new RawBufferEvent();
243+}
244+
245 void PooledInputEventFactory::recycle(InputEvent* event) {
246 switch (event->getType()) {
247+ case AINPUT_EVENT_TYPE_BUFFER:
248+ if (mRawBufferEventPool.size() < mMaxPoolSize) {
249+ mRawBufferEventPool.push(static_cast<RawBufferEvent*>(event));
250+ return;
251+ }
252+ break;
253 case AINPUT_EVENT_TYPE_KEY:
254 if (mKeyEventPool.size() < mMaxPoolSize) {
255 mKeyEventPool.push(static_cast<KeyEvent*>(event));
256
257=== modified file '3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp'
258--- 3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp 2016-03-16 06:59:01 +0000
259+++ 3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp 2017-06-05 10:46:31 +0000
260@@ -29,15 +29,12 @@
261 #include <sys/socket.h>
262 #include <math.h>
263
264+#include <boost/throw_exception.hpp>
265+#include <stdexcept>
266+
267
268 namespace android {
269
270-// Socket buffer size. The default is typically about 128KB, which is much larger than
271-// we really need. So we make it smaller. It just needs to be big enough to hold
272-// a few dozen large multi-finger motion events in the case where an application gets
273-// behind processing touches.
274-static const size_t SOCKET_BUFFER_SIZE = 32 * 1024;
275-
276 // Nanoseconds per milliseconds.
277 static constexpr const std::chrono::nanoseconds NANOS_PER_MS = std::chrono::nanoseconds(1000000);
278
279@@ -68,16 +65,32 @@
280 memset(this, 0, sizeof(InputMessage));
281 }
282
283+InputMessage::InputMessage(uint32_t seq, std::string const& buffer)
284+{
285+ memset(this, 0, sizeof(InputMessage));
286+ header.type = TYPE_BUFFER;
287+ header.seq = seq;
288+ header.size = buffer.size();
289+
290+ if (raw_event_payload < buffer.size())
291+ BOOST_THROW_EXCEPTION(std::runtime_error("raw buffer event exceeds payload"));
292+ memcpy(body.buffer.buffer, buffer.data(), header.size);
293+}
294+
295+InputMessage::InputMessage(InputMessage const& cp) = default;
296+
297+InputMessage& InputMessage::operator=(InputMessage const& cp) = default;
298+
299 bool InputMessage::isValid(size_t actualSize) const {
300 if (size() == actualSize) {
301 switch (header.type) {
302+ case TYPE_FINISHED:
303+ case TYPE_BUFFER:
304 case TYPE_KEY:
305 return true;
306 case TYPE_MOTION:
307 return body.motion.pointerCount > 0
308 && body.motion.pointerCount <= MAX_POINTERS;
309- case TYPE_FINISHED:
310- return true;
311 }
312 }
313 return false;
314@@ -91,11 +104,11 @@
315 return sizeof(Header) + body.motion.size();
316 case TYPE_FINISHED:
317 return sizeof(Header) + body.finished.size();
318+ case TYPE_BUFFER:
319+ return sizeof(Header) + header.size;
320 }
321 return sizeof(Header);
322 }
323-
324-
325 // --- InputChannel ---
326
327 InputChannel::InputChannel(const String8& name, int fd) :
328@@ -117,29 +130,6 @@
329 #endif
330 }
331
332-status_t InputChannel::openInputFdPair(int& server_fd, int& client_fd) {
333- int sockets[2];
334- if (socketpair(AF_UNIX, SOCK_SEQPACKET, 0, sockets)) {
335- status_t result = -errno;
336- ALOGE("InputChannel ~ Could not create socket pair. errno=%d",
337- errno);
338- server_fd = client_fd = 0;
339-
340- return result;
341- }
342-
343- int bufferSize = SOCKET_BUFFER_SIZE;
344- setsockopt(sockets[0], SOL_SOCKET, SO_SNDBUF, &bufferSize, sizeof(bufferSize));
345- setsockopt(sockets[0], SOL_SOCKET, SO_RCVBUF, &bufferSize, sizeof(bufferSize));
346- setsockopt(sockets[1], SOL_SOCKET, SO_SNDBUF, &bufferSize, sizeof(bufferSize));
347- setsockopt(sockets[1], SOL_SOCKET, SO_RCVBUF, &bufferSize, sizeof(bufferSize));
348-
349- server_fd = sockets[0];
350- client_fd = sockets[1];
351-
352- return OK;
353-}
354-
355 status_t InputChannel::sendMessage(const InputMessage* msg) {
356 size_t msgLength = msg->size();
357 ssize_t nWrite;
358@@ -226,6 +216,20 @@
359 InputPublisher::~InputPublisher() {
360 }
361
362+status_t InputPublisher::publishEventBuffer(uint32_t seq, std::string const& buffer) {
363+#if DEBUG_TRANSPORT_ACTIONS
364+ ALOGD("channel '%s' publisher ~ publishInputBuffer: seq=%u", c_str(mChannel->getName()), seq);
365+#endif
366+
367+ if (!seq) {
368+ ALOGE("Attempted to publish a buffer with sequence number 0.");
369+ return BAD_VALUE;
370+ }
371+
372+ InputMessage msg(seq, buffer);
373+ return mChannel->sendMessage(&msg);
374+}
375+
376 status_t InputPublisher::publishKeyEvent(
377 uint32_t seq,
378 int32_t deviceId,
379@@ -255,7 +259,8 @@
380
381 InputMessage msg;
382 msg.header.type = InputMessage::TYPE_KEY;
383- msg.body.key.seq = seq;
384+ msg.header.seq = seq;
385+ msg.header.size = sizeof(msg.body.key);
386 msg.body.key.deviceId = deviceId;
387 msg.body.key.source = source;
388 msg.body.key.action = action;
389@@ -313,7 +318,7 @@
390
391 InputMessage msg;
392 msg.header.type = InputMessage::TYPE_MOTION;
393- msg.body.motion.seq = seq;
394+ msg.header.seq = seq;
395 msg.body.motion.deviceId = deviceId;
396 msg.body.motion.source = source;
397 msg.body.motion.action = action;
398@@ -333,6 +338,8 @@
399 msg.body.motion.pointers[i].properties.copyFrom(pointerProperties[i]);
400 msg.body.motion.pointers[i].coords.copyFrom(pointerCoords[i]);
401 }
402+
403+ msg.header.size = msg.body.motion.size();
404 return mChannel->sendMessage(&msg);
405 }
406
407@@ -354,7 +361,7 @@
408 c_str(mChannel->getName()), msg.header.type);
409 return UNKNOWN_ERROR;
410 }
411- *outSeq = msg.body.finished.seq;
412+ *outSeq = msg.header.seq;
413 *outHandled = msg.body.finished.handled;
414 return OK;
415 }
416@@ -421,12 +428,25 @@
417 }
418
419 switch (mMsg.header.type) {
420+ case InputMessage::TYPE_BUFFER: {
421+ RawBufferEvent* bufferEvent = factory->createRawBufferEvent();
422+ if (!bufferEvent) return NO_MEMORY;
423+
424+ initializeBufferEvent(bufferEvent, &mMsg);
425+ *outSeq = mMsg.header.seq;
426+ *outEvent = bufferEvent;
427+#if DEBUG_TRANSPORT_ACTIONS
428+ ALOGD("channel '%s' consumer ~ consumed buffer event, seq=%u",
429+ c_str(mChannel->getName()), *outSeq);
430+#endif
431+ break;
432+ }
433 case InputMessage::TYPE_KEY: {
434 KeyEvent* keyEvent = factory->createKeyEvent();
435 if (!keyEvent) return NO_MEMORY;
436
437 initializeKeyEvent(keyEvent, &mMsg);
438- *outSeq = mMsg.body.key.seq;
439+ *outSeq = mMsg.header.seq;
440 *outEvent = keyEvent;
441 #if DEBUG_TRANSPORT_ACTIONS
442 ALOGD("channel '%s' consumer ~ consumed key event, seq=%u",
443@@ -484,7 +504,7 @@
444
445 updateTouchState(&mMsg);
446 initializeMotionEvent(motionEvent, &mMsg);
447- *outSeq = mMsg.body.motion.seq;
448+ *outSeq = mMsg.header.seq;
449 *outEvent = motionEvent;
450 #if DEBUG_TRANSPORT_ACTIONS
451 ALOGD("channel '%s' consumer ~ consumed motion event, seq=%u",
452@@ -548,14 +568,14 @@
453 updateTouchState(&msg);
454 if (i) {
455 SeqChain seqChain;
456- seqChain.seq = msg.body.motion.seq;
457+ seqChain.seq = msg.header.seq;
458 seqChain.chain = chain;
459 mSeqChains.push(seqChain);
460 addSample(motionEvent, &msg);
461 } else {
462 initializeMotionEvent(motionEvent, &msg);
463 }
464- chain = msg.body.motion.seq;
465+ chain = msg.header.seq;
466 }
467 batch.samples.removeItemsAt(0, count);
468
469@@ -750,6 +770,7 @@
470 // Resample touch coordinates.
471 touchState.lastResample.eventTime = sampleTime;
472 touchState.lastResample.ids.clear();
473+ bool coords_resampled = false;
474 for (size_t i = 0; i < pointerCount; i++) {
475 uint32_t id = event->getPointerId(i);
476 touchState.lastResample.idToIndex[id] = i;
477@@ -764,6 +785,9 @@
478 lerp(currentCoords.getX(), otherCoords.getX(), alpha));
479 resampledCoords.setAxisValue(AMOTION_EVENT_AXIS_Y,
480 lerp(currentCoords.getY(), otherCoords.getY(), alpha));
481+ coords_resampled = true;
482+ // No coordinate resampling for tooltype mouse - if we intend to
483+ // change that we must also resample RX, RY, HSCROLL, VSCROLL
484 #if DEBUG_RESAMPLING
485 ALOGD("[%d] - out (%0.3f, %0.3f), cur (%0.3f, %0.3f), "
486 "other (%0.3f, %0.3f), alpha %0.3f",
487@@ -773,6 +797,8 @@
488 alpha);
489 #endif
490 } else {
491+ // Before calling this method currentCoords was already part of the
492+ // event -> no need to add them to the event.
493 resampledCoords.copyFrom(currentCoords);
494 #if DEBUG_RESAMPLING
495 ALOGD("[%d] - out (%0.3f, %0.3f), cur (%0.3f, %0.3f)",
496@@ -782,7 +808,8 @@
497 }
498 }
499
500- event->addSample(sampleTime, touchState.lastResample.pointers);
501+ if (coords_resampled)
502+ event->addSample(sampleTime, touchState.lastResample.pointers);
503 }
504
505 bool InputConsumer::shouldResampleTool(int32_t toolType) {
506@@ -838,7 +865,8 @@
507 status_t InputConsumer::sendUnchainedFinishedSignal(uint32_t seq, bool handled) {
508 InputMessage msg;
509 msg.header.type = InputMessage::TYPE_FINISHED;
510- msg.body.finished.seq = seq;
511+ msg.header.size = sizeof(msg.body.finished);
512+ msg.header.seq = seq;
513 msg.body.finished.handled = handled;
514 return mChannel->sendMessage(&msg);
515 }
516@@ -872,6 +900,10 @@
517 return -1;
518 }
519
520+void InputConsumer::initializeBufferEvent(RawBufferEvent* event, const InputMessage* msg) {
521+ event->buffer.assign(msg->body.buffer.buffer, msg->body.buffer.buffer + msg->header.size);
522+}
523+
524 void InputConsumer::initializeKeyEvent(KeyEvent* event, const InputMessage* msg) {
525 event->initialize(
526 msg->body.key.deviceId,
527
528=== modified file 'CMakeLists.txt'
529--- CMakeLists.txt 2016-03-25 15:08:27 +0000
530+++ CMakeLists.txt 2017-06-05 10:46:31 +0000
531@@ -28,8 +28,8 @@
532 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
533
534 set(MIR_VERSION_MAJOR 0)
535-set(MIR_VERSION_MINOR 21)
536-set(MIR_VERSION_PATCH 0)
537+set(MIR_VERSION_MINOR 26)
538+set(MIR_VERSION_PATCH 3)
539
540 add_definitions(-DMIR_VERSION_MAJOR=${MIR_VERSION_MAJOR})
541 add_definitions(-DMIR_VERSION_MINOR=${MIR_VERSION_MINOR})
542@@ -62,27 +62,31 @@
543
544 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread -g -Werror -Wall -pedantic -Wextra -fPIC")
545 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -g -std=c++14 -Werror -Wall -fno-strict-aliasing -pedantic -Wnon-virtual-dtor -Wextra -fPIC")
546+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed")
547+set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed")
548+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
549+
550+include(CheckCXXCompilerFlag)
551+check_cxx_compiler_flag(-Wmismatched-tags HAS_W_MISMATCHED_TAGS)
552+
553+if(HAS_W_MISMATCHED_TAGS)
554+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-mismatched-tags")
555+endif()
556
557 option(MIR_USE_LD_GOLD "Enables the \"gold\" linker." OFF)
558 if(MIR_USE_LD_GOLD)
559- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold")
560- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
561 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=gold")
562 set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=gold")
563 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
564 endif()
565
566-if ("${CMAKE_CXX_COMPILER}" MATCHES "clang")
567- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-return-type-c-linkage -Wno-mismatched-tags")
568-endif()
569-
570 # Link time optimization allows leaner, cleaner libraries
571 message(STATUS "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER})
572
573 option(MIR_LINK_TIME_OPTIMIZATION "Enables the linker to optimize binaries." OFF)
574 if(MIR_LINK_TIME_OPTIMIZATION)
575- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto")
576- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
577+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto -ffat-lto-objects")
578+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -ffat-lto-objects")
579 if(${CMAKE_COMPILER_IS_GNUCXX})
580 set(CMAKE_NM "gcc-nm")
581 set(CMAKE_AR "gcc-ar")
582@@ -138,6 +142,7 @@
583
584 enable_testing()
585
586+include_directories(include/core)
587 include_directories(include/common)
588 include_directories(include/cookie)
589
590@@ -163,10 +168,10 @@
591 # Default to KMS backend, but build all of them
592 set(
593 MIR_PLATFORM
594- mesa-kms;android;mesa-x11
595+ mesa-kms;android;mesa-x11;eglstream-kms
596 CACHE
597 STRING
598- "a list of graphics backends to build (options are 'mesa-kms', 'android' or 'mesa-x11')"
599+ "a list of graphics backends to build (options are 'mesa-kms', 'android', 'mesa-x11', or 'eglstream-kms')"
600 )
601
602 list(GET MIR_PLATFORM 0 MIR_TEST_PLATFORM)
603@@ -183,12 +188,16 @@
604 if (platform STREQUAL "mesa-x11")
605 set(MIR_BUILD_PLATFORM_MESA_X11 TRUE)
606 endif()
607+ if (platform STREQUAL "eglstream-kms")
608+ set(MIR_BUILD_PLATFORM_EGLSTREAM_KMS TRUE)
609+ endif()
610 endforeach(platform)
611
612 find_package(EGL REQUIRED)
613 find_package(GLESv2 REQUIRED)
614 find_package(GLM REQUIRED)
615 find_package(Protobuf REQUIRED )
616+find_package(CapnProto REQUIRED)
617 find_package(GLog REQUIRED)
618 find_package(GFlags REQUIRED)
619 find_package(LTTngUST REQUIRED)
620@@ -199,6 +208,43 @@
621 include_directories (SYSTEM ${EGL_INCLUDE_DIRS})
622 include_directories (SYSTEM ${GLM_INCLUDE_DIRS})
623
624+#
625+# Full OpenGL support is possibly complete but not yet perfect. So is
626+# presently disabled by default due to:
627+# 1. Black windows bug: https://bugs.freedesktop.org/show_bug.cgi?id=92265
628+# 2. Use of glEGLImageTargetTexture2DOES in:
629+# src/platform/graphics/egl_extensions.cpp
630+# possibly shouldn't work even though it does. Or should it?
631+#
632+#if (TARGET_ARCH STREQUAL "x86_64-linux-gnu" OR
633+# TARGET_ARCH STREQUAL "i386-linux-gnu")
634+# set(DEFAULT_LIBGL "libGL")
635+#else()
636+ set(DEFAULT_LIBGL "libGLESv2")
637+#endif()
638+set(MIR_SERVER_LIBGL ${DEFAULT_LIBGL} CACHE STRING "OpenGL library to use in Mir servers {libGL,libGLESv2}")
639+
640+if (MIR_SERVER_LIBGL STREQUAL "libGL")
641+ pkg_check_modules(GL REQUIRED gl)
642+ add_definitions(
643+ -DGL_GLEXT_PROTOTYPES
644+ -DMIR_SERVER_GL_H=<GL/gl.h>
645+ -DMIR_SERVER_GLEXT_H=<GL/glext.h>
646+ -DMIR_SERVER_EGL_OPENGL_BIT=EGL_OPENGL_BIT
647+ -DMIR_SERVER_EGL_OPENGL_API=EGL_OPENGL_API
648+ )
649+elseif (MIR_SERVER_LIBGL STREQUAL "libGLESv2")
650+ pkg_check_modules(GL REQUIRED glesv2)
651+ add_definitions(
652+ -DMIR_SERVER_GL_H=<GLES2/gl2.h>
653+ -DMIR_SERVER_GLEXT_H=<GLES2/gl2ext.h>
654+ -DMIR_SERVER_EGL_OPENGL_BIT=EGL_OPENGL_ES2_BIT
655+ -DMIR_SERVER_EGL_OPENGL_API=EGL_OPENGL_ES_API
656+ )
657+else()
658+ message(FATAL_ERROR "Invalid MIR_SERVER_LIBGL value ${MIR_SERVER_LIBGL}")
659+endif()
660+
661 if (MIR_BUILD_PLATFORM_ANDROID)
662 find_package(AndroidProperties REQUIRED)
663 find_package(LibHardware REQUIRED)
664@@ -210,6 +256,10 @@
665 pkg_check_modules( DRM REQUIRED libdrm )
666 endif()
667
668+if (MIR_BUILD_PLATFORM_EGLSTREAM_KMS)
669+ pkg_check_modules(EPOXY REQUIRED epoxy)
670+endif()
671+
672 set(MIR_ANDROID_INCLUDE_DIRECTORIES) # to be filled by android-input
673 set(MIR_ANDROID_INPUT_COMPILE_FLAGS) # to be filled by android-input
674 set(MIR_3RD_PARTY_INCLUDE_DIRECTORIES)
675@@ -245,7 +295,7 @@
676
677 # There's no nice way to format this. Thanks CMake.
678 mir_add_test(NAME LGPL-required
679- 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"
680+ 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"
681 )
682 mir_add_test(NAME GPL-required
683 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"
684@@ -271,3 +321,9 @@
685 mir_check_no_unreleased_symbols(mirplatform release-checks)
686 mir_check_no_unreleased_symbols(mirprotobuf release-checks)
687 mir_check_no_unreleased_symbols(mirserver release-checks)
688+
689+if (TARGET doc)
690+ add_custom_target(doc-show
691+ xdg-open ${CMAKE_BINARY_DIR}/doc/html/index.html
692+ DEPENDS doc)
693+endif()
694
695=== modified file 'benchmarks/frame-uniformity/CMakeLists.txt'
696--- benchmarks/frame-uniformity/CMakeLists.txt 2016-03-16 06:59:01 +0000
697+++ benchmarks/frame-uniformity/CMakeLists.txt 2017-06-05 10:46:31 +0000
698@@ -4,6 +4,8 @@
699 ${PROJECT_SOURCE_DIR}/include/server
700 ${PROJECT_SOURCE_DIR}/include/client
701 ${PROJECT_SOURCE_DIR}/include/test
702+ ${PROJECT_SOURCE_DIR}/include/renderers/gl
703+ ${PROJECT_SOURCE_DIR}/include/renderers/sw
704
705 ${PROJECT_SOURCE_DIR}/src/include/server
706 ${PROJECT_SOURCE_DIR}/src/include/common
707
708=== modified file 'benchmarks/frame-uniformity/touch_measuring_client.cpp'
709--- benchmarks/frame-uniformity/touch_measuring_client.cpp 2015-06-17 05:20:42 +0000
710+++ benchmarks/frame-uniformity/touch_measuring_client.cpp 2017-06-05 10:46:31 +0000
711@@ -29,39 +29,39 @@
712 namespace
713 {
714
715-MirSurface *create_surface(MirConnection *connection)
716+MirWindow *create_window(MirConnection *connection)
717 {
718 MirPixelFormat pixel_format;
719 unsigned int valid_formats;
720 mir_connection_get_available_surface_formats(connection, &pixel_format, 1, &valid_formats);
721
722- auto const spec = mir_connection_create_spec_for_normal_surface(
723- connection, 1024, 1024, pixel_format);
724- mir_surface_spec_set_name(spec, "frame-uniformity-test");
725- mir_surface_spec_set_buffer_usage(spec, mir_buffer_usage_hardware);
726+ auto const spec = mir_create_normal_window_spec(connection, 1024, 1024);
727+ mir_window_spec_set_pixel_format(spec, pixel_format);
728+ mir_window_spec_set_name(spec, "frame-uniformity-test");
729+ mir_window_spec_set_buffer_usage(spec, mir_buffer_usage_hardware);
730
731- auto surface = mir_surface_create_sync(spec);
732- mir_surface_spec_release(spec);
733+ auto window = mir_create_window_sync(spec);
734+ mir_window_spec_release(spec);
735
736- if (!mir_surface_is_valid(surface))
737+ if (!mir_window_is_valid(window))
738 {
739- std::cerr << "Surface creation failed: " << mir_surface_get_error_message(surface) << std::endl;
740+ std::cerr << "Window creation failed: " << mir_window_get_error_message(window) << std::endl;
741 exit(1);
742 }
743
744- return surface;
745+ return window;
746 }
747
748-void input_callback(MirSurface * /* surface */, MirEvent const* event, void* context)
749+void input_callback(MirWindow * /* surface */, MirEvent const* event, void* context)
750 {
751 auto results = static_cast<TouchSamples*>(context);
752
753 results->record_pointer_coordinates(std::chrono::high_resolution_clock::now(), *event);
754 }
755
756-void collect_input_and_frame_timing(MirSurface *surface, mt::Barrier& client_ready, std::chrono::high_resolution_clock::duration duration, std::shared_ptr<TouchSamples> const& results)
757+void collect_input_and_frame_timing(MirWindow *surface, mt::Barrier& client_ready, std::chrono::high_resolution_clock::duration duration, std::shared_ptr<TouchSamples> const& results)
758 {
759- mir_surface_set_event_handler(surface, input_callback, results.get());
760+ mir_window_set_event_handler(surface, input_callback, results.get());
761
762 client_ready.ready();
763
764@@ -69,7 +69,7 @@
765 auto end_time = std::chrono::high_resolution_clock::now() + duration;
766 while (std::chrono::high_resolution_clock::now() < end_time)
767 {
768- mir_buffer_stream_swap_buffers_sync(mir_surface_get_buffer_stream(surface));
769+ mir_buffer_stream_swap_buffers_sync(mir_window_get_buffer_stream(surface));
770 results->record_frame_time(std::chrono::high_resolution_clock::now());
771 }
772 }
773@@ -106,11 +106,11 @@
774 */
775 mir_connection_set_lifecycle_event_callback(connection, null_lifecycle_callback, nullptr);
776
777- auto surface = create_surface(connection);
778+ auto window = create_window(connection);
779
780- collect_input_and_frame_timing(surface, client_ready, touch_duration, results_);
781+ collect_input_and_frame_timing(window, client_ready, touch_duration, results_);
782
783- mir_surface_release_sync(surface);
784+ mir_window_release_sync(window);
785 mir_connection_release(connection);
786 }
787
788
789=== modified file 'benchmarks/touch_event_latency.py'
790--- benchmarks/touch_event_latency.py 2015-07-02 14:40:40 +0000
791+++ benchmarks/touch_event_latency.py 2017-06-05 10:46:31 +0000
792@@ -57,13 +57,9 @@
793
794 ####### TEST #######
795
796-# Disable input resampling so that the event_time field of input events,
797-# used to calculate latency, is accurate
798-no_resampling_env = {"MIR_CLIENT_INPUT_RATE": "0"}
799-
800 host = Server(reports=["input"])
801-nested = Server(host=host, reports=["client-input-receiver"], env=no_resampling_env)
802-client = Client(server=nested, reports=["client-input-receiver"], options=["-f"], env=no_resampling_env)
803+nested = Server(host=host, reports=["client-input-receiver"])
804+client = Client(server=nested, reports=["client-input-receiver"], options=["-f"])
805
806 test = PerformanceTest([host, nested, client])
807 touch_screen = TouchScreen()
808
809=== modified file 'cmake/FindGtestGmock.cmake'
810--- cmake/FindGtestGmock.cmake 2016-03-16 06:59:01 +0000
811+++ cmake/FindGtestGmock.cmake 2017-06-05 10:46:31 +0000
812@@ -1,24 +1,44 @@
813 include(ExternalProject)
814 include(FindPackageHandleStandardArgs)
815
816+#
817+# When cross compiling MIR_CHROOT points to our chroot.
818+# When not cross compiling, it should be blank to use the host system.
819+#
820+set(usr ${MIR_CHROOT}/usr)
821+
822+if (EXISTS ${usr}/src/googletest)
823+ set (USING_GOOGLETEST_1_8 TRUE)
824+ set (GTEST_INSTALL_DIR ${usr}/src/googletest/googletest/include)
825+else()
826+ set (GTEST_INSTALL_DIR ${usr}/src/gmock/gtest/include)
827+endif()
828+
829 #gtest
830-set(GTEST_INSTALL_DIR /usr/src/gmock/gtest/include)
831-find_path(GTEST_INCLUDE_DIR gtest/gtest.h
832- HINTS ${GTEST_INSTALL_DIR})
833+find_path(
834+ GTEST_INCLUDE_DIR gtest/gtest.h
835+ HINTS ${GTEST_INSTALL_DIR}
836+)
837
838 #gmock
839-find_path(GMOCK_INSTALL_DIR gmock/CMakeLists.txt
840- HINTS /usr/src)
841+find_path(
842+ GMOCK_INSTALL_DIR CMakeLists.txt
843+ HINTS ${usr}/src/googletest ${usr}/src/gmock)
844 if(${GMOCK_INSTALL_DIR} STREQUAL "GMOCK_INSTALL_DIR-NOTFOUND")
845 message(FATAL_ERROR "google-mock package not found")
846 endif()
847
848-set(GMOCK_INSTALL_DIR ${GMOCK_INSTALL_DIR}/gmock)
849 find_path(GMOCK_INCLUDE_DIR gmock/gmock.h)
850
851-set(GMOCK_PREFIX gmock)
852-set(GMOCK_BINARY_DIR ${CMAKE_BINARY_DIR}/${GMOCK_PREFIX}/libs)
853-set(GTEST_BINARY_DIR ${GMOCK_BINARY_DIR}/gtest)
854+if (USING_GOOGLETEST_1_8)
855+ set(GMOCK_BASE_BINARY_DIR ${CMAKE_BINARY_DIR}/gmock/libs)
856+ set(GMOCK_BINARY_DIR ${GMOCK_BASE_BINARY_DIR}/googlemock)
857+ set(GTEST_BINARY_DIR ${GMOCK_BINARY_DIR}/gtest)
858+else()
859+ set(GMOCK_BASE_BINARY_DIR ${CMAKE_BINARY_DIR}/gmock/libs)
860+ set(GMOCK_BINARY_DIR ${GMOCK_BASE_BINARY_DIR})
861+ set(GTEST_BINARY_DIR ${GMOCK_BINARY_DIR}/gtest)
862+endif()
863
864 set(GTEST_CXX_FLAGS "-fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64")
865 if (cmake_build_type_lower MATCHES "threadsanitizer")
866@@ -30,13 +50,18 @@
867 set(GTEST_CMAKE_ARGS "-DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS}")
868 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
869 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
870+
871+if (USING_GOOGLETEST_1_8)
872+ list(APPEND GTEST_CMAKE_ARGS -DBUILD_GTEST=ON)
873+endif()
874+
875 if (cmake_build_type_lower MATCHES "threadsanitizer")
876 #Skip compiler check, since if GCC is the compiler, we need to link against -ltsan
877 #explicitly; specifying additional linker flags doesn't seem possible for external projects
878 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_CXX_COMPILER_WORKS=1)
879 endif()
880 if (${CMAKE_CROSSCOMPILING})
881- if(DEFINED MIR_NDK_PATH)
882+ if(DEFINED MIR_CHROOT)
883 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_MODULE_PATH}/LinuxCrossCompile.cmake)
884 else()
885 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
886@@ -52,7 +77,7 @@
887 SOURCE_DIR ${GMOCK_INSTALL_DIR}
888 #forward the compilers to the subproject so cross-arch builds work
889 CMAKE_ARGS ${GTEST_CMAKE_ARGS}
890- BINARY_DIR ${GMOCK_BINARY_DIR}
891+ BINARY_DIR ${GMOCK_BASE_BINARY_DIR}
892
893 #we don't need to install, so skip
894 INSTALL_COMMAND ""
895
896=== modified file 'cmake/FindLibHardware.cmake'
897--- cmake/FindLibHardware.cmake 2016-03-16 06:59:01 +0000
898+++ cmake/FindLibHardware.cmake 2017-06-05 10:46:31 +0000
899@@ -7,7 +7,7 @@
900 INCLUDE(FindPackageHandleStandardArgs)
901
902 find_package( PkgConfig )
903-pkg_search_module(ANDROID_HEADERS REQUIRED android-headers)
904+pkg_search_module(ANDROID_HEADERS REQUIRED android-headers-23)
905 set(LIBHARDWARE_INCLUDE_DIRS ${ANDROID_HEADERS_INCLUDE_DIRS})
906
907 find_library(LIBHARDWARE_LIBRARY
908
909=== modified file 'cmake/LinuxCrossCompile.cmake'
910--- cmake/LinuxCrossCompile.cmake 2016-01-29 08:18:22 +0000
911+++ cmake/LinuxCrossCompile.cmake 2017-06-05 10:46:31 +0000
912@@ -1,7 +1,7 @@
913 set(CMAKE_SYSTEM_NAME Linux)
914 set(CMAKE_SYSTEM_VERSION 1)
915
916-set(MIR_NDK_PATH $ENV{MIR_NDK_PATH} CACHE STRING "path of mir android bundle")
917+set(MIR_CHROOT $ENV{MIR_CHROOT} CACHE STRING "path of mir android bundle")
918
919 if (NOT DEFINED MIR_TARGET_MACHINE)
920 set(MIR_TARGET_MACHINE $ENV{MIR_TARGET_MACHINE} CACHE STRING "target machine")
921@@ -14,28 +14,28 @@
922 set(CMAKE_CXX_COMPILER /usr/bin/${MIR_TARGET_MACHINE}-g++${MIR_GCC_VARIANT})
923
924 # where to look to find dependencies in the target environment
925-set(CMAKE_FIND_ROOT_PATH "${MIR_NDK_PATH}")
926+set(CMAKE_FIND_ROOT_PATH "${MIR_CHROOT}")
927
928 #treat the chroot's includes as system includes
929-include_directories(SYSTEM "${MIR_NDK_PATH}/usr/include" "${MIR_NDK_PATH}/usr/include/${MIR_TARGET_MACHINE}")
930-list(APPEND CMAKE_SYSTEM_INCLUDE_PATH "${MIR_NDK_PATH}/usr/include" "${MIR_NDK_PATH}/usr/include/${MIR_TARGET_MACHINE}" )
931+include_directories(SYSTEM "${MIR_CHROOT}/usr/include" "${MIR_CHROOT}/usr/include/${MIR_TARGET_MACHINE}")
932+list(APPEND CMAKE_SYSTEM_INCLUDE_PATH "${MIR_CHROOT}/usr/include" "${MIR_CHROOT}/usr/include/${MIR_TARGET_MACHINE}" )
933
934 # Add the chroot libraries as system libraries
935 list(APPEND CMAKE_SYSTEM_LIBRARY_PATH
936- "${MIR_NDK_PATH}/lib"
937- "${MIR_NDK_PATH}/lib/${MIR_TARGET_MACHINE}"
938- "${MIR_NDK_PATH}/usr/lib"
939- "${MIR_NDK_PATH}/usr/lib/${MIR_TARGET_MACHINE}"
940+ "${MIR_CHROOT}/lib"
941+ "${MIR_CHROOT}/lib/${MIR_TARGET_MACHINE}"
942+ "${MIR_CHROOT}/usr/lib"
943+ "${MIR_CHROOT}/usr/lib/${MIR_TARGET_MACHINE}"
944 )
945
946 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
947 set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
948 set(CMAKE_EXECUTABLE_RUNTIME_C_FLAG "-Wl,-rpath-link,")
949 set(CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG "-Wl,-rpath-link,")
950-set(CMAKE_INSTALL_RPATH "${MIR_NDK_PATH}/lib:${MIR_NDK_PATH}/lib/${MIR_TARGET_MACHINE}:${MIR_NDK_PATH}/usr/lib:${MIR_NDK_PATH}/usr/lib/${MIR_TARGET_MACHINE}")
951+set(CMAKE_INSTALL_RPATH "${MIR_CHROOT}/lib:${MIR_CHROOT}/lib/${MIR_TARGET_MACHINE}:${MIR_CHROOT}/usr/lib:${MIR_CHROOT}/usr/lib/${MIR_TARGET_MACHINE}")
952
953-set(ENV{PKG_CONFIG_PATH} "${MIR_NDK_PATH}/usr/lib/pkgconfig:${MIR_NDK_PATH}/usr/lib/${MIR_TARGET_MACHINE}/pkgconfig")
954-set(ENV{PKG_CONFIG_SYSROOT_DIR} "${MIR_NDK_PATH}")
955+set(ENV{PKG_CONFIG_PATH} "${MIR_CHROOT}/usr/lib/pkgconfig:${MIR_CHROOT}/usr/lib/${MIR_TARGET_MACHINE}/pkgconfig")
956+set(ENV{PKG_CONFIG_SYSROOT_DIR} "${MIR_CHROOT}")
957
958 #use only the cross compile system
959 set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
960
961=== modified file 'cmake/MirCommon.cmake'
962--- cmake/MirCommon.cmake 2016-03-16 06:59:01 +0000
963+++ cmake/MirCommon.cmake 2017-06-05 10:46:31 +0000
964@@ -28,7 +28,8 @@
965 set(VALGRIND_CMD ${VALGRIND_CMD} "--track-fds=yes")
966 set(VALGRIND_CMD ${VALGRIND_CMD} "--num-callers=128")
967 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_generic")
968- set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_glibc_2.21")
969+ set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_glibc_2.23")
970+ set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_libhybris")
971 if (TARGET_ARCH STREQUAL "arm-linux-gnueabihf")
972 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_armhf")
973 endif()
974@@ -98,7 +99,7 @@
975
976 # Final commands
977 set(test_cmd "${test_cmd}" "--gtest_filter=-${test_no_memcheck_filter}:${test_exclusion_filter}")
978- set(test_cmd_no_memcheck "${test_cmd_no_memcheck}" "--gtest_filter=${test_no_memcheck_filter}:-${test_exclusion_filter}")
979+ set(test_cmd_no_memcheck "${test_cmd_no_memcheck}" "--gtest_death_test_style=threadsafe" "--gtest_filter=${test_no_memcheck_filter}:-${test_exclusion_filter}")
980 if(DETECT_FD_LEAKS)
981 set(test_cmd ${CMAKE_SOURCE_DIR}/tools/detect_fd_leaks.bash ${test_cmd})
982 endif()
983@@ -117,10 +118,10 @@
984 list_to_string("${test_cmd_no_memcheck}" "" discover_cmd_no_memcheck)
985
986 file(APPEND ${CMAKE_BINARY_DIR}/discover_all_tests.sh
987- "sh ${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh ${discover_env} -- ${discover_cmd}\n")
988+ "sh ${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh ${discover_env} --test-name ${test_name} -- ${discover_cmd}\n")
989 if (test_no_memcheck_filter)
990 file(APPEND ${CMAKE_BINARY_DIR}/discover_all_tests.sh
991- "sh ${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh ${discover_env} -- ${discover_cmd_no_memcheck}\n")
992+ "sh ${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh ${discover_env} --test-name ${test_name}_no_memcheck -- ${discover_cmd_no_memcheck}\n")
993 endif()
994 endfunction ()
995
996@@ -169,11 +170,7 @@
997 set(TARGET_COMPILE_DEFINITIONS "$<$<BOOL:${TARGET_COMPILE_DEFINITIONS}>:-D$<JOIN:${TARGET_COMPILE_DEFINITIONS},\n-D>\n>")
998
999 foreach(dir ${TARGET_INCLUDE_DIRECTORIES})
1000- if (${dir} MATCHES "usr/include")
1001- set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -isystem ${dir}")
1002- else()
1003- set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -I${dir}")
1004- endif()
1005+ set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -I${dir}")
1006 endforeach()
1007
1008 # So.
1009@@ -304,21 +301,3 @@
1010 )
1011 add_dependencies(${DEPENDENT_TARGET} ${TARGET_NAME})
1012 endfunction()
1013-
1014-function (mir_add_library_with_symbols TARGET TYPE SYMBOLS_FILE)
1015- # Bask in the majesty of CMake!
1016- #
1017- # You can't just depend on an arbitary file. Oh, no!
1018- #
1019- # Instead, we add a custom command to generate an empty C++ source
1020- # file, depending on the symbols file, and then add that empty C++
1021- # source to the library.
1022- set(HACK_OUTPUT ${TARGET}_abysmal_hack.cpp)
1023-
1024- add_custom_command(OUTPUT ${HACK_OUTPUT}
1025- COMMAND touch ${HACK_OUTPUT}
1026- DEPENDS ${SYMBOLS_FILE}
1027- )
1028-
1029- add_library(${TARGET} ${TYPE} ${HACK_OUTPUT} ${ARGN})
1030-endfunction()
1031
1032=== modified file 'cross-compile-chroot.sh'
1033--- cross-compile-chroot.sh 2016-03-16 06:59:01 +0000
1034+++ cross-compile-chroot.sh 2017-06-05 10:46:31 +0000
1035@@ -26,10 +26,10 @@
1036 dist=vivid
1037 clean=0
1038 update_build_dir=0
1039-
1040+enable_tests=yes
1041 target_arch=armhf
1042
1043-while getopts "a:cd:hu" OPTNAME
1044+while getopts "a:cd:hut:" OPTNAME
1045 do
1046 case $OPTNAME in
1047 a )
1048@@ -55,6 +55,9 @@
1049 usage
1050 exit 1;
1051 ;;
1052+ t )
1053+ enable_tests=${OPTARG}
1054+ ;;
1055 * )
1056 echo "invalid option specified"
1057 usage
1058@@ -77,11 +80,11 @@
1059 BUILD_DIR=build-${target_arch}-${dist}
1060 fi
1061
1062-if [ "${MIR_NDK_PATH}" = "" ]; then
1063- export MIR_NDK_PATH=~/.cache/mir-${target_arch}-chroot-${dist}
1064+if [ "${MIR_CHROOT}" = "" ]; then
1065+ export MIR_CHROOT=~/.cache/mir-${target_arch}-chroot-${dist}
1066 fi
1067
1068-if [ ! -d ${MIR_NDK_PATH} ]; then
1069+if [ ! -d ${MIR_CHROOT} ]; then
1070 echo "no partial chroot dir detected. attempting to create one"
1071 _do_update_chroot=1
1072 fi
1073@@ -91,7 +94,7 @@
1074 fi
1075
1076 echo "Building for distro: $dist"
1077-echo "Using MIR_NDK_PATH: ${MIR_NDK_PATH}"
1078+echo "Using MIR_CHROOT: ${MIR_CHROOT}"
1079
1080 additional_repositories=
1081 if [ ${dist} == "vivid" ] ; then
1082@@ -101,6 +104,10 @@
1083 gcc_variant=
1084 if [ "${dist}" = "vivid" ]; then
1085 gcc_variant=-4.9
1086+elif [ "${dist}" = "wily" -o "${dist}" = "xenial" ]; then
1087+ gcc_variant=-5
1088+elif [ "${dist}" = "yakkety" -o "${dist}" = "zesty" ]; then
1089+ gcc_variant=-6
1090 fi
1091
1092 case ${target_arch} in
1093@@ -144,7 +151,7 @@
1094
1095 if [ ${_do_update_chroot} -eq 1 ] ; then
1096 pushd tools > /dev/null
1097- ./setup-partial-armhf-chroot.sh -d ${dist} -a ${target_arch} ${additional_repositories} ${MIR_NDK_PATH}
1098+ ./setup-partial-armhf-chroot.sh -d ${dist} -a ${target_arch} ${additional_repositories} ${MIR_CHROOT}
1099 popd > /dev/null
1100 # force a clean build after an update, since CMake cache maybe out of date
1101 clean_build_dir ${BUILD_DIR}
1102@@ -152,17 +159,19 @@
1103
1104 pushd ${BUILD_DIR} > /dev/null
1105
1106- export PKG_CONFIG_PATH="${MIR_NDK_PATH}/usr/lib/pkgconfig:${MIR_NDK_PATH}/usr/lib/${target_machine}/pkgconfig"
1107+ export PKG_CONFIG_PATH="${MIR_CHROOT}/usr/lib/pkgconfig:${MIR_CHROOT}/usr/lib/${target_machine}/pkgconfig"
1108 export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
1109 export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
1110- export PKG_CONFIG_SYSROOT_DIR=$MIR_NDK_PATH
1111+ export PKG_CONFIG_SYSROOT_DIR=$MIR_CHROOT
1112 export PKG_CONFIG_EXECUTABLE=`which pkg-config`
1113 export MIR_TARGET_MACHINE=${target_machine}
1114 export MIR_GCC_VARIANT=${gcc_variant}
1115+ export CMAKE_PREFIX_PATH=$MIR_CHROOT/usr/lib/${target_machine}/cmake
1116 echo "Using PKG_CONFIG_PATH: $PKG_CONFIG_PATH"
1117 echo "Using PKG_CONFIG_EXECUTABLE: $PKG_CONFIG_EXECUTABLE"
1118 cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/LinuxCrossCompile.cmake \
1119- -DMIR_PLATFORM=${mir_platform} \
1120+ -DMIR_PLATFORM=${mir_platform} -DMIR_ENABLE_TESTS=${enable_tests}\
1121+ -DMIR_USE_PRECOMPILED_HEADERS=OFF \
1122 ..
1123
1124 make -j${NUM_JOBS} $@
1125
1126=== modified file 'debian/changelog'
1127--- debian/changelog 2016-03-30 00:23:20 +0000
1128+++ debian/changelog 2017-06-05 10:46:31 +0000
1129@@ -1,3 +1,658 @@
1130+mir (0.26.3) UNRELEASED; urgency=medium
1131+
1132+ [ Daniel van Vugt ]
1133+ * New upstream release 0.26.3 (https://launchpad.net/mir/+milestone/0.26.3)
1134+ - Enhancements:
1135+ . Make deprecations optional (and default to off for builds on 16.04 LTS)
1136+ . Added support for building on Ubuntu 17.10 artful.
1137+ - Bugs fixed:
1138+ . Mir needs to be updated to 0.26 in 16.04LTS (LP: #1685186)
1139+ . unity-system-compositor crashed with SIGSEGV in
1140+ libinput_device_config_accel_is_available() from
1141+ libinput_device_config_accel_set_speed() from
1142+ mir::input::evdev::LibInputDevice::apply_settings() (LP: #1672955)
1143+ . Please transition to Boost 1.62 (LP: #1675138)
1144+ . Mir sending key repeat events continually to nested shell after VT
1145+ switch (causes Unity8 lockup for a while) (LP: #1675357)
1146+ . mir_demo_standalone_render_overlays fails to link (LP: #1677239)
1147+
1148+ -- Alan Griffiths <alan.griffiths@canonical.com> Fri, 26 May 2017 16:57:20 +0000
1149+
1150+mir (0.26.2) UNRELEASED; urgency=medium
1151+
1152+ [ Mattia Rizzolo ]
1153+ * Patch the code to use unversioned runtime boost libraries (LP: #1675138).
1154+
1155+ -- Gianfranco Costamagna <locutusofborg@debian.org> Fri, 24 Mar 2017 22:58:36 +0100
1156+
1157+mir (0.26.2) UNRELEASED; urgency=medium
1158+
1159+ [ Daniel van Vugt ]
1160+ * New upstream release 0.26.2 (https://launchpad.net/mir/+milestone/0.26.2)
1161+ - Bugs fixed:
1162+ . EDID does not change when hotplugging a monitor (LP: #1660017)
1163+ . [regression] mirout crashes when connecting to unity8 or any nested
1164+ server: [libprotobuf FATAL /usr/include/google/protobuf/repeated_field.
1165+ h:1408] CHECK failed: (index) < (current_size_) (LP: #1661163)
1166+ . Mir server crashed with SIGSEGV in
1167+ mir::compositor::TemporaryBuffer::size() called from
1168+ mir::gl::tessellate_renderable_into_rectangle() (LP: #1664760)
1169+ . Nested servers (Unity8) periodically stutter (half frame rate) with
1170+ Mir 0.26.1 (LP: #1666372)
1171+ . Don't dereference the end iterator in ms::ApplicationSession::
1172+ surface_after() (LP: #1667645)
1173+ . [regression] OSK input shaping no longer works correctly (LP: #1669444)
1174+ . Setting MirWindowSpec parameters always causes window's input_region
1175+ to be reset (LP: #1670876)
1176+ . Subpixel order not included in Mir display information (LP: #1393578)
1177+ . Presentation chains should support various swap interval modes
1178+ (LP: #1673533)
1179+ . Need an extension for GBM buffers to replace
1180+ mir_buffer_get_buffer_package() (LP: #1673534)
1181+ . Seg fault on detect_fd_leaks (LP: #1661498)
1182+
1183+ -- Cemil Azizoglu <cemil.azizoglu@canonical.com> Wed, 22 Mar 2017 04:54:19 +0000
1184+
1185+mir (0.26.1) UNRELEASED; urgency=medium
1186+
1187+ * New upstream release 0.26.1 (https://launchpad.net/mir/+milestone/0.26.1)
1188+ - ABI summary:
1189+ . mirclient ABI unchanged at 9
1190+ . mirserver ABI unchanged at 43
1191+ . mircommon ABI unchanged at 7
1192+ . mirplatform ABI bumped to 15
1193+ . mirprotobuf ABI unchanged at 3
1194+ . mirplatformgraphics ABI bumped to 12
1195+ . mirclientplatform ABI unchanged at 5
1196+ . mirinputplatform ABI unchanged at 6
1197+ . mircore ABI unchanged at 1
1198+ - Enhancements:
1199+ . Support for MirBuffer API that allows for better management of
1200+ hardware/software buffers.
1201+ . Support for MirPresentationChain API that allows better control
1202+ over {de}queueing of individual buffers {from}to the server.
1203+ . Interim support for MirRenderSurface API that provides a unit of
1204+ renderable for lower level content such as MirBufferStreams and
1205+ MirPresentationChains, etc.. MirRenderSurface API is marked
1206+ deprecated as it (and the relevant entry points) will be renamed to
1207+ MirSurface before general availability. It will initially be used for
1208+ revamping support for EGL drivers.
1209+ . Synchronous version of mir_prompt_session_new_fds_for_prompt_providers()
1210+ API (mir_prompt_session_new_fds_for_prompt_providers_sync()) added for
1211+ convenience.
1212+ . Better name for MirPersistentId-->MirWindowId. MirPersistentId has now
1213+ been deprecated.
1214+ - Bugs fixed:
1215+ . [regression] Unity8 stutters constantly (like half frame rate).
1216+ (LP: #1661128)
1217+ . mir 0.26 - spinner loading animation, minimize, maximize too fast.
1218+ (LP: #1661072)
1219+ . [regression] Nested server segfaults or rapidly logs exceptions when a
1220+ fullscreen client starts [in mir_presentation_chain_set_dropping_mode
1221+ ... std::exception::what: Operation not permitted] (LP: #1661508)
1222+ . mir_window_request_persistent_id_sync seg faults when called twice.
1223+ (LP: #1661704)
1224+ . [regression] Windowed clients of nested servers are all black.
1225+ (LP: #1661521)
1226+ . Mir graphics platform ABI broke in series 0.26 but sonames never
1227+ changed (LP: #1662455)
1228+ . Fixes for 0.26 changelog.
1229+ . [regression] mirscreencast hangs during screencast creation. (LP: #1662997)
1230+ . libmirclient-dev missing build dependency on libmircore-dev. (LP: #1662942)
1231+ . mir_window_spec_set_cursor_name() doesn't trigger
1232+ mir::scene::SurfaceObserver::cursor_image_set_to. (LP: #1663197)
1233+ . [regression] Software clients of nested servers are all black in Mir 0.25.0
1234+ and later. (LP: #1663062)
1235+
1236+ -- Cemil Azizoglu <cemil.azizoglu@canonical.com> Thu, 09 Feb 2017 21:46:32 +0000
1237+
1238+mir (0.26.0) UNRELEASED; urgency=medium
1239+
1240+ * New upstream release 0.26.0 (https://launchpad.net/mir/+milestone/0.26.0)
1241+ - ABI summary:
1242+ . mirclient ABI unchanged at 9
1243+ . mirserver ABI bumped to 43
1244+ . mircommon ABI unchanged at 7
1245+ . mirplatform ABI unchanged at 14
1246+ . mirprotobuf ABI unchanged at 3
1247+ . mirplatformgraphics ABI unchanged at 11
1248+ . mirclientplatform ABI unchanged at 5
1249+ . mirinputplatform ABI unchanged at 6
1250+ . mircore ABI unchanged at 1
1251+ - Enhancements:
1252+ . New and improved client APIs: MirInputConfig, MirWindow, DisplayConfig,
1253+ MirScreencastSpec.
1254+ . Support for setting the input configuration.
1255+ . Introduced an extension mechanism for platform-specific APIs.
1256+ . Support for screencasting to a specific MirBuffer.
1257+ . Added DisplayConfigurationController::base_configuration() so
1258+ downstreams can get the base configuration (weirdly they can already
1259+ set it).
1260+ . X11 platform: Allow adjustable scale parameter.
1261+ . Added monitor EDID support to both the client API and server-side.
1262+ . mirout: Now shows scaling factor, subpixel arrangement, form factor and
1263+ EDID.
1264+ . mirout: Can now change the monitor configuration as well as report it.
1265+ . Replace the mir::Server-overridable Reports with Observers.
1266+ . Deprecate legacy toolkit APIs that will be removed in Mir 1.0
1267+ . Introduced client-side vsync which dramatically reduces latency
1268+ from the client to the screen, by up to 44ms.
1269+ . Removed all input resampling logic. We now expect toolkits to do their
1270+ own, if at all. This reduces input lag by up to 16.9ms, or 8.4ms on
1271+ average.
1272+ - Bugs fixed:
1273+ . [performance] Restore support for better-than-triple buffering by
1274+ default. (LP: #1240909)
1275+ . Frame rate is artificially low on Diamondville Intel Atom systems due
1276+ to aggressive power management (LP: #1388490)
1277+ . [testsfail] failure in CI in
1278+ AndroidInputReceiverSetup.slow_raw_input_doesnt_cause_frameskipping
1279+ (LP: #1394369)
1280+ . [trusted prompt sessions] Can't open two prompt sessions at the same
1281+ time (LP: #1494197)
1282+ . Changing scale, formFactor or DPI in display configuration causes
1283+ renderer teardown/recreate unnecessarily (LP: #1556142)
1284+ . [testsfail] ApplicationNotRespondingDetection.failure_to_pong_is_
1285+ noticed (LP: #1570327)
1286+ . CI failure in TestClientInput.receives_one_touch_event_per_frame
1287+ (LP: #1570698)
1288+ . Mir-on-X mouse input is jerky/stuttery compared to Mir-on-KMS
1289+ (LP: #1576600)
1290+ . [regression] Two fingers in mir_proving_server now resizes/moves app
1291+ windows (two finger apps unusable) (LP: #1586311)
1292+ . Pointer/cursor input lag in unity8 session (LP: #1591328)
1293+ . PointerConfinement.test_we_update_our_confined_region_on_a_resize
1294+ (LP: #1606418)
1295+ . [ FAILED ] ClientLatency.throttled_input_rate_yields_lower_latency
1296+ (LP: #1624188)
1297+ . Valgrind failure on mir_acceptance_tests - leak on incoming buffer in
1298+ Requests::free_buffer(int) (LP: #1628794)
1299+ . Add support for returning monitor EDIDs (LP: #1634868)
1300+ . When pointer motion crosses window borders SurfaceInputDispatcher
1301+ injected events increase accumulated relative motion (LP: #1639749)
1302+ . [ FAILED ] ClientLatency.dropping_latency_is_limited_to_one (AKA
1303+ dropping_latency_is_closer_to_zero_than_one) (LP: #1640366)
1304+ . Server::override_the_coordinate_translator() cannot be effectively used
1305+ downstream (LP: #1641166)
1306+ . [regression] FTBFS when cross compiling to yakkety from zesty:
1307+ test_client_extensions.cpp: error: ‘Ne’ was not declared in this scope
1308+ (LP: #1642473)
1309+ . [regression] mir_proving_server crashes with std::exception::what:
1310+ add_options() must be called before the_options() (LP: #1642504)
1311+ . [ FAILED ] NestedServer.nested_platform_connects_and_disconnects
1312+ (LP: #1643432)
1313+ . googletest 1.8.0-2 (on zesty) breaks existing builds [add_library
1314+ cannot create target "gmock" ...] (LP: #1644062)
1315+ . [regression] Those mir_demo_client_* which default to fullscreen now
1316+ ignore the size parameter (-s WIDTHxHEIGHT) (LP: #1644075)
1317+ . Shell doesn't know when base display config has changed (LP: #1644189)
1318+ . miral::ActiveOutputsMonitor (and therefore miral-shell --window-manager
1319+ tiling) are broken by lp:mir (LP: #1645284)
1320+ . mir_proving_server's four finger swipe to switch apps leaks touch
1321+ events to the clients (LP: #1646700)
1322+ . [regression] Cross compiling from zesty to yakkety fails with *** No
1323+ rule to make target 'gmock/libs/googlemock/gtest/libgtest.a' (LP:
1324+ #1646704)
1325+ . [ FAILED ] ThreadedDispatcherDeathTest.destroying_dispatcher_from_a_
1326+ callback_is_an_error (LP: #1647573)
1327+ . [regression] eglapps now all have window title "default" (LP: #1647575)
1328+ . Package mirtest-dev is missing a dependency on mir-renderer-gl-dev
1329+ (LP: #1651391)
1330+ . EDID data is missing in nested servers (LP: #1651633)
1331+ . [regression] Latency for fullscreen interval 0 clients (e.g. games and
1332+ benchmarks) increased with the introduction of nested passthrough
1333+ (LP: #1651638)
1334+ . Race between MirConnection::released() and
1335+ MirConnection::~MirConnection() causes deadlocks, possible crashes and
1336+ memory corruption (LP: #1653658)
1337+ . DisplayConfigurationTest.configure_session_removed_display failure
1338+ (LP: #1653789)
1339+ . [regression] Development headers reference unknown header
1340+ "mir_toolkit/mir_input_device_types.h" so some clients can't build at
1341+ all any more (LP: #1654023)
1342+ . [regression] mir_acceptance_tests' death tests leave behind core files
1343+ (LP: #1654478)
1344+ . Setting the event handler after the surface has been created does
1345+ nothing (LP: #1654612)
1346+ . [ FAILED ] RaiseSurfaces.key_event_with_cookie (LP: #1655293)
1347+ . Black screen with Raspberry Pi 3 VC4 Mesa driver (LP: #1656164)
1348+ . i386 FTBFS:
1349+ src/platforms/eglstream-kms/server/kms_display_configuration.cpp:88:47:
1350+ error: narrowing conversion of ‘..._drmModeConnector::connector_id’
1351+ from ‘uint32_t {aka unsigned int}’ to ‘EGLAttrib {aka int}’ inside { }
1352+ [-Werror=narrowing] (LP: #1656633)
1353+ . android: overlays no longer are activated (LP: #1657755)
1354+ . Mir FTBFS with MIR_USE_PRECOMPILED_HEADERS=OFF: error: ISO C++11
1355+ requires at least one argument for the "..." in a variadic macro
1356+ [-Werror] (LP: #1658604)
1357+ . [regression] Mir cross-compile to vivid/armhf FTBFS with:
1358+ mock_input_device_hub.h:33:18: error: ‘add_observer’ is not a type
1359+ (LP: #1658605)
1360+ . Caught exception at Mir/EGL driver boundary (in setSwapInterval) in
1361+ clients and tests (LP: #1659298)
1362+ . Support display scaling slider in unity8 (LP: #1645372)
1363+
1364+ -- Cemil Azizoglu <cemil.azizoglu@canonical.com> Thu, 26 Jan 2017 23:29:33 +0000
1365+
1366+mir (0.25.0) UNRELEASED; urgency=medium
1367+
1368+ * New upstream release 0.25.0 (https://launchpad.net/mir/+milestone/0.25.0)
1369+ - ABI summary:
1370+ . mirclient ABI unchanged at 9
1371+ . mirserver ABI bumped to 42
1372+ . mircommon ABI bumped to 7
1373+ . mirplatform ABI bumped to 14
1374+ . mirprotobuf ABI unchanged at 3
1375+ . mirplatformgraphics ABI bumped to 11
1376+ . mirclientplatform ABI unchanged at 5
1377+ . mirinputplatform ABI bumped to 6
1378+ . mircore ABI added, at version 1
1379+ - Enhancements:
1380+ . Added pointer confinement support
1381+ . Identify Raspberry Pi output types correctly
1382+ . Added dead key and compose key support
1383+ . Added gamma support for KMS hardware
1384+ . Added yakkety and zesty gcc-6 support
1385+ . Added surface passthrough support for fullscreen clients of nested
1386+ servers
1387+ . Introduced a new library `libmircore'
1388+ . Began migrating from Protobuf to Cap'n Proto starting with events
1389+ . Began support for VirtualBox (servers now start instead of crashing
1390+ but full support for GL clients is still missing)
1391+ . Began support for high precision frame timing, implemented for the
1392+ KMS, Android and X11 backends so far
1393+ . Added --display-report support for the X11 backend
1394+ . Improved reliability of `mirvanity' latency test tool
1395+ . Moved to using the CSS cursor naming scheme internally, although
1396+ the old symbolic indentifiers remain unchanged and still work
1397+ . Added refresh rate to MirSurfaceOutputEvent
1398+ . Many improvements to automated test quality and coverage
1399+ . Smoother desktop zoom using mir_proving_server (Super + two fingers)
1400+ - Bugs fixed:
1401+ . FTBFS On Zesty: invalid use of
1402+ 'struct native_handle' (LP: #1638774)
1403+ . libmirclient-debug-extension-dev install debug/surface.h
1404+ twice (LP: #1639153)
1405+ . Mir crashes on virtual box drmModeCrtcSetGamma
1406+ Function not implemented (LP: #1638220)
1407+ . Flickering in mir_demo_client_multistream (LP: #1635273)
1408+ . Camera apps (camera & vanity) never exit (LP: #1635010)
1409+ . Clients cannot connect when MIR_SOCKET="" (LP: #1634508)
1410+ . mirtest-dev packaging fails to sepcify boost depends (LP: #1633537)
1411+ . cursor.h is unclear about mir_diagonal_resize_* (LP: #1626924)
1412+ . Inconsistent underscores in cursor names (LP: #1632617)
1413+ . [regression] Accidental libmircommon.so.6 break (LP: #1617865)
1414+ . [regression] mir demo server fails to start with mx4 (LP: #1615703)
1415+ . [regression] Trust prompt now shown when starting camera (LP: #1612256)
1416+ . [regression] make abi-check fails to build (LP: #1626866)
1417+ . Nested servers prevent overlays or fullscreen bypass (LP: #1262116)
1418+ . Failed to get PRIME fd from gbm bo (LP: #1607812)
1419+ . Mir-on-X is difficult to use on 1366x768 laptop (LP: #1590959)
1420+ . Remove useless message 'Surface 0 DPI' in demos (LP: #1559831)
1421+ . Mir fails to cross-build with newer sbuild (LP: #1628507)
1422+ . Infinite loop in AbstractShell::focus_next_session (LP: #1625401)
1423+ . Destroying a presentation chain doesn't trigger ownership
1424+ notification to client (LP: #1626503)
1425+ . Keyboard layout not applied on the shell (LP: #1626435)
1426+ . Warning, No syntax specified for the proto file (LP: #1624971)
1427+ . display-report=log reports vsync on non-existent output number
1428+ (LP: #1621352)
1429+ . libmirserver-dev missing uuid-dev depends (LP: #1617435)
1430+ . debian/control missing epoxy (LP: #1617256)
1431+ . Downstreams need to disable clang diagnostic "-Wreturn-type-clinkage"
1432+ to build against public headers (LP: #1615587)
1433+ . mirtest-dev: mock_display_configuration.h uses mg namespace without
1434+ using it (LP: #1614983)
1435+ . FTBFS using clang (LP: #1609612)
1436+ . mesa-kms doesn't fall back to using software cursor if hardware
1437+ cursor is unavailable (LP: #1610054)
1438+ . StubGraphicsPlatform::create_display() leaves a dubious state
1439+ (LP: #1611337)
1440+ . Mir build/tests fail with gcc-6 and LTO (LP: #1610215)
1441+ . Cross compiling on xenial fails (LP: #1609329)
1442+ . Building with -DMIR_PLATFORM=anroid fails (LP: #1609916)
1443+ . unity-system-compositor crashes on start-up with "Mir fatal error:
1444+ Failed to schedule page flip" (LP: #1584894)
1445+ . mir_connection_create_spec_for_tooltip doesn't meet requirements
1446+ (LP: #1603922)
1447+ . Updating surface size/location needs to update the pointer confinement
1448+ (LP: #1604673)
1449+ . ServerConfigurationOption is not ptest safe (LP: #1607351)
1450+ . HWC's vsync_signal_on is never called when using HWC 1.0 (LP: #1613373)
1451+ . mir_connection_create_spec_for_tooltip does not set aux_rect
1452+ (LP: #1632335)
1453+ . VMware virtual connector recognized by Mir as "unknown" (LP: #1248072)
1454+ . Fix code to match the documentation of CoordinateTranslator - vis "It is
1455+ acceptable ...[to] throw a std::runtime_error" (LP: #1641166)
1456+ . Test timeout MesaDisplayConfigurationTests.* (LP: #1613352)
1457+ . Tests fail when built against lp:mir (LP: #1621917)
1458+ . CI failure MultiThreadedCompositor (LP: #1595940)
1459+ . CI failure in DisplayConfiguration (LP: #1563210)
1460+ . CI failure NestedServer.given_client_set_display_configuration*
1461+ (LP: #1617036)
1462+ . CI failure on krillin in NestedServer.* testes (LP: #1628828)
1463+ . CI failure: PosixRWMutex hangs (LP: #1633920)
1464+ . googletest 1.8.0-2 (on zesty) breaks existing builds [add_library
1465+ cannot create target "gmock" ...] (LP: #1644062)
1466+
1467+ -- Brandon Schaefer <brandon.schaefer@canonical.com> Sat, 03 Dec 2016 12:42:33 +0000
1468+
1469+mir (0.24.1) UNRELEASED; urgency=medium
1470+
1471+ * New upstream release 0.24.1 (https://launchpad.net/mir/+milestone/0.24.1)
1472+ - ABI summary:
1473+ . All ABI numbers remain unchanged.
1474+ . mircommon ABI at 6, but now including a symbol misplaced in 0.24.0
1475+ - Bugs fixed:
1476+ . mirserver ignored further keymap configuration changes after a keyboard
1477+ is configured (LP: #1626435)
1478+ . fix for libmircommon.so.6 ABI break: version stanza of
1479+ mir::dispatch::ReadableFd* moved to newer version (LP: #1617865)
1480+ . clang builds fail (again) (LP: #1609612)
1481+ . Valgrind errors in NesterServer.* cause subsequent tests
1482+ (ServerDisconnect, ServerStartup, UnresponsiveClient) to fail
1483+ (LP: #1612012)
1484+ . Break potentially infinite loop in search for next session to focus
1485+ (LP: #1625401)
1486+
1487+ -- Andreas Pokorny <andreas.pokorny@canonical.com> Wed, 28 Sep 2016 12:09:49 +0000
1488+
1489+mir (0.24.0) UNRELEASED; urgency=medium
1490+
1491+ * New upstream release 0.24.0 (https://launchpad.net/mir/+milestone/0.24.0)
1492+ - ABI summary:
1493+ . mirclient ABI unchanged at 9
1494+ . mirserver ABI bumped to 41
1495+ . mircommon ABI unchanged at 6
1496+ . mirplatform ABI bumped to 12
1497+ . mirprotobuf ABI unchanged at 3
1498+ . mirplatformgraphics ABI bumped to 10
1499+ . mirclientplatform ABI unchanged at 5
1500+ . mirinputplatform ABI unchanged at 5
1501+ - Enhancements:
1502+ . Added a new tool 'mirvanity' which can use a high speed video camera
1503+ to measure client-to-screen latency.
1504+ . Added (build-time) support for desktop full OpenGL servers (disabled
1505+ by default in favor of GLESv2).
1506+ . Introduced new buffer semantics (NBS) and enabled it by default.
1507+ . Avoided using libmirserver in mir_demo_standalone_render_overlays,
1508+ making bringup traces less cluttered.
1509+ . Removed TilingWindowManager from example servers.
1510+ . Added two new mir_*_performance_test tools that are run as part of
1511+ 'mir_performance_tests'.
1512+ . Added pointer confinement to the client API.
1513+ . Added new platform supporting software EGLStreams.
1514+ . Added an input platform that the nested server can use.
1515+ . Allow configuration of the application_not_responding_detector
1516+ . Handle server-side keymapping using XKBMapper.
1517+ . Remove the offscreen display.
1518+ . Add callback option to notify shells that the server is about to stop.
1519+ . Add logging for ANativeWindow events on Android.
1520+ - Bugs fixed:
1521+ . usage of std:call_once in mirclient causes TLS collisions with some
1522+ android devices (LP: #1599867)
1523+ . AltGr not working on external keyboards (LP: #1565236)
1524+ . [regression] unity8 fails to start when built with 0.24 series (lp:mir)
1525+ (LP: #1597717)
1526+ . CI failure in MirSurfaceVisibilityEvent.exposed_received_when_surface_
1527+ raised_over_occluding_surface [called twice - over-saturated and active]
1528+ (LP: #1556045)
1529+ . package-built mir_demo_server does not start on device (LP: #1577357)
1530+ . During surface creation, first stream in spec becomes default stream.
1531+ (LP: #1577967)
1532+ . mouse is getting stuck on a phantom edge (LP: #1580774)
1533+ . [testsfail] in MirSurfaceVisibilityEvent.exposed_received_when_surface_
1534+ raised_over_occluding_surface [never called] (LP: #1581385)
1535+ . [enhancement] Add support for full OpenGL compositing (LP: #1420581)
1536+ . [testsfail] ServerSignal.terminate_handler_is_called_for_SIGINT|SIGTERM
1537+ (LP: #1570353)
1538+ . [testsfail] ClientLatency.triple_buffered_client_has_less_than_two_
1539+ frames_latency (LP: #1576690)
1540+ . [testsfail] NestedServer.when_monitor_plugged_in_client_is_notified_of_
1541+ new_display_configuration (LP: #1576760)
1542+ . mir server crashed in what(): drmModeMoveCursor failed (returned -13)
1543+ (LP: #1579630)
1544+ . mirtest-dev is hard to use as the objects used are compiled with LTO
1545+ (LP: #1583536)
1546+ . [testsfail] ClientLogging.reports_performance [Value of: lag]
1547+ (LP: #1583970)
1548+ . [ FAILED ] ClientLogging.reports_performance (Value of: nbuffers)
1549+ (LP: #1584603)
1550+ . [ FAILED ] ClientLogging.reports_performance (Value of: render)
1551+ (LP: #1584605)
1552+ . ClientCredsTestFixture.session_authorizer_receives_pid_of_connecting_
1553+ clients failure (LP: #1587604)
1554+ . Mir on X11 ignores mir::graphics::GLConfig depth & stencil buffer size
1555+ (LP: #1589632)
1556+ . Need to support pointer confinement (LP: #1590099)
1557+ . [tests] given_nested_server_set_base_display_configuration_when_
1558+ monitor_plugged_in_configuration_is_reset fails (LP: #1591354)
1559+ . CI failure in DemoInProcessServerWithStubClientPlatform.surface_
1560+ creation_does_not_leak_fds (LP: #1598802)
1561+ . Screen is squashed/distorted when rotated in Mir-on-X11 (LP: #1577262)
1562+ . --display-report=log shows some invalid uninitialized EGL attribute
1563+ values (LP: #1582066)
1564+ . mir_demo_client_eglplasma falls back to software rendering on i915
1565+ (Intel Atoms), which explains why it's so slow (LP: #1583532)
1566+ . [regression] x11 platform only draws to a small part of the x11 window
1567+ (LP: #1598267)
1568+ . mir ftbfs in yakkety builders (LP: #1600343)
1569+ . Autolanding keeps failing: mock_egl.h:89:7: error: type 'struct
1570+ MockEGL' violates one definition rule [-Werror=odr] (LP: #1603303)
1571+ . [regression] The Super/Windows key doesn't work any more (LP: #1602966)
1572+ . mir_acceptance_tests.bin: double free or corruption (fasttop)
1573+ (LP: #1603114)
1574+ . ftbfs in linking libmir-test-assist.a in xenial+overlay and
1575+ yakkety+overlay (LP: #1601810)
1576+ . [testsfail] failure in NestedInput.on_input_device_state_nested_*
1577+ (LP: #1602646)
1578+ . mirtest-dev provides an incorrect .pc file (LP: #1603080)
1579+ . mir_test_framework::server_platform_path(),
1580+ mir_test_framework::server_platform() don't support use in a downstream
1581+ test built against mir-test-assist (LP: #1603091)
1582+ . Servers based on Mir need a hook to execute code when the server is
1583+ closing (LP: #1593655)
1584+ . Android graphics platform doesn't get packaged for arm64 (LP: #157866)
1585+ . memory leaks in unit tests on android (LP: #1253486)
1586+ . Physical "screen" size reported by the X11 backend is same as pixel
1587+ count, fixing dpi to 25.4 (LP: #1596051)
1588+ . Mir build and test failures with gcc-6 and LTO (LP: #1610215)
1589+ . [regression] Trust prompt not shown when starting camera (LP: #1612256)
1590+
1591+ -- Kevin DuBois <kevin.dubois@canonical.com> Mon, 15 Aug 2016 16:29:03 +0000
1592+
1593+mir (0.23.5) UNRELEASED; urgency=medium
1594+
1595+ * No-change rebuild for boost soname change.
1596+
1597+ -- Matthias Klose <doko@ubuntu.com> Thu, 04 Aug 2016 08:25:48 +0000
1598+
1599+mir (0.23.5) UNRELEASED; urgency=medium
1600+
1601+ * New upstream release 0.23.5 (https://launchpad.net/mir/+milestone/0.23.5)
1602+ - ABI summary:
1603+ . No ABI changes in any libraries.
1604+ - Enhancements:
1605+ . Enable new buffer semantics (NBS) by default.
1606+ - Bugs fixed:
1607+ . Mir fails to build in: COMPOSITOR_TRACE_CALL (LP: #1584601)
1608+ . [testsfail] Process.* (memory leak in libhybris generated when probing
1609+ android platforms) (LP: #1602199)
1610+ . unity8/libmirclient gives up and terminates prematurely with
1611+ "std::exception::what: disconnected: no new buffers" via
1612+ ExchangeSemantics::submit() (LP: #1506358)
1613+
1614+ -- Kevin DuBois <kdub432@gmail.com> Fri, 29 Jul 2016 11:31:02 +0000
1615+
1616+mir (0.23.4) UNRELEASED; urgency=medium
1617+
1618+ * New upstream release 0.23.4 (https://launchpad.net/mir/+milestone/0.23.4)
1619+ - ABI summary:
1620+ . No ABI changes in any libraries. Bugfix release only.
1621+ - Bugs fixed:
1622+ . Android graphics platform doesn't get packaged for arm64 (LP: #1579866)
1623+
1624+ -- Cemil Azizoglu <cemil.azizoglu@canonical.com> Tue, 19 Jul 2016 17:49:47 +0000
1625+
1626+mir (0.23.3) UNRELEASED; urgency=medium
1627+
1628+ * New upstream release 0.23.3 (https://launchpad.net/mir/+milestone/0.23.3)
1629+ - ABI summary:
1630+ . No ABI changes in any libraries. Bugfix release only.
1631+ - Bugs fixed:
1632+ . usage of std:call_once in mirclient causes TLS collisions with some
1633+ android devices (LP: #1599867)
1634+
1635+ -- Alberto Aguirre <alberto.aguirre@canonical.com> Thu, 07 Jul 2016 17:07:38 +0000
1636+
1637+mir (0.23.2) UNRELEASED; urgency=medium
1638+
1639+ * New upstream release 0.23.2 (https://launchpad.net/mir/+milestone/0.23.2)
1640+ - ABI summary:
1641+ . No ABI changes in any libraries. Bugfix release only.
1642+ - Bugs fixed:
1643+ . Refine Android display format selection LP: #1584657
1644+
1645+ -- Cemil Azizoglu <cemil.azizoglu@canonical.com> Fri, 24 Jun 2016 19:56:05 +0000
1646+
1647+mir (0.23.1) UNRELEASED; urgency=medium
1648+
1649+ [ Kevin DuBois ]
1650+ * New upstream release 0.23.1 (https://launchpad.net/mir/+milestone/0.23.1)
1651+ - ABI summary:
1652+ . No ABI changes in any libraries. Bugfix release only.
1653+ - Bugs fixed:
1654+ . Turn off NBS as workaround to LP: #1590765
1655+
1656+ [ Daniel van Vugt, Kevin DuBois ]
1657+ * Mir 0.23.1 bugfix release. Fix flickering issue seen with onscreen
1658+ keyboard (LP: 1590765)
1659+
1660+ -- Kevin DuBois <kdub432@gmail.com> Fri, 10 Jun 2016 22:40:55 +0000
1661+
1662+mir (0.23.0) UNRELEASED; urgency=medium
1663+
1664+ [ Kevin DuBois ]
1665+ * New upstream release 0.23.0 (https://launchpad.net/mir/+milestone/0.23.0)
1666+ - ABI summary:
1667+ . mirclient ABI unchanged at 9
1668+ . mirserver ABI bumped to 40
1669+ . mircommon ABI bumped at 6
1670+ . mirplatform ABI unchanged at 11
1671+ . mirprotobuf ABI unchanged at 3
1672+ . mirplatformgraphics ABI unchanged at 9
1673+ . mirclientplatform ABI unchanged at 5
1674+ . mirinputplatform ABI unchanged at 5
1675+ - Enhancements:
1676+ . Enable internal usage of more flexible graphics buffer submission,
1677+ precursing client API additions.
1678+ - Bug fixes:
1679+ . Potential NBS performance loss after resize (LP: #1579076)
1680+ . Performance loss with NBS and overlays on (LP: #1578159)
1681+ . Mir crashes with useless backtrace when mg::Platform methods throw
1682+ (LP: #1553549)
1683+ . Virtual output is not removed when screencast client disappears
1684+ (LP: #1573572)
1685+ . Can't VT switch from mir_demo_server (any more) (LP: #1576260)
1686+ . mir_demo_server(_minimal): Window movement/resizing stops responding
1687+ when the cursor leaves the surface, and can lead to windows 1px wide
1688+ and unrecoverable. (LP: #1447886)
1689+ . Virtual display output configuration is set to LVDS (LP: #1573782)
1690+ . Mir-on-X11 doesn't pass Alt+primary button drag to Mir (LP: #1575765)
1691+ . Mir-on-X11 breaks mir_proving_server resize logic (LP: #1575192)
1692+ . Resizing can crash mir_demo_server (LP: #1575211)
1693+ . [regression] Cursor stops at phantom edge on M10 and N7 (LP: #1580774)
1694+ . [regression] MIR_CLIENT_PERF_REPORT is showing bogus render times and
1695+ buffer lag (LP: #1581368)
1696+ . Test failures in ClientLogging.reports_performance due to the above
1697+ fix. (LP: #1583970, LP: #1584603, LP: #1584605)
1698+ . Do not throw when creating some objects under HWC 1.5 (LP: #1583086)
1699+ . Correct black frame issue under Xmir (LP: #1584784)
1700+
1701+ [ Tarmac, Kevin DuBois <kevin.dubois@canonical.com>, Daniel van Vugt <daniel.van.vugt@canonical.com>, Andreas Pokorny <andreas.pokorny@canonical.com>, Alberto Aguirre ]
1702+ * 0.23.0 Mir release
1703+
1704+ -- Kevin DuBois <kdub432@gmail.com> Thu, 02 Jun 2016 13:18:03 +0000
1705+
1706+mir (0.22.1+16.04.20160516.2-0ubuntu1) xenial; urgency=medium
1707+
1708+ [ Andreas Pokorny ]
1709+ * New upstream release 0.22.1 (https://launchpad.net/mir/+milestone/0.22.1)
1710+ - ABI summary:
1711+ . No ABI changes in any libraries. Bugfix release only.
1712+ - Bugs fixed:
1713+ . [regression] Cursor stops at phantom edge on M10 and N7 (LP: 1580774)
1714+
1715+ [ CI Train Bot ]
1716+ * No-change rebuild.
1717+
1718+ -- MichaƂ Sawicz <michal.sawicz@canonical.com> Mon, 16 May 2016 15:36:50 +0000
1719+
1720+mir (0.22.0+16.04.20160422.2-0ubuntu1) xenial; urgency=medium
1721+
1722+ [ Alberto Aguirre ]
1723+ * New upstream release 0.22.0 (https://launchpad.net/mir/+milestone/0.22.0)
1724+ - ABI summary: Only servers need rebuilding
1725+ . mirclient ABI unchanged at 9
1726+ . mirserver ABI bumped to 39
1727+ . mircommon ABI unchanged at 5
1728+ . mirplatform ABI unchanged at 11
1729+ . mirprotobuf ABI unchanged at 3
1730+ . mirplatformgraphics ABI bumped to 9
1731+ . mirclientplatform ABI unchanged at 5
1732+ . mirinputplatform ABI unchanged at 5
1733+ - Enhancements:
1734+ . New screencast creation API which allows a client to specify
1735+ number of capture buffers and mirroring mode
1736+ . HWC 1.5 support for android based platforms
1737+ - Bug fixes:
1738+ . [regression] Black screen: Mir hangs and then crashes on startup/login
1739+ due to reading from /dev/random (LP: #1536662)
1740+ . CI test failures on xenial amd64 due to valgrind errors following system
1741+ upgrade to ld-2.23 (LP: #1560415)
1742+ . [regression] failure in CI on ThreadedDispatcherSignalTest.keeps_
1743+ dispatching_after_signal_interruption under Valgrind (LP: #1499229)
1744+ . [regression] Cursor mostly does not move at all in response to slow
1745+ mouse movement, but then sometimes jumps (LP: #1528109)
1746+ . Sometimes devices don't suspend - display turns back on immediately
1747+ (LP: #1549701)
1748+ . CI failure in NestedServer.display_orientation_changes_are_forwarded_to_
1749+ host (LP: #1555074)
1750+ . NBS fullscreen overlay benchmark performance is much lower than
1751+ BufferQueue (LP: #1557962)
1752+ . server crashes when shutting down in smoke tests (LP: #1560900)
1753+ . [regression] [OTA-10] Spread animation stutters badly with only a few
1754+ apps opened (LP: #1563287)
1755+ . nested mir_demo_server crashes on startup (LP: #1570362)
1756+ . mir_acceptance_tests & mir_unit_tests dump core files (even when
1757+ everything passes) (LP: #1342092)
1758+ . [regression] Tests fail with: std::exception::what: Failed to read from
1759+ device: /dev/random after: 30 seconds (LP: #1541188)
1760+ . [testsfail] ClientLatency.throttled_input_rate_yields_lower_latency
1761+ (LP: #1554572)
1762+ . NBS causes sudden loss of performance after un-fullscreening a swap
1763+ interval zero client (LP: #1557442)
1764+ . surface creation with non-default buffer streams is ignored by server
1765+ (LP: #1563278)
1766+ . [regression] mir_integration_tests take significantly longer (27x
1767+ longer) when running with ctest (LP: #1568966)
1768+ . CI failure in TestClientInput.receives_one_touch_event_per_frame
1769+ (LP: #1570698)
1770+ . Racy shutdown in mir_demo_client_scroll causes SEGFAULT (LP: #1560943)
1771+ . mir_demo_client_target does not quit after SIGTERM/SIGINT (LP: #1562340)
1772+ . ClientLogging.reports_performance fails under moderate load, is badly
1773+ named (LP: #1563148)
1774+ . nested mir_demo_server crashes on mouse move when --print-input-events
1775+ active (LP: #1570357)
1776+ . Virtual output is not removed when screencast client disappears
1777+ (LP: #1573572)
1778+ . Virtual display output configuration is set to LVDS (LP: #1573782)
1779+
1780+ [ CI Train Bot ]
1781+ * No-change rebuild.
1782+
1783+ -- Alberto Aguirre <alberto.aguirre@canonical.com> Fri, 22 Apr 2016 22:38:16 +0000
1784+
1785 mir (0.21.0+16.04.20160330-0ubuntu1) xenial; urgency=medium
1786
1787 [ Alberto Aguirre ]
1788
1789=== modified file 'debian/control'
1790--- debian/control 2016-03-18 19:40:56 +0000
1791+++ debian/control 2017-06-05 10:46:31 +0000
1792@@ -4,7 +4,6 @@
1793 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
1794 XSBC-Original-Maintainer: Thomas Voß <thomas.voss@canonical.com>
1795 Build-Depends: cmake,
1796- cmake-data,
1797 pkg-config,
1798 debhelper (>= 9),
1799 doxygen,
1800@@ -19,23 +18,24 @@
1801 libdrm-dev,
1802 libegl1-mesa-dev,
1803 libgles2-mesa-dev,
1804+ libgl1-mesa-dev [amd64 i386],
1805 libgbm-dev,
1806 libglm-dev,
1807 libprotobuf-dev,
1808 pkg-config,
1809- android-headers (>=4.4.2) [i386 amd64 armhf],
1810+ android-headers-23,
1811 libhardware-dev [i386 amd64 armhf],
1812 libandroid-properties-dev [i386 amd64 armhf],
1813 libgoogle-glog-dev,
1814 liblttng-ust-dev,
1815- libxkbcommon-dev,
1816+ libxkbcommon-dev (>= 0.5),
1817 libumockdev-dev (>= 0.6),
1818 umockdev (>= 0.8.7),
1819 libudev-dev,
1820 libgtest-dev,
1821 google-mock (>= 1.6.0+svn437),
1822 # only enable valgrind once it's been tested to work on each architecture:
1823- valgrind [amd64 i386 armhf],
1824+ valgrind [amd64 i386 armhf arm64],
1825 libglib2.0-dev,
1826 libfreetype6-dev,
1827 abi-compliance-checker,
1828@@ -45,6 +45,9 @@
1829 python3:any,
1830 dh-python,
1831 nettle-dev,
1832+ libcapnp-dev,
1833+ capnproto,
1834+ libepoxy-dev,
1835 Standards-Version: 3.9.4
1836 Homepage: https://launchpad.net/mir
1837 # If you aren't a member of ~mir-team but need to upload packaging changes,
1838@@ -67,7 +70,7 @@
1839
1840 #TODO: Packaging infrastructure for better dependency generation,
1841 # ala pkg-xorg's xviddriver:Provides and ABI detection.
1842-Package: libmirserver38
1843+Package: libmirserver43
1844 Section: libs
1845 Architecture: linux-any
1846 Multi-Arch: same
1847@@ -80,7 +83,7 @@
1848 .
1849 Contains the shared library needed by server applications for Mir.
1850
1851-Package: libmirplatform11
1852+Package: libmirplatform15
1853 Section: libs
1854 Architecture: linux-any
1855 Multi-Arch: same
1856@@ -94,12 +97,25 @@
1857 Contains the shared libraries required for the Mir server to interact with
1858 the underlying hardware platform.
1859
1860+Package: libmircore-dev
1861+Section: libdevel
1862+Architecture: linux-any
1863+Multi-Arch: same
1864+Pre-Depends: ${misc:Pre-Depends}
1865+Depends: ${misc:Depends},
1866+Description: Display server for Ubuntu - development headers
1867+ Mir is a display server running on linux systems, with a focus on efficiency,
1868+ robust operation and a well-defined driver model.
1869+ .
1870+ Contains header files required for server and/or client development.
1871+
1872 Package: libmircommon-dev
1873 Section: libdevel
1874 Architecture: linux-any
1875 Multi-Arch: same
1876 Pre-Depends: ${misc:Pre-Depends}
1877-Depends: libmircommon5 (= ${binary:Version}),
1878+Depends: libmircommon7 (= ${binary:Version}),
1879+ libmircore-dev (= ${binary:Version}),
1880 libprotobuf-dev (>= 2.4.1),
1881 libxkbcommon-dev,
1882 ${misc:Depends},
1883@@ -116,8 +132,8 @@
1884 Architecture: linux-any
1885 Multi-Arch: same
1886 Pre-Depends: ${misc:Pre-Depends}
1887-Depends: libmirplatform11 (= ${binary:Version}),
1888- libmircommon-dev,
1889+Depends: libmirplatform15 (= ${binary:Version}),
1890+ libmircommon-dev (= ${binary:Version}),
1891 libboost-program-options-dev,
1892 ${misc:Depends},
1893 Breaks: libmirplatform (<< 0.6)
1894@@ -133,10 +149,11 @@
1895 Architecture: linux-any
1896 Multi-Arch: same
1897 Pre-Depends: ${misc:Pre-Depends}
1898-Depends: libmirserver38 (= ${binary:Version}),
1899+Depends: libmirserver43 (= ${binary:Version}),
1900 libmirplatform-dev (= ${binary:Version}),
1901 libmircommon-dev (= ${binary:Version}),
1902 libglm-dev,
1903+ uuid-dev,
1904 ${misc:Depends},
1905 Description: Display server for Ubuntu - development headers
1906 Mir is a display server running on linux systems, with a focus on efficiency,
1907@@ -152,6 +169,9 @@
1908 Depends: libmircommon-dev (= ${binary:Version}),
1909 libmirplatform-dev (= ${binary:Version}),
1910 libmirserver-dev (= ${binary:Version}),
1911+ mir-renderer-gl-dev (= ${binary:Version}),
1912+ libboost-filesystem-dev,
1913+ libboost-system-dev,
1914 ${misc:Depends},
1915 Description: Display server for Ubuntu - test development headers and library
1916 Mir is a display server running on linux systems, with a focus on efficiency,
1917@@ -287,7 +307,20 @@
1918 .
1919 Contains a tool for checking the graphics components of android devices.
1920
1921-Package: libmircommon5
1922+Package: libmircore1
1923+Section: libs
1924+Architecture: linux-any
1925+Multi-Arch: same
1926+Pre-Depends: ${misc:Pre-Depends}
1927+Depends: ${misc:Depends},
1928+ ${shlibs:Depends},
1929+Description: Display server for Ubuntu - shared library
1930+ Mir is a display server running on linux systems, with a focus on efficiency,
1931+ robust operation and a well-defined driver model.
1932+ .
1933+ Contains the shared libraries required for the Mir server and client.
1934+
1935+Package: libmircommon7
1936 Section: libs
1937 Architecture: linux-any
1938 Multi-Arch: same
1939@@ -301,7 +334,9 @@
1940 Contains the shared libraries required for the Mir server and client.
1941
1942 # Longer-term these drivers should move out-of-tree
1943-Package: mir-platform-graphics-mesa-x8
1944+# Yes, this really should be x12. An unfortunate side-effect of our package
1945+# naming scheme...
1946+Package: mir-platform-graphics-mesa-x12
1947 Section: libs
1948 Architecture: linux-any
1949 Multi-Arch: same
1950@@ -315,7 +350,7 @@
1951 Contains the shared libraries required for the Mir server to interact with
1952 the X11 platform using the Mesa drivers.
1953
1954-Package: mir-platform-graphics-mesa-kms8
1955+Package: mir-platform-graphics-mesa-kms12
1956 Section: libs
1957 Architecture: linux-any
1958 Multi-Arch: same
1959@@ -329,7 +364,7 @@
1960 Contains the shared libraries required for the Mir server to interact with
1961 the hardware platform using the Mesa drivers.
1962
1963-Package: mir-platform-graphics-android8
1964+Package: mir-platform-graphics-android12
1965 Section: libs
1966 Architecture: i386 amd64 armhf
1967 Multi-Arch: same
1968@@ -343,7 +378,7 @@
1969 Contains the shared libraries required for the Mir server to interact with
1970 the hardware platform using the Android drivers.
1971
1972-Package: mir-platform-input-evdev5
1973+Package: mir-platform-input-evdev6
1974 Section: libs
1975 Architecture: linux-any
1976 Multi-Arch: same
1977@@ -376,7 +411,7 @@
1978 Architecture: linux-any
1979 Multi-Arch: same
1980 Pre-Depends: ${misc:Pre-Depends}
1981-Depends: libmirclient-dev,
1982+Depends: libmirclient-dev (= ${binary:Version}),
1983 ${misc:Depends},
1984 Description: Display server for Ubuntu - client platform library for Mesa development files
1985 Mir is a display server running on linux systems, with a focus on efficiency,
1986@@ -405,10 +440,10 @@
1987 Multi-Arch: same
1988 Pre-Depends: ${misc:Pre-Depends}
1989 Depends: ${misc:Depends},
1990- mir-platform-graphics-mesa-kms8,
1991- mir-platform-graphics-mesa-x8,
1992+ mir-platform-graphics-mesa-kms12,
1993+ mir-platform-graphics-mesa-x12,
1994 mir-client-platform-mesa5,
1995- mir-platform-input-evdev5,
1996+ mir-platform-input-evdev6,
1997 Description: Display server for Ubuntu - desktop driver metapackage
1998 Mir is a display server running on linux systems, with a focus on efficiency,
1999 robust operation and a well-defined driver model.
2000@@ -422,9 +457,9 @@
2001 Multi-Arch: same
2002 Pre-Depends: ${misc:Pre-Depends}
2003 Depends: ${misc:Depends},
2004- mir-platform-graphics-android8,
2005+ mir-platform-graphics-android12,
2006 mir-client-platform-android5,
2007- mir-platform-input-evdev5,
2008+ mir-platform-input-evdev6,
2009 Description: Display server for Ubuntu - android driver metapackage
2010 Mir is a display server running on linux systems, with a focus on efficiency,
2011 robust operation and a well-defined driver model.
2012@@ -477,6 +512,20 @@
2013 tests for Mir. It also contains a few interesting performance tests written
2014 using the framework.
2015
2016+Package: libmirrenderer-dev
2017+Section: libdevel
2018+Architecture: linux-any
2019+Multi-Arch: same
2020+Pre-Depends: ${misc:Pre-Depends}
2021+Depends: ${misc:Depends},
2022+ libmircommon-dev (= ${binary:Version}),
2023+ libmirplatform-dev (= ${binary:Version})
2024+Description: Display server for Ubuntu - Renderer development files
2025+ Mir is a display server running on linux systems, with a focus on efficiency,
2026+ robust operation and a well-defined driver model.
2027+ .
2028+ Contains header files required for renderer development.
2029+
2030 Package: mir-renderer-gl-dev
2031 Section: libdevel
2032 Architecture: linux-any
2033
2034=== modified file 'debian/copyright'
2035--- debian/copyright 2016-01-25 17:28:12 +0000
2036+++ debian/copyright 2017-06-05 10:46:31 +0000
2037@@ -1,4 +1,4 @@
2038-Format: http://dep.debian.net/deps/dep5/
2039+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
2040 Upstream-Name: Mir
2041 Upstream-Contact: Thomas Voß <thomas.voss@canonical.com>
2042 Source: http://launchpad.net/mir
2043
2044=== modified file 'debian/libmirclient-dev.install'
2045--- debian/libmirclient-dev.install 2015-06-17 05:20:42 +0000
2046+++ debian/libmirclient-dev.install 2017-06-05 10:46:31 +0000
2047@@ -1,6 +1,8 @@
2048 usr/include/mirclient/mir_toolkit/*.h
2049+usr/include/mirclient/mir_toolkit/extensions/*.h
2050 usr/include/mirclient/mir/events/*.h
2051 usr/include/mirclient/mir/event_printer.h
2052 usr/include/mirclient/mir_toolkit/events
2053+usr/include/mirclient/mir_toolkit/rs/mir_render_surface.h
2054 usr/lib/*/pkgconfig/mirclient.pc
2055 usr/lib/*/libmirclient.so
2056
2057=== renamed file 'debian/libmircommon5.install' => 'debian/libmircommon7.install'
2058--- debian/libmircommon5.install 2015-06-17 05:20:42 +0000
2059+++ debian/libmircommon7.install 2017-06-05 10:46:31 +0000
2060@@ -1,1 +1,1 @@
2061-usr/lib/*/libmircommon.so.5
2062+usr/lib/*/libmircommon.so.7
2063
2064=== added file 'debian/libmircore-dev.install'
2065--- debian/libmircore-dev.install 1970-01-01 00:00:00 +0000
2066+++ debian/libmircore-dev.install 2017-06-05 10:46:31 +0000
2067@@ -0,0 +1,3 @@
2068+usr/include/mircore
2069+usr/lib/*/libmircore.so
2070+usr/lib/*/pkgconfig/mircore.pc
2071
2072=== added file 'debian/libmircore1.install'
2073--- debian/libmircore1.install 1970-01-01 00:00:00 +0000
2074+++ debian/libmircore1.install 2017-06-05 10:46:31 +0000
2075@@ -0,0 +1,1 @@
2076+usr/lib/*/libmircore.so.1
2077
2078=== renamed file 'debian/libmirplatform11.install' => 'debian/libmirplatform15.install'
2079--- debian/libmirplatform11.install 2016-01-29 08:18:22 +0000
2080+++ debian/libmirplatform15.install 2017-06-05 10:46:31 +0000
2081@@ -1,1 +1,1 @@
2082-usr/lib/*/libmirplatform.so.11
2083+usr/lib/*/libmirplatform.so.15
2084
2085=== added file 'debian/libmirrenderer-dev.install'
2086--- debian/libmirrenderer-dev.install 1970-01-01 00:00:00 +0000
2087+++ debian/libmirrenderer-dev.install 2017-06-05 10:46:31 +0000
2088@@ -0,0 +1,2 @@
2089+usr/include/mirrenderer/mir/renderer/*.h
2090+usr/lib/*/pkgconfig/mirrenderer.pc
2091
2092=== renamed file 'debian/libmirserver38.install' => 'debian/libmirserver43.install'
2093--- debian/libmirserver38.install 2016-03-16 06:59:01 +0000
2094+++ debian/libmirserver43.install 2017-06-05 10:46:31 +0000
2095@@ -1,1 +1,1 @@
2096-usr/lib/*/libmirserver.so.38
2097+usr/lib/*/libmirserver.so.43
2098
2099=== renamed file 'debian/mir-platform-graphics-android8.install' => 'debian/mir-platform-graphics-android12.install'
2100--- debian/mir-platform-graphics-android8.install 2016-02-02 16:03:37 +0000
2101+++ debian/mir-platform-graphics-android12.install 2017-06-05 10:46:31 +0000
2102@@ -1,1 +1,1 @@
2103-usr/lib/*/mir/server-platform/graphics-android.so.8
2104+usr/lib/*/mir/server-platform/graphics-android.so.12
2105
2106=== renamed file 'debian/mir-platform-graphics-mesa-kms8.install' => 'debian/mir-platform-graphics-mesa-kms12.install'
2107--- debian/mir-platform-graphics-mesa-kms8.install 2016-02-02 16:03:37 +0000
2108+++ debian/mir-platform-graphics-mesa-kms12.install 2017-06-05 10:46:31 +0000
2109@@ -1,1 +1,1 @@
2110-usr/lib/*/mir/server-platform/graphics-mesa-kms.so.8
2111+usr/lib/*/mir/server-platform/graphics-mesa-kms.so.12
2112
2113=== renamed file 'debian/mir-platform-graphics-mesa-x8.install' => 'debian/mir-platform-graphics-mesa-x12.install'
2114--- debian/mir-platform-graphics-mesa-x8.install 2016-02-02 16:03:37 +0000
2115+++ debian/mir-platform-graphics-mesa-x12.install 2017-06-05 10:46:31 +0000
2116@@ -1,1 +1,1 @@
2117-usr/lib/*/mir/server-platform/server-mesa-x11.so.8
2118+usr/lib/*/mir/server-platform/server-mesa-x11.so.12
2119
2120=== renamed file 'debian/mir-platform-input-evdev5.install' => 'debian/mir-platform-input-evdev6.install'
2121--- debian/mir-platform-input-evdev5.install 2016-01-29 08:18:22 +0000
2122+++ debian/mir-platform-input-evdev6.install 2017-06-05 10:46:31 +0000
2123@@ -1,1 +1,1 @@
2124-usr/lib/*/mir/server-platform/input-evdev.so.5
2125+usr/lib/*/mir/server-platform/input-evdev.so.6
2126
2127=== modified file 'debian/mir-test-tools.install'
2128--- debian/mir-test-tools.install 2016-03-16 06:59:01 +0000
2129+++ debian/mir-test-tools.install 2017-06-05 10:46:31 +0000
2130@@ -5,8 +5,12 @@
2131 usr/bin/mir_umock_acceptance_tests
2132 usr/bin/mir_integration_tests*
2133 usr/bin/mir_performance_tests
2134+usr/bin/mir_glmark2_performance_test
2135+usr/bin/mir_compositor_performance_test
2136+usr/bin/mir_client_startup_performance_test
2137 usr/bin/mir_privileged_tests
2138 usr/bin/mir_test_reload_protobuf
2139+usr/bin/mir_test_client_*
2140 usr/lib/*/mir/tools/libmirclientlttng.so
2141 usr/lib/*/mir/tools/libmirserverlttng.so
2142 usr/lib/*/mir/server-platform/graphics-dummy.so
2143
2144=== modified file 'debian/mir-utils.install'
2145--- debian/mir-utils.install 2016-03-14 10:13:49 +0000
2146+++ debian/mir-utils.install 2017-06-05 10:46:31 +0000
2147@@ -1,5 +1,6 @@
2148-usr/bin/mirping
2149+usr/bin/mirvanity
2150 usr/bin/mirout
2151 usr/bin/mirin
2152 usr/bin/mirscreencast
2153 usr/bin/mirbacklight
2154+usr/bin/mirrun
2155
2156=== modified file 'debian/rules'
2157--- debian/rules 2016-03-16 06:59:01 +0000
2158+++ debian/rules 2017-06-05 10:46:31 +0000
2159@@ -28,8 +28,13 @@
2160 COMMON_CONFIGURE_OPTIONS += -DMIR_LINK_TIME_OPTIMIZATION=ON
2161 endif
2162
2163+# Disable LTO on s390x, due to failing to build
2164+ifeq ($(DEB_HOST_ARCH),s390x)
2165+ COMMON_CONFIGURE_OPTIONS += -DMIR_LINK_TIME_OPTIMIZATION=OFF
2166+endif
2167+
2168 override_dh_auto_configure:
2169-ifeq ($(DEB_HOST_ARCH),armhf)
2170+ifneq ($(filter armhf,$(DEB_HOST_ARCH)),)
2171 dh_auto_configure -- \
2172 $(COMMON_CONFIGURE_OPTIONS) \
2173 -DMIR_RUN_ACCEPTANCE_TESTS=OFF \
2174
2175=== modified file 'doc/Doxyfile.in'
2176--- doc/Doxyfile.in 2015-02-22 07:46:25 +0000
2177+++ doc/Doxyfile.in 2017-06-05 10:46:31 +0000
2178@@ -1,106 +1,122 @@
2179-# Doxyfile 1.8.4
2180+# Doxyfile 1.8.11
2181
2182 # This file describes the settings to be used by the documentation system
2183 # doxygen (www.doxygen.org) for a project.
2184 #
2185-# All text after a double hash (##) is considered a comment and is placed
2186-# in front of the TAG it is preceding .
2187-# All text after a hash (#) is considered a comment and will be ignored.
2188+# All text after a double hash (##) is considered a comment and is placed in
2189+# front of the TAG it is preceding.
2190+#
2191+# All text after a single hash (#) is considered a comment and will be ignored.
2192 # The format is:
2193-# TAG = value [value, ...]
2194-# For lists items can also be appended using:
2195-# TAG += value [value, ...]
2196-# Values that contain spaces should be placed between quotes (" ").
2197+# TAG = value [value, ...]
2198+# For lists, items can also be appended using:
2199+# TAG += value [value, ...]
2200+# Values that contain spaces should be placed between quotes (\" \").
2201
2202 #---------------------------------------------------------------------------
2203 # Project related configuration options
2204 #---------------------------------------------------------------------------
2205
2206 # This tag specifies the encoding used for all characters in the config file
2207-# that follow. The default is UTF-8 which is also the encoding used for all
2208-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
2209-# iconv built into libc) for the transcoding. See
2210-# http://www.gnu.org/software/libiconv for the list of possible encodings.
2211+# that follow. The default is UTF-8 which is also the encoding used for all text
2212+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
2213+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
2214+# for the list of possible encodings.
2215+# The default value is: UTF-8.
2216
2217 DOXYFILE_ENCODING = UTF-8
2218
2219-# The PROJECT_NAME tag is a single word (or sequence of words) that should
2220-# identify the project. Note that if you do not use Doxywizard you need
2221-# to put quotes around the project name if it contains spaces.
2222+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
2223+# double-quotes, unless you are using Doxywizard) that should identify the
2224+# project for which the documentation is generated. This name is used in the
2225+# title of most generated pages and in a few other places.
2226+# The default value is: My Project.
2227
2228 PROJECT_NAME = Mir
2229
2230-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
2231-# This could be handy for archiving the generated documentation or
2232-# if some version control system is used.
2233+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
2234+# could be handy for archiving the generated documentation or if some version
2235+# control system is used.
2236
2237 PROJECT_NUMBER =
2238
2239 # Using the PROJECT_BRIEF tag one can provide an optional one line description
2240-# for a project that appears at the top of each page and should give viewer
2241-# a quick idea about the purpose of the project. Keep the description short.
2242+# for a project that appears at the top of each page and should give viewer a
2243+# quick idea about the purpose of the project. Keep the description short.
2244
2245 PROJECT_BRIEF =
2246
2247-# With the PROJECT_LOGO tag one can specify an logo or icon that is
2248-# included in the documentation. The maximum height of the logo should not
2249-# exceed 55 pixels and the maximum width should not exceed 200 pixels.
2250-# Doxygen will copy the logo to the output directory.
2251+# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
2252+# in the documentation. The maximum height of the logo should not exceed 55
2253+# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
2254+# the logo to the output directory.
2255
2256 PROJECT_LOGO =
2257
2258-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
2259-# base path where the generated documentation will be put.
2260-# If a relative path is entered, it will be relative to the location
2261-# where doxygen was started. If left blank the current directory will be used.
2262+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
2263+# into which the generated documentation will be written. If a relative path is
2264+# entered, it will be relative to the location where doxygen was started. If
2265+# left blank the current directory will be used.
2266
2267 OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@/doc
2268
2269-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
2270-# 4096 sub-directories (in 2 levels) under the output directory of each output
2271-# format and will distribute the generated files over these directories.
2272-# Enabling this option can be useful when feeding doxygen a huge amount of
2273-# source files, where putting all generated files in the same directory would
2274-# otherwise cause performance problems for the file system.
2275+# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
2276+# directories (in 2 levels) under the output directory of each output format and
2277+# will distribute the generated files over these directories. Enabling this
2278+# option can be useful when feeding doxygen a huge amount of source files, where
2279+# putting all generated files in the same directory would otherwise causes
2280+# performance problems for the file system.
2281+# The default value is: NO.
2282
2283 CREATE_SUBDIRS = NO
2284
2285+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
2286+# characters to appear in the names of generated files. If set to NO, non-ASCII
2287+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
2288+# U+3044.
2289+# The default value is: NO.
2290+
2291+ALLOW_UNICODE_NAMES = NO
2292+
2293 # The OUTPUT_LANGUAGE tag is used to specify the language in which all
2294 # documentation generated by doxygen is written. Doxygen will use this
2295 # information to generate all constant output in the proper language.
2296-# The default language is English, other supported languages are:
2297-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
2298-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
2299-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
2300-# messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian,
2301-# Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic,
2302-# Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
2303+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
2304+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
2305+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
2306+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
2307+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
2308+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
2309+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
2310+# Ukrainian and Vietnamese.
2311+# The default value is: English.
2312
2313 OUTPUT_LANGUAGE = English
2314
2315-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
2316-# include brief member descriptions after the members that are listed in
2317-# the file and class documentation (similar to JavaDoc).
2318-# Set to NO to disable this.
2319+# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
2320+# descriptions after the members that are listed in the file and class
2321+# documentation (similar to Javadoc). Set to NO to disable this.
2322+# The default value is: YES.
2323
2324 BRIEF_MEMBER_DESC = YES
2325
2326-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
2327-# the brief description of a member or function before the detailed description.
2328-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
2329+# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
2330+# description of a member or function before the detailed description
2331+#
2332+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
2333 # brief descriptions will be completely suppressed.
2334+# The default value is: YES.
2335
2336 REPEAT_BRIEF = YES
2337
2338-# This tag implements a quasi-intelligent brief description abbreviator
2339-# that is used to form the text in various listings. Each string
2340-# in this list, if found as the leading text of the brief description, will be
2341-# stripped from the text and the result after processing the whole list, is
2342-# used as the annotated text. Otherwise, the brief description is used as-is.
2343-# If left blank, the following values are used ("$name" is automatically
2344-# replaced with the name of the entity): "The $name class" "The $name widget"
2345-# "The $name file" "is" "provides" "specifies" "contains"
2346-# "represents" "a" "an" "the"
2347+# This tag implements a quasi-intelligent brief description abbreviator that is
2348+# used to form the text in various listings. Each string in this list, if found
2349+# as the leading text of the brief description, will be stripped from the text
2350+# and the result, after processing the whole list, is used as the annotated
2351+# text. Otherwise, the brief description is used as-is. If left blank, the
2352+# following values are used ($name is automatically replaced with the name of
2353+# the entity):The $name class, The $name widget, The $name file, is, provides,
2354+# specifies, contains, represents, a, an and the.
2355
2356 ABBREVIATE_BRIEF = "The $name class" \
2357 "The $name widget" \
2358@@ -115,8 +131,9 @@
2359 the
2360
2361 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
2362-# Doxygen will generate a detailed section even if there is only a brief
2363+# doxygen will generate a detailed section even if there is only a brief
2364 # description.
2365+# The default value is: NO.
2366
2367 ALWAYS_DETAILED_SEC = NO
2368
2369@@ -124,231 +141,276 @@
2370 # inherited members of a class in the documentation of that class as if those
2371 # members were ordinary class members. Constructors, destructors and assignment
2372 # operators of the base classes will not be shown.
2373+# The default value is: NO.
2374
2375 INLINE_INHERITED_MEMB = NO
2376
2377-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
2378-# path before files name in the file list and in the header files. If set
2379-# to NO the shortest path that makes the file name unique will be used.
2380+# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
2381+# before files name in the file list and in the header files. If set to NO the
2382+# shortest path that makes the file name unique will be used
2383+# The default value is: YES.
2384
2385 FULL_PATH_NAMES = YES
2386
2387-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
2388-# can be used to strip a user-defined part of the path. Stripping is
2389-# only done if one of the specified strings matches the left-hand part of
2390-# the path. The tag can be used to show relative paths in the file list.
2391-# If left blank the directory from which doxygen is run is used as the
2392-# path to strip. Note that you specify absolute paths here, but also
2393-# relative paths, which will be relative from the directory where doxygen is
2394-# started.
2395+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
2396+# Stripping is only done if one of the specified strings matches the left-hand
2397+# part of the path. The tag can be used to show relative paths in the file list.
2398+# If left blank the directory from which doxygen is run is used as the path to
2399+# strip.
2400+#
2401+# Note that you can specify absolute paths here, but also relative paths, which
2402+# will be relative from the directory where doxygen is started.
2403+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
2404
2405 STRIP_FROM_PATH = @CMAKE_CURRENT_SOURCE_DIR@
2406
2407-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
2408-# the path mentioned in the documentation of a class, which tells
2409-# the reader which header file to include in order to use a class.
2410-# If left blank only the name of the header file containing the class
2411-# definition is used. Otherwise one should specify the include paths that
2412-# are normally passed to the compiler using the -I flag.
2413+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
2414+# path mentioned in the documentation of a class, which tells the reader which
2415+# header file to include in order to use a class. If left blank only the name of
2416+# the header file containing the class definition is used. Otherwise one should
2417+# specify the list of include paths that are normally passed to the compiler
2418+# using the -I flag.
2419
2420 STRIP_FROM_INC_PATH =
2421
2422-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
2423-# (but less readable) file names. This can be useful if your file system
2424-# doesn't support long names like on DOS, Mac, or CD-ROM.
2425+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
2426+# less readable) file names. This can be useful is your file systems doesn't
2427+# support long names like on DOS, Mac, or CD-ROM.
2428+# The default value is: NO.
2429
2430 SHORT_NAMES = NO
2431
2432-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
2433-# will interpret the first line (until the first dot) of a JavaDoc-style
2434-# comment as the brief description. If set to NO, the JavaDoc
2435-# comments will behave just like regular Qt-style comments
2436-# (thus requiring an explicit @brief command for a brief description.)
2437+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
2438+# first line (until the first dot) of a Javadoc-style comment as the brief
2439+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
2440+# style comments (thus requiring an explicit @brief command for a brief
2441+# description.)
2442+# The default value is: NO.
2443
2444 JAVADOC_AUTOBRIEF = YES
2445
2446-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
2447-# interpret the first line (until the first dot) of a Qt-style
2448-# comment as the brief description. If set to NO, the comments
2449-# will behave just like regular Qt-style comments (thus requiring
2450-# an explicit \brief command for a brief description.)
2451+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
2452+# line (until the first dot) of a Qt-style comment as the brief description. If
2453+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
2454+# requiring an explicit \brief command for a brief description.)
2455+# The default value is: NO.
2456
2457 QT_AUTOBRIEF = NO
2458
2459-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
2460-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
2461-# comments) as a brief description. This used to be the default behaviour.
2462-# The new default is to treat a multi-line C++ comment block as a detailed
2463-# description. Set this tag to YES if you prefer the old behaviour instead.
2464+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
2465+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
2466+# a brief description. This used to be the default behavior. The new default is
2467+# to treat a multi-line C++ comment block as a detailed description. Set this
2468+# tag to YES if you prefer the old behavior instead.
2469+#
2470+# Note that setting this tag to YES also means that rational rose comments are
2471+# not recognized any more.
2472+# The default value is: NO.
2473
2474 MULTILINE_CPP_IS_BRIEF = YES
2475
2476-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
2477-# member inherits the documentation from any documented member that it
2478-# re-implements.
2479+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
2480+# documentation from any documented member that it re-implements.
2481+# The default value is: YES.
2482
2483 INHERIT_DOCS = YES
2484
2485-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
2486-# a new page for each member. If set to NO, the documentation of a member will
2487-# be part of the file/class/namespace that contains it.
2488+# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
2489+# page for each member. If set to NO, the documentation of a member will be part
2490+# of the file/class/namespace that contains it.
2491+# The default value is: NO.
2492
2493 SEPARATE_MEMBER_PAGES = NO
2494
2495-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
2496-# Doxygen uses this value to replace tabs by spaces in code fragments.
2497+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
2498+# uses this value to replace tabs by spaces in code fragments.
2499+# Minimum value: 1, maximum value: 16, default value: 4.
2500
2501 TAB_SIZE = 4
2502
2503-# This tag can be used to specify a number of aliases that acts
2504-# as commands in the documentation. An alias has the form "name=value".
2505-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
2506-# put the command \sideeffect (or @sideeffect) in the documentation, which
2507-# will result in a user-defined paragraph with heading "Side Effects:".
2508-# You can put \n's in the value part of an alias to insert newlines.
2509+# This tag can be used to specify a number of aliases that act as commands in
2510+# the documentation. An alias has the form:
2511+# name=value
2512+# For example adding
2513+# "sideeffect=@par Side Effects:\n"
2514+# will allow you to put the command \sideeffect (or @sideeffect) in the
2515+# documentation, which will result in a user-defined paragraph with heading
2516+# "Side Effects:". You can put \n's in the value part of an alias to insert
2517+# newlines.
2518
2519 ALIASES =
2520
2521 # This tag can be used to specify a number of word-keyword mappings (TCL only).
2522-# A mapping has the form "name=value". For example adding
2523-# "class=itcl::class" will allow you to use the command class in the
2524-# itcl::class meaning.
2525+# A mapping has the form "name=value". For example adding "class=itcl::class"
2526+# will allow you to use the command class in the itcl::class meaning.
2527
2528 TCL_SUBST =
2529
2530-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
2531-# sources only. Doxygen will then generate output that is more tailored for C.
2532-# For instance, some of the names that are used will be different. The list
2533-# of all members will be omitted, etc.
2534+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
2535+# only. Doxygen will then generate output that is more tailored for C. For
2536+# instance, some of the names that are used will be different. The list of all
2537+# members will be omitted, etc.
2538+# The default value is: NO.
2539
2540 OPTIMIZE_OUTPUT_FOR_C = NO
2541
2542-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
2543-# sources only. Doxygen will then generate output that is more tailored for
2544-# Java. For instance, namespaces will be presented as packages, qualified
2545-# scopes will look different, etc.
2546+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
2547+# Python sources only. Doxygen will then generate output that is more tailored
2548+# for that language. For instance, namespaces will be presented as packages,
2549+# qualified scopes will look different, etc.
2550+# The default value is: NO.
2551
2552 OPTIMIZE_OUTPUT_JAVA = NO
2553
2554 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
2555-# sources only. Doxygen will then generate output that is more tailored for
2556-# Fortran.
2557+# sources. Doxygen will then generate output that is tailored for Fortran.
2558+# The default value is: NO.
2559
2560 OPTIMIZE_FOR_FORTRAN = NO
2561
2562 # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
2563-# sources. Doxygen will then generate output that is tailored for
2564-# VHDL.
2565+# sources. Doxygen will then generate output that is tailored for VHDL.
2566+# The default value is: NO.
2567
2568 OPTIMIZE_OUTPUT_VHDL = NO
2569
2570 # Doxygen selects the parser to use depending on the extension of the files it
2571 # parses. With this tag you can assign which parser to use for a given
2572 # extension. Doxygen has a built-in mapping, but you can override or extend it
2573-# using this tag. The format is ext=language, where ext is a file extension,
2574-# and language is one of the parsers supported by doxygen: IDL, Java,
2575-# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
2576-# C++. For instance to make doxygen treat .inc files as Fortran files (default
2577-# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
2578-# that for custom extensions you also need to set FILE_PATTERNS otherwise the
2579-# files are not read by doxygen.
2580+# using this tag. The format is ext=language, where ext is a file extension, and
2581+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
2582+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
2583+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
2584+# Fortran. In the later case the parser tries to guess whether the code is fixed
2585+# or free formatted code, this is the default for Fortran type files), VHDL. For
2586+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
2587+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
2588+#
2589+# Note: For files without extension you can use no_extension as a placeholder.
2590+#
2591+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
2592+# the files are not read by doxygen.
2593
2594 EXTENSION_MAPPING =
2595
2596-# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
2597-# comments according to the Markdown format, which allows for more readable
2598+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
2599+# according to the Markdown format, which allows for more readable
2600 # documentation. See http://daringfireball.net/projects/markdown/ for details.
2601-# The output of markdown processing is further processed by doxygen, so you
2602-# can mix doxygen, HTML, and XML commands with Markdown formatting.
2603-# Disable only in case of backward compatibilities issues.
2604+# The output of markdown processing is further processed by doxygen, so you can
2605+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
2606+# case of backward compatibilities issues.
2607+# The default value is: YES.
2608
2609 MARKDOWN_SUPPORT = YES
2610
2611 # When enabled doxygen tries to link words that correspond to documented
2612 # classes, or namespaces to their corresponding documentation. Such a link can
2613-# be prevented in individual cases by by putting a % sign in front of the word
2614-# or globally by setting AUTOLINK_SUPPORT to NO.
2615+# be prevented in individual cases by putting a % sign in front of the word or
2616+# globally by setting AUTOLINK_SUPPORT to NO.
2617+# The default value is: YES.
2618
2619 AUTOLINK_SUPPORT = YES
2620
2621 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
2622-# to include (a tag file for) the STL sources as input, then you should
2623-# set this tag to YES in order to let doxygen match functions declarations and
2624-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
2625-# func(std::string) {}). This also makes the inheritance and collaboration
2626+# to include (a tag file for) the STL sources as input, then you should set this
2627+# tag to YES in order to let doxygen match functions declarations and
2628+# definitions whose arguments contain STL classes (e.g. func(std::string);
2629+# versus func(std::string) {}). This also make the inheritance and collaboration
2630 # diagrams that involve STL classes more complete and accurate.
2631+# The default value is: NO.
2632
2633 BUILTIN_STL_SUPPORT = YES
2634
2635 # If you use Microsoft's C++/CLI language, you should set this option to YES to
2636 # enable parsing support.
2637+# The default value is: NO.
2638
2639 CPP_CLI_SUPPORT = NO
2640
2641-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
2642-# Doxygen will parse them like normal C++ but will assume all classes use public
2643-# instead of private inheritance when no explicit protection keyword is present.
2644+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
2645+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
2646+# will parse them like normal C++ but will assume all classes use public instead
2647+# of private inheritance when no explicit protection keyword is present.
2648+# The default value is: NO.
2649
2650 SIP_SUPPORT = NO
2651
2652 # For Microsoft's IDL there are propget and propput attributes to indicate
2653-# getter and setter methods for a property. Setting this option to YES (the
2654-# default) will make doxygen replace the get and set methods by a property in
2655-# the documentation. This will only work if the methods are indeed getting or
2656-# setting a simple type. If this is not the case, or you want to show the
2657-# methods anyway, you should set this option to NO.
2658+# getter and setter methods for a property. Setting this option to YES will make
2659+# doxygen to replace the get and set methods by a property in the documentation.
2660+# This will only work if the methods are indeed getting or setting a simple
2661+# type. If this is not the case, or you want to show the methods anyway, you
2662+# should set this option to NO.
2663+# The default value is: YES.
2664
2665 IDL_PROPERTY_SUPPORT = YES
2666
2667 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
2668-# tag is set to YES, then doxygen will reuse the documentation of the first
2669+# tag is set to YES then doxygen will reuse the documentation of the first
2670 # member in the group (if any) for the other members of the group. By default
2671 # all members of a group must be documented explicitly.
2672+# The default value is: NO.
2673
2674 DISTRIBUTE_GROUP_DOC = NO
2675
2676-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
2677-# the same type (for instance a group of public functions) to be put as a
2678-# subgroup of that type (e.g. under the Public Functions section). Set it to
2679-# NO to prevent subgrouping. Alternatively, this can be done per class using
2680-# the \nosubgrouping command.
2681+# If one adds a struct or class to a group and this option is enabled, then also
2682+# any nested class or struct is added to the same group. By default this option
2683+# is disabled and one has to add nested compounds explicitly via \ingroup.
2684+# The default value is: NO.
2685+
2686+GROUP_NESTED_COMPOUNDS = NO
2687+
2688+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
2689+# (for instance a group of public functions) to be put as a subgroup of that
2690+# type (e.g. under the Public Functions section). Set it to NO to prevent
2691+# subgrouping. Alternatively, this can be done per class using the
2692+# \nosubgrouping command.
2693+# The default value is: YES.
2694
2695 SUBGROUPING = YES
2696
2697-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
2698-# unions are shown inside the group in which they are included (e.g. using
2699-# @ingroup) instead of on a separate page (for HTML and Man pages) or
2700-# section (for LaTeX and RTF).
2701+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
2702+# are shown inside the group in which they are included (e.g. using \ingroup)
2703+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
2704+# and RTF).
2705+#
2706+# Note that this feature does not work in combination with
2707+# SEPARATE_MEMBER_PAGES.
2708+# The default value is: NO.
2709
2710 INLINE_GROUPED_CLASSES = NO
2711
2712-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
2713-# unions with only public data fields or simple typedef fields will be shown
2714-# inline in the documentation of the scope in which they are defined (i.e. file,
2715+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
2716+# with only public data fields or simple typedef fields will be shown inline in
2717+# the documentation of the scope in which they are defined (i.e. file,
2718 # namespace, or group documentation), provided this scope is documented. If set
2719-# to NO (the default), structs, classes, and unions are shown on a separate
2720-# page (for HTML and Man pages) or section (for LaTeX and RTF).
2721+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
2722+# Man pages) or section (for LaTeX and RTF).
2723+# The default value is: NO.
2724
2725 INLINE_SIMPLE_STRUCTS = NO
2726
2727-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
2728-# is documented as struct, union, or enum with the name of the typedef. So
2729+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
2730+# enum is documented as struct, union, or enum with the name of the typedef. So
2731 # typedef struct TypeS {} TypeT, will appear in the documentation as a struct
2732 # with name TypeT. When disabled the typedef will appear as a member of a file,
2733-# namespace, or class. And the struct will be named TypeS. This can typically
2734-# be useful for C code in case the coding convention dictates that all compound
2735+# namespace, or class. And the struct will be named TypeS. This can typically be
2736+# useful for C code in case the coding convention dictates that all compound
2737 # types are typedef'ed and only the typedef is referenced, never the tag name.
2738+# The default value is: NO.
2739
2740 TYPEDEF_HIDES_STRUCT = NO
2741
2742 # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
2743-# cache is used to resolve symbols given their name and scope. Since this can
2744-# be an expensive process and often the same symbol appear multiple times in
2745-# the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too
2746-# small doxygen will become slower. If the cache is too large, memory is wasted.
2747-# The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid
2748-# range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536
2749-# symbols.
2750+# cache is used to resolve symbols given their name and scope. Since this can be
2751+# an expensive process and often the same symbol appears multiple times in the
2752+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
2753+# doxygen will become slower. If the cache is too large, memory is wasted. The
2754+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
2755+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
2756+# symbols. At the end of a run doxygen will report the cache usage and suggest
2757+# the optimal cache size from a speed point of view.
2758+# Minimum value: 0, maximum value: 9, default value: 0.
2759
2760 LOOKUP_CACHE_SIZE = 0
2761
2762@@ -356,337 +418,398 @@
2763 # Build related configuration options
2764 #---------------------------------------------------------------------------
2765
2766-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
2767-# documentation are documented, even if no documentation was available.
2768-# Private class members and static file members will be hidden unless
2769-# the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES
2770+# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
2771+# documentation are documented, even if no documentation was available. Private
2772+# class members and static file members will be hidden unless the
2773+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
2774+# Note: This will also disable the warnings about undocumented members that are
2775+# normally produced when WARNINGS is set to YES.
2776+# The default value is: NO.
2777
2778 EXTRACT_ALL = YES
2779
2780-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
2781-# will be included in the documentation.
2782+# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
2783+# be included in the documentation.
2784+# The default value is: NO.
2785
2786 EXTRACT_PRIVATE = NO
2787
2788-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
2789+# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
2790 # scope will be included in the documentation.
2791+# The default value is: NO.
2792
2793 EXTRACT_PACKAGE = NO
2794
2795-# If the EXTRACT_STATIC tag is set to YES all static members of a file
2796-# will be included in the documentation.
2797+# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
2798+# included in the documentation.
2799+# The default value is: NO.
2800
2801 EXTRACT_STATIC = NO
2802
2803-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
2804-# defined locally in source files will be included in the documentation.
2805-# If set to NO only classes defined in header files are included.
2806+# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
2807+# locally in source files will be included in the documentation. If set to NO,
2808+# only classes defined in header files are included. Does not have any effect
2809+# for Java sources.
2810+# The default value is: YES.
2811
2812 EXTRACT_LOCAL_CLASSES = NO
2813
2814-# This flag is only useful for Objective-C code. When set to YES local
2815-# methods, which are defined in the implementation section but not in
2816-# the interface are included in the documentation.
2817-# If set to NO (the default) only methods in the interface are included.
2818+# This flag is only useful for Objective-C code. If set to YES, local methods,
2819+# which are defined in the implementation section but not in the interface are
2820+# included in the documentation. If set to NO, only methods in the interface are
2821+# included.
2822+# The default value is: NO.
2823
2824 EXTRACT_LOCAL_METHODS = NO
2825
2826 # If this flag is set to YES, the members of anonymous namespaces will be
2827 # extracted and appear in the documentation as a namespace called
2828-# 'anonymous_namespace{file}', where file will be replaced with the base
2829-# name of the file that contains the anonymous namespace. By default
2830-# anonymous namespaces are hidden.
2831+# 'anonymous_namespace{file}', where file will be replaced with the base name of
2832+# the file that contains the anonymous namespace. By default anonymous namespace
2833+# are hidden.
2834+# The default value is: NO.
2835
2836 EXTRACT_ANON_NSPACES = NO
2837
2838-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
2839-# undocumented members of documented classes, files or namespaces.
2840-# If set to NO (the default) these members will be included in the
2841-# various overviews, but no documentation section is generated.
2842-# This option has no effect if EXTRACT_ALL is enabled.
2843+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
2844+# undocumented members inside documented classes or files. If set to NO these
2845+# members will be included in the various overviews, but no documentation
2846+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
2847+# The default value is: NO.
2848
2849 HIDE_UNDOC_MEMBERS = NO
2850
2851-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
2852-# undocumented classes that are normally visible in the class hierarchy.
2853-# If set to NO (the default) these classes will be included in the various
2854-# overviews. This option has no effect if EXTRACT_ALL is enabled.
2855+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
2856+# undocumented classes that are normally visible in the class hierarchy. If set
2857+# to NO, these classes will be included in the various overviews. This option
2858+# has no effect if EXTRACT_ALL is enabled.
2859+# The default value is: NO.
2860
2861 HIDE_UNDOC_CLASSES = NO
2862
2863-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
2864-# friend (class|struct|union) declarations.
2865-# If set to NO (the default) these declarations will be included in the
2866-# documentation.
2867+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
2868+# (class|struct|union) declarations. If set to NO, these declarations will be
2869+# included in the documentation.
2870+# The default value is: NO.
2871
2872 HIDE_FRIEND_COMPOUNDS = NO
2873
2874-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
2875-# documentation blocks found inside the body of a function.
2876-# If set to NO (the default) these blocks will be appended to the
2877-# function's detailed documentation block.
2878+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
2879+# documentation blocks found inside the body of a function. If set to NO, these
2880+# blocks will be appended to the function's detailed documentation block.
2881+# The default value is: NO.
2882
2883 HIDE_IN_BODY_DOCS = NO
2884
2885-# The INTERNAL_DOCS tag determines if documentation
2886-# that is typed after a \internal command is included. If the tag is set
2887-# to NO (the default) then the documentation will be excluded.
2888-# Set it to YES to include the internal documentation.
2889+# The INTERNAL_DOCS tag determines if documentation that is typed after a
2890+# \internal command is included. If the tag is set to NO then the documentation
2891+# will be excluded. Set it to YES to include the internal documentation.
2892+# The default value is: NO.
2893
2894 INTERNAL_DOCS = NO
2895
2896-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
2897-# file names in lower-case letters. If set to YES upper-case letters are also
2898+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
2899+# names in lower-case letters. If set to YES, upper-case letters are also
2900 # allowed. This is useful if you have classes or files whose names only differ
2901 # in case and if your file system supports case sensitive file names. Windows
2902 # and Mac users are advised to set this option to NO.
2903+# The default value is: system dependent.
2904
2905 CASE_SENSE_NAMES = NO
2906
2907-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
2908-# will show members with their full class and namespace scopes in the
2909-# documentation. If set to YES the scope will be hidden.
2910+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
2911+# their full class and namespace scopes in the documentation. If set to YES, the
2912+# scope will be hidden.
2913+# The default value is: NO.
2914
2915 HIDE_SCOPE_NAMES = NO
2916
2917-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
2918-# will put a list of the files that are included by a file in the documentation
2919-# of that file.
2920+# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
2921+# append additional text to a page's title, such as Class Reference. If set to
2922+# YES the compound reference will be hidden.
2923+# The default value is: NO.
2924+
2925+HIDE_COMPOUND_REFERENCE= NO
2926+
2927+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
2928+# the files that are included by a file in the documentation of that file.
2929+# The default value is: YES.
2930
2931 SHOW_INCLUDE_FILES = YES
2932
2933-# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
2934-# will list include files with double quotes in the documentation
2935-# rather than with sharp brackets.
2936+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
2937+# grouped member an include statement to the documentation, telling the reader
2938+# which file to include in order to use the member.
2939+# The default value is: NO.
2940+
2941+SHOW_GROUPED_MEMB_INC = NO
2942+
2943+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
2944+# files with double quotes in the documentation rather than with sharp brackets.
2945+# The default value is: NO.
2946
2947 FORCE_LOCAL_INCLUDES = NO
2948
2949-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
2950-# is inserted in the documentation for inline members.
2951+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
2952+# documentation for inline members.
2953+# The default value is: YES.
2954
2955 INLINE_INFO = YES
2956
2957-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
2958-# will sort the (detailed) documentation of file and class members
2959-# alphabetically by member name. If set to NO the members will appear in
2960-# declaration order.
2961+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
2962+# (detailed) documentation of file and class members alphabetically by member
2963+# name. If set to NO, the members will appear in declaration order.
2964+# The default value is: YES.
2965
2966 SORT_MEMBER_DOCS = YES
2967
2968-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
2969-# brief documentation of file, namespace and class members alphabetically
2970-# by member name. If set to NO (the default) the members will appear in
2971-# declaration order.
2972+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
2973+# descriptions of file, namespace and class members alphabetically by member
2974+# name. If set to NO, the members will appear in declaration order. Note that
2975+# this will also influence the order of the classes in the class list.
2976+# The default value is: NO.
2977
2978 SORT_BRIEF_DOCS = NO
2979
2980-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
2981-# will sort the (brief and detailed) documentation of class members so that
2982-# constructors and destructors are listed first. If set to NO (the default)
2983-# the constructors will appear in the respective orders defined by
2984-# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
2985-# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
2986-# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
2987+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
2988+# (brief and detailed) documentation of class members so that constructors and
2989+# destructors are listed first. If set to NO the constructors will appear in the
2990+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
2991+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
2992+# member documentation.
2993+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
2994+# detailed member documentation.
2995+# The default value is: NO.
2996
2997 SORT_MEMBERS_CTORS_1ST = NO
2998
2999-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
3000-# hierarchy of group names into alphabetical order. If set to NO (the default)
3001-# the group names will appear in their defined order.
3002+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
3003+# of group names into alphabetical order. If set to NO the group names will
3004+# appear in their defined order.
3005+# The default value is: NO.
3006
3007 SORT_GROUP_NAMES = NO
3008
3009-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
3010-# sorted by fully-qualified names, including namespaces. If set to
3011-# NO (the default), the class list will be sorted only by class name,
3012-# not including the namespace part.
3013+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
3014+# fully-qualified names, including namespaces. If set to NO, the class list will
3015+# be sorted only by class name, not including the namespace part.
3016 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
3017-# Note: This option applies only to the class list, not to the
3018-# alphabetical list.
3019+# Note: This option applies only to the class list, not to the alphabetical
3020+# list.
3021+# The default value is: NO.
3022
3023 SORT_BY_SCOPE_NAME = NO
3024
3025-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
3026-# do proper type resolution of all parameters of a function it will reject a
3027-# match between the prototype and the implementation of a member function even
3028-# if there is only one candidate or it is obvious which candidate to choose
3029-# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
3030-# will still accept a match between prototype and implementation in such cases.
3031+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
3032+# type resolution of all parameters of a function it will reject a match between
3033+# the prototype and the implementation of a member function even if there is
3034+# only one candidate or it is obvious which candidate to choose by doing a
3035+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
3036+# accept a match between prototype and implementation in such cases.
3037+# The default value is: NO.
3038
3039 STRICT_PROTO_MATCHING = NO
3040
3041-# The GENERATE_TODOLIST tag can be used to enable (YES) or
3042-# disable (NO) the todo list. This list is created by putting \todo
3043-# commands in the documentation.
3044+# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
3045+# list. This list is created by putting \todo commands in the documentation.
3046+# The default value is: YES.
3047
3048 GENERATE_TODOLIST = YES
3049
3050-# The GENERATE_TESTLIST tag can be used to enable (YES) or
3051-# disable (NO) the test list. This list is created by putting \test
3052-# commands in the documentation.
3053+# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
3054+# list. This list is created by putting \test commands in the documentation.
3055+# The default value is: YES.
3056
3057 GENERATE_TESTLIST = YES
3058
3059-# The GENERATE_BUGLIST tag can be used to enable (YES) or
3060-# disable (NO) the bug list. This list is created by putting \bug
3061-# commands in the documentation.
3062+# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
3063+# list. This list is created by putting \bug commands in the documentation.
3064+# The default value is: YES.
3065
3066 GENERATE_BUGLIST = YES
3067
3068-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
3069-# disable (NO) the deprecated list. This list is created by putting
3070-# \deprecated commands in the documentation.
3071+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
3072+# the deprecated list. This list is created by putting \deprecated commands in
3073+# the documentation.
3074+# The default value is: YES.
3075
3076 GENERATE_DEPRECATEDLIST= YES
3077
3078-# The ENABLED_SECTIONS tag can be used to enable conditional
3079-# documentation sections, marked by \if section-label ... \endif
3080-# and \cond section-label ... \endcond blocks.
3081+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
3082+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
3083+# ... \endcond blocks.
3084
3085 ENABLED_SECTIONS =
3086
3087-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
3088-# the initial value of a variable or macro consists of for it to appear in
3089-# the documentation. If the initializer consists of more lines than specified
3090-# here it will be hidden. Use a value of 0 to hide initializers completely.
3091-# The appearance of the initializer of individual variables and macros in the
3092-# documentation can be controlled using \showinitializer or \hideinitializer
3093-# command in the documentation regardless of this setting.
3094+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
3095+# initial value of a variable or macro / define can have for it to appear in the
3096+# documentation. If the initializer consists of more lines than specified here
3097+# it will be hidden. Use a value of 0 to hide initializers completely. The
3098+# appearance of the value of individual variables and macros / defines can be
3099+# controlled using \showinitializer or \hideinitializer command in the
3100+# documentation regardless of this setting.
3101+# Minimum value: 0, maximum value: 10000, default value: 30.
3102
3103 MAX_INITIALIZER_LINES = 30
3104
3105-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
3106-# at the bottom of the documentation of classes and structs. If set to YES the
3107+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
3108+# the bottom of the documentation of classes and structs. If set to YES, the
3109 # list will mention the files that were used to generate the documentation.
3110+# The default value is: YES.
3111
3112 SHOW_USED_FILES = YES
3113
3114-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
3115-# This will remove the Files entry from the Quick Index and from the
3116-# Folder Tree View (if specified). The default is YES.
3117+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
3118+# will remove the Files entry from the Quick Index and from the Folder Tree View
3119+# (if specified).
3120+# The default value is: YES.
3121
3122 SHOW_FILES = YES
3123
3124-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
3125-# Namespaces page.
3126-# This will remove the Namespaces entry from the Quick Index
3127-# and from the Folder Tree View (if specified). The default is YES.
3128+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
3129+# page. This will remove the Namespaces entry from the Quick Index and from the
3130+# Folder Tree View (if specified).
3131+# The default value is: YES.
3132
3133 SHOW_NAMESPACES = YES
3134
3135 # The FILE_VERSION_FILTER tag can be used to specify a program or script that
3136 # doxygen should invoke to get the current version for each file (typically from
3137 # the version control system). Doxygen will invoke the program by executing (via
3138-# popen()) the command <command> <input-file>, where <command> is the value of
3139-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
3140-# provided by doxygen. Whatever the program writes to standard output
3141-# is used as the file version. See the manual for examples.
3142+# popen()) the command command input-file, where command is the value of the
3143+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
3144+# by doxygen. Whatever the program writes to standard output is used as the file
3145+# version. For an example see the documentation.
3146
3147 FILE_VERSION_FILTER =
3148
3149 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
3150 # by doxygen. The layout file controls the global structure of the generated
3151 # output files in an output format independent way. To create the layout file
3152-# that represents doxygen's defaults, run doxygen with the -l option.
3153-# You can optionally specify a file name after the option, if omitted
3154-# DoxygenLayout.xml will be used as the name of the layout file.
3155+# that represents doxygen's defaults, run doxygen with the -l option. You can
3156+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
3157+# will be used as the name of the layout file.
3158+#
3159+# Note that if you run doxygen from a directory containing a file called
3160+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
3161+# tag is left empty.
3162
3163 LAYOUT_FILE =
3164
3165-# The CITE_BIB_FILES tag can be used to specify one or more bib files
3166-# containing the references data. This must be a list of .bib files. The
3167-# .bib extension is automatically appended if omitted. Using this command
3168-# requires the bibtex tool to be installed. See also
3169-# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
3170-# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
3171-# feature you need bibtex and perl available in the search path. Do not use
3172-# file names with spaces, bibtex cannot handle them.
3173+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
3174+# the reference definitions. This must be a list of .bib files. The .bib
3175+# extension is automatically appended if omitted. This requires the bibtex tool
3176+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
3177+# For LaTeX the style of the bibliography can be controlled using
3178+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
3179+# search path. See also \cite for info how to create references.
3180
3181 CITE_BIB_FILES =
3182
3183 #---------------------------------------------------------------------------
3184-# configuration options related to warning and progress messages
3185+# Configuration options related to warning and progress messages
3186 #---------------------------------------------------------------------------
3187
3188-# The QUIET tag can be used to turn on/off the messages that are generated
3189-# by doxygen. Possible values are YES and NO. If left blank NO is used.
3190+# The QUIET tag can be used to turn on/off the messages that are generated to
3191+# standard output by doxygen. If QUIET is set to YES this implies that the
3192+# messages are off.
3193+# The default value is: NO.
3194
3195 QUIET = NO
3196
3197 # The WARNINGS tag can be used to turn on/off the warning messages that are
3198-# generated by doxygen. Possible values are YES and NO. If left blank
3199-# NO is used.
3200+# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
3201+# this implies that the warnings are on.
3202+#
3203+# Tip: Turn warnings on while writing the documentation.
3204+# The default value is: YES.
3205
3206 WARNINGS = YES
3207
3208-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
3209-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
3210-# automatically be disabled.
3211+# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
3212+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
3213+# will automatically be disabled.
3214+# The default value is: YES.
3215
3216 WARN_IF_UNDOCUMENTED = YES
3217
3218-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
3219-# potential errors in the documentation, such as not documenting some
3220-# parameters in a documented function, or documenting parameters that
3221-# don't exist or using markup commands wrongly.
3222+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
3223+# potential errors in the documentation, such as not documenting some parameters
3224+# in a documented function, or documenting parameters that don't exist or using
3225+# markup commands wrongly.
3226+# The default value is: YES.
3227
3228 WARN_IF_DOC_ERROR = YES
3229
3230-# The WARN_NO_PARAMDOC option can be enabled to get warnings for
3231-# functions that are documented, but have no documentation for their parameters
3232-# or return value. If set to NO (the default) doxygen will only warn about
3233-# wrong or incomplete parameter documentation, but not about the absence of
3234-# documentation.
3235+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
3236+# are documented, but have no documentation for their parameters or return
3237+# value. If set to NO, doxygen will only warn about wrong or incomplete
3238+# parameter documentation, but not about the absence of documentation.
3239+# The default value is: NO.
3240
3241 WARN_NO_PARAMDOC = NO
3242
3243-# The WARN_FORMAT tag determines the format of the warning messages that
3244-# doxygen can produce. The string should contain the $file, $line, and $text
3245-# tags, which will be replaced by the file and line number from which the
3246-# warning originated and the warning text. Optionally the format may contain
3247-# $version, which will be replaced by the version of the file (if it could
3248-# be obtained via FILE_VERSION_FILTER)
3249+# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
3250+# a warning is encountered.
3251+# The default value is: NO.
3252+
3253+WARN_AS_ERROR = NO
3254+
3255+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
3256+# can produce. The string should contain the $file, $line, and $text tags, which
3257+# will be replaced by the file and line number from which the warning originated
3258+# and the warning text. Optionally the format may contain $version, which will
3259+# be replaced by the version of the file (if it could be obtained via
3260+# FILE_VERSION_FILTER)
3261+# The default value is: $file:$line: $text.
3262
3263 WARN_FORMAT = "$file:$line: $text"
3264
3265-# The WARN_LOGFILE tag can be used to specify a file to which warning
3266-# and error messages should be written. If left blank the output is written
3267-# to stderr.
3268+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
3269+# messages should be written. If left blank the output is written to standard
3270+# error (stderr).
3271
3272 WARN_LOGFILE =
3273
3274 #---------------------------------------------------------------------------
3275-# configuration options related to the input files
3276+# Configuration options related to the input files
3277 #---------------------------------------------------------------------------
3278
3279-# The INPUT tag can be used to specify the files and/or directories that contain
3280-# documented source files. You may enter file names like "myfile.cpp" or
3281-# directories like "/usr/src/myproject". Separate the files or directories
3282-# with spaces.
3283+# The INPUT tag is used to specify the files and/or directories that contain
3284+# documented source files. You may enter file names like myfile.cpp or
3285+# directories like /usr/src/myproject. Separate the files or directories with
3286+# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
3287+# Note: If this tag is empty the current directory is searched.
3288
3289 INPUT = @CMAKE_CURRENT_SOURCE_DIR@/README.md \
3290 @CMAKE_CURRENT_SOURCE_DIR@/HACKING.md \
3291 @CMAKE_CURRENT_SOURCE_DIR@/doc \
3292- @CMAKE_CURRENT_SOURCE_DIR@/src \
3293 @CMAKE_CURRENT_SOURCE_DIR@/examples \
3294 @CMAKE_CURRENT_SOURCE_DIR@/include \
3295 @MIR_GENERATED_INCLUDE_DIRECTORIES@
3296
3297 # This tag can be used to specify the character encoding of the source files
3298-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
3299-# also the default input encoding. Doxygen uses libiconv (or the iconv built
3300-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
3301-# the list of possible encodings.
3302+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
3303+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
3304+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
3305+# possible encodings.
3306+# The default value is: UTF-8.
3307
3308 INPUT_ENCODING = UTF-8
3309
3310 # If the value of the INPUT tag contains directories, you can use the
3311-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
3312-# and *.h) to filter out the source-files in the directories. If left
3313-# blank the following patterns are tested:
3314-# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
3315-# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
3316-# *.f90 *.f *.for *.vhd *.vhdl
3317+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
3318+# *.h) to filter out the source-files in the directories.
3319+#
3320+# Note that for custom extensions or not directly supported extensions you also
3321+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
3322+# read by doxygen.
3323+#
3324+# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
3325+# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
3326+# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
3327+# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl,
3328+# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js.
3329
3330 FILE_PATTERNS = *.c \
3331 *.cc \
3332@@ -723,15 +846,16 @@
3333 *.vhd \
3334 *.vhdl
3335
3336-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
3337-# should be searched for input files as well. Possible values are YES and NO.
3338-# If left blank NO is used.
3339+# The RECURSIVE tag can be used to specify whether or not subdirectories should
3340+# be searched for input files as well.
3341+# The default value is: NO.
3342
3343 RECURSIVE = YES
3344
3345 # The EXCLUDE tag can be used to specify files and/or directories that should be
3346 # excluded from the INPUT source files. This way you can easily exclude a
3347 # subdirectory from a directory tree whose root is specified with the INPUT tag.
3348+#
3349 # Note that relative paths are relative to the directory from which doxygen is
3350 # run.
3351
3352@@ -740,234 +864,323 @@
3353 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
3354 # directories that are symbolic links (a Unix file system feature) are excluded
3355 # from the input.
3356+# The default value is: NO.
3357
3358 EXCLUDE_SYMLINKS = NO
3359
3360 # If the value of the INPUT tag contains directories, you can use the
3361 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
3362-# certain files from those directories. Note that the wildcards are matched
3363-# against the file with absolute path, so to exclude all test directories
3364-# for example use the pattern */test/*
3365+# certain files from those directories.
3366+#
3367+# Note that the wildcards are matched against the file with absolute path, so to
3368+# exclude all test directories for example use the pattern */test/*
3369
3370-EXCLUDE_PATTERNS = */include/test/* */3rd_party/*
3371+EXCLUDE_PATTERNS = */include/test/* \
3372+ */3rd_party/*
3373
3374 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
3375 # (namespaces, classes, functions, etc.) that should be excluded from the
3376 # output. The symbol name can be a fully qualified name, a word, or if the
3377 # wildcard * is used, a substring. Examples: ANamespace, AClass,
3378 # AClass::ANamespace, ANamespace::*Test
3379+#
3380+# Note that the wildcards are matched against the file with absolute path, so to
3381+# exclude all test directories use the pattern */test/*
3382
3383 EXCLUDE_SYMBOLS = google \
3384 mfd \
3385 mgg \
3386 mp
3387
3388-# The EXAMPLE_PATH tag can be used to specify one or more files or
3389-# directories that contain example code fragments that are included (see
3390-# the \include command).
3391+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
3392+# that contain example code fragments that are included (see the \include
3393+# command).
3394
3395 EXAMPLE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/examples
3396
3397 # If the value of the EXAMPLE_PATH tag contains directories, you can use the
3398-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
3399-# and *.h) to filter out the source-files in the directories. If left
3400-# blank all files are included.
3401+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
3402+# *.h) to filter out the source-files in the directories. If left blank all
3403+# files are included.
3404
3405 EXAMPLE_PATTERNS = *
3406
3407 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
3408-# searched for input files to be used with the \include or \dontinclude
3409-# commands irrespective of the value of the RECURSIVE tag.
3410-# Possible values are YES and NO. If left blank NO is used.
3411+# searched for input files to be used with the \include or \dontinclude commands
3412+# irrespective of the value of the RECURSIVE tag.
3413+# The default value is: NO.
3414
3415 EXAMPLE_RECURSIVE = NO
3416
3417-# The IMAGE_PATH tag can be used to specify one or more files or
3418-# directories that contain image that are included in the documentation (see
3419-# the \image command).
3420+# The IMAGE_PATH tag can be used to specify one or more files or directories
3421+# that contain images that are to be included in the documentation (see the
3422+# \image command).
3423
3424 IMAGE_PATH =
3425
3426 # The INPUT_FILTER tag can be used to specify a program that doxygen should
3427 # invoke to filter for each input file. Doxygen will invoke the filter program
3428-# by executing (via popen()) the command <filter> <input-file>, where <filter>
3429-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
3430-# input file. Doxygen will then use the output that the filter program writes
3431-# to standard output.
3432-# If FILTER_PATTERNS is specified, this tag will be ignored.
3433+# by executing (via popen()) the command:
3434+#
3435+# <filter> <input-file>
3436+#
3437+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
3438+# name of an input file. Doxygen will then use the output that the filter
3439+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
3440+# will be ignored.
3441+#
3442 # Note that the filter must not add or remove lines; it is applied before the
3443 # code is scanned, but not when the output code is generated. If lines are added
3444 # or removed, the anchors will not be placed correctly.
3445+#
3446+# Note that for custom extensions or not directly supported extensions you also
3447+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
3448+# properly processed by doxygen.
3449
3450 INPUT_FILTER =
3451
3452 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
3453-# basis.
3454-# Doxygen will compare the file name with each pattern and apply the
3455-# filter if there is a match.
3456-# The filters are a list of the form:
3457-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
3458-# info on how filters are used. If FILTER_PATTERNS is empty or if
3459-# non of the patterns match the file name, INPUT_FILTER is applied.
3460+# basis. Doxygen will compare the file name with each pattern and apply the
3461+# filter if there is a match. The filters are a list of the form: pattern=filter
3462+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
3463+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
3464+# patterns match the file name, INPUT_FILTER is applied.
3465+#
3466+# Note that for custom extensions or not directly supported extensions you also
3467+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
3468+# properly processed by doxygen.
3469
3470 FILTER_PATTERNS =
3471
3472 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
3473-# INPUT_FILTER) will be used to filter the input files when producing source
3474-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
3475+# INPUT_FILTER) will also be used to filter the input files that are used for
3476+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
3477+# The default value is: NO.
3478
3479 FILTER_SOURCE_FILES = NO
3480
3481 # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
3482-# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
3483-# and it is also possible to disable source filtering for a specific pattern
3484-# using *.ext= (so without naming a filter). This option only has effect when
3485-# FILTER_SOURCE_FILES is enabled.
3486+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
3487+# it is also possible to disable source filtering for a specific pattern using
3488+# *.ext= (so without naming a filter).
3489+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
3490
3491 FILTER_SOURCE_PATTERNS =
3492
3493-# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
3494+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
3495 # is part of the input, its contents will be placed on the main page
3496 # (index.html). This can be useful if you have a project on for instance GitHub
3497-# and want reuse the introduction page also for the doxygen output.
3498+# and want to reuse the introduction page also for the doxygen output.
3499
3500 USE_MDFILE_AS_MAINPAGE =
3501
3502 #---------------------------------------------------------------------------
3503-# configuration options related to source browsing
3504+# Configuration options related to source browsing
3505 #---------------------------------------------------------------------------
3506
3507-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
3508-# be generated. Documented entities will be cross-referenced with these sources.
3509-# Note: To get rid of all source code in the generated output, make sure also
3510-# VERBATIM_HEADERS is set to NO.
3511+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
3512+# generated. Documented entities will be cross-referenced with these sources.
3513+#
3514+# Note: To get rid of all source code in the generated output, make sure that
3515+# also VERBATIM_HEADERS is set to NO.
3516+# The default value is: NO.
3517
3518 SOURCE_BROWSER = NO
3519
3520-# Setting the INLINE_SOURCES tag to YES will include the body
3521-# of functions and classes directly in the documentation.
3522+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
3523+# classes and enums directly into the documentation.
3524+# The default value is: NO.
3525
3526 INLINE_SOURCES = NO
3527
3528-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
3529-# doxygen to hide any special comment blocks from generated source code
3530-# fragments. Normal C, C++ and Fortran comments will always remain visible.
3531+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
3532+# special comment blocks from generated source code fragments. Normal C, C++ and
3533+# Fortran comments will always remain visible.
3534+# The default value is: YES.
3535
3536 STRIP_CODE_COMMENTS = YES
3537
3538-# If the REFERENCED_BY_RELATION tag is set to YES
3539-# then for each documented function all documented
3540-# functions referencing it will be listed.
3541+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
3542+# function all documented functions referencing it will be listed.
3543+# The default value is: NO.
3544
3545 REFERENCED_BY_RELATION = NO
3546
3547-# If the REFERENCES_RELATION tag is set to YES
3548-# then for each documented function all documented entities
3549-# called/used by that function will be listed.
3550+# If the REFERENCES_RELATION tag is set to YES then for each documented function
3551+# all documented entities called/used by that function will be listed.
3552+# The default value is: NO.
3553
3554 REFERENCES_RELATION = NO
3555
3556-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
3557-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
3558-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
3559-# link to the source code.
3560-# Otherwise they will link to the documentation.
3561+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
3562+# to YES then the hyperlinks from functions in REFERENCES_RELATION and
3563+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
3564+# link to the documentation.
3565+# The default value is: YES.
3566
3567 REFERENCES_LINK_SOURCE = YES
3568
3569-# If the USE_HTAGS tag is set to YES then the references to source code
3570-# will point to the HTML generated by the htags(1) tool instead of doxygen
3571-# built-in source browser. The htags tool is part of GNU's global source
3572-# tagging system (see http://www.gnu.org/software/global/global.html). You
3573-# will need version 4.8.6 or higher.
3574+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
3575+# source code will show a tooltip with additional information such as prototype,
3576+# brief description and links to the definition and documentation. Since this
3577+# will make the HTML file larger and loading of large files a bit slower, you
3578+# can opt to disable this feature.
3579+# The default value is: YES.
3580+# This tag requires that the tag SOURCE_BROWSER is set to YES.
3581+
3582+SOURCE_TOOLTIPS = YES
3583+
3584+# If the USE_HTAGS tag is set to YES then the references to source code will
3585+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
3586+# source browser. The htags tool is part of GNU's global source tagging system
3587+# (see http://www.gnu.org/software/global/global.html). You will need version
3588+# 4.8.6 or higher.
3589+#
3590+# To use it do the following:
3591+# - Install the latest version of global
3592+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
3593+# - Make sure the INPUT points to the root of the source tree
3594+# - Run doxygen as normal
3595+#
3596+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
3597+# tools must be available from the command line (i.e. in the search path).
3598+#
3599+# The result: instead of the source browser generated by doxygen, the links to
3600+# source code will now point to the output of htags.
3601+# The default value is: NO.
3602+# This tag requires that the tag SOURCE_BROWSER is set to YES.
3603
3604 USE_HTAGS = NO
3605
3606-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
3607-# will generate a verbatim copy of the header file for each class for
3608-# which an include is specified. Set to NO to disable this.
3609+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
3610+# verbatim copy of the header file for each class for which an include is
3611+# specified. Set to NO to disable this.
3612+# See also: Section \class.
3613+# The default value is: YES.
3614
3615 VERBATIM_HEADERS = YES
3616
3617-#---------------------------------------------------------------------------
3618-# configuration options related to the alphabetical class index
3619-#---------------------------------------------------------------------------
3620-
3621-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
3622-# of all compounds will be generated. Enable this if the project
3623-# contains a lot of classes, structs, unions or interfaces.
3624+# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
3625+# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
3626+# cost of reduced performance. This can be particularly helpful with template
3627+# rich C++ code for which doxygen's built-in parser lacks the necessary type
3628+# information.
3629+# Note: The availability of this option depends on whether or not doxygen was
3630+# generated with the -Duse-libclang=ON option for CMake.
3631+# The default value is: NO.
3632+
3633+CLANG_ASSISTED_PARSING = NO
3634+
3635+# If clang assisted parsing is enabled you can provide the compiler with command
3636+# line options that you would normally use when invoking the compiler. Note that
3637+# the include paths will already be set by doxygen for the files and directories
3638+# specified with INPUT and INCLUDE_PATH.
3639+# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
3640+
3641+CLANG_OPTIONS =
3642+
3643+#---------------------------------------------------------------------------
3644+# Configuration options related to the alphabetical class index
3645+#---------------------------------------------------------------------------
3646+
3647+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
3648+# compounds will be generated. Enable this if the project contains a lot of
3649+# classes, structs, unions or interfaces.
3650+# The default value is: YES.
3651
3652 ALPHABETICAL_INDEX = YES
3653
3654-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
3655-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
3656-# in which this list will be split (can be a number in the range [1..20])
3657+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
3658+# which the alphabetical index list will be split.
3659+# Minimum value: 1, maximum value: 20, default value: 5.
3660+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
3661
3662 COLS_IN_ALPHA_INDEX = 5
3663
3664-# In case all classes in a project start with a common prefix, all
3665-# classes will be put under the same header in the alphabetical index.
3666-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
3667-# should be ignored while generating the index headers.
3668+# In case all classes in a project start with a common prefix, all classes will
3669+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
3670+# can be used to specify a prefix (or a list of prefixes) that should be ignored
3671+# while generating the index headers.
3672+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
3673
3674 IGNORE_PREFIX =
3675
3676 #---------------------------------------------------------------------------
3677-# configuration options related to the HTML output
3678+# Configuration options related to the HTML output
3679 #---------------------------------------------------------------------------
3680
3681-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
3682-# generate HTML output.
3683+# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
3684+# The default value is: YES.
3685
3686 GENERATE_HTML = YES
3687
3688-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
3689-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
3690-# put in front of it. If left blank `html' will be used as the default path.
3691+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
3692+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
3693+# it.
3694+# The default directory is: html.
3695+# This tag requires that the tag GENERATE_HTML is set to YES.
3696
3697 HTML_OUTPUT = html
3698
3699-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
3700-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
3701-# doxygen will generate files with .html extension.
3702+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
3703+# generated HTML page (for example: .htm, .php, .asp).
3704+# The default value is: .html.
3705+# This tag requires that the tag GENERATE_HTML is set to YES.
3706
3707 HTML_FILE_EXTENSION = .html
3708
3709-# The HTML_HEADER tag can be used to specify a personal HTML header for
3710-# each generated HTML page. If it is left blank doxygen will generate a
3711-# standard header. Note that when using a custom header you are responsible
3712-# for the proper inclusion of any scripts and style sheets that doxygen
3713-# needs, which is dependent on the configuration options used.
3714-# It is advised to generate a default header using "doxygen -w html
3715-# header.html footer.html stylesheet.css YourConfigFile" and then modify
3716-# that header. Note that the header is subject to change so you typically
3717-# have to redo this when upgrading to a newer version of doxygen or when
3718-# changing the value of configuration settings such as GENERATE_TREEVIEW!
3719+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
3720+# each generated HTML page. If the tag is left blank doxygen will generate a
3721+# standard header.
3722+#
3723+# To get valid HTML the header file that includes any scripts and style sheets
3724+# that doxygen needs, which is dependent on the configuration options used (e.g.
3725+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
3726+# default header using
3727+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
3728+# YourConfigFile
3729+# and then modify the file new_header.html. See also section "Doxygen usage"
3730+# for information on how to generate the default header that doxygen normally
3731+# uses.
3732+# Note: The header is subject to change so you typically have to regenerate the
3733+# default header when upgrading to a newer version of doxygen. For a description
3734+# of the possible markers and block names see the documentation.
3735+# This tag requires that the tag GENERATE_HTML is set to YES.
3736
3737 HTML_HEADER =
3738
3739-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
3740-# each generated HTML page. If it is left blank doxygen will generate a
3741-# standard footer.
3742+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
3743+# generated HTML page. If the tag is left blank doxygen will generate a standard
3744+# footer. See HTML_HEADER for more information on how to generate a default
3745+# footer and what special commands can be used inside the footer. See also
3746+# section "Doxygen usage" for information on how to generate the default footer
3747+# that doxygen normally uses.
3748+# This tag requires that the tag GENERATE_HTML is set to YES.
3749
3750 HTML_FOOTER = @CMAKE_BINARY_DIR@/doc/footer.html
3751
3752-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
3753-# style sheet that is used by each HTML page. It can be used to
3754-# fine-tune the look of the HTML output. If left blank doxygen will
3755-# generate a default style sheet. Note that it is recommended to use
3756-# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
3757-# tag will in the future become obsolete.
3758+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
3759+# sheet that is used by each HTML page. It can be used to fine-tune the look of
3760+# the HTML output. If left blank doxygen will generate a default style sheet.
3761+# See also section "Doxygen usage" for information on how to generate the style
3762+# sheet that doxygen normally uses.
3763+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
3764+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
3765+# obsolete.
3766+# This tag requires that the tag GENERATE_HTML is set to YES.
3767
3768 HTML_STYLESHEET =
3769
3770-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
3771-# user-defined cascading style sheet that is included after the standard
3772-# style sheets created by doxygen. Using this option one can overrule
3773-# certain style aspects. This is preferred over using HTML_STYLESHEET
3774-# since it does not replace the standard style sheet and is therefor more
3775-# robust against future updates. Doxygen will copy the style sheet file to
3776-# the output directory.
3777+# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
3778+# cascading style sheets that are included after the standard style sheets
3779+# created by doxygen. Using this option one can overrule certain style aspects.
3780+# This is preferred over using HTML_STYLESHEET since it does not replace the
3781+# standard style sheet and is therefore more robust against future updates.
3782+# Doxygen will copy the style sheet files to the output directory.
3783+# Note: The order of the extra style sheet files is of importance (e.g. the last
3784+# style sheet in the list overrules the setting of the previous ones in the
3785+# list). For an example see the documentation.
3786+# This tag requires that the tag GENERATE_HTML is set to YES.
3787
3788 HTML_EXTRA_STYLESHEET = @CMAKE_BINARY_DIR@/doc/extra.css
3789
3790@@ -975,632 +1188,847 @@
3791 # other source files which should be copied to the HTML output directory. Note
3792 # that these files will be copied to the base HTML output directory. Use the
3793 # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
3794-# files. In the HTML_STYLESHEET file, use the file name only. Also note that
3795-# the files will be copied as-is; there are no commands or markers available.
3796+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
3797+# files will be copied as-is; there are no commands or markers available.
3798+# This tag requires that the tag GENERATE_HTML is set to YES.
3799
3800 HTML_EXTRA_FILES =
3801
3802-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
3803-# Doxygen will adjust the colors in the style sheet and background images
3804-# according to this color. Hue is specified as an angle on a colorwheel,
3805-# see http://en.wikipedia.org/wiki/Hue for more information.
3806-# For instance the value 0 represents red, 60 is yellow, 120 is green,
3807-# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
3808-# The allowed range is 0 to 359.
3809+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
3810+# will adjust the colors in the style sheet and background images according to
3811+# this color. Hue is specified as an angle on a colorwheel, see
3812+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
3813+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
3814+# purple, and 360 is red again.
3815+# Minimum value: 0, maximum value: 359, default value: 220.
3816+# This tag requires that the tag GENERATE_HTML is set to YES.
3817
3818 HTML_COLORSTYLE_HUE = 16
3819
3820-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
3821-# the colors in the HTML output. For a value of 0 the output will use
3822-# grayscales only. A value of 255 will produce the most vivid colors.
3823+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
3824+# in the HTML output. For a value of 0 the output will use grayscales only. A
3825+# value of 255 will produce the most vivid colors.
3826+# Minimum value: 0, maximum value: 255, default value: 100.
3827+# This tag requires that the tag GENERATE_HTML is set to YES.
3828
3829 HTML_COLORSTYLE_SAT = 240
3830
3831-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
3832-# the luminance component of the colors in the HTML output. Values below
3833-# 100 gradually make the output lighter, whereas values above 100 make
3834-# the output darker. The value divided by 100 is the actual gamma applied,
3835-# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
3836-# and 100 does not change the gamma.
3837+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
3838+# luminance component of the colors in the HTML output. Values below 100
3839+# gradually make the output lighter, whereas values above 100 make the output
3840+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
3841+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
3842+# change the gamma.
3843+# Minimum value: 40, maximum value: 240, default value: 80.
3844+# This tag requires that the tag GENERATE_HTML is set to YES.
3845
3846 HTML_COLORSTYLE_GAMMA = 80
3847
3848 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
3849-# page will contain the date and time when the page was generated. Setting
3850-# this to NO can help when comparing the output of multiple runs.
3851+# page will contain the date and time when the page was generated. Setting this
3852+# to YES can help to show when doxygen was last run and thus if the
3853+# documentation is up to date.
3854+# The default value is: NO.
3855+# This tag requires that the tag GENERATE_HTML is set to YES.
3856
3857 HTML_TIMESTAMP = YES
3858
3859 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
3860 # documentation will contain sections that can be hidden and shown after the
3861 # page has loaded.
3862+# The default value is: NO.
3863+# This tag requires that the tag GENERATE_HTML is set to YES.
3864
3865 HTML_DYNAMIC_SECTIONS = NO
3866
3867-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
3868-# entries shown in the various tree structured indices initially; the user
3869-# can expand and collapse entries dynamically later on. Doxygen will expand
3870-# the tree to such a level that at most the specified number of entries are
3871-# visible (unless a fully collapsed tree already exceeds this amount).
3872-# So setting the number of entries 1 will produce a full collapsed tree by
3873-# default. 0 is a special value representing an infinite number of entries
3874-# and will result in a full expanded tree by default.
3875+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
3876+# shown in the various tree structured indices initially; the user can expand
3877+# and collapse entries dynamically later on. Doxygen will expand the tree to
3878+# such a level that at most the specified number of entries are visible (unless
3879+# a fully collapsed tree already exceeds this amount). So setting the number of
3880+# entries 1 will produce a full collapsed tree by default. 0 is a special value
3881+# representing an infinite number of entries and will result in a full expanded
3882+# tree by default.
3883+# Minimum value: 0, maximum value: 9999, default value: 100.
3884+# This tag requires that the tag GENERATE_HTML is set to YES.
3885
3886 HTML_INDEX_NUM_ENTRIES = 100
3887
3888-# If the GENERATE_DOCSET tag is set to YES, additional index files
3889-# will be generated that can be used as input for Apple's Xcode 3
3890-# integrated development environment, introduced with OSX 10.5 (Leopard).
3891-# To create a documentation set, doxygen will generate a Makefile in the
3892-# HTML output directory. Running make will produce the docset in that
3893-# directory and running "make install" will install the docset in
3894-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
3895-# it at startup.
3896-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
3897+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
3898+# generated that can be used as input for Apple's Xcode 3 integrated development
3899+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
3900+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
3901+# Makefile in the HTML output directory. Running make will produce the docset in
3902+# that directory and running make install will install the docset in
3903+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
3904+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
3905 # for more information.
3906+# The default value is: NO.
3907+# This tag requires that the tag GENERATE_HTML is set to YES.
3908
3909 GENERATE_DOCSET = NO
3910
3911-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
3912-# feed. A documentation feed provides an umbrella under which multiple
3913-# documentation sets from a single provider (such as a company or product suite)
3914-# can be grouped.
3915+# This tag determines the name of the docset feed. A documentation feed provides
3916+# an umbrella under which multiple documentation sets from a single provider
3917+# (such as a company or product suite) can be grouped.
3918+# The default value is: Doxygen generated docs.
3919+# This tag requires that the tag GENERATE_DOCSET is set to YES.
3920
3921 DOCSET_FEEDNAME = "Doxygen generated docs"
3922
3923-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
3924-# should uniquely identify the documentation set bundle. This should be a
3925-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
3926-# will append .docset to the name.
3927+# This tag specifies a string that should uniquely identify the documentation
3928+# set bundle. This should be a reverse domain-name style string, e.g.
3929+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
3930+# The default value is: org.doxygen.Project.
3931+# This tag requires that the tag GENERATE_DOCSET is set to YES.
3932
3933 DOCSET_BUNDLE_ID = org.doxygen.Project
3934
3935-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
3936-# identify the documentation publisher. This should be a reverse domain-name
3937-# style string, e.g. com.mycompany.MyDocSet.documentation.
3938+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
3939+# the documentation publisher. This should be a reverse domain-name style
3940+# string, e.g. com.mycompany.MyDocSet.documentation.
3941+# The default value is: org.doxygen.Publisher.
3942+# This tag requires that the tag GENERATE_DOCSET is set to YES.
3943
3944 DOCSET_PUBLISHER_ID = org.doxygen.Publisher
3945
3946-# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
3947+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
3948+# The default value is: Publisher.
3949+# This tag requires that the tag GENERATE_DOCSET is set to YES.
3950
3951 DOCSET_PUBLISHER_NAME = Publisher
3952
3953-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
3954-# will be generated that can be used as input for tools like the
3955-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
3956-# of the generated HTML documentation.
3957+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
3958+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
3959+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
3960+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
3961+# Windows.
3962+#
3963+# The HTML Help Workshop contains a compiler that can convert all HTML output
3964+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
3965+# files are now used as the Windows 98 help format, and will replace the old
3966+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
3967+# HTML files also contain an index, a table of contents, and you can search for
3968+# words in the documentation. The HTML workshop also contains a viewer for
3969+# compressed HTML files.
3970+# The default value is: NO.
3971+# This tag requires that the tag GENERATE_HTML is set to YES.
3972
3973 GENERATE_HTMLHELP = NO
3974
3975-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
3976-# be used to specify the file name of the resulting .chm file. You
3977-# can add a path in front of the file if the result should not be
3978+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
3979+# file. You can add a path in front of the file if the result should not be
3980 # written to the html output directory.
3981+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
3982
3983 CHM_FILE =
3984
3985-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
3986-# be used to specify the location (absolute path including file name) of
3987-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
3988-# the HTML help compiler on the generated index.hhp.
3989+# The HHC_LOCATION tag can be used to specify the location (absolute path
3990+# including file name) of the HTML help compiler (hhc.exe). If non-empty,
3991+# doxygen will try to run the HTML help compiler on the generated index.hhp.
3992+# The file has to be specified with full path.
3993+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
3994
3995 HHC_LOCATION =
3996
3997-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
3998-# controls if a separate .chi index file is generated (YES) or that
3999-# it should be included in the master .chm file (NO).
4000+# The GENERATE_CHI flag controls if a separate .chi index file is generated
4001+# (YES) or that it should be included in the master .chm file (NO).
4002+# The default value is: NO.
4003+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
4004
4005 GENERATE_CHI = NO
4006
4007-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
4008-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
4009-# content.
4010+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
4011+# and project file content.
4012+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
4013
4014 CHM_INDEX_ENCODING =
4015
4016-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
4017-# controls whether a binary table of contents is generated (YES) or a
4018-# normal table of contents (NO) in the .chm file.
4019+# The BINARY_TOC flag controls whether a binary table of contents is generated
4020+# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
4021+# enables the Previous and Next buttons.
4022+# The default value is: NO.
4023+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
4024
4025 BINARY_TOC = NO
4026
4027-# The TOC_EXPAND flag can be set to YES to add extra items for group members
4028-# to the contents of the HTML help documentation and to the tree view.
4029+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
4030+# the table of contents of the HTML help documentation and to the tree view.
4031+# The default value is: NO.
4032+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
4033
4034 TOC_EXPAND = NO
4035
4036 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
4037-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
4038-# that can be used as input for Qt's qhelpgenerator to generate a
4039-# Qt Compressed Help (.qch) of the generated HTML documentation.
4040+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
4041+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
4042+# (.qch) of the generated HTML documentation.
4043+# The default value is: NO.
4044+# This tag requires that the tag GENERATE_HTML is set to YES.
4045
4046 GENERATE_QHP = NO
4047
4048-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
4049-# be used to specify the file name of the resulting .qch file.
4050-# The path specified is relative to the HTML output folder.
4051+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
4052+# the file name of the resulting .qch file. The path specified is relative to
4053+# the HTML output folder.
4054+# This tag requires that the tag GENERATE_QHP is set to YES.
4055
4056 QCH_FILE =
4057
4058-# The QHP_NAMESPACE tag specifies the namespace to use when generating
4059-# Qt Help Project output. For more information please see
4060-# http://doc.trolltech.com/qthelpproject.html#namespace
4061+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
4062+# Project output. For more information please see Qt Help Project / Namespace
4063+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
4064+# The default value is: org.doxygen.Project.
4065+# This tag requires that the tag GENERATE_QHP is set to YES.
4066
4067 QHP_NAMESPACE = org.doxygen.Project
4068
4069-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
4070-# Qt Help Project output. For more information please see
4071-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
4072+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
4073+# Help Project output. For more information please see Qt Help Project / Virtual
4074+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
4075+# folders).
4076+# The default value is: doc.
4077+# This tag requires that the tag GENERATE_QHP is set to YES.
4078
4079 QHP_VIRTUAL_FOLDER = doc
4080
4081-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
4082-# add. For more information please see
4083-# http://doc.trolltech.com/qthelpproject.html#custom-filters
4084+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
4085+# filter to add. For more information please see Qt Help Project / Custom
4086+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
4087+# filters).
4088+# This tag requires that the tag GENERATE_QHP is set to YES.
4089
4090 QHP_CUST_FILTER_NAME =
4091
4092-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
4093-# custom filter to add. For more information please see
4094-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
4095-# Qt Help Project / Custom Filters</a>.
4096+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
4097+# custom filter to add. For more information please see Qt Help Project / Custom
4098+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
4099+# filters).
4100+# This tag requires that the tag GENERATE_QHP is set to YES.
4101
4102 QHP_CUST_FILTER_ATTRS =
4103
4104 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
4105-# project's
4106-# filter section matches.
4107-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
4108-# Qt Help Project / Filter Attributes</a>.
4109+# project's filter section matches. Qt Help Project / Filter Attributes (see:
4110+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
4111+# This tag requires that the tag GENERATE_QHP is set to YES.
4112
4113 QHP_SECT_FILTER_ATTRS =
4114
4115-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
4116-# be used to specify the location of Qt's qhelpgenerator.
4117-# If non-empty doxygen will try to run qhelpgenerator on the generated
4118-# .qhp file.
4119+# The QHG_LOCATION tag can be used to specify the location of Qt's
4120+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
4121+# generated .qhp file.
4122+# This tag requires that the tag GENERATE_QHP is set to YES.
4123
4124 QHG_LOCATION =
4125
4126-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
4127-# will be generated, which together with the HTML files, form an Eclipse help
4128-# plugin. To install this plugin and make it available under the help contents
4129-# menu in Eclipse, the contents of the directory containing the HTML and XML
4130-# files needs to be copied into the plugins directory of eclipse. The name of
4131-# the directory within the plugins directory should be the same as
4132-# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
4133-# the help appears.
4134+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
4135+# generated, together with the HTML files, they form an Eclipse help plugin. To
4136+# install this plugin and make it available under the help contents menu in
4137+# Eclipse, the contents of the directory containing the HTML and XML files needs
4138+# to be copied into the plugins directory of eclipse. The name of the directory
4139+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
4140+# After copying Eclipse needs to be restarted before the help appears.
4141+# The default value is: NO.
4142+# This tag requires that the tag GENERATE_HTML is set to YES.
4143
4144 GENERATE_ECLIPSEHELP = NO
4145
4146-# A unique identifier for the eclipse help plugin. When installing the plugin
4147-# the directory name containing the HTML and XML files should also have
4148-# this name.
4149+# A unique identifier for the Eclipse help plugin. When installing the plugin
4150+# the directory name containing the HTML and XML files should also have this
4151+# name. Each documentation set should have its own identifier.
4152+# The default value is: org.doxygen.Project.
4153+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
4154
4155 ECLIPSE_DOC_ID = org.doxygen.Project
4156
4157-# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
4158-# at top of each HTML page. The value NO (the default) enables the index and
4159-# the value YES disables it. Since the tabs have the same information as the
4160-# navigation tree you can set this option to NO if you already set
4161-# GENERATE_TREEVIEW to YES.
4162+# If you want full control over the layout of the generated HTML pages it might
4163+# be necessary to disable the index and replace it with your own. The
4164+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
4165+# of each HTML page. A value of NO enables the index and the value YES disables
4166+# it. Since the tabs in the index contain the same information as the navigation
4167+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
4168+# The default value is: NO.
4169+# This tag requires that the tag GENERATE_HTML is set to YES.
4170
4171 DISABLE_INDEX = NO
4172
4173 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
4174-# structure should be generated to display hierarchical information.
4175-# If the tag value is set to YES, a side panel will be generated
4176-# containing a tree-like index structure (just like the one that
4177-# is generated for HTML Help). For this to work a browser that supports
4178-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
4179-# Windows users are probably better off using the HTML help feature.
4180-# Since the tree basically has the same information as the tab index you
4181-# could consider to set DISABLE_INDEX to NO when enabling this option.
4182+# structure should be generated to display hierarchical information. If the tag
4183+# value is set to YES, a side panel will be generated containing a tree-like
4184+# index structure (just like the one that is generated for HTML Help). For this
4185+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
4186+# (i.e. any modern browser). Windows users are probably better off using the
4187+# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
4188+# further fine-tune the look of the index. As an example, the default style
4189+# sheet generated by doxygen has an example that shows how to put an image at
4190+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
4191+# the same information as the tab index, you could consider setting
4192+# DISABLE_INDEX to YES when enabling this option.
4193+# The default value is: NO.
4194+# This tag requires that the tag GENERATE_HTML is set to YES.
4195
4196 GENERATE_TREEVIEW = NO
4197
4198-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
4199-# (range [0,1..20]) that doxygen will group on one line in the generated HTML
4200-# documentation. Note that a value of 0 will completely suppress the enum
4201-# values from appearing in the overview section.
4202+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
4203+# doxygen will group on one line in the generated HTML documentation.
4204+#
4205+# Note that a value of 0 will completely suppress the enum values from appearing
4206+# in the overview section.
4207+# Minimum value: 0, maximum value: 20, default value: 4.
4208+# This tag requires that the tag GENERATE_HTML is set to YES.
4209
4210 ENUM_VALUES_PER_LINE = 4
4211
4212-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
4213-# used to set the initial width (in pixels) of the frame in which the tree
4214-# is shown.
4215+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
4216+# to set the initial width (in pixels) of the frame in which the tree is shown.
4217+# Minimum value: 0, maximum value: 1500, default value: 250.
4218+# This tag requires that the tag GENERATE_HTML is set to YES.
4219
4220 TREEVIEW_WIDTH = 250
4221
4222-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
4223-# links to external symbols imported via tag files in a separate window.
4224+# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
4225+# external symbols imported via tag files in a separate window.
4226+# The default value is: NO.
4227+# This tag requires that the tag GENERATE_HTML is set to YES.
4228
4229 EXT_LINKS_IN_WINDOW = NO
4230
4231-# Use this tag to change the font size of Latex formulas included
4232-# as images in the HTML documentation. The default is 10. Note that
4233-# when you change the font size after a successful doxygen run you need
4234-# to manually remove any form_*.png images from the HTML output directory
4235-# to force them to be regenerated.
4236+# Use this tag to change the font size of LaTeX formulas included as images in
4237+# the HTML documentation. When you change the font size after a successful
4238+# doxygen run you need to manually remove any form_*.png images from the HTML
4239+# output directory to force them to be regenerated.
4240+# Minimum value: 8, maximum value: 50, default value: 10.
4241+# This tag requires that the tag GENERATE_HTML is set to YES.
4242
4243 FORMULA_FONTSIZE = 10
4244
4245 # Use the FORMULA_TRANPARENT tag to determine whether or not the images
4246-# generated for formulas are transparent PNGs. Transparent PNGs are
4247-# not supported properly for IE 6.0, but are supported on all modern browsers.
4248-# Note that when changing this option you need to delete any form_*.png files
4249-# in the HTML output before the changes have effect.
4250+# generated for formulas are transparent PNGs. Transparent PNGs are not
4251+# supported properly for IE 6.0, but are supported on all modern browsers.
4252+#
4253+# Note that when changing this option you need to delete any form_*.png files in
4254+# the HTML output directory before the changes have effect.
4255+# The default value is: YES.
4256+# This tag requires that the tag GENERATE_HTML is set to YES.
4257
4258 FORMULA_TRANSPARENT = YES
4259
4260-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
4261-# (see http://www.mathjax.org) which uses client side Javascript for the
4262-# rendering instead of using prerendered bitmaps. Use this if you do not
4263-# have LaTeX installed or if you want to formulas look prettier in the HTML
4264-# output. When enabled you may also need to install MathJax separately and
4265-# configure the path to it using the MATHJAX_RELPATH option.
4266+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
4267+# http://www.mathjax.org) which uses client side Javascript for the rendering
4268+# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
4269+# installed or if you want to formulas look prettier in the HTML output. When
4270+# enabled you may also need to install MathJax separately and configure the path
4271+# to it using the MATHJAX_RELPATH option.
4272+# The default value is: NO.
4273+# This tag requires that the tag GENERATE_HTML is set to YES.
4274
4275 USE_MATHJAX = NO
4276
4277 # When MathJax is enabled you can set the default output format to be used for
4278-# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
4279-# SVG. The default value is HTML-CSS, which is slower, but has the best
4280-# compatibility.
4281+# the MathJax output. See the MathJax site (see:
4282+# http://docs.mathjax.org/en/latest/output.html) for more details.
4283+# Possible values are: HTML-CSS (which is slower, but has the best
4284+# compatibility), NativeMML (i.e. MathML) and SVG.
4285+# The default value is: HTML-CSS.
4286+# This tag requires that the tag USE_MATHJAX is set to YES.
4287
4288 MATHJAX_FORMAT = HTML-CSS
4289
4290-# When MathJax is enabled you need to specify the location relative to the
4291-# HTML output directory using the MATHJAX_RELPATH option. The destination
4292-# directory should contain the MathJax.js script. For instance, if the mathjax
4293-# directory is located at the same level as the HTML output directory, then
4294-# MATHJAX_RELPATH should be ../mathjax. The default value points to
4295-# the MathJax Content Delivery Network so you can quickly see the result without
4296-# installing MathJax.
4297-# However, it is strongly recommended to install a local
4298-# copy of MathJax from http://www.mathjax.org before deployment.
4299+# When MathJax is enabled you need to specify the location relative to the HTML
4300+# output directory using the MATHJAX_RELPATH option. The destination directory
4301+# should contain the MathJax.js script. For instance, if the mathjax directory
4302+# is located at the same level as the HTML output directory, then
4303+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
4304+# Content Delivery Network so you can quickly see the result without installing
4305+# MathJax. However, it is strongly recommended to install a local copy of
4306+# MathJax from http://www.mathjax.org before deployment.
4307+# The default value is: http://cdn.mathjax.org/mathjax/latest.
4308+# This tag requires that the tag USE_MATHJAX is set to YES.
4309
4310 MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
4311
4312-# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
4313-# names that should be enabled during MathJax rendering.
4314+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
4315+# extension names that should be enabled during MathJax rendering. For example
4316+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
4317+# This tag requires that the tag USE_MATHJAX is set to YES.
4318
4319 MATHJAX_EXTENSIONS =
4320
4321-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript
4322-# pieces of code that will be used on startup of the MathJax code.
4323+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
4324+# of code that will be used on startup of the MathJax code. See the MathJax site
4325+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
4326+# example see the documentation.
4327+# This tag requires that the tag USE_MATHJAX is set to YES.
4328
4329 MATHJAX_CODEFILE =
4330
4331-# When the SEARCHENGINE tag is enabled doxygen will generate a search box
4332-# for the HTML output. The underlying search engine uses javascript
4333-# and DHTML and should work on any modern browser. Note that when using
4334-# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
4335-# (GENERATE_DOCSET) there is already a search function so this one should
4336-# typically be disabled. For large projects the javascript based search engine
4337-# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
4338+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
4339+# the HTML output. The underlying search engine uses javascript and DHTML and
4340+# should work on any modern browser. Note that when using HTML help
4341+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
4342+# there is already a search function so this one should typically be disabled.
4343+# For large projects the javascript based search engine can be slow, then
4344+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
4345+# search using the keyboard; to jump to the search box use <access key> + S
4346+# (what the <access key> is depends on the OS and browser, but it is typically
4347+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
4348+# key> to jump into the search results window, the results can be navigated
4349+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
4350+# the search. The filter options can be selected when the cursor is inside the
4351+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
4352+# to select a filter and <Enter> or <escape> to activate or cancel the filter
4353+# option.
4354+# The default value is: YES.
4355+# This tag requires that the tag GENERATE_HTML is set to YES.
4356
4357 SEARCHENGINE = YES
4358
4359 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
4360-# implemented using a web server instead of a web client using Javascript.
4361-# There are two flavours of web server based search depending on the
4362-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
4363-# searching and an index file used by the script. When EXTERNAL_SEARCH is
4364-# enabled the indexing and searching needs to be provided by external tools.
4365-# See the manual for details.
4366+# implemented using a web server instead of a web client using Javascript. There
4367+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
4368+# setting. When disabled, doxygen will generate a PHP script for searching and
4369+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
4370+# and searching needs to be provided by external tools. See the section
4371+# "External Indexing and Searching" for details.
4372+# The default value is: NO.
4373+# This tag requires that the tag SEARCHENGINE is set to YES.
4374
4375 SERVER_BASED_SEARCH = NO
4376
4377-# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
4378+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
4379 # script for searching. Instead the search results are written to an XML file
4380 # which needs to be processed by an external indexer. Doxygen will invoke an
4381-# external search engine pointed to by the SEARCHENGINE_URL option to obtain
4382-# the search results. Doxygen ships with an example indexer (doxyindexer) and
4383-# search engine (doxysearch.cgi) which are based on the open source search
4384-# engine library Xapian. See the manual for configuration details.
4385+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
4386+# search results.
4387+#
4388+# Doxygen ships with an example indexer (doxyindexer) and search engine
4389+# (doxysearch.cgi) which are based on the open source search engine library
4390+# Xapian (see: http://xapian.org/).
4391+#
4392+# See the section "External Indexing and Searching" for details.
4393+# The default value is: NO.
4394+# This tag requires that the tag SEARCHENGINE is set to YES.
4395
4396 EXTERNAL_SEARCH = NO
4397
4398 # The SEARCHENGINE_URL should point to a search engine hosted by a web server
4399-# which will returned the search results when EXTERNAL_SEARCH is enabled.
4400-# Doxygen ships with an example search engine (doxysearch) which is based on
4401-# the open source search engine library Xapian. See the manual for configuration
4402-# details.
4403+# which will return the search results when EXTERNAL_SEARCH is enabled.
4404+#
4405+# Doxygen ships with an example indexer (doxyindexer) and search engine
4406+# (doxysearch.cgi) which are based on the open source search engine library
4407+# Xapian (see: http://xapian.org/). See the section "External Indexing and
4408+# Searching" for details.
4409+# This tag requires that the tag SEARCHENGINE is set to YES.
4410
4411 SEARCHENGINE_URL =
4412
4413 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
4414 # search data is written to a file for indexing by an external tool. With the
4415 # SEARCHDATA_FILE tag the name of this file can be specified.
4416+# The default file is: searchdata.xml.
4417+# This tag requires that the tag SEARCHENGINE is set to YES.
4418
4419 SEARCHDATA_FILE = searchdata.xml
4420
4421-# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
4422+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
4423 # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
4424 # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
4425 # projects and redirect the results back to the right project.
4426+# This tag requires that the tag SEARCHENGINE is set to YES.
4427
4428 EXTERNAL_SEARCH_ID =
4429
4430 # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
4431 # projects other than the one defined by this configuration file, but that are
4432 # all added to the same external search index. Each project needs to have a
4433-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
4434-# of to a relative location where the documentation can be found.
4435-# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
4436+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
4437+# to a relative location where the documentation can be found. The format is:
4438+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
4439+# This tag requires that the tag SEARCHENGINE is set to YES.
4440
4441 EXTRA_SEARCH_MAPPINGS =
4442
4443 #---------------------------------------------------------------------------
4444-# configuration options related to the LaTeX output
4445+# Configuration options related to the LaTeX output
4446 #---------------------------------------------------------------------------
4447
4448-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
4449-# generate Latex output.
4450+# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
4451+# The default value is: YES.
4452
4453 GENERATE_LATEX = NO
4454
4455-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
4456-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
4457-# put in front of it. If left blank `latex' will be used as the default path.
4458+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
4459+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
4460+# it.
4461+# The default directory is: latex.
4462+# This tag requires that the tag GENERATE_LATEX is set to YES.
4463
4464 LATEX_OUTPUT = latex
4465
4466 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
4467-# invoked. If left blank `latex' will be used as the default command name.
4468-# Note that when enabling USE_PDFLATEX this option is only used for
4469-# generating bitmaps for formulas in the HTML output, but not in the
4470-# Makefile that is written to the output directory.
4471+# invoked.
4472+#
4473+# Note that when enabling USE_PDFLATEX this option is only used for generating
4474+# bitmaps for formulas in the HTML output, but not in the Makefile that is
4475+# written to the output directory.
4476+# The default file is: latex.
4477+# This tag requires that the tag GENERATE_LATEX is set to YES.
4478
4479 LATEX_CMD_NAME = latex
4480
4481-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
4482-# generate index for LaTeX. If left blank `makeindex' will be used as the
4483-# default command name.
4484+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
4485+# index for LaTeX.
4486+# The default file is: makeindex.
4487+# This tag requires that the tag GENERATE_LATEX is set to YES.
4488
4489 MAKEINDEX_CMD_NAME = makeindex
4490
4491-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
4492-# LaTeX documents. This may be useful for small projects and may help to
4493-# save some trees in general.
4494+# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
4495+# documents. This may be useful for small projects and may help to save some
4496+# trees in general.
4497+# The default value is: NO.
4498+# This tag requires that the tag GENERATE_LATEX is set to YES.
4499
4500 COMPACT_LATEX = NO
4501
4502-# The PAPER_TYPE tag can be used to set the paper type that is used
4503-# by the printer. Possible values are: a4, letter, legal and
4504-# executive. If left blank a4 will be used.
4505+# The PAPER_TYPE tag can be used to set the paper type that is used by the
4506+# printer.
4507+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
4508+# 14 inches) and executive (7.25 x 10.5 inches).
4509+# The default value is: a4.
4510+# This tag requires that the tag GENERATE_LATEX is set to YES.
4511
4512 PAPER_TYPE = a4
4513
4514-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
4515-# packages that should be included in the LaTeX output.
4516+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
4517+# that should be included in the LaTeX output. The package can be specified just
4518+# by its name or with the correct syntax as to be used with the LaTeX
4519+# \usepackage command. To get the times font for instance you can specify :
4520+# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
4521+# To use the option intlimits with the amsmath package you can specify:
4522+# EXTRA_PACKAGES=[intlimits]{amsmath}
4523+# If left blank no extra packages will be included.
4524+# This tag requires that the tag GENERATE_LATEX is set to YES.
4525
4526 EXTRA_PACKAGES =
4527
4528-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
4529-# the generated latex document. The header should contain everything until
4530-# the first chapter. If it is left blank doxygen will generate a
4531-# standard header. Notice: only use this tag if you know what you are doing!
4532+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
4533+# generated LaTeX document. The header should contain everything until the first
4534+# chapter. If it is left blank doxygen will generate a standard header. See
4535+# section "Doxygen usage" for information on how to let doxygen write the
4536+# default header to a separate file.
4537+#
4538+# Note: Only use a user-defined header if you know what you are doing! The
4539+# following commands have a special meaning inside the header: $title,
4540+# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
4541+# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
4542+# string, for the replacement values of the other commands the user is referred
4543+# to HTML_HEADER.
4544+# This tag requires that the tag GENERATE_LATEX is set to YES.
4545
4546 LATEX_HEADER =
4547
4548-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
4549-# the generated latex document. The footer should contain everything after
4550-# the last chapter. If it is left blank doxygen will generate a
4551-# standard footer. Notice: only use this tag if you know what you are doing!
4552+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
4553+# generated LaTeX document. The footer should contain everything after the last
4554+# chapter. If it is left blank doxygen will generate a standard footer. See
4555+# LATEX_HEADER for more information on how to generate a default footer and what
4556+# special commands can be used inside the footer.
4557+#
4558+# Note: Only use a user-defined footer if you know what you are doing!
4559+# This tag requires that the tag GENERATE_LATEX is set to YES.
4560
4561 LATEX_FOOTER =
4562
4563-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images
4564-# or other source files which should be copied to the LaTeX output directory.
4565-# Note that the files will be copied as-is; there are no commands or markers
4566-# available.
4567+# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
4568+# LaTeX style sheets that are included after the standard style sheets created
4569+# by doxygen. Using this option one can overrule certain style aspects. Doxygen
4570+# will copy the style sheet files to the output directory.
4571+# Note: The order of the extra style sheet files is of importance (e.g. the last
4572+# style sheet in the list overrules the setting of the previous ones in the
4573+# list).
4574+# This tag requires that the tag GENERATE_LATEX is set to YES.
4575+
4576+LATEX_EXTRA_STYLESHEET =
4577+
4578+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
4579+# other source files which should be copied to the LATEX_OUTPUT output
4580+# directory. Note that the files will be copied as-is; there are no commands or
4581+# markers available.
4582+# This tag requires that the tag GENERATE_LATEX is set to YES.
4583
4584 LATEX_EXTRA_FILES =
4585
4586-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
4587-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
4588-# contain links (just like the HTML output) instead of page references
4589-# This makes the output suitable for online browsing using a pdf viewer.
4590+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
4591+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
4592+# contain links (just like the HTML output) instead of page references. This
4593+# makes the output suitable for online browsing using a PDF viewer.
4594+# The default value is: YES.
4595+# This tag requires that the tag GENERATE_LATEX is set to YES.
4596
4597 PDF_HYPERLINKS = YES
4598
4599-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
4600-# plain latex in the generated Makefile. Set this option to YES to get a
4601+# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
4602+# the PDF file directly from the LaTeX files. Set this option to YES, to get a
4603 # higher quality PDF documentation.
4604+# The default value is: YES.
4605+# This tag requires that the tag GENERATE_LATEX is set to YES.
4606
4607 USE_PDFLATEX = YES
4608
4609-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
4610-# command to the generated LaTeX files. This will instruct LaTeX to keep
4611-# running if errors occur, instead of asking the user for help.
4612-# This option is also used when generating formulas in HTML.
4613+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
4614+# command to the generated LaTeX files. This will instruct LaTeX to keep running
4615+# if errors occur, instead of asking the user for help. This option is also used
4616+# when generating formulas in HTML.
4617+# The default value is: NO.
4618+# This tag requires that the tag GENERATE_LATEX is set to YES.
4619
4620 LATEX_BATCHMODE = NO
4621
4622-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
4623-# include the index chapters (such as File Index, Compound Index, etc.)
4624-# in the output.
4625+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
4626+# index chapters (such as File Index, Compound Index, etc.) in the output.
4627+# The default value is: NO.
4628+# This tag requires that the tag GENERATE_LATEX is set to YES.
4629
4630 LATEX_HIDE_INDICES = NO
4631
4632-# If LATEX_SOURCE_CODE is set to YES then doxygen will include
4633-# source code with syntax highlighting in the LaTeX output.
4634-# Note that which sources are shown also depends on other settings
4635-# such as SOURCE_BROWSER.
4636+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
4637+# code with syntax highlighting in the LaTeX output.
4638+#
4639+# Note that which sources are shown also depends on other settings such as
4640+# SOURCE_BROWSER.
4641+# The default value is: NO.
4642+# This tag requires that the tag GENERATE_LATEX is set to YES.
4643
4644 LATEX_SOURCE_CODE = NO
4645
4646 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the
4647-# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
4648-# http://en.wikipedia.org/wiki/BibTeX for more info.
4649+# bibliography, e.g. plainnat, or ieeetr. See
4650+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
4651+# The default value is: plain.
4652+# This tag requires that the tag GENERATE_LATEX is set to YES.
4653
4654 LATEX_BIB_STYLE = plain
4655
4656-#---------------------------------------------------------------------------
4657-# configuration options related to the RTF output
4658-#---------------------------------------------------------------------------
4659-
4660-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
4661-# The RTF output is optimized for Word 97 and may not look very pretty with
4662-# other RTF readers or editors.
4663+# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
4664+# page will contain the date and time when the page was generated. Setting this
4665+# to NO can help when comparing the output of multiple runs.
4666+# The default value is: NO.
4667+# This tag requires that the tag GENERATE_LATEX is set to YES.
4668+
4669+LATEX_TIMESTAMP = NO
4670+
4671+#---------------------------------------------------------------------------
4672+# Configuration options related to the RTF output
4673+#---------------------------------------------------------------------------
4674+
4675+# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
4676+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
4677+# readers/editors.
4678+# The default value is: NO.
4679
4680 GENERATE_RTF = NO
4681
4682-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
4683-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
4684-# put in front of it. If left blank `rtf' will be used as the default path.
4685+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
4686+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
4687+# it.
4688+# The default directory is: rtf.
4689+# This tag requires that the tag GENERATE_RTF is set to YES.
4690
4691 RTF_OUTPUT = rtf
4692
4693-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
4694-# RTF documents. This may be useful for small projects and may help to
4695-# save some trees in general.
4696+# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
4697+# documents. This may be useful for small projects and may help to save some
4698+# trees in general.
4699+# The default value is: NO.
4700+# This tag requires that the tag GENERATE_RTF is set to YES.
4701
4702 COMPACT_RTF = NO
4703
4704-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
4705-# will contain hyperlink fields. The RTF file will
4706-# contain links (just like the HTML output) instead of page references.
4707-# This makes the output suitable for online browsing using WORD or other
4708-# programs which support those fields.
4709-# Note: wordpad (write) and others do not support links.
4710+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
4711+# contain hyperlink fields. The RTF file will contain links (just like the HTML
4712+# output) instead of page references. This makes the output suitable for online
4713+# browsing using Word or some other Word compatible readers that support those
4714+# fields.
4715+#
4716+# Note: WordPad (write) and others do not support links.
4717+# The default value is: NO.
4718+# This tag requires that the tag GENERATE_RTF is set to YES.
4719
4720 RTF_HYPERLINKS = NO
4721
4722-# Load style sheet definitions from file. Syntax is similar to doxygen's
4723-# config file, i.e. a series of assignments. You only have to provide
4724-# replacements, missing definitions are set to their default value.
4725+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
4726+# file, i.e. a series of assignments. You only have to provide replacements,
4727+# missing definitions are set to their default value.
4728+#
4729+# See also section "Doxygen usage" for information on how to generate the
4730+# default style sheet that doxygen normally uses.
4731+# This tag requires that the tag GENERATE_RTF is set to YES.
4732
4733 RTF_STYLESHEET_FILE =
4734
4735-# Set optional variables used in the generation of an rtf document.
4736-# Syntax is similar to doxygen's config file.
4737+# Set optional variables used in the generation of an RTF document. Syntax is
4738+# similar to doxygen's config file. A template extensions file can be generated
4739+# using doxygen -e rtf extensionFile.
4740+# This tag requires that the tag GENERATE_RTF is set to YES.
4741
4742 RTF_EXTENSIONS_FILE =
4743
4744-#---------------------------------------------------------------------------
4745-# configuration options related to the man page output
4746-#---------------------------------------------------------------------------
4747-
4748-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
4749-# generate man pages
4750+# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
4751+# with syntax highlighting in the RTF output.
4752+#
4753+# Note that which sources are shown also depends on other settings such as
4754+# SOURCE_BROWSER.
4755+# The default value is: NO.
4756+# This tag requires that the tag GENERATE_RTF is set to YES.
4757+
4758+RTF_SOURCE_CODE = NO
4759+
4760+#---------------------------------------------------------------------------
4761+# Configuration options related to the man page output
4762+#---------------------------------------------------------------------------
4763+
4764+# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
4765+# classes and files.
4766+# The default value is: NO.
4767
4768 GENERATE_MAN = NO
4769
4770-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
4771-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
4772-# put in front of it. If left blank `man' will be used as the default path.
4773+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
4774+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
4775+# it. A directory man3 will be created inside the directory specified by
4776+# MAN_OUTPUT.
4777+# The default directory is: man.
4778+# This tag requires that the tag GENERATE_MAN is set to YES.
4779
4780 MAN_OUTPUT = man
4781
4782-# The MAN_EXTENSION tag determines the extension that is added to
4783-# the generated man pages (default is the subroutine's section .3)
4784+# The MAN_EXTENSION tag determines the extension that is added to the generated
4785+# man pages. In case the manual section does not start with a number, the number
4786+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
4787+# optional.
4788+# The default value is: .3.
4789+# This tag requires that the tag GENERATE_MAN is set to YES.
4790
4791 MAN_EXTENSION = .3
4792
4793-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
4794-# then it will generate one additional man file for each entity
4795-# documented in the real man page(s). These additional files
4796-# only source the real man page, but without them the man command
4797-# would be unable to find the correct page. The default is NO.
4798+# The MAN_SUBDIR tag determines the name of the directory created within
4799+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
4800+# MAN_EXTENSION with the initial . removed.
4801+# This tag requires that the tag GENERATE_MAN is set to YES.
4802+
4803+MAN_SUBDIR =
4804+
4805+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
4806+# will generate one additional man file for each entity documented in the real
4807+# man page(s). These additional files only source the real man page, but without
4808+# them the man command would be unable to find the correct page.
4809+# The default value is: NO.
4810+# This tag requires that the tag GENERATE_MAN is set to YES.
4811
4812 MAN_LINKS = NO
4813
4814 #---------------------------------------------------------------------------
4815-# configuration options related to the XML output
4816+# Configuration options related to the XML output
4817 #---------------------------------------------------------------------------
4818
4819-# If the GENERATE_XML tag is set to YES Doxygen will
4820-# generate an XML file that captures the structure of
4821-# the code including all documentation.
4822+# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
4823+# captures the structure of the code including all documentation.
4824+# The default value is: NO.
4825
4826 GENERATE_XML = YES
4827
4828-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
4829-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
4830-# put in front of it. If left blank `xml' will be used as the default path.
4831+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
4832+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
4833+# it.
4834+# The default directory is: xml.
4835+# This tag requires that the tag GENERATE_XML is set to YES.
4836
4837 XML_OUTPUT = xml
4838
4839-# The XML_SCHEMA tag can be used to specify an XML schema,
4840-# which can be used by a validating XML parser to check the
4841-# syntax of the XML files.
4842-
4843-XML_SCHEMA =
4844-
4845-# The XML_DTD tag can be used to specify an XML DTD,
4846-# which can be used by a validating XML parser to check the
4847-# syntax of the XML files.
4848-
4849-XML_DTD =
4850-
4851-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
4852-# dump the program listings (including syntax highlighting
4853-# and cross-referencing information) to the XML output. Note that
4854-# enabling this will significantly increase the size of the XML output.
4855+# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
4856+# listings (including syntax highlighting and cross-referencing information) to
4857+# the XML output. Note that enabling this will significantly increase the size
4858+# of the XML output.
4859+# The default value is: YES.
4860+# This tag requires that the tag GENERATE_XML is set to YES.
4861
4862 XML_PROGRAMLISTING = YES
4863
4864 #---------------------------------------------------------------------------
4865-# configuration options related to the DOCBOOK output
4866+# Configuration options related to the DOCBOOK output
4867 #---------------------------------------------------------------------------
4868
4869-# If the GENERATE_DOCBOOK tag is set to YES Doxygen will generate DOCBOOK files
4870+# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
4871 # that can be used to generate PDF.
4872+# The default value is: NO.
4873
4874 GENERATE_DOCBOOK = NO
4875
4876-# The DOCBOOK_OUTPUT tag is used to specify where the DOCBOOK pages will be put.
4877+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
4878 # If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
4879-# front of it. If left blank docbook will be used as the default path.
4880+# front of it.
4881+# The default directory is: docbook.
4882+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
4883
4884 DOCBOOK_OUTPUT = docbook
4885
4886-#---------------------------------------------------------------------------
4887-# configuration options for the AutoGen Definitions output
4888-#---------------------------------------------------------------------------
4889-
4890-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
4891-# generate an AutoGen Definitions (see autogen.sf.net) file
4892-# that captures the structure of the code including all
4893-# documentation. Note that this feature is still experimental
4894-# and incomplete at the moment.
4895+# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
4896+# program listings (including syntax highlighting and cross-referencing
4897+# information) to the DOCBOOK output. Note that enabling this will significantly
4898+# increase the size of the DOCBOOK output.
4899+# The default value is: NO.
4900+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
4901+
4902+DOCBOOK_PROGRAMLISTING = NO
4903+
4904+#---------------------------------------------------------------------------
4905+# Configuration options for the AutoGen Definitions output
4906+#---------------------------------------------------------------------------
4907+
4908+# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
4909+# AutoGen Definitions (see http://autogen.sf.net) file that captures the
4910+# structure of the code including all documentation. Note that this feature is
4911+# still experimental and incomplete at the moment.
4912+# The default value is: NO.
4913
4914 GENERATE_AUTOGEN_DEF = NO
4915
4916 #---------------------------------------------------------------------------
4917-# configuration options related to the Perl module output
4918+# Configuration options related to the Perl module output
4919 #---------------------------------------------------------------------------
4920
4921-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
4922-# generate a Perl module file that captures the structure of
4923-# the code including all documentation. Note that this
4924-# feature is still experimental and incomplete at the
4925-# moment.
4926+# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
4927+# file that captures the structure of the code including all documentation.
4928+#
4929+# Note that this feature is still experimental and incomplete at the moment.
4930+# The default value is: NO.
4931
4932 GENERATE_PERLMOD = NO
4933
4934-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
4935-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
4936-# to generate PDF and DVI output from the Perl module output.
4937+# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
4938+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
4939+# output from the Perl module output.
4940+# The default value is: NO.
4941+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
4942
4943 PERLMOD_LATEX = NO
4944
4945-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
4946-# nicely formatted so it can be parsed by a human reader.
4947-# This is useful
4948-# if you want to understand what is going on.
4949-# On the other hand, if this
4950-# tag is set to NO the size of the Perl module output will be much smaller
4951-# and Perl will parse it just the same.
4952+# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
4953+# formatted so it can be parsed by a human reader. This is useful if you want to
4954+# understand what is going on. On the other hand, if this tag is set to NO, the
4955+# size of the Perl module output will be much smaller and Perl will parse it
4956+# just the same.
4957+# The default value is: YES.
4958+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
4959
4960 PERLMOD_PRETTY = YES
4961
4962-# The names of the make variables in the generated doxyrules.make file
4963-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
4964-# This is useful so different doxyrules.make files included by the same
4965-# Makefile don't overwrite each other's variables.
4966+# The names of the make variables in the generated doxyrules.make file are
4967+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
4968+# so different doxyrules.make files included by the same Makefile don't
4969+# overwrite each other's variables.
4970+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
4971
4972 PERLMOD_MAKEVAR_PREFIX =
4973
4974@@ -1608,112 +2036,129 @@
4975 # Configuration options related to the preprocessor
4976 #---------------------------------------------------------------------------
4977
4978-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
4979-# evaluate all C-preprocessor directives found in the sources and include
4980-# files.
4981+# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
4982+# C-preprocessor directives found in the sources and include files.
4983+# The default value is: YES.
4984
4985 ENABLE_PREPROCESSING = YES
4986
4987-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
4988-# names in the source code. If set to NO (the default) only conditional
4989-# compilation will be performed. Macro expansion can be done in a controlled
4990-# way by setting EXPAND_ONLY_PREDEF to YES.
4991+# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
4992+# in the source code. If set to NO, only conditional compilation will be
4993+# performed. Macro expansion can be done in a controlled way by setting
4994+# EXPAND_ONLY_PREDEF to YES.
4995+# The default value is: NO.
4996+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
4997
4998 MACRO_EXPANSION = NO
4999
5000-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: