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
=== added file '.bzrignore'
--- .bzrignore 1970-01-01 00:00:00 +0000
+++ .bzrignore 2017-06-05 10:46:31 +0000
@@ -0,0 +1,5 @@
1.idea
2.project
3include/server/mir/version.h
4include/client/mir_toolkit/version.h
5build-*
06
=== modified file '3rd_party/android-deps/android/input.h'
--- 3rd_party/android-deps/android/input.h 2013-09-20 11:55:05 +0000
+++ 3rd_party/android-deps/android/input.h 2017-06-05 10:46:31 +0000
@@ -141,7 +141,10 @@
141 AINPUT_EVENT_TYPE_KEY = 1,141 AINPUT_EVENT_TYPE_KEY = 1,
142142
143 /* Indicates that the input event is a motion event. */143 /* Indicates that the input event is a motion event. */
144 AINPUT_EVENT_TYPE_MOTION = 2144 AINPUT_EVENT_TYPE_MOTION = 2,
145
146 /* Indicates that the event contains a raw buffer. */
147 AINPUT_EVENT_TYPE_BUFFER = 3
145};148};
146149
147/*150/*
148151
=== removed file '3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h'
--- 3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h 2012-11-13 11:17:46 +0000
+++ 3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h 1970-01-01 00:00:00 +0000
@@ -1,36 +0,0 @@
1// Copyright (C) 2010 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15
16// Generic key layout file for full alphabetic US English PC style
17// external keyboards. This file is intentionally very generic and is
18// intended to support a broad rang of keyboards. Do not edit the
19// generic key layout to support a specific keyboard; instead, create
20// a new key layout file with the required keyboard configuration.
21// Taken from android source tree Generic.kl and Generic.kcm
22
23#ifndef GENERIC_KEY_MAP_H_
24#define GENERIC_KEY_MAP_H_
25
26namespace android
27{
28struct GenericKeyMap
29{
30 static const char* key_layout_contents();
31
32 static const char* keymap_contents();
33};
34}
35
36#endif // GENERIC_KEY_MAP_H_
370
=== modified file '3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h'
--- 3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h 2016-03-16 06:59:01 +0000
+++ 3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h 2017-06-05 10:46:31 +0000
@@ -571,6 +571,13 @@
571 Vector<PointerCoords> mSamplePointerCoords;571 Vector<PointerCoords> mSamplePointerCoords;
572};572};
573573
574struct RawBufferEvent : public InputEvent {
575
576 virtual int32_t getType() const { return AINPUT_EVENT_TYPE_BUFFER; }
577 virtual ~RawBufferEvent() { }
578 std::string buffer;
579};
580
574/*581/*
575 * Input event factory.582 * Input event factory.
576 */583 */
@@ -583,6 +590,7 @@
583590
584 virtual KeyEvent* createKeyEvent() = 0;591 virtual KeyEvent* createKeyEvent() = 0;
585 virtual MotionEvent* createMotionEvent() = 0;592 virtual MotionEvent* createMotionEvent() = 0;
593 virtual RawBufferEvent* createRawBufferEvent() = 0;
586};594};
587595
588/*596/*
@@ -596,10 +604,12 @@
596604
597 virtual KeyEvent* createKeyEvent() { return & mKeyEvent; }605 virtual KeyEvent* createKeyEvent() { return & mKeyEvent; }
598 virtual MotionEvent* createMotionEvent() { return & mMotionEvent; }606 virtual MotionEvent* createMotionEvent() { return & mMotionEvent; }
607 virtual RawBufferEvent* createRawBufferEvent() { return &mRawEvent; }
599608
600private:609private:
601 KeyEvent mKeyEvent;610 KeyEvent mKeyEvent;
602 MotionEvent mMotionEvent;611 MotionEvent mMotionEvent;
612 RawBufferEvent mRawEvent;
603};613};
604614
605/*615/*
@@ -612,6 +622,7 @@
612622
613 virtual KeyEvent* createKeyEvent();623 virtual KeyEvent* createKeyEvent();
614 virtual MotionEvent* createMotionEvent();624 virtual MotionEvent* createMotionEvent();
625 virtual RawBufferEvent* createRawBufferEvent();
615626
616 void recycle(InputEvent* event);627 void recycle(InputEvent* event);
617628
@@ -620,6 +631,7 @@
620631
621 Vector<KeyEvent*> mKeyEventPool;632 Vector<KeyEvent*> mKeyEventPool;
622 Vector<MotionEvent*> mMotionEventPool;633 Vector<MotionEvent*> mMotionEventPool;
634 Vector<RawBufferEvent*> mRawBufferEventPool;
623};635};
624636
625} // namespace android637} // namespace android
626638
=== modified file '3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h'
--- 3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h 2016-01-29 08:18:22 +0000
+++ 3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h 2017-06-05 10:46:31 +0000
@@ -46,21 +46,26 @@
46 */46 */
47struct InputMessage {47struct InputMessage {
48 InputMessage();48 InputMessage();
49 InputMessage(uint32_t seq, std::string const& buffer);
50 InputMessage(InputMessage const& cp);
51 InputMessage& operator=(InputMessage const& cp);
4952
50 enum {53 enum {
51 TYPE_KEY = 1,54 TYPE_KEY = 1,
52 TYPE_MOTION = 2,55 TYPE_MOTION = 2,
53 TYPE_FINISHED = 356 TYPE_FINISHED = 3,
57 TYPE_BUFFER = 4
54 };58 };
5559
56 struct Header {60 struct Header {
57 uint32_t type;61 uint32_t type;
58 uint32_t padding; // 8 byte alignment for the body that follows62 uint32_t seq;
63 uint32_t size; // size of the Body
64 uint32_t padding; // padding for 8byte tokens in Body
59 } header;65 } header;
6066
61 union Body {67 union Body {
62 struct Key {68 struct Key {
63 uint32_t seq;
64 int64_t eventTime;69 int64_t eventTime;
65 mir::cookie::Blob cookieBlob;70 mir::cookie::Blob cookieBlob;
66 int32_t deviceId;71 int32_t deviceId;
@@ -79,7 +84,6 @@
79 } key;84 } key;
8085
81 struct Motion {86 struct Motion {
82 uint32_t seq;
83 int64_t eventTime;87 int64_t eventTime;
84 mir::cookie::Blob cookieBlob;88 mir::cookie::Blob cookieBlob;
85 int32_t deviceId;89 int32_t deviceId;
@@ -113,17 +117,22 @@
113 } motion;117 } motion;
114118
115 struct Finished {119 struct Finished {
116 uint32_t seq;
117 bool handled;120 bool handled;
118121
119 inline size_t size() const {122 inline size_t size() const {
120 return sizeof(Finished);123 return sizeof(Finished);
121 }124 }
122 } finished;125 } finished;
126
127 struct Buffer {
128 uint8_t buffer[sizeof(Motion)];
129 } buffer;
123 } body;130 } body;
124131
125 bool isValid(size_t actualSize) const;132 bool isValid(size_t actualSize) const;
126 size_t size() const;133 size_t size() const;
134
135 static const size_t raw_event_payload = sizeof(body.buffer);
127};136};
128137
129/*138/*
@@ -141,12 +150,6 @@
141public:150public:
142 InputChannel(const String8& name, int fd);151 InputChannel(const String8& name, int fd);
143152
144 /* Creates a pair of input channels.
145 *
146 * Returns OK on success.
147 */
148 static status_t openInputFdPair(int& server_fd, int& client_fd);
149
150 inline String8 getName() const { return mName; }153 inline String8 getName() const { return mName; }
151 inline int getFd() const { return mFd; }154 inline int getFd() const { return mFd; }
152155
@@ -194,6 +197,8 @@
194 /* Gets the underlying input channel. */197 /* Gets the underlying input channel. */
195 inline sp<InputChannel> getChannel() { return mChannel; }198 inline sp<InputChannel> getChannel() { return mChannel; }
196199
200 status_t publishEventBuffer(uint32_t seq, std::string const& buffer);
201
197 /* Publishes a key event to the input channel.202 /* Publishes a key event to the input channel.
198 *203 *
199 * Returns OK on success.204 * Returns OK on success.
@@ -436,6 +441,7 @@
436441
437 static void initializeKeyEvent(KeyEvent* event, const InputMessage* msg);442 static void initializeKeyEvent(KeyEvent* event, const InputMessage* msg);
438 static void initializeMotionEvent(MotionEvent* event, const InputMessage* msg);443 static void initializeMotionEvent(MotionEvent* event, const InputMessage* msg);
444 static void initializeBufferEvent(RawBufferEvent* event, const InputMessage* msg);
439 static void addSample(MotionEvent* event, const InputMessage* msg);445 static void addSample(MotionEvent* event, const InputMessage* msg);
440 static bool canAddSample(const Batch& batch, const InputMessage* msg);446 static bool canAddSample(const Batch& batch, const InputMessage* msg);
441 static ssize_t findSampleNoLaterThan(const Batch& batch, std::chrono::nanoseconds time);447 static ssize_t findSampleNoLaterThan(const Batch& batch, std::chrono::nanoseconds time);
442448
=== modified file '3rd_party/android-input/android/frameworks/base/services/input/Input.cpp'
--- 3rd_party/android-input/android/frameworks/base/services/input/Input.cpp 2016-03-16 06:59:01 +0000
+++ 3rd_party/android-input/android/frameworks/base/services/input/Input.cpp 2017-06-05 10:46:31 +0000
@@ -612,6 +612,9 @@
612 for (size_t i = 0; i < mMotionEventPool.size(); i++) {612 for (size_t i = 0; i < mMotionEventPool.size(); i++) {
613 delete mMotionEventPool.itemAt(i);613 delete mMotionEventPool.itemAt(i);
614 }614 }
615 for (size_t i = 0; i < mRawBufferEventPool.size(); i++) {
616 delete mRawBufferEventPool.itemAt(i);
617 }
615}618}
616619
617KeyEvent* PooledInputEventFactory::createKeyEvent() {620KeyEvent* PooledInputEventFactory::createKeyEvent() {
@@ -632,8 +635,23 @@
632 return new MotionEvent();635 return new MotionEvent();
633}636}
634637
638RawBufferEvent* PooledInputEventFactory::createRawBufferEvent() {
639 if (!mRawBufferEventPool.isEmpty()) {
640 RawBufferEvent* event = mRawBufferEventPool.top();
641 mRawBufferEventPool.pop();
642 return event;
643 }
644 return new RawBufferEvent();
645}
646
635void PooledInputEventFactory::recycle(InputEvent* event) {647void PooledInputEventFactory::recycle(InputEvent* event) {
636 switch (event->getType()) {648 switch (event->getType()) {
649 case AINPUT_EVENT_TYPE_BUFFER:
650 if (mRawBufferEventPool.size() < mMaxPoolSize) {
651 mRawBufferEventPool.push(static_cast<RawBufferEvent*>(event));
652 return;
653 }
654 break;
637 case AINPUT_EVENT_TYPE_KEY:655 case AINPUT_EVENT_TYPE_KEY:
638 if (mKeyEventPool.size() < mMaxPoolSize) {656 if (mKeyEventPool.size() < mMaxPoolSize) {
639 mKeyEventPool.push(static_cast<KeyEvent*>(event));657 mKeyEventPool.push(static_cast<KeyEvent*>(event));
640658
=== modified file '3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp'
--- 3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp 2016-03-16 06:59:01 +0000
+++ 3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp 2017-06-05 10:46:31 +0000
@@ -29,15 +29,12 @@
29#include <sys/socket.h>29#include <sys/socket.h>
30#include <math.h>30#include <math.h>
3131
32#include <boost/throw_exception.hpp>
33#include <stdexcept>
34
3235
33namespace android {36namespace android {
3437
35// Socket buffer size. The default is typically about 128KB, which is much larger than
36// we really need. So we make it smaller. It just needs to be big enough to hold
37// a few dozen large multi-finger motion events in the case where an application gets
38// behind processing touches.
39static const size_t SOCKET_BUFFER_SIZE = 32 * 1024;
40
41// Nanoseconds per milliseconds.38// Nanoseconds per milliseconds.
42static constexpr const std::chrono::nanoseconds NANOS_PER_MS = std::chrono::nanoseconds(1000000);39static constexpr const std::chrono::nanoseconds NANOS_PER_MS = std::chrono::nanoseconds(1000000);
4340
@@ -68,16 +65,32 @@
68 memset(this, 0, sizeof(InputMessage));65 memset(this, 0, sizeof(InputMessage));
69}66}
7067
68InputMessage::InputMessage(uint32_t seq, std::string const& buffer)
69{
70 memset(this, 0, sizeof(InputMessage));
71 header.type = TYPE_BUFFER;
72 header.seq = seq;
73 header.size = buffer.size();
74
75 if (raw_event_payload < buffer.size())
76 BOOST_THROW_EXCEPTION(std::runtime_error("raw buffer event exceeds payload"));
77 memcpy(body.buffer.buffer, buffer.data(), header.size);
78}
79
80InputMessage::InputMessage(InputMessage const& cp) = default;
81
82InputMessage& InputMessage::operator=(InputMessage const& cp) = default;
83
71bool InputMessage::isValid(size_t actualSize) const {84bool InputMessage::isValid(size_t actualSize) const {
72 if (size() == actualSize) {85 if (size() == actualSize) {
73 switch (header.type) {86 switch (header.type) {
87 case TYPE_FINISHED:
88 case TYPE_BUFFER:
74 case TYPE_KEY:89 case TYPE_KEY:
75 return true;90 return true;
76 case TYPE_MOTION:91 case TYPE_MOTION:
77 return body.motion.pointerCount > 092 return body.motion.pointerCount > 0
78 && body.motion.pointerCount <= MAX_POINTERS;93 && body.motion.pointerCount <= MAX_POINTERS;
79 case TYPE_FINISHED:
80 return true;
81 }94 }
82 }95 }
83 return false;96 return false;
@@ -91,11 +104,11 @@
91 return sizeof(Header) + body.motion.size();104 return sizeof(Header) + body.motion.size();
92 case TYPE_FINISHED:105 case TYPE_FINISHED:
93 return sizeof(Header) + body.finished.size();106 return sizeof(Header) + body.finished.size();
107 case TYPE_BUFFER:
108 return sizeof(Header) + header.size;
94 }109 }
95 return sizeof(Header);110 return sizeof(Header);
96}111}
97
98
99// --- InputChannel ---112// --- InputChannel ---
100113
101InputChannel::InputChannel(const String8& name, int fd) :114InputChannel::InputChannel(const String8& name, int fd) :
@@ -117,29 +130,6 @@
117#endif130#endif
118}131}
119132
120status_t InputChannel::openInputFdPair(int& server_fd, int& client_fd) {
121 int sockets[2];
122 if (socketpair(AF_UNIX, SOCK_SEQPACKET, 0, sockets)) {
123 status_t result = -errno;
124 ALOGE("InputChannel ~ Could not create socket pair. errno=%d",
125 errno);
126 server_fd = client_fd = 0;
127
128 return result;
129 }
130
131 int bufferSize = SOCKET_BUFFER_SIZE;
132 setsockopt(sockets[0], SOL_SOCKET, SO_SNDBUF, &bufferSize, sizeof(bufferSize));
133 setsockopt(sockets[0], SOL_SOCKET, SO_RCVBUF, &bufferSize, sizeof(bufferSize));
134 setsockopt(sockets[1], SOL_SOCKET, SO_SNDBUF, &bufferSize, sizeof(bufferSize));
135 setsockopt(sockets[1], SOL_SOCKET, SO_RCVBUF, &bufferSize, sizeof(bufferSize));
136
137 server_fd = sockets[0];
138 client_fd = sockets[1];
139
140 return OK;
141}
142
143status_t InputChannel::sendMessage(const InputMessage* msg) {133status_t InputChannel::sendMessage(const InputMessage* msg) {
144 size_t msgLength = msg->size();134 size_t msgLength = msg->size();
145 ssize_t nWrite;135 ssize_t nWrite;
@@ -226,6 +216,20 @@
226InputPublisher::~InputPublisher() {216InputPublisher::~InputPublisher() {
227}217}
228218
219status_t InputPublisher::publishEventBuffer(uint32_t seq, std::string const& buffer) {
220#if DEBUG_TRANSPORT_ACTIONS
221 ALOGD("channel '%s' publisher ~ publishInputBuffer: seq=%u", c_str(mChannel->getName()), seq);
222#endif
223
224 if (!seq) {
225 ALOGE("Attempted to publish a buffer with sequence number 0.");
226 return BAD_VALUE;
227 }
228
229 InputMessage msg(seq, buffer);
230 return mChannel->sendMessage(&msg);
231}
232
229status_t InputPublisher::publishKeyEvent(233status_t InputPublisher::publishKeyEvent(
230 uint32_t seq,234 uint32_t seq,
231 int32_t deviceId,235 int32_t deviceId,
@@ -255,7 +259,8 @@
255259
256 InputMessage msg;260 InputMessage msg;
257 msg.header.type = InputMessage::TYPE_KEY;261 msg.header.type = InputMessage::TYPE_KEY;
258 msg.body.key.seq = seq;262 msg.header.seq = seq;
263 msg.header.size = sizeof(msg.body.key);
259 msg.body.key.deviceId = deviceId;264 msg.body.key.deviceId = deviceId;
260 msg.body.key.source = source;265 msg.body.key.source = source;
261 msg.body.key.action = action;266 msg.body.key.action = action;
@@ -313,7 +318,7 @@
313318
314 InputMessage msg;319 InputMessage msg;
315 msg.header.type = InputMessage::TYPE_MOTION;320 msg.header.type = InputMessage::TYPE_MOTION;
316 msg.body.motion.seq = seq;321 msg.header.seq = seq;
317 msg.body.motion.deviceId = deviceId;322 msg.body.motion.deviceId = deviceId;
318 msg.body.motion.source = source;323 msg.body.motion.source = source;
319 msg.body.motion.action = action;324 msg.body.motion.action = action;
@@ -333,6 +338,8 @@
333 msg.body.motion.pointers[i].properties.copyFrom(pointerProperties[i]);338 msg.body.motion.pointers[i].properties.copyFrom(pointerProperties[i]);
334 msg.body.motion.pointers[i].coords.copyFrom(pointerCoords[i]);339 msg.body.motion.pointers[i].coords.copyFrom(pointerCoords[i]);
335 }340 }
341
342 msg.header.size = msg.body.motion.size();
336 return mChannel->sendMessage(&msg);343 return mChannel->sendMessage(&msg);
337}344}
338345
@@ -354,7 +361,7 @@
354 c_str(mChannel->getName()), msg.header.type);361 c_str(mChannel->getName()), msg.header.type);
355 return UNKNOWN_ERROR;362 return UNKNOWN_ERROR;
356 }363 }
357 *outSeq = msg.body.finished.seq;364 *outSeq = msg.header.seq;
358 *outHandled = msg.body.finished.handled;365 *outHandled = msg.body.finished.handled;
359 return OK;366 return OK;
360}367}
@@ -421,12 +428,25 @@
421 }428 }
422429
423 switch (mMsg.header.type) {430 switch (mMsg.header.type) {
431 case InputMessage::TYPE_BUFFER: {
432 RawBufferEvent* bufferEvent = factory->createRawBufferEvent();
433 if (!bufferEvent) return NO_MEMORY;
434
435 initializeBufferEvent(bufferEvent, &mMsg);
436 *outSeq = mMsg.header.seq;
437 *outEvent = bufferEvent;
438#if DEBUG_TRANSPORT_ACTIONS
439 ALOGD("channel '%s' consumer ~ consumed buffer event, seq=%u",
440 c_str(mChannel->getName()), *outSeq);
441#endif
442 break;
443 }
424 case InputMessage::TYPE_KEY: {444 case InputMessage::TYPE_KEY: {
425 KeyEvent* keyEvent = factory->createKeyEvent();445 KeyEvent* keyEvent = factory->createKeyEvent();
426 if (!keyEvent) return NO_MEMORY;446 if (!keyEvent) return NO_MEMORY;
427447
428 initializeKeyEvent(keyEvent, &mMsg);448 initializeKeyEvent(keyEvent, &mMsg);
429 *outSeq = mMsg.body.key.seq;449 *outSeq = mMsg.header.seq;
430 *outEvent = keyEvent;450 *outEvent = keyEvent;
431#if DEBUG_TRANSPORT_ACTIONS451#if DEBUG_TRANSPORT_ACTIONS
432 ALOGD("channel '%s' consumer ~ consumed key event, seq=%u",452 ALOGD("channel '%s' consumer ~ consumed key event, seq=%u",
@@ -484,7 +504,7 @@
484504
485 updateTouchState(&mMsg);505 updateTouchState(&mMsg);
486 initializeMotionEvent(motionEvent, &mMsg);506 initializeMotionEvent(motionEvent, &mMsg);
487 *outSeq = mMsg.body.motion.seq;507 *outSeq = mMsg.header.seq;
488 *outEvent = motionEvent;508 *outEvent = motionEvent;
489#if DEBUG_TRANSPORT_ACTIONS509#if DEBUG_TRANSPORT_ACTIONS
490 ALOGD("channel '%s' consumer ~ consumed motion event, seq=%u",510 ALOGD("channel '%s' consumer ~ consumed motion event, seq=%u",
@@ -548,14 +568,14 @@
548 updateTouchState(&msg);568 updateTouchState(&msg);
549 if (i) {569 if (i) {
550 SeqChain seqChain;570 SeqChain seqChain;
551 seqChain.seq = msg.body.motion.seq;571 seqChain.seq = msg.header.seq;
552 seqChain.chain = chain;572 seqChain.chain = chain;
553 mSeqChains.push(seqChain);573 mSeqChains.push(seqChain);
554 addSample(motionEvent, &msg);574 addSample(motionEvent, &msg);
555 } else {575 } else {
556 initializeMotionEvent(motionEvent, &msg);576 initializeMotionEvent(motionEvent, &msg);
557 }577 }
558 chain = msg.body.motion.seq;578 chain = msg.header.seq;
559 }579 }
560 batch.samples.removeItemsAt(0, count);580 batch.samples.removeItemsAt(0, count);
561581
@@ -750,6 +770,7 @@
750 // Resample touch coordinates.770 // Resample touch coordinates.
751 touchState.lastResample.eventTime = sampleTime;771 touchState.lastResample.eventTime = sampleTime;
752 touchState.lastResample.ids.clear();772 touchState.lastResample.ids.clear();
773 bool coords_resampled = false;
753 for (size_t i = 0; i < pointerCount; i++) {774 for (size_t i = 0; i < pointerCount; i++) {
754 uint32_t id = event->getPointerId(i);775 uint32_t id = event->getPointerId(i);
755 touchState.lastResample.idToIndex[id] = i;776 touchState.lastResample.idToIndex[id] = i;
@@ -764,6 +785,9 @@
764 lerp(currentCoords.getX(), otherCoords.getX(), alpha));785 lerp(currentCoords.getX(), otherCoords.getX(), alpha));
765 resampledCoords.setAxisValue(AMOTION_EVENT_AXIS_Y,786 resampledCoords.setAxisValue(AMOTION_EVENT_AXIS_Y,
766 lerp(currentCoords.getY(), otherCoords.getY(), alpha));787 lerp(currentCoords.getY(), otherCoords.getY(), alpha));
788 coords_resampled = true;
789 // No coordinate resampling for tooltype mouse - if we intend to
790 // change that we must also resample RX, RY, HSCROLL, VSCROLL
767#if DEBUG_RESAMPLING791#if DEBUG_RESAMPLING
768 ALOGD("[%d] - out (%0.3f, %0.3f), cur (%0.3f, %0.3f), "792 ALOGD("[%d] - out (%0.3f, %0.3f), cur (%0.3f, %0.3f), "
769 "other (%0.3f, %0.3f), alpha %0.3f",793 "other (%0.3f, %0.3f), alpha %0.3f",
@@ -773,6 +797,8 @@
773 alpha);797 alpha);
774#endif798#endif
775 } else {799 } else {
800 // Before calling this method currentCoords was already part of the
801 // event -> no need to add them to the event.
776 resampledCoords.copyFrom(currentCoords);802 resampledCoords.copyFrom(currentCoords);
777#if DEBUG_RESAMPLING803#if DEBUG_RESAMPLING
778 ALOGD("[%d] - out (%0.3f, %0.3f), cur (%0.3f, %0.3f)",804 ALOGD("[%d] - out (%0.3f, %0.3f), cur (%0.3f, %0.3f)",
@@ -782,7 +808,8 @@
782 }808 }
783 }809 }
784810
785 event->addSample(sampleTime, touchState.lastResample.pointers);811 if (coords_resampled)
812 event->addSample(sampleTime, touchState.lastResample.pointers);
786}813}
787814
788bool InputConsumer::shouldResampleTool(int32_t toolType) {815bool InputConsumer::shouldResampleTool(int32_t toolType) {
@@ -838,7 +865,8 @@
838status_t InputConsumer::sendUnchainedFinishedSignal(uint32_t seq, bool handled) {865status_t InputConsumer::sendUnchainedFinishedSignal(uint32_t seq, bool handled) {
839 InputMessage msg;866 InputMessage msg;
840 msg.header.type = InputMessage::TYPE_FINISHED;867 msg.header.type = InputMessage::TYPE_FINISHED;
841 msg.body.finished.seq = seq;868 msg.header.size = sizeof(msg.body.finished);
869 msg.header.seq = seq;
842 msg.body.finished.handled = handled;870 msg.body.finished.handled = handled;
843 return mChannel->sendMessage(&msg);871 return mChannel->sendMessage(&msg);
844}872}
@@ -872,6 +900,10 @@
872 return -1;900 return -1;
873}901}
874902
903void InputConsumer::initializeBufferEvent(RawBufferEvent* event, const InputMessage* msg) {
904 event->buffer.assign(msg->body.buffer.buffer, msg->body.buffer.buffer + msg->header.size);
905}
906
875void InputConsumer::initializeKeyEvent(KeyEvent* event, const InputMessage* msg) {907void InputConsumer::initializeKeyEvent(KeyEvent* event, const InputMessage* msg) {
876 event->initialize(908 event->initialize(
877 msg->body.key.deviceId,909 msg->body.key.deviceId,
878910
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2016-03-25 15:08:27 +0000
+++ CMakeLists.txt 2017-06-05 10:46:31 +0000
@@ -28,8 +28,8 @@
28set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)28set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
2929
30set(MIR_VERSION_MAJOR 0)30set(MIR_VERSION_MAJOR 0)
31set(MIR_VERSION_MINOR 21)31set(MIR_VERSION_MINOR 26)
32set(MIR_VERSION_PATCH 0)32set(MIR_VERSION_PATCH 3)
3333
34add_definitions(-DMIR_VERSION_MAJOR=${MIR_VERSION_MAJOR})34add_definitions(-DMIR_VERSION_MAJOR=${MIR_VERSION_MAJOR})
35add_definitions(-DMIR_VERSION_MINOR=${MIR_VERSION_MINOR})35add_definitions(-DMIR_VERSION_MINOR=${MIR_VERSION_MINOR})
@@ -62,27 +62,31 @@
6262
63set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread -g -Werror -Wall -pedantic -Wextra -fPIC")63set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread -g -Werror -Wall -pedantic -Wextra -fPIC")
64set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -g -std=c++14 -Werror -Wall -fno-strict-aliasing -pedantic -Wnon-virtual-dtor -Wextra -fPIC")64set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -g -std=c++14 -Werror -Wall -fno-strict-aliasing -pedantic -Wnon-virtual-dtor -Wextra -fPIC")
65set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed")
66set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed")
67set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
68
69include(CheckCXXCompilerFlag)
70check_cxx_compiler_flag(-Wmismatched-tags HAS_W_MISMATCHED_TAGS)
71
72if(HAS_W_MISMATCHED_TAGS)
73 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-mismatched-tags")
74endif()
6575
66option(MIR_USE_LD_GOLD "Enables the \"gold\" linker." OFF)76option(MIR_USE_LD_GOLD "Enables the \"gold\" linker." OFF)
67if(MIR_USE_LD_GOLD)77if(MIR_USE_LD_GOLD)
68 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold")
69 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
70 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=gold")78 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=gold")
71 set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=gold")79 set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=gold")
72 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")80 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
73endif()81endif()
7482
75if ("${CMAKE_CXX_COMPILER}" MATCHES "clang")
76 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-return-type-c-linkage -Wno-mismatched-tags")
77endif()
78
79# Link time optimization allows leaner, cleaner libraries83# Link time optimization allows leaner, cleaner libraries
80message(STATUS "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER})84message(STATUS "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER})
8185
82option(MIR_LINK_TIME_OPTIMIZATION "Enables the linker to optimize binaries." OFF)86option(MIR_LINK_TIME_OPTIMIZATION "Enables the linker to optimize binaries." OFF)
83if(MIR_LINK_TIME_OPTIMIZATION)87if(MIR_LINK_TIME_OPTIMIZATION)
84 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto")88 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto -ffat-lto-objects")
85 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")89 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -ffat-lto-objects")
86 if(${CMAKE_COMPILER_IS_GNUCXX})90 if(${CMAKE_COMPILER_IS_GNUCXX})
87 set(CMAKE_NM "gcc-nm")91 set(CMAKE_NM "gcc-nm")
88 set(CMAKE_AR "gcc-ar")92 set(CMAKE_AR "gcc-ar")
@@ -138,6 +142,7 @@
138142
139enable_testing()143enable_testing()
140144
145include_directories(include/core)
141include_directories(include/common)146include_directories(include/common)
142include_directories(include/cookie)147include_directories(include/cookie)
143148
@@ -163,10 +168,10 @@
163# Default to KMS backend, but build all of them168# Default to KMS backend, but build all of them
164set(169set(
165 MIR_PLATFORM170 MIR_PLATFORM
166 mesa-kms;android;mesa-x11171 mesa-kms;android;mesa-x11;eglstream-kms
167 CACHE172 CACHE
168 STRING173 STRING
169 "a list of graphics backends to build (options are 'mesa-kms', 'android' or 'mesa-x11')"174 "a list of graphics backends to build (options are 'mesa-kms', 'android', 'mesa-x11', or 'eglstream-kms')"
170)175)
171176
172list(GET MIR_PLATFORM 0 MIR_TEST_PLATFORM)177list(GET MIR_PLATFORM 0 MIR_TEST_PLATFORM)
@@ -183,12 +188,16 @@
183 if (platform STREQUAL "mesa-x11")188 if (platform STREQUAL "mesa-x11")
184 set(MIR_BUILD_PLATFORM_MESA_X11 TRUE)189 set(MIR_BUILD_PLATFORM_MESA_X11 TRUE)
185 endif()190 endif()
191 if (platform STREQUAL "eglstream-kms")
192 set(MIR_BUILD_PLATFORM_EGLSTREAM_KMS TRUE)
193 endif()
186endforeach(platform)194endforeach(platform)
187195
188find_package(EGL REQUIRED)196find_package(EGL REQUIRED)
189find_package(GLESv2 REQUIRED)197find_package(GLESv2 REQUIRED)
190find_package(GLM REQUIRED)198find_package(GLM REQUIRED)
191find_package(Protobuf REQUIRED )199find_package(Protobuf REQUIRED )
200find_package(CapnProto REQUIRED)
192find_package(GLog REQUIRED)201find_package(GLog REQUIRED)
193find_package(GFlags REQUIRED)202find_package(GFlags REQUIRED)
194find_package(LTTngUST REQUIRED)203find_package(LTTngUST REQUIRED)
@@ -199,6 +208,43 @@
199include_directories (SYSTEM ${EGL_INCLUDE_DIRS})208include_directories (SYSTEM ${EGL_INCLUDE_DIRS})
200include_directories (SYSTEM ${GLM_INCLUDE_DIRS})209include_directories (SYSTEM ${GLM_INCLUDE_DIRS})
201210
211#
212# Full OpenGL support is possibly complete but not yet perfect. So is
213# presently disabled by default due to:
214# 1. Black windows bug: https://bugs.freedesktop.org/show_bug.cgi?id=92265
215# 2. Use of glEGLImageTargetTexture2DOES in:
216# src/platform/graphics/egl_extensions.cpp
217# possibly shouldn't work even though it does. Or should it?
218#
219#if (TARGET_ARCH STREQUAL "x86_64-linux-gnu" OR
220# TARGET_ARCH STREQUAL "i386-linux-gnu")
221# set(DEFAULT_LIBGL "libGL")
222#else()
223 set(DEFAULT_LIBGL "libGLESv2")
224#endif()
225set(MIR_SERVER_LIBGL ${DEFAULT_LIBGL} CACHE STRING "OpenGL library to use in Mir servers {libGL,libGLESv2}")
226
227if (MIR_SERVER_LIBGL STREQUAL "libGL")
228 pkg_check_modules(GL REQUIRED gl)
229 add_definitions(
230 -DGL_GLEXT_PROTOTYPES
231 -DMIR_SERVER_GL_H=<GL/gl.h>
232 -DMIR_SERVER_GLEXT_H=<GL/glext.h>
233 -DMIR_SERVER_EGL_OPENGL_BIT=EGL_OPENGL_BIT
234 -DMIR_SERVER_EGL_OPENGL_API=EGL_OPENGL_API
235 )
236elseif (MIR_SERVER_LIBGL STREQUAL "libGLESv2")
237 pkg_check_modules(GL REQUIRED glesv2)
238 add_definitions(
239 -DMIR_SERVER_GL_H=<GLES2/gl2.h>
240 -DMIR_SERVER_GLEXT_H=<GLES2/gl2ext.h>
241 -DMIR_SERVER_EGL_OPENGL_BIT=EGL_OPENGL_ES2_BIT
242 -DMIR_SERVER_EGL_OPENGL_API=EGL_OPENGL_ES_API
243 )
244else()
245 message(FATAL_ERROR "Invalid MIR_SERVER_LIBGL value ${MIR_SERVER_LIBGL}")
246endif()
247
202if (MIR_BUILD_PLATFORM_ANDROID)248if (MIR_BUILD_PLATFORM_ANDROID)
203 find_package(AndroidProperties REQUIRED)249 find_package(AndroidProperties REQUIRED)
204 find_package(LibHardware REQUIRED)250 find_package(LibHardware REQUIRED)
@@ -210,6 +256,10 @@
210 pkg_check_modules( DRM REQUIRED libdrm )256 pkg_check_modules( DRM REQUIRED libdrm )
211endif()257endif()
212258
259if (MIR_BUILD_PLATFORM_EGLSTREAM_KMS)
260 pkg_check_modules(EPOXY REQUIRED epoxy)
261endif()
262
213set(MIR_ANDROID_INCLUDE_DIRECTORIES) # to be filled by android-input263set(MIR_ANDROID_INCLUDE_DIRECTORIES) # to be filled by android-input
214set(MIR_ANDROID_INPUT_COMPILE_FLAGS) # to be filled by android-input264set(MIR_ANDROID_INPUT_COMPILE_FLAGS) # to be filled by android-input
215set(MIR_3RD_PARTY_INCLUDE_DIRECTORIES)265set(MIR_3RD_PARTY_INCLUDE_DIRECTORIES)
@@ -245,7 +295,7 @@
245295
246 # There's no nice way to format this. Thanks CMake.296 # There's no nice way to format this. Thanks CMake.
247 mir_add_test(NAME LGPL-required297 mir_add_test(NAME LGPL-required
248 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"298 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"
249 )299 )
250 mir_add_test(NAME GPL-required300 mir_add_test(NAME GPL-required
251 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"301 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"
@@ -271,3 +321,9 @@
271mir_check_no_unreleased_symbols(mirplatform release-checks)321mir_check_no_unreleased_symbols(mirplatform release-checks)
272mir_check_no_unreleased_symbols(mirprotobuf release-checks)322mir_check_no_unreleased_symbols(mirprotobuf release-checks)
273mir_check_no_unreleased_symbols(mirserver release-checks)323mir_check_no_unreleased_symbols(mirserver release-checks)
324
325if (TARGET doc)
326 add_custom_target(doc-show
327 xdg-open ${CMAKE_BINARY_DIR}/doc/html/index.html
328 DEPENDS doc)
329endif()
274330
=== modified file 'benchmarks/frame-uniformity/CMakeLists.txt'
--- benchmarks/frame-uniformity/CMakeLists.txt 2016-03-16 06:59:01 +0000
+++ benchmarks/frame-uniformity/CMakeLists.txt 2017-06-05 10:46:31 +0000
@@ -4,6 +4,8 @@
4 ${PROJECT_SOURCE_DIR}/include/server4 ${PROJECT_SOURCE_DIR}/include/server
5 ${PROJECT_SOURCE_DIR}/include/client5 ${PROJECT_SOURCE_DIR}/include/client
6 ${PROJECT_SOURCE_DIR}/include/test6 ${PROJECT_SOURCE_DIR}/include/test
7 ${PROJECT_SOURCE_DIR}/include/renderers/gl
8 ${PROJECT_SOURCE_DIR}/include/renderers/sw
79
8 ${PROJECT_SOURCE_DIR}/src/include/server10 ${PROJECT_SOURCE_DIR}/src/include/server
9 ${PROJECT_SOURCE_DIR}/src/include/common11 ${PROJECT_SOURCE_DIR}/src/include/common
1012
=== modified file 'benchmarks/frame-uniformity/touch_measuring_client.cpp'
--- benchmarks/frame-uniformity/touch_measuring_client.cpp 2015-06-17 05:20:42 +0000
+++ benchmarks/frame-uniformity/touch_measuring_client.cpp 2017-06-05 10:46:31 +0000
@@ -29,39 +29,39 @@
29namespace29namespace
30{30{
3131
32MirSurface *create_surface(MirConnection *connection)32MirWindow *create_window(MirConnection *connection)
33{33{
34 MirPixelFormat pixel_format;34 MirPixelFormat pixel_format;
35 unsigned int valid_formats;35 unsigned int valid_formats;
36 mir_connection_get_available_surface_formats(connection, &pixel_format, 1, &valid_formats);36 mir_connection_get_available_surface_formats(connection, &pixel_format, 1, &valid_formats);
3737
38 auto const spec = mir_connection_create_spec_for_normal_surface(38 auto const spec = mir_create_normal_window_spec(connection, 1024, 1024);
39 connection, 1024, 1024, pixel_format);39 mir_window_spec_set_pixel_format(spec, pixel_format);
40 mir_surface_spec_set_name(spec, "frame-uniformity-test");40 mir_window_spec_set_name(spec, "frame-uniformity-test");
41 mir_surface_spec_set_buffer_usage(spec, mir_buffer_usage_hardware);41 mir_window_spec_set_buffer_usage(spec, mir_buffer_usage_hardware);
4242
43 auto surface = mir_surface_create_sync(spec);43 auto window = mir_create_window_sync(spec);
44 mir_surface_spec_release(spec);44 mir_window_spec_release(spec);
45 45
46 if (!mir_surface_is_valid(surface))46 if (!mir_window_is_valid(window))
47 {47 {
48 std::cerr << "Surface creation failed: " << mir_surface_get_error_message(surface) << std::endl;48 std::cerr << "Window creation failed: " << mir_window_get_error_message(window) << std::endl;
49 exit(1);49 exit(1);
50 }50 }
5151
52 return surface;52 return window;
53}53}
5454
55void input_callback(MirSurface * /* surface */, MirEvent const* event, void* context)55void input_callback(MirWindow * /* surface */, MirEvent const* event, void* context)
56{56{
57 auto results = static_cast<TouchSamples*>(context);57 auto results = static_cast<TouchSamples*>(context);
58 58
59 results->record_pointer_coordinates(std::chrono::high_resolution_clock::now(), *event);59 results->record_pointer_coordinates(std::chrono::high_resolution_clock::now(), *event);
60}60}
6161
62void collect_input_and_frame_timing(MirSurface *surface, mt::Barrier& client_ready, std::chrono::high_resolution_clock::duration duration, std::shared_ptr<TouchSamples> const& results)62void collect_input_and_frame_timing(MirWindow *surface, mt::Barrier& client_ready, std::chrono::high_resolution_clock::duration duration, std::shared_ptr<TouchSamples> const& results)
63{63{
64 mir_surface_set_event_handler(surface, input_callback, results.get());64 mir_window_set_event_handler(surface, input_callback, results.get());
65 65
66 client_ready.ready();66 client_ready.ready();
6767
@@ -69,7 +69,7 @@
69 auto end_time = std::chrono::high_resolution_clock::now() + duration;69 auto end_time = std::chrono::high_resolution_clock::now() + duration;
70 while (std::chrono::high_resolution_clock::now() < end_time)70 while (std::chrono::high_resolution_clock::now() < end_time)
71 {71 {
72 mir_buffer_stream_swap_buffers_sync(mir_surface_get_buffer_stream(surface));72 mir_buffer_stream_swap_buffers_sync(mir_window_get_buffer_stream(surface));
73 results->record_frame_time(std::chrono::high_resolution_clock::now());73 results->record_frame_time(std::chrono::high_resolution_clock::now());
74 }74 }
75}75}
@@ -106,11 +106,11 @@
106 */106 */
107 mir_connection_set_lifecycle_event_callback(connection, null_lifecycle_callback, nullptr);107 mir_connection_set_lifecycle_event_callback(connection, null_lifecycle_callback, nullptr);
108 108
109 auto surface = create_surface(connection);109 auto window = create_window(connection);
110110
111 collect_input_and_frame_timing(surface, client_ready, touch_duration, results_);111 collect_input_and_frame_timing(window, client_ready, touch_duration, results_);
112 112
113 mir_surface_release_sync(surface);113 mir_window_release_sync(window);
114 mir_connection_release(connection);114 mir_connection_release(connection);
115}115}
116116
117117
=== modified file 'benchmarks/touch_event_latency.py'
--- benchmarks/touch_event_latency.py 2015-07-02 14:40:40 +0000
+++ benchmarks/touch_event_latency.py 2017-06-05 10:46:31 +0000
@@ -57,13 +57,9 @@
5757
58####### TEST #######58####### TEST #######
5959
60# Disable input resampling so that the event_time field of input events,
61# used to calculate latency, is accurate
62no_resampling_env = {"MIR_CLIENT_INPUT_RATE": "0"}
63
64host = Server(reports=["input"])60host = Server(reports=["input"])
65nested = Server(host=host, reports=["client-input-receiver"], env=no_resampling_env)61nested = Server(host=host, reports=["client-input-receiver"])
66client = Client(server=nested, reports=["client-input-receiver"], options=["-f"], env=no_resampling_env)62client = Client(server=nested, reports=["client-input-receiver"], options=["-f"])
6763
68test = PerformanceTest([host, nested, client])64test = PerformanceTest([host, nested, client])
69touch_screen = TouchScreen()65touch_screen = TouchScreen()
7066
=== modified file 'cmake/FindGtestGmock.cmake'
--- cmake/FindGtestGmock.cmake 2016-03-16 06:59:01 +0000
+++ cmake/FindGtestGmock.cmake 2017-06-05 10:46:31 +0000
@@ -1,24 +1,44 @@
1include(ExternalProject)1include(ExternalProject)
2include(FindPackageHandleStandardArgs)2include(FindPackageHandleStandardArgs)
33
4#
5# When cross compiling MIR_CHROOT points to our chroot.
6# When not cross compiling, it should be blank to use the host system.
7#
8set(usr ${MIR_CHROOT}/usr)
9
10if (EXISTS ${usr}/src/googletest)
11 set (USING_GOOGLETEST_1_8 TRUE)
12 set (GTEST_INSTALL_DIR ${usr}/src/googletest/googletest/include)
13else()
14 set (GTEST_INSTALL_DIR ${usr}/src/gmock/gtest/include)
15endif()
16
4#gtest17#gtest
5set(GTEST_INSTALL_DIR /usr/src/gmock/gtest/include)18find_path(
6find_path(GTEST_INCLUDE_DIR gtest/gtest.h19 GTEST_INCLUDE_DIR gtest/gtest.h
7 HINTS ${GTEST_INSTALL_DIR})20 HINTS ${GTEST_INSTALL_DIR}
21)
822
9#gmock23#gmock
10find_path(GMOCK_INSTALL_DIR gmock/CMakeLists.txt24find_path(
11 HINTS /usr/src)25 GMOCK_INSTALL_DIR CMakeLists.txt
26 HINTS ${usr}/src/googletest ${usr}/src/gmock)
12if(${GMOCK_INSTALL_DIR} STREQUAL "GMOCK_INSTALL_DIR-NOTFOUND")27if(${GMOCK_INSTALL_DIR} STREQUAL "GMOCK_INSTALL_DIR-NOTFOUND")
13 message(FATAL_ERROR "google-mock package not found")28 message(FATAL_ERROR "google-mock package not found")
14endif()29endif()
1530
16set(GMOCK_INSTALL_DIR ${GMOCK_INSTALL_DIR}/gmock)
17find_path(GMOCK_INCLUDE_DIR gmock/gmock.h)31find_path(GMOCK_INCLUDE_DIR gmock/gmock.h)
1832
19set(GMOCK_PREFIX gmock)33if (USING_GOOGLETEST_1_8)
20set(GMOCK_BINARY_DIR ${CMAKE_BINARY_DIR}/${GMOCK_PREFIX}/libs)34 set(GMOCK_BASE_BINARY_DIR ${CMAKE_BINARY_DIR}/gmock/libs)
21set(GTEST_BINARY_DIR ${GMOCK_BINARY_DIR}/gtest)35 set(GMOCK_BINARY_DIR ${GMOCK_BASE_BINARY_DIR}/googlemock)
36 set(GTEST_BINARY_DIR ${GMOCK_BINARY_DIR}/gtest)
37else()
38 set(GMOCK_BASE_BINARY_DIR ${CMAKE_BINARY_DIR}/gmock/libs)
39 set(GMOCK_BINARY_DIR ${GMOCK_BASE_BINARY_DIR})
40 set(GTEST_BINARY_DIR ${GMOCK_BINARY_DIR}/gtest)
41endif()
2242
23set(GTEST_CXX_FLAGS "-fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64")43set(GTEST_CXX_FLAGS "-fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64")
24if (cmake_build_type_lower MATCHES "threadsanitizer")44if (cmake_build_type_lower MATCHES "threadsanitizer")
@@ -30,13 +50,18 @@
30set(GTEST_CMAKE_ARGS "-DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS}")50set(GTEST_CMAKE_ARGS "-DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS}")
31list(APPEND GTEST_CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})51list(APPEND GTEST_CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
32list(APPEND GTEST_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})52list(APPEND GTEST_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
53
54if (USING_GOOGLETEST_1_8)
55 list(APPEND GTEST_CMAKE_ARGS -DBUILD_GTEST=ON)
56endif()
57
33if (cmake_build_type_lower MATCHES "threadsanitizer")58if (cmake_build_type_lower MATCHES "threadsanitizer")
34 #Skip compiler check, since if GCC is the compiler, we need to link against -ltsan59 #Skip compiler check, since if GCC is the compiler, we need to link against -ltsan
35 #explicitly; specifying additional linker flags doesn't seem possible for external projects60 #explicitly; specifying additional linker flags doesn't seem possible for external projects
36 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_CXX_COMPILER_WORKS=1)61 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_CXX_COMPILER_WORKS=1)
37endif()62endif()
38if (${CMAKE_CROSSCOMPILING})63if (${CMAKE_CROSSCOMPILING})
39 if(DEFINED MIR_NDK_PATH)64 if(DEFINED MIR_CHROOT)
40 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_MODULE_PATH}/LinuxCrossCompile.cmake)65 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_MODULE_PATH}/LinuxCrossCompile.cmake)
41 else()66 else()
42 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})67 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
@@ -52,7 +77,7 @@
52 SOURCE_DIR ${GMOCK_INSTALL_DIR}77 SOURCE_DIR ${GMOCK_INSTALL_DIR}
53 #forward the compilers to the subproject so cross-arch builds work78 #forward the compilers to the subproject so cross-arch builds work
54 CMAKE_ARGS ${GTEST_CMAKE_ARGS}79 CMAKE_ARGS ${GTEST_CMAKE_ARGS}
55 BINARY_DIR ${GMOCK_BINARY_DIR}80 BINARY_DIR ${GMOCK_BASE_BINARY_DIR}
5681
57 #we don't need to install, so skip82 #we don't need to install, so skip
58 INSTALL_COMMAND ""83 INSTALL_COMMAND ""
5984
=== modified file 'cmake/FindLibHardware.cmake'
--- cmake/FindLibHardware.cmake 2016-03-16 06:59:01 +0000
+++ cmake/FindLibHardware.cmake 2017-06-05 10:46:31 +0000
@@ -7,7 +7,7 @@
7INCLUDE(FindPackageHandleStandardArgs)7INCLUDE(FindPackageHandleStandardArgs)
88
9find_package( PkgConfig )9find_package( PkgConfig )
10pkg_search_module(ANDROID_HEADERS REQUIRED android-headers)10pkg_search_module(ANDROID_HEADERS REQUIRED android-headers-23)
11set(LIBHARDWARE_INCLUDE_DIRS ${ANDROID_HEADERS_INCLUDE_DIRS})11set(LIBHARDWARE_INCLUDE_DIRS ${ANDROID_HEADERS_INCLUDE_DIRS})
1212
13find_library(LIBHARDWARE_LIBRARY13find_library(LIBHARDWARE_LIBRARY
1414
=== modified file 'cmake/LinuxCrossCompile.cmake'
--- cmake/LinuxCrossCompile.cmake 2016-01-29 08:18:22 +0000
+++ cmake/LinuxCrossCompile.cmake 2017-06-05 10:46:31 +0000
@@ -1,7 +1,7 @@
1set(CMAKE_SYSTEM_NAME Linux)1set(CMAKE_SYSTEM_NAME Linux)
2set(CMAKE_SYSTEM_VERSION 1)2set(CMAKE_SYSTEM_VERSION 1)
33
4set(MIR_NDK_PATH $ENV{MIR_NDK_PATH} CACHE STRING "path of mir android bundle")4set(MIR_CHROOT $ENV{MIR_CHROOT} CACHE STRING "path of mir android bundle")
55
6if (NOT DEFINED MIR_TARGET_MACHINE)6if (NOT DEFINED MIR_TARGET_MACHINE)
7 set(MIR_TARGET_MACHINE $ENV{MIR_TARGET_MACHINE} CACHE STRING "target machine")7 set(MIR_TARGET_MACHINE $ENV{MIR_TARGET_MACHINE} CACHE STRING "target machine")
@@ -14,28 +14,28 @@
14set(CMAKE_CXX_COMPILER /usr/bin/${MIR_TARGET_MACHINE}-g++${MIR_GCC_VARIANT})14set(CMAKE_CXX_COMPILER /usr/bin/${MIR_TARGET_MACHINE}-g++${MIR_GCC_VARIANT})
1515
16# where to look to find dependencies in the target environment16# where to look to find dependencies in the target environment
17set(CMAKE_FIND_ROOT_PATH "${MIR_NDK_PATH}")17set(CMAKE_FIND_ROOT_PATH "${MIR_CHROOT}")
1818
19#treat the chroot's includes as system includes19#treat the chroot's includes as system includes
20include_directories(SYSTEM "${MIR_NDK_PATH}/usr/include" "${MIR_NDK_PATH}/usr/include/${MIR_TARGET_MACHINE}")20include_directories(SYSTEM "${MIR_CHROOT}/usr/include" "${MIR_CHROOT}/usr/include/${MIR_TARGET_MACHINE}")
21list(APPEND CMAKE_SYSTEM_INCLUDE_PATH "${MIR_NDK_PATH}/usr/include" "${MIR_NDK_PATH}/usr/include/${MIR_TARGET_MACHINE}" )21list(APPEND CMAKE_SYSTEM_INCLUDE_PATH "${MIR_CHROOT}/usr/include" "${MIR_CHROOT}/usr/include/${MIR_TARGET_MACHINE}" )
2222
23# Add the chroot libraries as system libraries23# Add the chroot libraries as system libraries
24list(APPEND CMAKE_SYSTEM_LIBRARY_PATH24list(APPEND CMAKE_SYSTEM_LIBRARY_PATH
25 "${MIR_NDK_PATH}/lib"25 "${MIR_CHROOT}/lib"
26 "${MIR_NDK_PATH}/lib/${MIR_TARGET_MACHINE}"26 "${MIR_CHROOT}/lib/${MIR_TARGET_MACHINE}"
27 "${MIR_NDK_PATH}/usr/lib"27 "${MIR_CHROOT}/usr/lib"
28 "${MIR_NDK_PATH}/usr/lib/${MIR_TARGET_MACHINE}"28 "${MIR_CHROOT}/usr/lib/${MIR_TARGET_MACHINE}"
29)29)
3030
31set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)31set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
32set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)32set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
33set(CMAKE_EXECUTABLE_RUNTIME_C_FLAG "-Wl,-rpath-link,")33set(CMAKE_EXECUTABLE_RUNTIME_C_FLAG "-Wl,-rpath-link,")
34set(CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG "-Wl,-rpath-link,")34set(CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG "-Wl,-rpath-link,")
35set(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}")35set(CMAKE_INSTALL_RPATH "${MIR_CHROOT}/lib:${MIR_CHROOT}/lib/${MIR_TARGET_MACHINE}:${MIR_CHROOT}/usr/lib:${MIR_CHROOT}/usr/lib/${MIR_TARGET_MACHINE}")
3636
37set(ENV{PKG_CONFIG_PATH} "${MIR_NDK_PATH}/usr/lib/pkgconfig:${MIR_NDK_PATH}/usr/lib/${MIR_TARGET_MACHINE}/pkgconfig")37set(ENV{PKG_CONFIG_PATH} "${MIR_CHROOT}/usr/lib/pkgconfig:${MIR_CHROOT}/usr/lib/${MIR_TARGET_MACHINE}/pkgconfig")
38set(ENV{PKG_CONFIG_SYSROOT_DIR} "${MIR_NDK_PATH}")38set(ENV{PKG_CONFIG_SYSROOT_DIR} "${MIR_CHROOT}")
3939
40#use only the cross compile system40#use only the cross compile system
41set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)41set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
4242
=== modified file 'cmake/MirCommon.cmake'
--- cmake/MirCommon.cmake 2016-03-16 06:59:01 +0000
+++ cmake/MirCommon.cmake 2017-06-05 10:46:31 +0000
@@ -28,7 +28,8 @@
28 set(VALGRIND_CMD ${VALGRIND_CMD} "--track-fds=yes")28 set(VALGRIND_CMD ${VALGRIND_CMD} "--track-fds=yes")
29 set(VALGRIND_CMD ${VALGRIND_CMD} "--num-callers=128")29 set(VALGRIND_CMD ${VALGRIND_CMD} "--num-callers=128")
30 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_generic")30 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_generic")
31 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_glibc_2.21")31 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_glibc_2.23")
32 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_libhybris")
32 if (TARGET_ARCH STREQUAL "arm-linux-gnueabihf")33 if (TARGET_ARCH STREQUAL "arm-linux-gnueabihf")
33 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_armhf")34 set(VALGRIND_CMD ${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_armhf")
34 endif()35 endif()
@@ -98,7 +99,7 @@
9899
99 # Final commands100 # Final commands
100 set(test_cmd "${test_cmd}" "--gtest_filter=-${test_no_memcheck_filter}:${test_exclusion_filter}")101 set(test_cmd "${test_cmd}" "--gtest_filter=-${test_no_memcheck_filter}:${test_exclusion_filter}")
101 set(test_cmd_no_memcheck "${test_cmd_no_memcheck}" "--gtest_filter=${test_no_memcheck_filter}:-${test_exclusion_filter}")102 set(test_cmd_no_memcheck "${test_cmd_no_memcheck}" "--gtest_death_test_style=threadsafe" "--gtest_filter=${test_no_memcheck_filter}:-${test_exclusion_filter}")
102 if(DETECT_FD_LEAKS)103 if(DETECT_FD_LEAKS)
103 set(test_cmd ${CMAKE_SOURCE_DIR}/tools/detect_fd_leaks.bash ${test_cmd})104 set(test_cmd ${CMAKE_SOURCE_DIR}/tools/detect_fd_leaks.bash ${test_cmd})
104 endif()105 endif()
@@ -117,10 +118,10 @@
117 list_to_string("${test_cmd_no_memcheck}" "" discover_cmd_no_memcheck)118 list_to_string("${test_cmd_no_memcheck}" "" discover_cmd_no_memcheck)
118119
119 file(APPEND ${CMAKE_BINARY_DIR}/discover_all_tests.sh120 file(APPEND ${CMAKE_BINARY_DIR}/discover_all_tests.sh
120 "sh ${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh ${discover_env} -- ${discover_cmd}\n")121 "sh ${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh ${discover_env} --test-name ${test_name} -- ${discover_cmd}\n")
121 if (test_no_memcheck_filter)122 if (test_no_memcheck_filter)
122 file(APPEND ${CMAKE_BINARY_DIR}/discover_all_tests.sh123 file(APPEND ${CMAKE_BINARY_DIR}/discover_all_tests.sh
123 "sh ${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh ${discover_env} -- ${discover_cmd_no_memcheck}\n")124 "sh ${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh ${discover_env} --test-name ${test_name}_no_memcheck -- ${discover_cmd_no_memcheck}\n")
124 endif()125 endif()
125endfunction ()126endfunction ()
126127
@@ -169,11 +170,7 @@
169 set(TARGET_COMPILE_DEFINITIONS "$<$<BOOL:${TARGET_COMPILE_DEFINITIONS}>:-D$<JOIN:${TARGET_COMPILE_DEFINITIONS},\n-D>\n>")170 set(TARGET_COMPILE_DEFINITIONS "$<$<BOOL:${TARGET_COMPILE_DEFINITIONS}>:-D$<JOIN:${TARGET_COMPILE_DEFINITIONS},\n-D>\n>")
170171
171 foreach(dir ${TARGET_INCLUDE_DIRECTORIES})172 foreach(dir ${TARGET_INCLUDE_DIRECTORIES})
172 if (${dir} MATCHES "usr/include")173 set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -I${dir}")
173 set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -isystem ${dir}")
174 else()
175 set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -I${dir}")
176 endif()
177 endforeach()174 endforeach()
178175
179 # So.176 # So.
@@ -304,21 +301,3 @@
304 )301 )
305 add_dependencies(${DEPENDENT_TARGET} ${TARGET_NAME})302 add_dependencies(${DEPENDENT_TARGET} ${TARGET_NAME})
306endfunction()303endfunction()
307
308function (mir_add_library_with_symbols TARGET TYPE SYMBOLS_FILE)
309 # Bask in the majesty of CMake!
310 #
311 # You can't just depend on an arbitary file. Oh, no!
312 #
313 # Instead, we add a custom command to generate an empty C++ source
314 # file, depending on the symbols file, and then add that empty C++
315 # source to the library.
316 set(HACK_OUTPUT ${TARGET}_abysmal_hack.cpp)
317
318 add_custom_command(OUTPUT ${HACK_OUTPUT}
319 COMMAND touch ${HACK_OUTPUT}
320 DEPENDS ${SYMBOLS_FILE}
321 )
322
323 add_library(${TARGET} ${TYPE} ${HACK_OUTPUT} ${ARGN})
324endfunction()
325304
=== modified file 'cross-compile-chroot.sh'
--- cross-compile-chroot.sh 2016-03-16 06:59:01 +0000
+++ cross-compile-chroot.sh 2017-06-05 10:46:31 +0000
@@ -26,10 +26,10 @@
26dist=vivid26dist=vivid
27clean=027clean=0
28update_build_dir=028update_build_dir=0
2929enable_tests=yes
30target_arch=armhf30target_arch=armhf
3131
32while getopts "a:cd:hu" OPTNAME32while getopts "a:cd:hut:" OPTNAME
33do33do
34 case $OPTNAME in34 case $OPTNAME in
35 a )35 a )
@@ -55,6 +55,9 @@
55 usage55 usage
56 exit 1;56 exit 1;
57 ;;57 ;;
58 t )
59 enable_tests=${OPTARG}
60 ;;
58 * )61 * )
59 echo "invalid option specified"62 echo "invalid option specified"
60 usage63 usage
@@ -77,11 +80,11 @@
77 BUILD_DIR=build-${target_arch}-${dist}80 BUILD_DIR=build-${target_arch}-${dist}
78fi81fi
7982
80if [ "${MIR_NDK_PATH}" = "" ]; then83if [ "${MIR_CHROOT}" = "" ]; then
81 export MIR_NDK_PATH=~/.cache/mir-${target_arch}-chroot-${dist}84 export MIR_CHROOT=~/.cache/mir-${target_arch}-chroot-${dist}
82fi85fi
8386
84if [ ! -d ${MIR_NDK_PATH} ]; then 87if [ ! -d ${MIR_CHROOT} ]; then
85 echo "no partial chroot dir detected. attempting to create one"88 echo "no partial chroot dir detected. attempting to create one"
86 _do_update_chroot=189 _do_update_chroot=1
87fi90fi
@@ -91,7 +94,7 @@
91fi94fi
9295
93echo "Building for distro: $dist"96echo "Building for distro: $dist"
94echo "Using MIR_NDK_PATH: ${MIR_NDK_PATH}"97echo "Using MIR_CHROOT: ${MIR_CHROOT}"
9598
96additional_repositories=99additional_repositories=
97if [ ${dist} == "vivid" ] ; then100if [ ${dist} == "vivid" ] ; then
@@ -101,6 +104,10 @@
101gcc_variant=104gcc_variant=
102if [ "${dist}" = "vivid" ]; then105if [ "${dist}" = "vivid" ]; then
103 gcc_variant=-4.9106 gcc_variant=-4.9
107elif [ "${dist}" = "wily" -o "${dist}" = "xenial" ]; then
108 gcc_variant=-5
109elif [ "${dist}" = "yakkety" -o "${dist}" = "zesty" ]; then
110 gcc_variant=-6
104fi111fi
105112
106case ${target_arch} in113case ${target_arch} in
@@ -144,7 +151,7 @@
144151
145if [ ${_do_update_chroot} -eq 1 ] ; then152if [ ${_do_update_chroot} -eq 1 ] ; then
146 pushd tools > /dev/null153 pushd tools > /dev/null
147 ./setup-partial-armhf-chroot.sh -d ${dist} -a ${target_arch} ${additional_repositories} ${MIR_NDK_PATH}154 ./setup-partial-armhf-chroot.sh -d ${dist} -a ${target_arch} ${additional_repositories} ${MIR_CHROOT}
148 popd > /dev/null155 popd > /dev/null
149 # force a clean build after an update, since CMake cache maybe out of date156 # force a clean build after an update, since CMake cache maybe out of date
150 clean_build_dir ${BUILD_DIR}157 clean_build_dir ${BUILD_DIR}
@@ -152,17 +159,19 @@
152159
153pushd ${BUILD_DIR} > /dev/null 160pushd ${BUILD_DIR} > /dev/null
154161
155 export PKG_CONFIG_PATH="${MIR_NDK_PATH}/usr/lib/pkgconfig:${MIR_NDK_PATH}/usr/lib/${target_machine}/pkgconfig"162 export PKG_CONFIG_PATH="${MIR_CHROOT}/usr/lib/pkgconfig:${MIR_CHROOT}/usr/lib/${target_machine}/pkgconfig"
156 export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1163 export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
157 export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1164 export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
158 export PKG_CONFIG_SYSROOT_DIR=$MIR_NDK_PATH165 export PKG_CONFIG_SYSROOT_DIR=$MIR_CHROOT
159 export PKG_CONFIG_EXECUTABLE=`which pkg-config`166 export PKG_CONFIG_EXECUTABLE=`which pkg-config`
160 export MIR_TARGET_MACHINE=${target_machine}167 export MIR_TARGET_MACHINE=${target_machine}
161 export MIR_GCC_VARIANT=${gcc_variant}168 export MIR_GCC_VARIANT=${gcc_variant}
169 export CMAKE_PREFIX_PATH=$MIR_CHROOT/usr/lib/${target_machine}/cmake
162 echo "Using PKG_CONFIG_PATH: $PKG_CONFIG_PATH"170 echo "Using PKG_CONFIG_PATH: $PKG_CONFIG_PATH"
163 echo "Using PKG_CONFIG_EXECUTABLE: $PKG_CONFIG_EXECUTABLE"171 echo "Using PKG_CONFIG_EXECUTABLE: $PKG_CONFIG_EXECUTABLE"
164 cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/LinuxCrossCompile.cmake \172 cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/LinuxCrossCompile.cmake \
165 -DMIR_PLATFORM=${mir_platform} \173 -DMIR_PLATFORM=${mir_platform} -DMIR_ENABLE_TESTS=${enable_tests}\
174 -DMIR_USE_PRECOMPILED_HEADERS=OFF \
166 .. 175 ..
167176
168 make -j${NUM_JOBS} $@177 make -j${NUM_JOBS} $@
169178
=== modified file 'debian/changelog'
--- debian/changelog 2016-03-30 00:23:20 +0000
+++ debian/changelog 2017-06-05 10:46:31 +0000
@@ -1,3 +1,658 @@
1mir (0.26.3) UNRELEASED; urgency=medium
2
3 [ Daniel van Vugt ]
4 * New upstream release 0.26.3 (https://launchpad.net/mir/+milestone/0.26.3)
5 - Enhancements:
6 . Make deprecations optional (and default to off for builds on 16.04 LTS)
7 . Added support for building on Ubuntu 17.10 artful.
8 - Bugs fixed:
9 . Mir needs to be updated to 0.26 in 16.04LTS (LP: #1685186)
10 . unity-system-compositor crashed with SIGSEGV in
11 libinput_device_config_accel_is_available() from
12 libinput_device_config_accel_set_speed() from
13 mir::input::evdev::LibInputDevice::apply_settings() (LP: #1672955)
14 . Please transition to Boost 1.62 (LP: #1675138)
15 . Mir sending key repeat events continually to nested shell after VT
16 switch (causes Unity8 lockup for a while) (LP: #1675357)
17 . mir_demo_standalone_render_overlays fails to link (LP: #1677239)
18
19 -- Alan Griffiths <alan.griffiths@canonical.com> Fri, 26 May 2017 16:57:20 +0000
20
21mir (0.26.2) UNRELEASED; urgency=medium
22
23 [ Mattia Rizzolo ]
24 * Patch the code to use unversioned runtime boost libraries (LP: #1675138).
25
26 -- Gianfranco Costamagna <locutusofborg@debian.org> Fri, 24 Mar 2017 22:58:36 +0100
27
28mir (0.26.2) UNRELEASED; urgency=medium
29
30 [ Daniel van Vugt ]
31 * New upstream release 0.26.2 (https://launchpad.net/mir/+milestone/0.26.2)
32 - Bugs fixed:
33 . EDID does not change when hotplugging a monitor (LP: #1660017)
34 . [regression] mirout crashes when connecting to unity8 or any nested
35 server: [libprotobuf FATAL /usr/include/google/protobuf/repeated_field.
36 h:1408] CHECK failed: (index) < (current_size_) (LP: #1661163)
37 . Mir server crashed with SIGSEGV in
38 mir::compositor::TemporaryBuffer::size() called from
39 mir::gl::tessellate_renderable_into_rectangle() (LP: #1664760)
40 . Nested servers (Unity8) periodically stutter (half frame rate) with
41 Mir 0.26.1 (LP: #1666372)
42 . Don't dereference the end iterator in ms::ApplicationSession::
43 surface_after() (LP: #1667645)
44 . [regression] OSK input shaping no longer works correctly (LP: #1669444)
45 . Setting MirWindowSpec parameters always causes window's input_region
46 to be reset (LP: #1670876)
47 . Subpixel order not included in Mir display information (LP: #1393578)
48 . Presentation chains should support various swap interval modes
49 (LP: #1673533)
50 . Need an extension for GBM buffers to replace
51 mir_buffer_get_buffer_package() (LP: #1673534)
52 . Seg fault on detect_fd_leaks (LP: #1661498)
53
54 -- Cemil Azizoglu <cemil.azizoglu@canonical.com> Wed, 22 Mar 2017 04:54:19 +0000
55
56mir (0.26.1) UNRELEASED; urgency=medium
57
58 * New upstream release 0.26.1 (https://launchpad.net/mir/+milestone/0.26.1)
59 - ABI summary:
60 . mirclient ABI unchanged at 9
61 . mirserver ABI unchanged at 43
62 . mircommon ABI unchanged at 7
63 . mirplatform ABI bumped to 15
64 . mirprotobuf ABI unchanged at 3
65 . mirplatformgraphics ABI bumped to 12
66 . mirclientplatform ABI unchanged at 5
67 . mirinputplatform ABI unchanged at 6
68 . mircore ABI unchanged at 1
69 - Enhancements:
70 . Support for MirBuffer API that allows for better management of
71 hardware/software buffers.
72 . Support for MirPresentationChain API that allows better control
73 over {de}queueing of individual buffers {from}to the server.
74 . Interim support for MirRenderSurface API that provides a unit of
75 renderable for lower level content such as MirBufferStreams and
76 MirPresentationChains, etc.. MirRenderSurface API is marked
77 deprecated as it (and the relevant entry points) will be renamed to
78 MirSurface before general availability. It will initially be used for
79 revamping support for EGL drivers.
80 . Synchronous version of mir_prompt_session_new_fds_for_prompt_providers()
81 API (mir_prompt_session_new_fds_for_prompt_providers_sync()) added for
82 convenience.
83 . Better name for MirPersistentId-->MirWindowId. MirPersistentId has now
84 been deprecated.
85 - Bugs fixed:
86 . [regression] Unity8 stutters constantly (like half frame rate).
87 (LP: #1661128)
88 . mir 0.26 - spinner loading animation, minimize, maximize too fast.
89 (LP: #1661072)
90 . [regression] Nested server segfaults or rapidly logs exceptions when a
91 fullscreen client starts [in mir_presentation_chain_set_dropping_mode
92 ... std::exception::what: Operation not permitted] (LP: #1661508)
93 . mir_window_request_persistent_id_sync seg faults when called twice.
94 (LP: #1661704)
95 . [regression] Windowed clients of nested servers are all black.
96 (LP: #1661521)
97 . Mir graphics platform ABI broke in series 0.26 but sonames never
98 changed (LP: #1662455)
99 . Fixes for 0.26 changelog.
100 . [regression] mirscreencast hangs during screencast creation. (LP: #1662997)
101 . libmirclient-dev missing build dependency on libmircore-dev. (LP: #1662942)
102 . mir_window_spec_set_cursor_name() doesn't trigger
103 mir::scene::SurfaceObserver::cursor_image_set_to. (LP: #1663197)
104 . [regression] Software clients of nested servers are all black in Mir 0.25.0
105 and later. (LP: #1663062)
106
107 -- Cemil Azizoglu <cemil.azizoglu@canonical.com> Thu, 09 Feb 2017 21:46:32 +0000
108
109mir (0.26.0) UNRELEASED; urgency=medium
110
111 * New upstream release 0.26.0 (https://launchpad.net/mir/+milestone/0.26.0)
112 - ABI summary:
113 . mirclient ABI unchanged at 9
114 . mirserver ABI bumped to 43
115 . mircommon ABI unchanged at 7
116 . mirplatform ABI unchanged at 14
117 . mirprotobuf ABI unchanged at 3
118 . mirplatformgraphics ABI unchanged at 11
119 . mirclientplatform ABI unchanged at 5
120 . mirinputplatform ABI unchanged at 6
121 . mircore ABI unchanged at 1
122 - Enhancements:
123 . New and improved client APIs: MirInputConfig, MirWindow, DisplayConfig,
124 MirScreencastSpec.
125 . Support for setting the input configuration.
126 . Introduced an extension mechanism for platform-specific APIs.
127 . Support for screencasting to a specific MirBuffer.
128 . Added DisplayConfigurationController::base_configuration() so
129 downstreams can get the base configuration (weirdly they can already
130 set it).
131 . X11 platform: Allow adjustable scale parameter.
132 . Added monitor EDID support to both the client API and server-side.
133 . mirout: Now shows scaling factor, subpixel arrangement, form factor and
134 EDID.
135 . mirout: Can now change the monitor configuration as well as report it.
136 . Replace the mir::Server-overridable Reports with Observers.
137 . Deprecate legacy toolkit APIs that will be removed in Mir 1.0
138 . Introduced client-side vsync which dramatically reduces latency
139 from the client to the screen, by up to 44ms.
140 . Removed all input resampling logic. We now expect toolkits to do their
141 own, if at all. This reduces input lag by up to 16.9ms, or 8.4ms on
142 average.
143 - Bugs fixed:
144 . [performance] Restore support for better-than-triple buffering by
145 default. (LP: #1240909)
146 . Frame rate is artificially low on Diamondville Intel Atom systems due
147 to aggressive power management (LP: #1388490)
148 . [testsfail] failure in CI in
149 AndroidInputReceiverSetup.slow_raw_input_doesnt_cause_frameskipping
150 (LP: #1394369)
151 . [trusted prompt sessions] Can't open two prompt sessions at the same
152 time (LP: #1494197)
153 . Changing scale, formFactor or DPI in display configuration causes
154 renderer teardown/recreate unnecessarily (LP: #1556142)
155 . [testsfail] ApplicationNotRespondingDetection.failure_to_pong_is_
156 noticed (LP: #1570327)
157 . CI failure in TestClientInput.receives_one_touch_event_per_frame
158 (LP: #1570698)
159 . Mir-on-X mouse input is jerky/stuttery compared to Mir-on-KMS
160 (LP: #1576600)
161 . [regression] Two fingers in mir_proving_server now resizes/moves app
162 windows (two finger apps unusable) (LP: #1586311)
163 . Pointer/cursor input lag in unity8 session (LP: #1591328)
164 . PointerConfinement.test_we_update_our_confined_region_on_a_resize
165 (LP: #1606418)
166 . [ FAILED ] ClientLatency.throttled_input_rate_yields_lower_latency
167 (LP: #1624188)
168 . Valgrind failure on mir_acceptance_tests - leak on incoming buffer in
169 Requests::free_buffer(int) (LP: #1628794)
170 . Add support for returning monitor EDIDs (LP: #1634868)
171 . When pointer motion crosses window borders SurfaceInputDispatcher
172 injected events increase accumulated relative motion (LP: #1639749)
173 . [ FAILED ] ClientLatency.dropping_latency_is_limited_to_one (AKA
174 dropping_latency_is_closer_to_zero_than_one) (LP: #1640366)
175 . Server::override_the_coordinate_translator() cannot be effectively used
176 downstream (LP: #1641166)
177 . [regression] FTBFS when cross compiling to yakkety from zesty:
178 test_client_extensions.cpp: error: ‘Ne’ was not declared in this scope
179 (LP: #1642473)
180 . [regression] mir_proving_server crashes with std::exception::what:
181 add_options() must be called before the_options() (LP: #1642504)
182 . [ FAILED ] NestedServer.nested_platform_connects_and_disconnects
183 (LP: #1643432)
184 . googletest 1.8.0-2 (on zesty) breaks existing builds [add_library
185 cannot create target "gmock" ...] (LP: #1644062)
186 . [regression] Those mir_demo_client_* which default to fullscreen now
187 ignore the size parameter (-s WIDTHxHEIGHT) (LP: #1644075)
188 . Shell doesn't know when base display config has changed (LP: #1644189)
189 . miral::ActiveOutputsMonitor (and therefore miral-shell --window-manager
190 tiling) are broken by lp:mir (LP: #1645284)
191 . mir_proving_server's four finger swipe to switch apps leaks touch
192 events to the clients (LP: #1646700)
193 . [regression] Cross compiling from zesty to yakkety fails with *** No
194 rule to make target 'gmock/libs/googlemock/gtest/libgtest.a' (LP:
195 #1646704)
196 . [ FAILED ] ThreadedDispatcherDeathTest.destroying_dispatcher_from_a_
197 callback_is_an_error (LP: #1647573)
198 . [regression] eglapps now all have window title "default" (LP: #1647575)
199 . Package mirtest-dev is missing a dependency on mir-renderer-gl-dev
200 (LP: #1651391)
201 . EDID data is missing in nested servers (LP: #1651633)
202 . [regression] Latency for fullscreen interval 0 clients (e.g. games and
203 benchmarks) increased with the introduction of nested passthrough
204 (LP: #1651638)
205 . Race between MirConnection::released() and
206 MirConnection::~MirConnection() causes deadlocks, possible crashes and
207 memory corruption (LP: #1653658)
208 . DisplayConfigurationTest.configure_session_removed_display failure
209 (LP: #1653789)
210 . [regression] Development headers reference unknown header
211 "mir_toolkit/mir_input_device_types.h" so some clients can't build at
212 all any more (LP: #1654023)
213 . [regression] mir_acceptance_tests' death tests leave behind core files
214 (LP: #1654478)
215 . Setting the event handler after the surface has been created does
216 nothing (LP: #1654612)
217 . [ FAILED ] RaiseSurfaces.key_event_with_cookie (LP: #1655293)
218 . Black screen with Raspberry Pi 3 VC4 Mesa driver (LP: #1656164)
219 . i386 FTBFS:
220 src/platforms/eglstream-kms/server/kms_display_configuration.cpp:88:47:
221 error: narrowing conversion of ‘..._drmModeConnector::connector_id’
222 from ‘uint32_t {aka unsigned int}’ to ‘EGLAttrib {aka int}’ inside { }
223 [-Werror=narrowing] (LP: #1656633)
224 . android: overlays no longer are activated (LP: #1657755)
225 . Mir FTBFS with MIR_USE_PRECOMPILED_HEADERS=OFF: error: ISO C++11
226 requires at least one argument for the "..." in a variadic macro
227 [-Werror] (LP: #1658604)
228 . [regression] Mir cross-compile to vivid/armhf FTBFS with:
229 mock_input_device_hub.h:33:18: error: ‘add_observer’ is not a type
230 (LP: #1658605)
231 . Caught exception at Mir/EGL driver boundary (in setSwapInterval) in
232 clients and tests (LP: #1659298)
233 . Support display scaling slider in unity8 (LP: #1645372)
234
235 -- Cemil Azizoglu <cemil.azizoglu@canonical.com> Thu, 26 Jan 2017 23:29:33 +0000
236
237mir (0.25.0) UNRELEASED; urgency=medium
238
239 * New upstream release 0.25.0 (https://launchpad.net/mir/+milestone/0.25.0)
240 - ABI summary:
241 . mirclient ABI unchanged at 9
242 . mirserver ABI bumped to 42
243 . mircommon ABI bumped to 7
244 . mirplatform ABI bumped to 14
245 . mirprotobuf ABI unchanged at 3
246 . mirplatformgraphics ABI bumped to 11
247 . mirclientplatform ABI unchanged at 5
248 . mirinputplatform ABI bumped to 6
249 . mircore ABI added, at version 1
250 - Enhancements:
251 . Added pointer confinement support
252 . Identify Raspberry Pi output types correctly
253 . Added dead key and compose key support
254 . Added gamma support for KMS hardware
255 . Added yakkety and zesty gcc-6 support
256 . Added surface passthrough support for fullscreen clients of nested
257 servers
258 . Introduced a new library `libmircore'
259 . Began migrating from Protobuf to Cap'n Proto starting with events
260 . Began support for VirtualBox (servers now start instead of crashing
261 but full support for GL clients is still missing)
262 . Began support for high precision frame timing, implemented for the
263 KMS, Android and X11 backends so far
264 . Added --display-report support for the X11 backend
265 . Improved reliability of `mirvanity' latency test tool
266 . Moved to using the CSS cursor naming scheme internally, although
267 the old symbolic indentifiers remain unchanged and still work
268 . Added refresh rate to MirSurfaceOutputEvent
269 . Many improvements to automated test quality and coverage
270 . Smoother desktop zoom using mir_proving_server (Super + two fingers)
271 - Bugs fixed:
272 . FTBFS On Zesty: invalid use of
273 'struct native_handle' (LP: #1638774)
274 . libmirclient-debug-extension-dev install debug/surface.h
275 twice (LP: #1639153)
276 . Mir crashes on virtual box drmModeCrtcSetGamma
277 Function not implemented (LP: #1638220)
278 . Flickering in mir_demo_client_multistream (LP: #1635273)
279 . Camera apps (camera & vanity) never exit (LP: #1635010)
280 . Clients cannot connect when MIR_SOCKET="" (LP: #1634508)
281 . mirtest-dev packaging fails to sepcify boost depends (LP: #1633537)
282 . cursor.h is unclear about mir_diagonal_resize_* (LP: #1626924)
283 . Inconsistent underscores in cursor names (LP: #1632617)
284 . [regression] Accidental libmircommon.so.6 break (LP: #1617865)
285 . [regression] mir demo server fails to start with mx4 (LP: #1615703)
286 . [regression] Trust prompt now shown when starting camera (LP: #1612256)
287 . [regression] make abi-check fails to build (LP: #1626866)
288 . Nested servers prevent overlays or fullscreen bypass (LP: #1262116)
289 . Failed to get PRIME fd from gbm bo (LP: #1607812)
290 . Mir-on-X is difficult to use on 1366x768 laptop (LP: #1590959)
291 . Remove useless message 'Surface 0 DPI' in demos (LP: #1559831)
292 . Mir fails to cross-build with newer sbuild (LP: #1628507)
293 . Infinite loop in AbstractShell::focus_next_session (LP: #1625401)
294 . Destroying a presentation chain doesn't trigger ownership
295 notification to client (LP: #1626503)
296 . Keyboard layout not applied on the shell (LP: #1626435)
297 . Warning, No syntax specified for the proto file (LP: #1624971)
298 . display-report=log reports vsync on non-existent output number
299 (LP: #1621352)
300 . libmirserver-dev missing uuid-dev depends (LP: #1617435)
301 . debian/control missing epoxy (LP: #1617256)
302 . Downstreams need to disable clang diagnostic "-Wreturn-type-clinkage"
303 to build against public headers (LP: #1615587)
304 . mirtest-dev: mock_display_configuration.h uses mg namespace without
305 using it (LP: #1614983)
306 . FTBFS using clang (LP: #1609612)
307 . mesa-kms doesn't fall back to using software cursor if hardware
308 cursor is unavailable (LP: #1610054)
309 . StubGraphicsPlatform::create_display() leaves a dubious state
310 (LP: #1611337)
311 . Mir build/tests fail with gcc-6 and LTO (LP: #1610215)
312 . Cross compiling on xenial fails (LP: #1609329)
313 . Building with -DMIR_PLATFORM=anroid fails (LP: #1609916)
314 . unity-system-compositor crashes on start-up with "Mir fatal error:
315 Failed to schedule page flip" (LP: #1584894)
316 . mir_connection_create_spec_for_tooltip doesn't meet requirements
317 (LP: #1603922)
318 . Updating surface size/location needs to update the pointer confinement
319 (LP: #1604673)
320 . ServerConfigurationOption is not ptest safe (LP: #1607351)
321 . HWC's vsync_signal_on is never called when using HWC 1.0 (LP: #1613373)
322 . mir_connection_create_spec_for_tooltip does not set aux_rect
323 (LP: #1632335)
324 . VMware virtual connector recognized by Mir as "unknown" (LP: #1248072)
325 . Fix code to match the documentation of CoordinateTranslator - vis "It is
326 acceptable ...[to] throw a std::runtime_error" (LP: #1641166)
327 . Test timeout MesaDisplayConfigurationTests.* (LP: #1613352)
328 . Tests fail when built against lp:mir (LP: #1621917)
329 . CI failure MultiThreadedCompositor (LP: #1595940)
330 . CI failure in DisplayConfiguration (LP: #1563210)
331 . CI failure NestedServer.given_client_set_display_configuration*
332 (LP: #1617036)
333 . CI failure on krillin in NestedServer.* testes (LP: #1628828)
334 . CI failure: PosixRWMutex hangs (LP: #1633920)
335 . googletest 1.8.0-2 (on zesty) breaks existing builds [add_library
336 cannot create target "gmock" ...] (LP: #1644062)
337
338 -- Brandon Schaefer <brandon.schaefer@canonical.com> Sat, 03 Dec 2016 12:42:33 +0000
339
340mir (0.24.1) UNRELEASED; urgency=medium
341
342 * New upstream release 0.24.1 (https://launchpad.net/mir/+milestone/0.24.1)
343 - ABI summary:
344 . All ABI numbers remain unchanged.
345 . mircommon ABI at 6, but now including a symbol misplaced in 0.24.0
346 - Bugs fixed:
347 . mirserver ignored further keymap configuration changes after a keyboard
348 is configured (LP: #1626435)
349 . fix for libmircommon.so.6 ABI break: version stanza of
350 mir::dispatch::ReadableFd* moved to newer version (LP: #1617865)
351 . clang builds fail (again) (LP: #1609612)
352 . Valgrind errors in NesterServer.* cause subsequent tests
353 (ServerDisconnect, ServerStartup, UnresponsiveClient) to fail
354 (LP: #1612012)
355 . Break potentially infinite loop in search for next session to focus
356 (LP: #1625401)
357
358 -- Andreas Pokorny <andreas.pokorny@canonical.com> Wed, 28 Sep 2016 12:09:49 +0000
359
360mir (0.24.0) UNRELEASED; urgency=medium
361
362 * New upstream release 0.24.0 (https://launchpad.net/mir/+milestone/0.24.0)
363 - ABI summary:
364 . mirclient ABI unchanged at 9
365 . mirserver ABI bumped to 41
366 . mircommon ABI unchanged at 6
367 . mirplatform ABI bumped to 12
368 . mirprotobuf ABI unchanged at 3
369 . mirplatformgraphics ABI bumped to 10
370 . mirclientplatform ABI unchanged at 5
371 . mirinputplatform ABI unchanged at 5
372 - Enhancements:
373 . Added a new tool 'mirvanity' which can use a high speed video camera
374 to measure client-to-screen latency.
375 . Added (build-time) support for desktop full OpenGL servers (disabled
376 by default in favor of GLESv2).
377 . Introduced new buffer semantics (NBS) and enabled it by default.
378 . Avoided using libmirserver in mir_demo_standalone_render_overlays,
379 making bringup traces less cluttered.
380 . Removed TilingWindowManager from example servers.
381 . Added two new mir_*_performance_test tools that are run as part of
382 'mir_performance_tests'.
383 . Added pointer confinement to the client API.
384 . Added new platform supporting software EGLStreams.
385 . Added an input platform that the nested server can use.
386 . Allow configuration of the application_not_responding_detector
387 . Handle server-side keymapping using XKBMapper.
388 . Remove the offscreen display.
389 . Add callback option to notify shells that the server is about to stop.
390 . Add logging for ANativeWindow events on Android.
391 - Bugs fixed:
392 . usage of std:call_once in mirclient causes TLS collisions with some
393 android devices (LP: #1599867)
394 . AltGr not working on external keyboards (LP: #1565236)
395 . [regression] unity8 fails to start when built with 0.24 series (lp:mir)
396 (LP: #1597717)
397 . CI failure in MirSurfaceVisibilityEvent.exposed_received_when_surface_
398 raised_over_occluding_surface [called twice - over-saturated and active]
399 (LP: #1556045)
400 . package-built mir_demo_server does not start on device (LP: #1577357)
401 . During surface creation, first stream in spec becomes default stream.
402 (LP: #1577967)
403 . mouse is getting stuck on a phantom edge (LP: #1580774)
404 . [testsfail] in MirSurfaceVisibilityEvent.exposed_received_when_surface_
405 raised_over_occluding_surface [never called] (LP: #1581385)
406 . [enhancement] Add support for full OpenGL compositing (LP: #1420581)
407 . [testsfail] ServerSignal.terminate_handler_is_called_for_SIGINT|SIGTERM
408 (LP: #1570353)
409 . [testsfail] ClientLatency.triple_buffered_client_has_less_than_two_
410 frames_latency (LP: #1576690)
411 . [testsfail] NestedServer.when_monitor_plugged_in_client_is_notified_of_
412 new_display_configuration (LP: #1576760)
413 . mir server crashed in what(): drmModeMoveCursor failed (returned -13)
414 (LP: #1579630)
415 . mirtest-dev is hard to use as the objects used are compiled with LTO
416 (LP: #1583536)
417 . [testsfail] ClientLogging.reports_performance [Value of: lag]
418 (LP: #1583970)
419 . [ FAILED ] ClientLogging.reports_performance (Value of: nbuffers)
420 (LP: #1584603)
421 . [ FAILED ] ClientLogging.reports_performance (Value of: render)
422 (LP: #1584605)
423 . ClientCredsTestFixture.session_authorizer_receives_pid_of_connecting_
424 clients failure (LP: #1587604)
425 . Mir on X11 ignores mir::graphics::GLConfig depth & stencil buffer size
426 (LP: #1589632)
427 . Need to support pointer confinement (LP: #1590099)
428 . [tests] given_nested_server_set_base_display_configuration_when_
429 monitor_plugged_in_configuration_is_reset fails (LP: #1591354)
430 . CI failure in DemoInProcessServerWithStubClientPlatform.surface_
431 creation_does_not_leak_fds (LP: #1598802)
432 . Screen is squashed/distorted when rotated in Mir-on-X11 (LP: #1577262)
433 . --display-report=log shows some invalid uninitialized EGL attribute
434 values (LP: #1582066)
435 . mir_demo_client_eglplasma falls back to software rendering on i915
436 (Intel Atoms), which explains why it's so slow (LP: #1583532)
437 . [regression] x11 platform only draws to a small part of the x11 window
438 (LP: #1598267)
439 . mir ftbfs in yakkety builders (LP: #1600343)
440 . Autolanding keeps failing: mock_egl.h:89:7: error: type 'struct
441 MockEGL' violates one definition rule [-Werror=odr] (LP: #1603303)
442 . [regression] The Super/Windows key doesn't work any more (LP: #1602966)
443 . mir_acceptance_tests.bin: double free or corruption (fasttop)
444 (LP: #1603114)
445 . ftbfs in linking libmir-test-assist.a in xenial+overlay and
446 yakkety+overlay (LP: #1601810)
447 . [testsfail] failure in NestedInput.on_input_device_state_nested_*
448 (LP: #1602646)
449 . mirtest-dev provides an incorrect .pc file (LP: #1603080)
450 . mir_test_framework::server_platform_path(),
451 mir_test_framework::server_platform() don't support use in a downstream
452 test built against mir-test-assist (LP: #1603091)
453 . Servers based on Mir need a hook to execute code when the server is
454 closing (LP: #1593655)
455 . Android graphics platform doesn't get packaged for arm64 (LP: #157866)
456 . memory leaks in unit tests on android (LP: #1253486)
457 . Physical "screen" size reported by the X11 backend is same as pixel
458 count, fixing dpi to 25.4 (LP: #1596051)
459 . Mir build and test failures with gcc-6 and LTO (LP: #1610215)
460 . [regression] Trust prompt not shown when starting camera (LP: #1612256)
461
462 -- Kevin DuBois <kevin.dubois@canonical.com> Mon, 15 Aug 2016 16:29:03 +0000
463
464mir (0.23.5) UNRELEASED; urgency=medium
465
466 * No-change rebuild for boost soname change.
467
468 -- Matthias Klose <doko@ubuntu.com> Thu, 04 Aug 2016 08:25:48 +0000
469
470mir (0.23.5) UNRELEASED; urgency=medium
471
472 * New upstream release 0.23.5 (https://launchpad.net/mir/+milestone/0.23.5)
473 - ABI summary:
474 . No ABI changes in any libraries.
475 - Enhancements:
476 . Enable new buffer semantics (NBS) by default.
477 - Bugs fixed:
478 . Mir fails to build in: COMPOSITOR_TRACE_CALL (LP: #1584601)
479 . [testsfail] Process.* (memory leak in libhybris generated when probing
480 android platforms) (LP: #1602199)
481 . unity8/libmirclient gives up and terminates prematurely with
482 "std::exception::what: disconnected: no new buffers" via
483 ExchangeSemantics::submit() (LP: #1506358)
484
485 -- Kevin DuBois <kdub432@gmail.com> Fri, 29 Jul 2016 11:31:02 +0000
486
487mir (0.23.4) UNRELEASED; urgency=medium
488
489 * New upstream release 0.23.4 (https://launchpad.net/mir/+milestone/0.23.4)
490 - ABI summary:
491 . No ABI changes in any libraries. Bugfix release only.
492 - Bugs fixed:
493 . Android graphics platform doesn't get packaged for arm64 (LP: #1579866)
494
495 -- Cemil Azizoglu <cemil.azizoglu@canonical.com> Tue, 19 Jul 2016 17:49:47 +0000
496
497mir (0.23.3) UNRELEASED; urgency=medium
498
499 * New upstream release 0.23.3 (https://launchpad.net/mir/+milestone/0.23.3)
500 - ABI summary:
501 . No ABI changes in any libraries. Bugfix release only.
502 - Bugs fixed:
503 . usage of std:call_once in mirclient causes TLS collisions with some
504 android devices (LP: #1599867)
505
506 -- Alberto Aguirre <alberto.aguirre@canonical.com> Thu, 07 Jul 2016 17:07:38 +0000
507
508mir (0.23.2) UNRELEASED; urgency=medium
509
510 * New upstream release 0.23.2 (https://launchpad.net/mir/+milestone/0.23.2)
511 - ABI summary:
512 . No ABI changes in any libraries. Bugfix release only.
513 - Bugs fixed:
514 . Refine Android display format selection LP: #1584657
515
516 -- Cemil Azizoglu <cemil.azizoglu@canonical.com> Fri, 24 Jun 2016 19:56:05 +0000
517
518mir (0.23.1) UNRELEASED; urgency=medium
519
520 [ Kevin DuBois ]
521 * New upstream release 0.23.1 (https://launchpad.net/mir/+milestone/0.23.1)
522 - ABI summary:
523 . No ABI changes in any libraries. Bugfix release only.
524 - Bugs fixed:
525 . Turn off NBS as workaround to LP: #1590765
526
527 [ Daniel van Vugt, Kevin DuBois ]
528 * Mir 0.23.1 bugfix release. Fix flickering issue seen with onscreen
529 keyboard (LP: 1590765)
530
531 -- Kevin DuBois <kdub432@gmail.com> Fri, 10 Jun 2016 22:40:55 +0000
532
533mir (0.23.0) UNRELEASED; urgency=medium
534
535 [ Kevin DuBois ]
536 * New upstream release 0.23.0 (https://launchpad.net/mir/+milestone/0.23.0)
537 - ABI summary:
538 . mirclient ABI unchanged at 9
539 . mirserver ABI bumped to 40
540 . mircommon ABI bumped at 6
541 . mirplatform ABI unchanged at 11
542 . mirprotobuf ABI unchanged at 3
543 . mirplatformgraphics ABI unchanged at 9
544 . mirclientplatform ABI unchanged at 5
545 . mirinputplatform ABI unchanged at 5
546 - Enhancements:
547 . Enable internal usage of more flexible graphics buffer submission,
548 precursing client API additions.
549 - Bug fixes:
550 . Potential NBS performance loss after resize (LP: #1579076)
551 . Performance loss with NBS and overlays on (LP: #1578159)
552 . Mir crashes with useless backtrace when mg::Platform methods throw
553 (LP: #1553549)
554 . Virtual output is not removed when screencast client disappears
555 (LP: #1573572)
556 . Can't VT switch from mir_demo_server (any more) (LP: #1576260)
557 . mir_demo_server(_minimal): Window movement/resizing stops responding
558 when the cursor leaves the surface, and can lead to windows 1px wide
559 and unrecoverable. (LP: #1447886)
560 . Virtual display output configuration is set to LVDS (LP: #1573782)
561 . Mir-on-X11 doesn't pass Alt+primary button drag to Mir (LP: #1575765)
562 . Mir-on-X11 breaks mir_proving_server resize logic (LP: #1575192)
563 . Resizing can crash mir_demo_server (LP: #1575211)
564 . [regression] Cursor stops at phantom edge on M10 and N7 (LP: #1580774)
565 . [regression] MIR_CLIENT_PERF_REPORT is showing bogus render times and
566 buffer lag (LP: #1581368)
567 . Test failures in ClientLogging.reports_performance due to the above
568 fix. (LP: #1583970, LP: #1584603, LP: #1584605)
569 . Do not throw when creating some objects under HWC 1.5 (LP: #1583086)
570 . Correct black frame issue under Xmir (LP: #1584784)
571
572 [ Tarmac, Kevin DuBois <kevin.dubois@canonical.com>, Daniel van Vugt <daniel.van.vugt@canonical.com>, Andreas Pokorny <andreas.pokorny@canonical.com>, Alberto Aguirre ]
573 * 0.23.0 Mir release
574
575 -- Kevin DuBois <kdub432@gmail.com> Thu, 02 Jun 2016 13:18:03 +0000
576
577mir (0.22.1+16.04.20160516.2-0ubuntu1) xenial; urgency=medium
578
579 [ Andreas Pokorny ]
580 * New upstream release 0.22.1 (https://launchpad.net/mir/+milestone/0.22.1)
581 - ABI summary:
582 . No ABI changes in any libraries. Bugfix release only.
583 - Bugs fixed:
584 . [regression] Cursor stops at phantom edge on M10 and N7 (LP: 1580774)
585
586 [ CI Train Bot ]
587 * No-change rebuild.
588
589 -- MichaƂ Sawicz <michal.sawicz@canonical.com> Mon, 16 May 2016 15:36:50 +0000
590
591mir (0.22.0+16.04.20160422.2-0ubuntu1) xenial; urgency=medium
592
593 [ Alberto Aguirre ]
594 * New upstream release 0.22.0 (https://launchpad.net/mir/+milestone/0.22.0)
595 - ABI summary: Only servers need rebuilding
596 . mirclient ABI unchanged at 9
597 . mirserver ABI bumped to 39
598 . mircommon ABI unchanged at 5
599 . mirplatform ABI unchanged at 11
600 . mirprotobuf ABI unchanged at 3
601 . mirplatformgraphics ABI bumped to 9
602 . mirclientplatform ABI unchanged at 5
603 . mirinputplatform ABI unchanged at 5
604 - Enhancements:
605 . New screencast creation API which allows a client to specify
606 number of capture buffers and mirroring mode
607 . HWC 1.5 support for android based platforms
608 - Bug fixes:
609 . [regression] Black screen: Mir hangs and then crashes on startup/login
610 due to reading from /dev/random (LP: #1536662)
611 . CI test failures on xenial amd64 due to valgrind errors following system
612 upgrade to ld-2.23 (LP: #1560415)
613 . [regression] failure in CI on ThreadedDispatcherSignalTest.keeps_
614 dispatching_after_signal_interruption under Valgrind (LP: #1499229)
615 . [regression] Cursor mostly does not move at all in response to slow
616 mouse movement, but then sometimes jumps (LP: #1528109)
617 . Sometimes devices don't suspend - display turns back on immediately
618 (LP: #1549701)
619 . CI failure in NestedServer.display_orientation_changes_are_forwarded_to_
620 host (LP: #1555074)
621 . NBS fullscreen overlay benchmark performance is much lower than
622 BufferQueue (LP: #1557962)
623 . server crashes when shutting down in smoke tests (LP: #1560900)
624 . [regression] [OTA-10] Spread animation stutters badly with only a few
625 apps opened (LP: #1563287)
626 . nested mir_demo_server crashes on startup (LP: #1570362)
627 . mir_acceptance_tests & mir_unit_tests dump core files (even when
628 everything passes) (LP: #1342092)
629 . [regression] Tests fail with: std::exception::what: Failed to read from
630 device: /dev/random after: 30 seconds (LP: #1541188)
631 . [testsfail] ClientLatency.throttled_input_rate_yields_lower_latency
632 (LP: #1554572)
633 . NBS causes sudden loss of performance after un-fullscreening a swap
634 interval zero client (LP: #1557442)
635 . surface creation with non-default buffer streams is ignored by server
636 (LP: #1563278)
637 . [regression] mir_integration_tests take significantly longer (27x
638 longer) when running with ctest (LP: #1568966)
639 . CI failure in TestClientInput.receives_one_touch_event_per_frame
640 (LP: #1570698)
641 . Racy shutdown in mir_demo_client_scroll causes SEGFAULT (LP: #1560943)
642 . mir_demo_client_target does not quit after SIGTERM/SIGINT (LP: #1562340)
643 . ClientLogging.reports_performance fails under moderate load, is badly
644 named (LP: #1563148)
645 . nested mir_demo_server crashes on mouse move when --print-input-events
646 active (LP: #1570357)
647 . Virtual output is not removed when screencast client disappears
648 (LP: #1573572)
649 . Virtual display output configuration is set to LVDS (LP: #1573782)
650
651 [ CI Train Bot ]
652 * No-change rebuild.
653
654 -- Alberto Aguirre <alberto.aguirre@canonical.com> Fri, 22 Apr 2016 22:38:16 +0000
655
1mir (0.21.0+16.04.20160330-0ubuntu1) xenial; urgency=medium656mir (0.21.0+16.04.20160330-0ubuntu1) xenial; urgency=medium
2657
3 [ Alberto Aguirre ]658 [ Alberto Aguirre ]
4659
=== modified file 'debian/control'
--- debian/control 2016-03-18 19:40:56 +0000
+++ debian/control 2017-06-05 10:46:31 +0000
@@ -4,7 +4,6 @@
4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
5XSBC-Original-Maintainer: Thomas Voß <thomas.voss@canonical.com>5XSBC-Original-Maintainer: Thomas Voß <thomas.voss@canonical.com>
6Build-Depends: cmake,6Build-Depends: cmake,
7 cmake-data,
8 pkg-config,7 pkg-config,
9 debhelper (>= 9),8 debhelper (>= 9),
10 doxygen,9 doxygen,
@@ -19,23 +18,24 @@
19 libdrm-dev,18 libdrm-dev,
20 libegl1-mesa-dev,19 libegl1-mesa-dev,
21 libgles2-mesa-dev,20 libgles2-mesa-dev,
21 libgl1-mesa-dev [amd64 i386],
22 libgbm-dev,22 libgbm-dev,
23 libglm-dev,23 libglm-dev,
24 libprotobuf-dev,24 libprotobuf-dev,
25 pkg-config,25 pkg-config,
26 android-headers (>=4.4.2) [i386 amd64 armhf],26 android-headers-23,
27 libhardware-dev [i386 amd64 armhf],27 libhardware-dev [i386 amd64 armhf],
28 libandroid-properties-dev [i386 amd64 armhf],28 libandroid-properties-dev [i386 amd64 armhf],
29 libgoogle-glog-dev,29 libgoogle-glog-dev,
30 liblttng-ust-dev,30 liblttng-ust-dev,
31 libxkbcommon-dev,31 libxkbcommon-dev (>= 0.5),
32 libumockdev-dev (>= 0.6),32 libumockdev-dev (>= 0.6),
33 umockdev (>= 0.8.7),33 umockdev (>= 0.8.7),
34 libudev-dev,34 libudev-dev,
35 libgtest-dev,35 libgtest-dev,
36 google-mock (>= 1.6.0+svn437),36 google-mock (>= 1.6.0+svn437),
37# only enable valgrind once it's been tested to work on each architecture:37# only enable valgrind once it's been tested to work on each architecture:
38 valgrind [amd64 i386 armhf],38 valgrind [amd64 i386 armhf arm64],
39 libglib2.0-dev,39 libglib2.0-dev,
40 libfreetype6-dev,40 libfreetype6-dev,
41 abi-compliance-checker,41 abi-compliance-checker,
@@ -45,6 +45,9 @@
45 python3:any,45 python3:any,
46 dh-python,46 dh-python,
47 nettle-dev,47 nettle-dev,
48 libcapnp-dev,
49 capnproto,
50 libepoxy-dev,
48Standards-Version: 3.9.451Standards-Version: 3.9.4
49Homepage: https://launchpad.net/mir52Homepage: https://launchpad.net/mir
50# If you aren't a member of ~mir-team but need to upload packaging changes,53# If you aren't a member of ~mir-team but need to upload packaging changes,
@@ -67,7 +70,7 @@
6770
68#TODO: Packaging infrastructure for better dependency generation,71#TODO: Packaging infrastructure for better dependency generation,
69# ala pkg-xorg's xviddriver:Provides and ABI detection.72# ala pkg-xorg's xviddriver:Provides and ABI detection.
70Package: libmirserver3873Package: libmirserver43
71Section: libs74Section: libs
72Architecture: linux-any75Architecture: linux-any
73Multi-Arch: same76Multi-Arch: same
@@ -80,7 +83,7 @@
80 .83 .
81 Contains the shared library needed by server applications for Mir.84 Contains the shared library needed by server applications for Mir.
8285
83Package: libmirplatform1186Package: libmirplatform15
84Section: libs87Section: libs
85Architecture: linux-any88Architecture: linux-any
86Multi-Arch: same89Multi-Arch: same
@@ -94,12 +97,25 @@
94 Contains the shared libraries required for the Mir server to interact with97 Contains the shared libraries required for the Mir server to interact with
95 the underlying hardware platform.98 the underlying hardware platform.
9699
100Package: libmircore-dev
101Section: libdevel
102Architecture: linux-any
103Multi-Arch: same
104Pre-Depends: ${misc:Pre-Depends}
105Depends: ${misc:Depends},
106Description: Display server for Ubuntu - development headers
107 Mir is a display server running on linux systems, with a focus on efficiency,
108 robust operation and a well-defined driver model.
109 .
110 Contains header files required for server and/or client development.
111
97Package: libmircommon-dev112Package: libmircommon-dev
98Section: libdevel113Section: libdevel
99Architecture: linux-any114Architecture: linux-any
100Multi-Arch: same115Multi-Arch: same
101Pre-Depends: ${misc:Pre-Depends}116Pre-Depends: ${misc:Pre-Depends}
102Depends: libmircommon5 (= ${binary:Version}), 117Depends: libmircommon7 (= ${binary:Version}),
118 libmircore-dev (= ${binary:Version}),
103 libprotobuf-dev (>= 2.4.1),119 libprotobuf-dev (>= 2.4.1),
104 libxkbcommon-dev,120 libxkbcommon-dev,
105 ${misc:Depends},121 ${misc:Depends},
@@ -116,8 +132,8 @@
116Architecture: linux-any132Architecture: linux-any
117Multi-Arch: same133Multi-Arch: same
118Pre-Depends: ${misc:Pre-Depends}134Pre-Depends: ${misc:Pre-Depends}
119Depends: libmirplatform11 (= ${binary:Version}),135Depends: libmirplatform15 (= ${binary:Version}),
120 libmircommon-dev,136 libmircommon-dev (= ${binary:Version}),
121 libboost-program-options-dev,137 libboost-program-options-dev,
122 ${misc:Depends},138 ${misc:Depends},
123Breaks: libmirplatform (<< 0.6)139Breaks: libmirplatform (<< 0.6)
@@ -133,10 +149,11 @@
133Architecture: linux-any149Architecture: linux-any
134Multi-Arch: same150Multi-Arch: same
135Pre-Depends: ${misc:Pre-Depends}151Pre-Depends: ${misc:Pre-Depends}
136Depends: libmirserver38 (= ${binary:Version}),152Depends: libmirserver43 (= ${binary:Version}),
137 libmirplatform-dev (= ${binary:Version}),153 libmirplatform-dev (= ${binary:Version}),
138 libmircommon-dev (= ${binary:Version}),154 libmircommon-dev (= ${binary:Version}),
139 libglm-dev,155 libglm-dev,
156 uuid-dev,
140 ${misc:Depends},157 ${misc:Depends},
141Description: Display server for Ubuntu - development headers158Description: Display server for Ubuntu - development headers
142 Mir is a display server running on linux systems, with a focus on efficiency,159 Mir is a display server running on linux systems, with a focus on efficiency,
@@ -152,6 +169,9 @@
152Depends: libmircommon-dev (= ${binary:Version}),169Depends: libmircommon-dev (= ${binary:Version}),
153 libmirplatform-dev (= ${binary:Version}),170 libmirplatform-dev (= ${binary:Version}),
154 libmirserver-dev (= ${binary:Version}),171 libmirserver-dev (= ${binary:Version}),
172 mir-renderer-gl-dev (= ${binary:Version}),
173 libboost-filesystem-dev,
174 libboost-system-dev,
155 ${misc:Depends},175 ${misc:Depends},
156Description: Display server for Ubuntu - test development headers and library176Description: Display server for Ubuntu - test development headers and library
157 Mir is a display server running on linux systems, with a focus on efficiency,177 Mir is a display server running on linux systems, with a focus on efficiency,
@@ -287,7 +307,20 @@
287 .307 .
288 Contains a tool for checking the graphics components of android devices.308 Contains a tool for checking the graphics components of android devices.
289309
290Package: libmircommon5310Package: libmircore1
311Section: libs
312Architecture: linux-any
313Multi-Arch: same
314Pre-Depends: ${misc:Pre-Depends}
315Depends: ${misc:Depends},
316 ${shlibs:Depends},
317Description: Display server for Ubuntu - shared library
318 Mir is a display server running on linux systems, with a focus on efficiency,
319 robust operation and a well-defined driver model.
320 .
321 Contains the shared libraries required for the Mir server and client.
322
323Package: libmircommon7
291Section: libs324Section: libs
292Architecture: linux-any325Architecture: linux-any
293Multi-Arch: same326Multi-Arch: same
@@ -301,7 +334,9 @@
301 Contains the shared libraries required for the Mir server and client.334 Contains the shared libraries required for the Mir server and client.
302335
303# Longer-term these drivers should move out-of-tree336# Longer-term these drivers should move out-of-tree
304Package: mir-platform-graphics-mesa-x8337# Yes, this really should be x12. An unfortunate side-effect of our package
338# naming scheme...
339Package: mir-platform-graphics-mesa-x12
305Section: libs340Section: libs
306Architecture: linux-any341Architecture: linux-any
307Multi-Arch: same342Multi-Arch: same
@@ -315,7 +350,7 @@
315 Contains the shared libraries required for the Mir server to interact with350 Contains the shared libraries required for the Mir server to interact with
316 the X11 platform using the Mesa drivers.351 the X11 platform using the Mesa drivers.
317352
318Package: mir-platform-graphics-mesa-kms8353Package: mir-platform-graphics-mesa-kms12
319Section: libs354Section: libs
320Architecture: linux-any355Architecture: linux-any
321Multi-Arch: same356Multi-Arch: same
@@ -329,7 +364,7 @@
329 Contains the shared libraries required for the Mir server to interact with364 Contains the shared libraries required for the Mir server to interact with
330 the hardware platform using the Mesa drivers.365 the hardware platform using the Mesa drivers.
331366
332Package: mir-platform-graphics-android8367Package: mir-platform-graphics-android12
333Section: libs368Section: libs
334Architecture: i386 amd64 armhf369Architecture: i386 amd64 armhf
335Multi-Arch: same370Multi-Arch: same
@@ -343,7 +378,7 @@
343 Contains the shared libraries required for the Mir server to interact with378 Contains the shared libraries required for the Mir server to interact with
344 the hardware platform using the Android drivers.379 the hardware platform using the Android drivers.
345380
346Package: mir-platform-input-evdev5381Package: mir-platform-input-evdev6
347Section: libs382Section: libs
348Architecture: linux-any383Architecture: linux-any
349Multi-Arch: same384Multi-Arch: same
@@ -376,7 +411,7 @@
376Architecture: linux-any411Architecture: linux-any
377Multi-Arch: same412Multi-Arch: same
378Pre-Depends: ${misc:Pre-Depends}413Pre-Depends: ${misc:Pre-Depends}
379Depends: libmirclient-dev,414Depends: libmirclient-dev (= ${binary:Version}),
380 ${misc:Depends},415 ${misc:Depends},
381Description: Display server for Ubuntu - client platform library for Mesa development files416Description: Display server for Ubuntu - client platform library for Mesa development files
382 Mir is a display server running on linux systems, with a focus on efficiency,417 Mir is a display server running on linux systems, with a focus on efficiency,
@@ -405,10 +440,10 @@
405Multi-Arch: same440Multi-Arch: same
406Pre-Depends: ${misc:Pre-Depends}441Pre-Depends: ${misc:Pre-Depends}
407Depends: ${misc:Depends},442Depends: ${misc:Depends},
408 mir-platform-graphics-mesa-kms8,443 mir-platform-graphics-mesa-kms12,
409 mir-platform-graphics-mesa-x8,444 mir-platform-graphics-mesa-x12,
410 mir-client-platform-mesa5,445 mir-client-platform-mesa5,
411 mir-platform-input-evdev5,446 mir-platform-input-evdev6,
412Description: Display server for Ubuntu - desktop driver metapackage447Description: Display server for Ubuntu - desktop driver metapackage
413 Mir is a display server running on linux systems, with a focus on efficiency,448 Mir is a display server running on linux systems, with a focus on efficiency,
414 robust operation and a well-defined driver model.449 robust operation and a well-defined driver model.
@@ -422,9 +457,9 @@
422Multi-Arch: same457Multi-Arch: same
423Pre-Depends: ${misc:Pre-Depends}458Pre-Depends: ${misc:Pre-Depends}
424Depends: ${misc:Depends},459Depends: ${misc:Depends},
425 mir-platform-graphics-android8,460 mir-platform-graphics-android12,
426 mir-client-platform-android5,461 mir-client-platform-android5,
427 mir-platform-input-evdev5,462 mir-platform-input-evdev6,
428Description: Display server for Ubuntu - android driver metapackage463Description: Display server for Ubuntu - android driver metapackage
429 Mir is a display server running on linux systems, with a focus on efficiency,464 Mir is a display server running on linux systems, with a focus on efficiency,
430 robust operation and a well-defined driver model.465 robust operation and a well-defined driver model.
@@ -477,6 +512,20 @@
477 tests for Mir. It also contains a few interesting performance tests written512 tests for Mir. It also contains a few interesting performance tests written
478 using the framework.513 using the framework.
479514
515Package: libmirrenderer-dev
516Section: libdevel
517Architecture: linux-any
518Multi-Arch: same
519Pre-Depends: ${misc:Pre-Depends}
520Depends: ${misc:Depends},
521 libmircommon-dev (= ${binary:Version}),
522 libmirplatform-dev (= ${binary:Version})
523Description: Display server for Ubuntu - Renderer development files
524 Mir is a display server running on linux systems, with a focus on efficiency,
525 robust operation and a well-defined driver model.
526 .
527 Contains header files required for renderer development.
528
480Package: mir-renderer-gl-dev529Package: mir-renderer-gl-dev
481Section: libdevel530Section: libdevel
482Architecture: linux-any531Architecture: linux-any
483532
=== modified file 'debian/copyright'
--- debian/copyright 2016-01-25 17:28:12 +0000
+++ debian/copyright 2017-06-05 10:46:31 +0000
@@ -1,4 +1,4 @@
1Format: http://dep.debian.net/deps/dep5/1Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
2Upstream-Name: Mir2Upstream-Name: Mir
3Upstream-Contact: Thomas Voß <thomas.voss@canonical.com>3Upstream-Contact: Thomas Voß <thomas.voss@canonical.com>
4Source: http://launchpad.net/mir4Source: http://launchpad.net/mir
55
=== modified file 'debian/libmirclient-dev.install'
--- debian/libmirclient-dev.install 2015-06-17 05:20:42 +0000
+++ debian/libmirclient-dev.install 2017-06-05 10:46:31 +0000
@@ -1,6 +1,8 @@
1usr/include/mirclient/mir_toolkit/*.h1usr/include/mirclient/mir_toolkit/*.h
2usr/include/mirclient/mir_toolkit/extensions/*.h
2usr/include/mirclient/mir/events/*.h3usr/include/mirclient/mir/events/*.h
3usr/include/mirclient/mir/event_printer.h4usr/include/mirclient/mir/event_printer.h
4usr/include/mirclient/mir_toolkit/events5usr/include/mirclient/mir_toolkit/events
6usr/include/mirclient/mir_toolkit/rs/mir_render_surface.h
5usr/lib/*/pkgconfig/mirclient.pc7usr/lib/*/pkgconfig/mirclient.pc
6usr/lib/*/libmirclient.so8usr/lib/*/libmirclient.so
79
=== renamed file 'debian/libmircommon5.install' => 'debian/libmircommon7.install'
--- debian/libmircommon5.install 2015-06-17 05:20:42 +0000
+++ debian/libmircommon7.install 2017-06-05 10:46:31 +0000
@@ -1,1 +1,1 @@
1usr/lib/*/libmircommon.so.51usr/lib/*/libmircommon.so.7
22
=== added file 'debian/libmircore-dev.install'
--- debian/libmircore-dev.install 1970-01-01 00:00:00 +0000
+++ debian/libmircore-dev.install 2017-06-05 10:46:31 +0000
@@ -0,0 +1,3 @@
1usr/include/mircore
2usr/lib/*/libmircore.so
3usr/lib/*/pkgconfig/mircore.pc
04
=== added file 'debian/libmircore1.install'
--- debian/libmircore1.install 1970-01-01 00:00:00 +0000
+++ debian/libmircore1.install 2017-06-05 10:46:31 +0000
@@ -0,0 +1,1 @@
1usr/lib/*/libmircore.so.1
02
=== renamed file 'debian/libmirplatform11.install' => 'debian/libmirplatform15.install'
--- debian/libmirplatform11.install 2016-01-29 08:18:22 +0000
+++ debian/libmirplatform15.install 2017-06-05 10:46:31 +0000
@@ -1,1 +1,1 @@
1usr/lib/*/libmirplatform.so.111usr/lib/*/libmirplatform.so.15
22
=== added file 'debian/libmirrenderer-dev.install'
--- debian/libmirrenderer-dev.install 1970-01-01 00:00:00 +0000
+++ debian/libmirrenderer-dev.install 2017-06-05 10:46:31 +0000
@@ -0,0 +1,2 @@
1usr/include/mirrenderer/mir/renderer/*.h
2usr/lib/*/pkgconfig/mirrenderer.pc
03
=== renamed file 'debian/libmirserver38.install' => 'debian/libmirserver43.install'
--- debian/libmirserver38.install 2016-03-16 06:59:01 +0000
+++ debian/libmirserver43.install 2017-06-05 10:46:31 +0000
@@ -1,1 +1,1 @@
1usr/lib/*/libmirserver.so.381usr/lib/*/libmirserver.so.43
22
=== renamed file 'debian/mir-platform-graphics-android8.install' => 'debian/mir-platform-graphics-android12.install'
--- debian/mir-platform-graphics-android8.install 2016-02-02 16:03:37 +0000
+++ debian/mir-platform-graphics-android12.install 2017-06-05 10:46:31 +0000
@@ -1,1 +1,1 @@
1usr/lib/*/mir/server-platform/graphics-android.so.81usr/lib/*/mir/server-platform/graphics-android.so.12
22
=== renamed file 'debian/mir-platform-graphics-mesa-kms8.install' => 'debian/mir-platform-graphics-mesa-kms12.install'
--- debian/mir-platform-graphics-mesa-kms8.install 2016-02-02 16:03:37 +0000
+++ debian/mir-platform-graphics-mesa-kms12.install 2017-06-05 10:46:31 +0000
@@ -1,1 +1,1 @@
1usr/lib/*/mir/server-platform/graphics-mesa-kms.so.81usr/lib/*/mir/server-platform/graphics-mesa-kms.so.12
22
=== renamed file 'debian/mir-platform-graphics-mesa-x8.install' => 'debian/mir-platform-graphics-mesa-x12.install'
--- debian/mir-platform-graphics-mesa-x8.install 2016-02-02 16:03:37 +0000
+++ debian/mir-platform-graphics-mesa-x12.install 2017-06-05 10:46:31 +0000
@@ -1,1 +1,1 @@
1usr/lib/*/mir/server-platform/server-mesa-x11.so.81usr/lib/*/mir/server-platform/server-mesa-x11.so.12
22
=== renamed file 'debian/mir-platform-input-evdev5.install' => 'debian/mir-platform-input-evdev6.install'
--- debian/mir-platform-input-evdev5.install 2016-01-29 08:18:22 +0000
+++ debian/mir-platform-input-evdev6.install 2017-06-05 10:46:31 +0000
@@ -1,1 +1,1 @@
1usr/lib/*/mir/server-platform/input-evdev.so.51usr/lib/*/mir/server-platform/input-evdev.so.6
22
=== modified file 'debian/mir-test-tools.install'
--- debian/mir-test-tools.install 2016-03-16 06:59:01 +0000
+++ debian/mir-test-tools.install 2017-06-05 10:46:31 +0000
@@ -5,8 +5,12 @@
5usr/bin/mir_umock_acceptance_tests5usr/bin/mir_umock_acceptance_tests
6usr/bin/mir_integration_tests*6usr/bin/mir_integration_tests*
7usr/bin/mir_performance_tests7usr/bin/mir_performance_tests
8usr/bin/mir_glmark2_performance_test
9usr/bin/mir_compositor_performance_test
10usr/bin/mir_client_startup_performance_test
8usr/bin/mir_privileged_tests11usr/bin/mir_privileged_tests
9usr/bin/mir_test_reload_protobuf12usr/bin/mir_test_reload_protobuf
13usr/bin/mir_test_client_*
10usr/lib/*/mir/tools/libmirclientlttng.so14usr/lib/*/mir/tools/libmirclientlttng.so
11usr/lib/*/mir/tools/libmirserverlttng.so15usr/lib/*/mir/tools/libmirserverlttng.so
12usr/lib/*/mir/server-platform/graphics-dummy.so16usr/lib/*/mir/server-platform/graphics-dummy.so
1317
=== modified file 'debian/mir-utils.install'
--- debian/mir-utils.install 2016-03-14 10:13:49 +0000
+++ debian/mir-utils.install 2017-06-05 10:46:31 +0000
@@ -1,5 +1,6 @@
1usr/bin/mirping1usr/bin/mirvanity
2usr/bin/mirout2usr/bin/mirout
3usr/bin/mirin3usr/bin/mirin
4usr/bin/mirscreencast4usr/bin/mirscreencast
5usr/bin/mirbacklight5usr/bin/mirbacklight
6usr/bin/mirrun
67
=== modified file 'debian/rules'
--- debian/rules 2016-03-16 06:59:01 +0000
+++ debian/rules 2017-06-05 10:46:31 +0000
@@ -28,8 +28,13 @@
28 COMMON_CONFIGURE_OPTIONS += -DMIR_LINK_TIME_OPTIMIZATION=ON28 COMMON_CONFIGURE_OPTIONS += -DMIR_LINK_TIME_OPTIMIZATION=ON
29endif29endif
3030
31# Disable LTO on s390x, due to failing to build
32ifeq ($(DEB_HOST_ARCH),s390x)
33 COMMON_CONFIGURE_OPTIONS += -DMIR_LINK_TIME_OPTIMIZATION=OFF
34endif
35
31override_dh_auto_configure:36override_dh_auto_configure:
32ifeq ($(DEB_HOST_ARCH),armhf)37ifneq ($(filter armhf,$(DEB_HOST_ARCH)),)
33 dh_auto_configure -- \38 dh_auto_configure -- \
34 $(COMMON_CONFIGURE_OPTIONS) \39 $(COMMON_CONFIGURE_OPTIONS) \
35 -DMIR_RUN_ACCEPTANCE_TESTS=OFF \40 -DMIR_RUN_ACCEPTANCE_TESTS=OFF \
3641
=== modified file 'doc/Doxyfile.in'
--- doc/Doxyfile.in 2015-02-22 07:46:25 +0000
+++ doc/Doxyfile.in 2017-06-05 10:46:31 +0000
@@ -1,106 +1,122 @@
1# Doxyfile 1.8.41# Doxyfile 1.8.11
22
3# This file describes the settings to be used by the documentation system3# This file describes the settings to be used by the documentation system
4# doxygen (www.doxygen.org) for a project.4# doxygen (www.doxygen.org) for a project.
5#5#
6# All text after a double hash (##) is considered a comment and is placed6# All text after a double hash (##) is considered a comment and is placed in
7# in front of the TAG it is preceding .7# front of the TAG it is preceding.
8# All text after a hash (#) is considered a comment and will be ignored.8#
9# All text after a single hash (#) is considered a comment and will be ignored.
9# The format is:10# The format is:
10# TAG = value [value, ...]11# TAG = value [value, ...]
11# For lists items can also be appended using:12# For lists, items can also be appended using:
12# TAG += value [value, ...]13# TAG += value [value, ...]
13# Values that contain spaces should be placed between quotes (" ").14# Values that contain spaces should be placed between quotes (\" \").
1415
15#---------------------------------------------------------------------------16#---------------------------------------------------------------------------
16# Project related configuration options17# Project related configuration options
17#---------------------------------------------------------------------------18#---------------------------------------------------------------------------
1819
19# This tag specifies the encoding used for all characters in the config file20# This tag specifies the encoding used for all characters in the config file
20# that follow. The default is UTF-8 which is also the encoding used for all21# that follow. The default is UTF-8 which is also the encoding used for all text
21# text before the first occurrence of this tag. Doxygen uses libiconv (or the22# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
22# iconv built into libc) for the transcoding. See23# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
23# http://www.gnu.org/software/libiconv for the list of possible encodings.24# for the list of possible encodings.
25# The default value is: UTF-8.
2426
25DOXYFILE_ENCODING = UTF-827DOXYFILE_ENCODING = UTF-8
2628
27# The PROJECT_NAME tag is a single word (or sequence of words) that should29# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
28# identify the project. Note that if you do not use Doxywizard you need30# double-quotes, unless you are using Doxywizard) that should identify the
29# to put quotes around the project name if it contains spaces.31# project for which the documentation is generated. This name is used in the
32# title of most generated pages and in a few other places.
33# The default value is: My Project.
3034
31PROJECT_NAME = Mir35PROJECT_NAME = Mir
3236
33# The PROJECT_NUMBER tag can be used to enter a project or revision number.37# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
34# This could be handy for archiving the generated documentation or38# could be handy for archiving the generated documentation or if some version
35# if some version control system is used.39# control system is used.
3640
37PROJECT_NUMBER =41PROJECT_NUMBER =
3842
39# Using the PROJECT_BRIEF tag one can provide an optional one line description43# Using the PROJECT_BRIEF tag one can provide an optional one line description
40# for a project that appears at the top of each page and should give viewer44# for a project that appears at the top of each page and should give viewer a
41# a quick idea about the purpose of the project. Keep the description short.45# quick idea about the purpose of the project. Keep the description short.
4246
43PROJECT_BRIEF =47PROJECT_BRIEF =
4448
45# With the PROJECT_LOGO tag one can specify an logo or icon that is49# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
46# included in the documentation. The maximum height of the logo should not50# in the documentation. The maximum height of the logo should not exceed 55
47# exceed 55 pixels and the maximum width should not exceed 200 pixels.51# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
48# Doxygen will copy the logo to the output directory.52# the logo to the output directory.
4953
50PROJECT_LOGO =54PROJECT_LOGO =
5155
52# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)56# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
53# base path where the generated documentation will be put.57# into which the generated documentation will be written. If a relative path is
54# If a relative path is entered, it will be relative to the location58# entered, it will be relative to the location where doxygen was started. If
55# where doxygen was started. If left blank the current directory will be used.59# left blank the current directory will be used.
5660
57OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@/doc61OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@/doc
5862
59# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create63# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
60# 4096 sub-directories (in 2 levels) under the output directory of each output64# directories (in 2 levels) under the output directory of each output format and
61# format and will distribute the generated files over these directories.65# will distribute the generated files over these directories. Enabling this
62# Enabling this option can be useful when feeding doxygen a huge amount of66# option can be useful when feeding doxygen a huge amount of source files, where
63# source files, where putting all generated files in the same directory would67# putting all generated files in the same directory would otherwise causes
64# otherwise cause performance problems for the file system.68# performance problems for the file system.
69# The default value is: NO.
6570
66CREATE_SUBDIRS = NO71CREATE_SUBDIRS = NO
6772
73# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
74# characters to appear in the names of generated files. If set to NO, non-ASCII
75# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
76# U+3044.
77# The default value is: NO.
78
79ALLOW_UNICODE_NAMES = NO
80
68# The OUTPUT_LANGUAGE tag is used to specify the language in which all81# The OUTPUT_LANGUAGE tag is used to specify the language in which all
69# documentation generated by doxygen is written. Doxygen will use this82# documentation generated by doxygen is written. Doxygen will use this
70# information to generate all constant output in the proper language.83# information to generate all constant output in the proper language.
71# The default language is English, other supported languages are:84# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
72# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,85# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
73# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,86# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
74# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English87# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
75# messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian,88# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
76# Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic,89# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
77# Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.90# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
91# Ukrainian and Vietnamese.
92# The default value is: English.
7893
79OUTPUT_LANGUAGE = English94OUTPUT_LANGUAGE = English
8095
81# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will96# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
82# include brief member descriptions after the members that are listed in97# descriptions after the members that are listed in the file and class
83# the file and class documentation (similar to JavaDoc).98# documentation (similar to Javadoc). Set to NO to disable this.
84# Set to NO to disable this.99# The default value is: YES.
85100
86BRIEF_MEMBER_DESC = YES101BRIEF_MEMBER_DESC = YES
87102
88# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend103# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
89# the brief description of a member or function before the detailed description.104# description of a member or function before the detailed description
90# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the105#
106# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
91# brief descriptions will be completely suppressed.107# brief descriptions will be completely suppressed.
108# The default value is: YES.
92109
93REPEAT_BRIEF = YES110REPEAT_BRIEF = YES
94111
95# This tag implements a quasi-intelligent brief description abbreviator112# This tag implements a quasi-intelligent brief description abbreviator that is
96# that is used to form the text in various listings. Each string113# used to form the text in various listings. Each string in this list, if found
97# in this list, if found as the leading text of the brief description, will be114# as the leading text of the brief description, will be stripped from the text
98# stripped from the text and the result after processing the whole list, is115# and the result, after processing the whole list, is used as the annotated
99# used as the annotated text. Otherwise, the brief description is used as-is.116# text. Otherwise, the brief description is used as-is. If left blank, the
100# If left blank, the following values are used ("$name" is automatically117# following values are used ($name is automatically replaced with the name of
101# replaced with the name of the entity): "The $name class" "The $name widget"118# the entity):The $name class, The $name widget, The $name file, is, provides,
102# "The $name file" "is" "provides" "specifies" "contains"119# specifies, contains, represents, a, an and the.
103# "represents" "a" "an" "the"
104120
105ABBREVIATE_BRIEF = "The $name class" \121ABBREVIATE_BRIEF = "The $name class" \
106 "The $name widget" \122 "The $name widget" \
@@ -115,8 +131,9 @@
115 the131 the
116132
117# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then133# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
118# Doxygen will generate a detailed section even if there is only a brief134# doxygen will generate a detailed section even if there is only a brief
119# description.135# description.
136# The default value is: NO.
120137
121ALWAYS_DETAILED_SEC = NO138ALWAYS_DETAILED_SEC = NO
122139
@@ -124,231 +141,276 @@
124# inherited members of a class in the documentation of that class as if those141# inherited members of a class in the documentation of that class as if those
125# members were ordinary class members. Constructors, destructors and assignment142# members were ordinary class members. Constructors, destructors and assignment
126# operators of the base classes will not be shown.143# operators of the base classes will not be shown.
144# The default value is: NO.
127145
128INLINE_INHERITED_MEMB = NO146INLINE_INHERITED_MEMB = NO
129147
130# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full148# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
131# path before files name in the file list and in the header files. If set149# before files name in the file list and in the header files. If set to NO the
132# to NO the shortest path that makes the file name unique will be used.150# shortest path that makes the file name unique will be used
151# The default value is: YES.
133152
134FULL_PATH_NAMES = YES153FULL_PATH_NAMES = YES
135154
136# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag155# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
137# can be used to strip a user-defined part of the path. Stripping is156# Stripping is only done if one of the specified strings matches the left-hand
138# only done if one of the specified strings matches the left-hand part of157# part of the path. The tag can be used to show relative paths in the file list.
139# the path. The tag can be used to show relative paths in the file list.158# If left blank the directory from which doxygen is run is used as the path to
140# If left blank the directory from which doxygen is run is used as the159# strip.
141# path to strip. Note that you specify absolute paths here, but also160#
142# relative paths, which will be relative from the directory where doxygen is161# Note that you can specify absolute paths here, but also relative paths, which
143# started.162# will be relative from the directory where doxygen is started.
163# This tag requires that the tag FULL_PATH_NAMES is set to YES.
144164
145STRIP_FROM_PATH = @CMAKE_CURRENT_SOURCE_DIR@165STRIP_FROM_PATH = @CMAKE_CURRENT_SOURCE_DIR@
146166
147# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of167# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
148# the path mentioned in the documentation of a class, which tells168# path mentioned in the documentation of a class, which tells the reader which
149# the reader which header file to include in order to use a class.169# header file to include in order to use a class. If left blank only the name of
150# If left blank only the name of the header file containing the class170# the header file containing the class definition is used. Otherwise one should
151# definition is used. Otherwise one should specify the include paths that171# specify the list of include paths that are normally passed to the compiler
152# are normally passed to the compiler using the -I flag.172# using the -I flag.
153173
154STRIP_FROM_INC_PATH =174STRIP_FROM_INC_PATH =
155175
156# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter176# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
157# (but less readable) file names. This can be useful if your file system177# less readable) file names. This can be useful is your file systems doesn't
158# doesn't support long names like on DOS, Mac, or CD-ROM.178# support long names like on DOS, Mac, or CD-ROM.
179# The default value is: NO.
159180
160SHORT_NAMES = NO181SHORT_NAMES = NO
161182
162# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen183# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
163# will interpret the first line (until the first dot) of a JavaDoc-style184# first line (until the first dot) of a Javadoc-style comment as the brief
164# comment as the brief description. If set to NO, the JavaDoc185# description. If set to NO, the Javadoc-style will behave just like regular Qt-
165# comments will behave just like regular Qt-style comments186# style comments (thus requiring an explicit @brief command for a brief
166# (thus requiring an explicit @brief command for a brief description.)187# description.)
188# The default value is: NO.
167189
168JAVADOC_AUTOBRIEF = YES190JAVADOC_AUTOBRIEF = YES
169191
170# If the QT_AUTOBRIEF tag is set to YES then Doxygen will192# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
171# interpret the first line (until the first dot) of a Qt-style193# line (until the first dot) of a Qt-style comment as the brief description. If
172# comment as the brief description. If set to NO, the comments194# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
173# will behave just like regular Qt-style comments (thus requiring195# requiring an explicit \brief command for a brief description.)
174# an explicit \brief command for a brief description.)196# The default value is: NO.
175197
176QT_AUTOBRIEF = NO198QT_AUTOBRIEF = NO
177199
178# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen200# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
179# treat a multi-line C++ special comment block (i.e. a block of //! or ///201# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
180# comments) as a brief description. This used to be the default behaviour.202# a brief description. This used to be the default behavior. The new default is
181# The new default is to treat a multi-line C++ comment block as a detailed203# to treat a multi-line C++ comment block as a detailed description. Set this
182# description. Set this tag to YES if you prefer the old behaviour instead.204# tag to YES if you prefer the old behavior instead.
205#
206# Note that setting this tag to YES also means that rational rose comments are
207# not recognized any more.
208# The default value is: NO.
183209
184MULTILINE_CPP_IS_BRIEF = YES210MULTILINE_CPP_IS_BRIEF = YES
185211
186# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented212# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
187# member inherits the documentation from any documented member that it213# documentation from any documented member that it re-implements.
188# re-implements.214# The default value is: YES.
189215
190INHERIT_DOCS = YES216INHERIT_DOCS = YES
191217
192# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce218# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
193# a new page for each member. If set to NO, the documentation of a member will219# page for each member. If set to NO, the documentation of a member will be part
194# be part of the file/class/namespace that contains it.220# of the file/class/namespace that contains it.
221# The default value is: NO.
195222
196SEPARATE_MEMBER_PAGES = NO223SEPARATE_MEMBER_PAGES = NO
197224
198# The TAB_SIZE tag can be used to set the number of spaces in a tab.225# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
199# Doxygen uses this value to replace tabs by spaces in code fragments.226# uses this value to replace tabs by spaces in code fragments.
227# Minimum value: 1, maximum value: 16, default value: 4.
200228
201TAB_SIZE = 4229TAB_SIZE = 4
202230
203# This tag can be used to specify a number of aliases that acts231# This tag can be used to specify a number of aliases that act as commands in
204# as commands in the documentation. An alias has the form "name=value".232# the documentation. An alias has the form:
205# For example adding "sideeffect=\par Side Effects:\n" will allow you to233# name=value
206# put the command \sideeffect (or @sideeffect) in the documentation, which234# For example adding
207# will result in a user-defined paragraph with heading "Side Effects:".235# "sideeffect=@par Side Effects:\n"
208# You can put \n's in the value part of an alias to insert newlines.236# will allow you to put the command \sideeffect (or @sideeffect) in the
237# documentation, which will result in a user-defined paragraph with heading
238# "Side Effects:". You can put \n's in the value part of an alias to insert
239# newlines.
209240
210ALIASES =241ALIASES =
211242
212# This tag can be used to specify a number of word-keyword mappings (TCL only).243# This tag can be used to specify a number of word-keyword mappings (TCL only).
213# A mapping has the form "name=value". For example adding244# A mapping has the form "name=value". For example adding "class=itcl::class"
214# "class=itcl::class" will allow you to use the command class in the245# will allow you to use the command class in the itcl::class meaning.
215# itcl::class meaning.
216246
217TCL_SUBST =247TCL_SUBST =
218248
219# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C249# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
220# sources only. Doxygen will then generate output that is more tailored for C.250# only. Doxygen will then generate output that is more tailored for C. For
221# For instance, some of the names that are used will be different. The list251# instance, some of the names that are used will be different. The list of all
222# of all members will be omitted, etc.252# members will be omitted, etc.
253# The default value is: NO.
223254
224OPTIMIZE_OUTPUT_FOR_C = NO255OPTIMIZE_OUTPUT_FOR_C = NO
225256
226# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java257# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
227# sources only. Doxygen will then generate output that is more tailored for258# Python sources only. Doxygen will then generate output that is more tailored
228# Java. For instance, namespaces will be presented as packages, qualified259# for that language. For instance, namespaces will be presented as packages,
229# scopes will look different, etc.260# qualified scopes will look different, etc.
261# The default value is: NO.
230262
231OPTIMIZE_OUTPUT_JAVA = NO263OPTIMIZE_OUTPUT_JAVA = NO
232264
233# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran265# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
234# sources only. Doxygen will then generate output that is more tailored for266# sources. Doxygen will then generate output that is tailored for Fortran.
235# Fortran.267# The default value is: NO.
236268
237OPTIMIZE_FOR_FORTRAN = NO269OPTIMIZE_FOR_FORTRAN = NO
238270
239# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL271# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
240# sources. Doxygen will then generate output that is tailored for272# sources. Doxygen will then generate output that is tailored for VHDL.
241# VHDL.273# The default value is: NO.
242274
243OPTIMIZE_OUTPUT_VHDL = NO275OPTIMIZE_OUTPUT_VHDL = NO
244276
245# Doxygen selects the parser to use depending on the extension of the files it277# Doxygen selects the parser to use depending on the extension of the files it
246# parses. With this tag you can assign which parser to use for a given278# parses. With this tag you can assign which parser to use for a given
247# extension. Doxygen has a built-in mapping, but you can override or extend it279# extension. Doxygen has a built-in mapping, but you can override or extend it
248# using this tag. The format is ext=language, where ext is a file extension,280# using this tag. The format is ext=language, where ext is a file extension, and
249# and language is one of the parsers supported by doxygen: IDL, Java,281# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
250# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,282# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
251# C++. For instance to make doxygen treat .inc files as Fortran files (default283# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
252# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note284# Fortran. In the later case the parser tries to guess whether the code is fixed
253# that for custom extensions you also need to set FILE_PATTERNS otherwise the285# or free formatted code, this is the default for Fortran type files), VHDL. For
254# files are not read by doxygen.286# instance to make doxygen treat .inc files as Fortran files (default is PHP),
287# and .f files as C (default is Fortran), use: inc=Fortran f=C.
288#
289# Note: For files without extension you can use no_extension as a placeholder.
290#
291# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
292# the files are not read by doxygen.
255293
256EXTENSION_MAPPING =294EXTENSION_MAPPING =
257295
258# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all296# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
259# comments according to the Markdown format, which allows for more readable297# according to the Markdown format, which allows for more readable
260# documentation. See http://daringfireball.net/projects/markdown/ for details.298# documentation. See http://daringfireball.net/projects/markdown/ for details.
261# The output of markdown processing is further processed by doxygen, so you299# The output of markdown processing is further processed by doxygen, so you can
262# can mix doxygen, HTML, and XML commands with Markdown formatting.300# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
263# Disable only in case of backward compatibilities issues.301# case of backward compatibilities issues.
302# The default value is: YES.
264303
265MARKDOWN_SUPPORT = YES304MARKDOWN_SUPPORT = YES
266305
267# When enabled doxygen tries to link words that correspond to documented306# When enabled doxygen tries to link words that correspond to documented
268# classes, or namespaces to their corresponding documentation. Such a link can307# classes, or namespaces to their corresponding documentation. Such a link can
269# be prevented in individual cases by by putting a % sign in front of the word308# be prevented in individual cases by putting a % sign in front of the word or
270# or globally by setting AUTOLINK_SUPPORT to NO.309# globally by setting AUTOLINK_SUPPORT to NO.
310# The default value is: YES.
271311
272AUTOLINK_SUPPORT = YES312AUTOLINK_SUPPORT = YES
273313
274# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want314# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
275# to include (a tag file for) the STL sources as input, then you should315# to include (a tag file for) the STL sources as input, then you should set this
276# set this tag to YES in order to let doxygen match functions declarations and316# tag to YES in order to let doxygen match functions declarations and
277# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.317# definitions whose arguments contain STL classes (e.g. func(std::string);
278# func(std::string) {}). This also makes the inheritance and collaboration318# versus func(std::string) {}). This also make the inheritance and collaboration
279# diagrams that involve STL classes more complete and accurate.319# diagrams that involve STL classes more complete and accurate.
320# The default value is: NO.
280321
281BUILTIN_STL_SUPPORT = YES322BUILTIN_STL_SUPPORT = YES
282323
283# If you use Microsoft's C++/CLI language, you should set this option to YES to324# If you use Microsoft's C++/CLI language, you should set this option to YES to
284# enable parsing support.325# enable parsing support.
326# The default value is: NO.
285327
286CPP_CLI_SUPPORT = NO328CPP_CLI_SUPPORT = NO
287329
288# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.330# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
289# Doxygen will parse them like normal C++ but will assume all classes use public331# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
290# instead of private inheritance when no explicit protection keyword is present.332# will parse them like normal C++ but will assume all classes use public instead
333# of private inheritance when no explicit protection keyword is present.
334# The default value is: NO.
291335
292SIP_SUPPORT = NO336SIP_SUPPORT = NO
293337
294# For Microsoft's IDL there are propget and propput attributes to indicate338# For Microsoft's IDL there are propget and propput attributes to indicate
295# getter and setter methods for a property. Setting this option to YES (the339# getter and setter methods for a property. Setting this option to YES will make
296# default) will make doxygen replace the get and set methods by a property in340# doxygen to replace the get and set methods by a property in the documentation.
297# the documentation. This will only work if the methods are indeed getting or341# This will only work if the methods are indeed getting or setting a simple
298# setting a simple type. If this is not the case, or you want to show the342# type. If this is not the case, or you want to show the methods anyway, you
299# methods anyway, you should set this option to NO.343# should set this option to NO.
344# The default value is: YES.
300345
301IDL_PROPERTY_SUPPORT = YES346IDL_PROPERTY_SUPPORT = YES
302347
303# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC348# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
304# tag is set to YES, then doxygen will reuse the documentation of the first349# tag is set to YES then doxygen will reuse the documentation of the first
305# member in the group (if any) for the other members of the group. By default350# member in the group (if any) for the other members of the group. By default
306# all members of a group must be documented explicitly.351# all members of a group must be documented explicitly.
352# The default value is: NO.
307353
308DISTRIBUTE_GROUP_DOC = NO354DISTRIBUTE_GROUP_DOC = NO
309355
310# Set the SUBGROUPING tag to YES (the default) to allow class member groups of356# If one adds a struct or class to a group and this option is enabled, then also
311# the same type (for instance a group of public functions) to be put as a357# any nested class or struct is added to the same group. By default this option
312# subgroup of that type (e.g. under the Public Functions section). Set it to358# is disabled and one has to add nested compounds explicitly via \ingroup.
313# NO to prevent subgrouping. Alternatively, this can be done per class using359# The default value is: NO.
314# the \nosubgrouping command.360
361GROUP_NESTED_COMPOUNDS = NO
362
363# Set the SUBGROUPING tag to YES to allow class member groups of the same type
364# (for instance a group of public functions) to be put as a subgroup of that
365# type (e.g. under the Public Functions section). Set it to NO to prevent
366# subgrouping. Alternatively, this can be done per class using the
367# \nosubgrouping command.
368# The default value is: YES.
315369
316SUBGROUPING = YES370SUBGROUPING = YES
317371
318# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and372# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
319# unions are shown inside the group in which they are included (e.g. using373# are shown inside the group in which they are included (e.g. using \ingroup)
320# @ingroup) instead of on a separate page (for HTML and Man pages) or374# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
321# section (for LaTeX and RTF).375# and RTF).
376#
377# Note that this feature does not work in combination with
378# SEPARATE_MEMBER_PAGES.
379# The default value is: NO.
322380
323INLINE_GROUPED_CLASSES = NO381INLINE_GROUPED_CLASSES = NO
324382
325# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and383# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
326# unions with only public data fields or simple typedef fields will be shown384# with only public data fields or simple typedef fields will be shown inline in
327# inline in the documentation of the scope in which they are defined (i.e. file,385# the documentation of the scope in which they are defined (i.e. file,
328# namespace, or group documentation), provided this scope is documented. If set386# namespace, or group documentation), provided this scope is documented. If set
329# to NO (the default), structs, classes, and unions are shown on a separate387# to NO, structs, classes, and unions are shown on a separate page (for HTML and
330# page (for HTML and Man pages) or section (for LaTeX and RTF).388# Man pages) or section (for LaTeX and RTF).
389# The default value is: NO.
331390
332INLINE_SIMPLE_STRUCTS = NO391INLINE_SIMPLE_STRUCTS = NO
333392
334# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum393# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
335# is documented as struct, union, or enum with the name of the typedef. So394# enum is documented as struct, union, or enum with the name of the typedef. So
336# typedef struct TypeS {} TypeT, will appear in the documentation as a struct395# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
337# with name TypeT. When disabled the typedef will appear as a member of a file,396# with name TypeT. When disabled the typedef will appear as a member of a file,
338# namespace, or class. And the struct will be named TypeS. This can typically397# namespace, or class. And the struct will be named TypeS. This can typically be
339# be useful for C code in case the coding convention dictates that all compound398# useful for C code in case the coding convention dictates that all compound
340# types are typedef'ed and only the typedef is referenced, never the tag name.399# types are typedef'ed and only the typedef is referenced, never the tag name.
400# The default value is: NO.
341401
342TYPEDEF_HIDES_STRUCT = NO402TYPEDEF_HIDES_STRUCT = NO
343403
344# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This404# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
345# cache is used to resolve symbols given their name and scope. Since this can405# cache is used to resolve symbols given their name and scope. Since this can be
346# be an expensive process and often the same symbol appear multiple times in406# an expensive process and often the same symbol appears multiple times in the
347# the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too407# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
348# small doxygen will become slower. If the cache is too large, memory is wasted.408# doxygen will become slower. If the cache is too large, memory is wasted. The
349# The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid409# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
350# range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536410# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
351# symbols.411# symbols. At the end of a run doxygen will report the cache usage and suggest
412# the optimal cache size from a speed point of view.
413# Minimum value: 0, maximum value: 9, default value: 0.
352414
353LOOKUP_CACHE_SIZE = 0415LOOKUP_CACHE_SIZE = 0
354416
@@ -356,337 +418,398 @@
356# Build related configuration options418# Build related configuration options
357#---------------------------------------------------------------------------419#---------------------------------------------------------------------------
358420
359# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in421# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
360# documentation are documented, even if no documentation was available.422# documentation are documented, even if no documentation was available. Private
361# Private class members and static file members will be hidden unless423# class members and static file members will be hidden unless the
362# the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES424# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
425# Note: This will also disable the warnings about undocumented members that are
426# normally produced when WARNINGS is set to YES.
427# The default value is: NO.
363428
364EXTRACT_ALL = YES429EXTRACT_ALL = YES
365430
366# If the EXTRACT_PRIVATE tag is set to YES all private members of a class431# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
367# will be included in the documentation.432# be included in the documentation.
433# The default value is: NO.
368434
369EXTRACT_PRIVATE = NO435EXTRACT_PRIVATE = NO
370436
371# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal437# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
372# scope will be included in the documentation.438# scope will be included in the documentation.
439# The default value is: NO.
373440
374EXTRACT_PACKAGE = NO441EXTRACT_PACKAGE = NO
375442
376# If the EXTRACT_STATIC tag is set to YES all static members of a file443# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
377# will be included in the documentation.444# included in the documentation.
445# The default value is: NO.
378446
379EXTRACT_STATIC = NO447EXTRACT_STATIC = NO
380448
381# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)449# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
382# defined locally in source files will be included in the documentation.450# locally in source files will be included in the documentation. If set to NO,
383# If set to NO only classes defined in header files are included.451# only classes defined in header files are included. Does not have any effect
452# for Java sources.
453# The default value is: YES.
384454
385EXTRACT_LOCAL_CLASSES = NO455EXTRACT_LOCAL_CLASSES = NO
386456
387# This flag is only useful for Objective-C code. When set to YES local457# This flag is only useful for Objective-C code. If set to YES, local methods,
388# methods, which are defined in the implementation section but not in458# which are defined in the implementation section but not in the interface are
389# the interface are included in the documentation.459# included in the documentation. If set to NO, only methods in the interface are
390# If set to NO (the default) only methods in the interface are included.460# included.
461# The default value is: NO.
391462
392EXTRACT_LOCAL_METHODS = NO463EXTRACT_LOCAL_METHODS = NO
393464
394# If this flag is set to YES, the members of anonymous namespaces will be465# If this flag is set to YES, the members of anonymous namespaces will be
395# extracted and appear in the documentation as a namespace called466# extracted and appear in the documentation as a namespace called
396# 'anonymous_namespace{file}', where file will be replaced with the base467# 'anonymous_namespace{file}', where file will be replaced with the base name of
397# name of the file that contains the anonymous namespace. By default468# the file that contains the anonymous namespace. By default anonymous namespace
398# anonymous namespaces are hidden.469# are hidden.
470# The default value is: NO.
399471
400EXTRACT_ANON_NSPACES = NO472EXTRACT_ANON_NSPACES = NO
401473
402# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all474# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
403# undocumented members of documented classes, files or namespaces.475# undocumented members inside documented classes or files. If set to NO these
404# If set to NO (the default) these members will be included in the476# members will be included in the various overviews, but no documentation
405# various overviews, but no documentation section is generated.477# section is generated. This option has no effect if EXTRACT_ALL is enabled.
406# This option has no effect if EXTRACT_ALL is enabled.478# The default value is: NO.
407479
408HIDE_UNDOC_MEMBERS = NO480HIDE_UNDOC_MEMBERS = NO
409481
410# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all482# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
411# undocumented classes that are normally visible in the class hierarchy.483# undocumented classes that are normally visible in the class hierarchy. If set
412# If set to NO (the default) these classes will be included in the various484# to NO, these classes will be included in the various overviews. This option
413# overviews. This option has no effect if EXTRACT_ALL is enabled.485# has no effect if EXTRACT_ALL is enabled.
486# The default value is: NO.
414487
415HIDE_UNDOC_CLASSES = NO488HIDE_UNDOC_CLASSES = NO
416489
417# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all490# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
418# friend (class|struct|union) declarations.491# (class|struct|union) declarations. If set to NO, these declarations will be
419# If set to NO (the default) these declarations will be included in the492# included in the documentation.
420# documentation.493# The default value is: NO.
421494
422HIDE_FRIEND_COMPOUNDS = NO495HIDE_FRIEND_COMPOUNDS = NO
423496
424# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any497# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
425# documentation blocks found inside the body of a function.498# documentation blocks found inside the body of a function. If set to NO, these
426# If set to NO (the default) these blocks will be appended to the499# blocks will be appended to the function's detailed documentation block.
427# function's detailed documentation block.500# The default value is: NO.
428501
429HIDE_IN_BODY_DOCS = NO502HIDE_IN_BODY_DOCS = NO
430503
431# The INTERNAL_DOCS tag determines if documentation504# The INTERNAL_DOCS tag determines if documentation that is typed after a
432# that is typed after a \internal command is included. If the tag is set505# \internal command is included. If the tag is set to NO then the documentation
433# to NO (the default) then the documentation will be excluded.506# will be excluded. Set it to YES to include the internal documentation.
434# Set it to YES to include the internal documentation.507# The default value is: NO.
435508
436INTERNAL_DOCS = NO509INTERNAL_DOCS = NO
437510
438# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate511# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
439# file names in lower-case letters. If set to YES upper-case letters are also512# names in lower-case letters. If set to YES, upper-case letters are also
440# allowed. This is useful if you have classes or files whose names only differ513# allowed. This is useful if you have classes or files whose names only differ
441# in case and if your file system supports case sensitive file names. Windows514# in case and if your file system supports case sensitive file names. Windows
442# and Mac users are advised to set this option to NO.515# and Mac users are advised to set this option to NO.
516# The default value is: system dependent.
443517
444CASE_SENSE_NAMES = NO518CASE_SENSE_NAMES = NO
445519
446# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen520# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
447# will show members with their full class and namespace scopes in the521# their full class and namespace scopes in the documentation. If set to YES, the
448# documentation. If set to YES the scope will be hidden.522# scope will be hidden.
523# The default value is: NO.
449524
450HIDE_SCOPE_NAMES = NO525HIDE_SCOPE_NAMES = NO
451526
452# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen527# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
453# will put a list of the files that are included by a file in the documentation528# append additional text to a page's title, such as Class Reference. If set to
454# of that file.529# YES the compound reference will be hidden.
530# The default value is: NO.
531
532HIDE_COMPOUND_REFERENCE= NO
533
534# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
535# the files that are included by a file in the documentation of that file.
536# The default value is: YES.
455537
456SHOW_INCLUDE_FILES = YES538SHOW_INCLUDE_FILES = YES
457539
458# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen540# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
459# will list include files with double quotes in the documentation541# grouped member an include statement to the documentation, telling the reader
460# rather than with sharp brackets.542# which file to include in order to use the member.
543# The default value is: NO.
544
545SHOW_GROUPED_MEMB_INC = NO
546
547# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
548# files with double quotes in the documentation rather than with sharp brackets.
549# The default value is: NO.
461550
462FORCE_LOCAL_INCLUDES = NO551FORCE_LOCAL_INCLUDES = NO
463552
464# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]553# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
465# is inserted in the documentation for inline members.554# documentation for inline members.
555# The default value is: YES.
466556
467INLINE_INFO = YES557INLINE_INFO = YES
468558
469# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen559# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
470# will sort the (detailed) documentation of file and class members560# (detailed) documentation of file and class members alphabetically by member
471# alphabetically by member name. If set to NO the members will appear in561# name. If set to NO, the members will appear in declaration order.
472# declaration order.562# The default value is: YES.
473563
474SORT_MEMBER_DOCS = YES564SORT_MEMBER_DOCS = YES
475565
476# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the566# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
477# brief documentation of file, namespace and class members alphabetically567# descriptions of file, namespace and class members alphabetically by member
478# by member name. If set to NO (the default) the members will appear in568# name. If set to NO, the members will appear in declaration order. Note that
479# declaration order.569# this will also influence the order of the classes in the class list.
570# The default value is: NO.
480571
481SORT_BRIEF_DOCS = NO572SORT_BRIEF_DOCS = NO
482573
483# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen574# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
484# will sort the (brief and detailed) documentation of class members so that575# (brief and detailed) documentation of class members so that constructors and
485# constructors and destructors are listed first. If set to NO (the default)576# destructors are listed first. If set to NO the constructors will appear in the
486# the constructors will appear in the respective orders defined by577# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
487# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.578# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
488# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO579# member documentation.
489# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.580# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
581# detailed member documentation.
582# The default value is: NO.
490583
491SORT_MEMBERS_CTORS_1ST = NO584SORT_MEMBERS_CTORS_1ST = NO
492585
493# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the586# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
494# hierarchy of group names into alphabetical order. If set to NO (the default)587# of group names into alphabetical order. If set to NO the group names will
495# the group names will appear in their defined order.588# appear in their defined order.
589# The default value is: NO.
496590
497SORT_GROUP_NAMES = NO591SORT_GROUP_NAMES = NO
498592
499# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be593# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
500# sorted by fully-qualified names, including namespaces. If set to594# fully-qualified names, including namespaces. If set to NO, the class list will
501# NO (the default), the class list will be sorted only by class name,595# be sorted only by class name, not including the namespace part.
502# not including the namespace part.
503# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.596# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
504# Note: This option applies only to the class list, not to the597# Note: This option applies only to the class list, not to the alphabetical
505# alphabetical list.598# list.
599# The default value is: NO.
506600
507SORT_BY_SCOPE_NAME = NO601SORT_BY_SCOPE_NAME = NO
508602
509# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to603# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
510# do proper type resolution of all parameters of a function it will reject a604# type resolution of all parameters of a function it will reject a match between
511# match between the prototype and the implementation of a member function even605# the prototype and the implementation of a member function even if there is
512# if there is only one candidate or it is obvious which candidate to choose606# only one candidate or it is obvious which candidate to choose by doing a
513# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen607# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
514# will still accept a match between prototype and implementation in such cases.608# accept a match between prototype and implementation in such cases.
609# The default value is: NO.
515610
516STRICT_PROTO_MATCHING = NO611STRICT_PROTO_MATCHING = NO
517612
518# The GENERATE_TODOLIST tag can be used to enable (YES) or613# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
519# disable (NO) the todo list. This list is created by putting \todo614# list. This list is created by putting \todo commands in the documentation.
520# commands in the documentation.615# The default value is: YES.
521616
522GENERATE_TODOLIST = YES617GENERATE_TODOLIST = YES
523618
524# The GENERATE_TESTLIST tag can be used to enable (YES) or619# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
525# disable (NO) the test list. This list is created by putting \test620# list. This list is created by putting \test commands in the documentation.
526# commands in the documentation.621# The default value is: YES.
527622
528GENERATE_TESTLIST = YES623GENERATE_TESTLIST = YES
529624
530# The GENERATE_BUGLIST tag can be used to enable (YES) or625# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
531# disable (NO) the bug list. This list is created by putting \bug626# list. This list is created by putting \bug commands in the documentation.
532# commands in the documentation.627# The default value is: YES.
533628
534GENERATE_BUGLIST = YES629GENERATE_BUGLIST = YES
535630
536# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or631# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
537# disable (NO) the deprecated list. This list is created by putting632# the deprecated list. This list is created by putting \deprecated commands in
538# \deprecated commands in the documentation.633# the documentation.
634# The default value is: YES.
539635
540GENERATE_DEPRECATEDLIST= YES636GENERATE_DEPRECATEDLIST= YES
541637
542# The ENABLED_SECTIONS tag can be used to enable conditional638# The ENABLED_SECTIONS tag can be used to enable conditional documentation
543# documentation sections, marked by \if section-label ... \endif639# sections, marked by \if <section_label> ... \endif and \cond <section_label>
544# and \cond section-label ... \endcond blocks.640# ... \endcond blocks.
545641
546ENABLED_SECTIONS =642ENABLED_SECTIONS =
547643
548# The MAX_INITIALIZER_LINES tag determines the maximum number of lines644# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
549# the initial value of a variable or macro consists of for it to appear in645# initial value of a variable or macro / define can have for it to appear in the
550# the documentation. If the initializer consists of more lines than specified646# documentation. If the initializer consists of more lines than specified here
551# here it will be hidden. Use a value of 0 to hide initializers completely.647# it will be hidden. Use a value of 0 to hide initializers completely. The
552# The appearance of the initializer of individual variables and macros in the648# appearance of the value of individual variables and macros / defines can be
553# documentation can be controlled using \showinitializer or \hideinitializer649# controlled using \showinitializer or \hideinitializer command in the
554# command in the documentation regardless of this setting.650# documentation regardless of this setting.
651# Minimum value: 0, maximum value: 10000, default value: 30.
555652
556MAX_INITIALIZER_LINES = 30653MAX_INITIALIZER_LINES = 30
557654
558# Set the SHOW_USED_FILES tag to NO to disable the list of files generated655# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
559# at the bottom of the documentation of classes and structs. If set to YES the656# the bottom of the documentation of classes and structs. If set to YES, the
560# list will mention the files that were used to generate the documentation.657# list will mention the files that were used to generate the documentation.
658# The default value is: YES.
561659
562SHOW_USED_FILES = YES660SHOW_USED_FILES = YES
563661
564# Set the SHOW_FILES tag to NO to disable the generation of the Files page.662# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
565# This will remove the Files entry from the Quick Index and from the663# will remove the Files entry from the Quick Index and from the Folder Tree View
566# Folder Tree View (if specified). The default is YES.664# (if specified).
665# The default value is: YES.
567666
568SHOW_FILES = YES667SHOW_FILES = YES
569668
570# Set the SHOW_NAMESPACES tag to NO to disable the generation of the669# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
571# Namespaces page.670# page. This will remove the Namespaces entry from the Quick Index and from the
572# This will remove the Namespaces entry from the Quick Index671# Folder Tree View (if specified).
573# and from the Folder Tree View (if specified). The default is YES.672# The default value is: YES.
574673
575SHOW_NAMESPACES = YES674SHOW_NAMESPACES = YES
576675
577# The FILE_VERSION_FILTER tag can be used to specify a program or script that676# The FILE_VERSION_FILTER tag can be used to specify a program or script that
578# doxygen should invoke to get the current version for each file (typically from677# doxygen should invoke to get the current version for each file (typically from
579# the version control system). Doxygen will invoke the program by executing (via678# the version control system). Doxygen will invoke the program by executing (via
580# popen()) the command <command> <input-file>, where <command> is the value of679# popen()) the command command input-file, where command is the value of the
581# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file680# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
582# provided by doxygen. Whatever the program writes to standard output681# by doxygen. Whatever the program writes to standard output is used as the file
583# is used as the file version. See the manual for examples.682# version. For an example see the documentation.
584683
585FILE_VERSION_FILTER =684FILE_VERSION_FILTER =
586685
587# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed686# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
588# by doxygen. The layout file controls the global structure of the generated687# by doxygen. The layout file controls the global structure of the generated
589# output files in an output format independent way. To create the layout file688# output files in an output format independent way. To create the layout file
590# that represents doxygen's defaults, run doxygen with the -l option.689# that represents doxygen's defaults, run doxygen with the -l option. You can
591# You can optionally specify a file name after the option, if omitted690# optionally specify a file name after the option, if omitted DoxygenLayout.xml
592# DoxygenLayout.xml will be used as the name of the layout file.691# will be used as the name of the layout file.
692#
693# Note that if you run doxygen from a directory containing a file called
694# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
695# tag is left empty.
593696
594LAYOUT_FILE =697LAYOUT_FILE =
595698
596# The CITE_BIB_FILES tag can be used to specify one or more bib files699# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
597# containing the references data. This must be a list of .bib files. The700# the reference definitions. This must be a list of .bib files. The .bib
598# .bib extension is automatically appended if omitted. Using this command701# extension is automatically appended if omitted. This requires the bibtex tool
599# requires the bibtex tool to be installed. See also702# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
600# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style703# For LaTeX the style of the bibliography can be controlled using
601# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this704# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
602# feature you need bibtex and perl available in the search path. Do not use705# search path. See also \cite for info how to create references.
603# file names with spaces, bibtex cannot handle them.
604706
605CITE_BIB_FILES =707CITE_BIB_FILES =
606708
607#---------------------------------------------------------------------------709#---------------------------------------------------------------------------
608# configuration options related to warning and progress messages710# Configuration options related to warning and progress messages
609#---------------------------------------------------------------------------711#---------------------------------------------------------------------------
610712
611# The QUIET tag can be used to turn on/off the messages that are generated713# The QUIET tag can be used to turn on/off the messages that are generated to
612# by doxygen. Possible values are YES and NO. If left blank NO is used.714# standard output by doxygen. If QUIET is set to YES this implies that the
715# messages are off.
716# The default value is: NO.
613717
614QUIET = NO718QUIET = NO
615719
616# The WARNINGS tag can be used to turn on/off the warning messages that are720# The WARNINGS tag can be used to turn on/off the warning messages that are
617# generated by doxygen. Possible values are YES and NO. If left blank721# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
618# NO is used.722# this implies that the warnings are on.
723#
724# Tip: Turn warnings on while writing the documentation.
725# The default value is: YES.
619726
620WARNINGS = YES727WARNINGS = YES
621728
622# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings729# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
623# for undocumented members. If EXTRACT_ALL is set to YES then this flag will730# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
624# automatically be disabled.731# will automatically be disabled.
732# The default value is: YES.
625733
626WARN_IF_UNDOCUMENTED = YES734WARN_IF_UNDOCUMENTED = YES
627735
628# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for736# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
629# potential errors in the documentation, such as not documenting some737# potential errors in the documentation, such as not documenting some parameters
630# parameters in a documented function, or documenting parameters that738# in a documented function, or documenting parameters that don't exist or using
631# don't exist or using markup commands wrongly.739# markup commands wrongly.
740# The default value is: YES.
632741
633WARN_IF_DOC_ERROR = YES742WARN_IF_DOC_ERROR = YES
634743
635# The WARN_NO_PARAMDOC option can be enabled to get warnings for744# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
636# functions that are documented, but have no documentation for their parameters745# are documented, but have no documentation for their parameters or return
637# or return value. If set to NO (the default) doxygen will only warn about746# value. If set to NO, doxygen will only warn about wrong or incomplete
638# wrong or incomplete parameter documentation, but not about the absence of747# parameter documentation, but not about the absence of documentation.
639# documentation.748# The default value is: NO.
640749
641WARN_NO_PARAMDOC = NO750WARN_NO_PARAMDOC = NO
642751
643# The WARN_FORMAT tag determines the format of the warning messages that752# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
644# doxygen can produce. The string should contain the $file, $line, and $text753# a warning is encountered.
645# tags, which will be replaced by the file and line number from which the754# The default value is: NO.
646# warning originated and the warning text. Optionally the format may contain755
647# $version, which will be replaced by the version of the file (if it could756WARN_AS_ERROR = NO
648# be obtained via FILE_VERSION_FILTER)757
758# The WARN_FORMAT tag determines the format of the warning messages that doxygen
759# can produce. The string should contain the $file, $line, and $text tags, which
760# will be replaced by the file and line number from which the warning originated
761# and the warning text. Optionally the format may contain $version, which will
762# be replaced by the version of the file (if it could be obtained via
763# FILE_VERSION_FILTER)
764# The default value is: $file:$line: $text.
649765
650WARN_FORMAT = "$file:$line: $text"766WARN_FORMAT = "$file:$line: $text"
651767
652# The WARN_LOGFILE tag can be used to specify a file to which warning768# The WARN_LOGFILE tag can be used to specify a file to which warning and error
653# and error messages should be written. If left blank the output is written769# messages should be written. If left blank the output is written to standard
654# to stderr.770# error (stderr).
655771
656WARN_LOGFILE =772WARN_LOGFILE =
657773
658#---------------------------------------------------------------------------774#---------------------------------------------------------------------------
659# configuration options related to the input files775# Configuration options related to the input files
660#---------------------------------------------------------------------------776#---------------------------------------------------------------------------
661777
662# The INPUT tag can be used to specify the files and/or directories that contain778# The INPUT tag is used to specify the files and/or directories that contain
663# documented source files. You may enter file names like "myfile.cpp" or779# documented source files. You may enter file names like myfile.cpp or
664# directories like "/usr/src/myproject". Separate the files or directories780# directories like /usr/src/myproject. Separate the files or directories with
665# with spaces.781# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
782# Note: If this tag is empty the current directory is searched.
666783
667INPUT = @CMAKE_CURRENT_SOURCE_DIR@/README.md \784INPUT = @CMAKE_CURRENT_SOURCE_DIR@/README.md \
668 @CMAKE_CURRENT_SOURCE_DIR@/HACKING.md \785 @CMAKE_CURRENT_SOURCE_DIR@/HACKING.md \
669 @CMAKE_CURRENT_SOURCE_DIR@/doc \786 @CMAKE_CURRENT_SOURCE_DIR@/doc \
670 @CMAKE_CURRENT_SOURCE_DIR@/src \
671 @CMAKE_CURRENT_SOURCE_DIR@/examples \787 @CMAKE_CURRENT_SOURCE_DIR@/examples \
672 @CMAKE_CURRENT_SOURCE_DIR@/include \788 @CMAKE_CURRENT_SOURCE_DIR@/include \
673 @MIR_GENERATED_INCLUDE_DIRECTORIES@789 @MIR_GENERATED_INCLUDE_DIRECTORIES@
674790
675# This tag can be used to specify the character encoding of the source files791# This tag can be used to specify the character encoding of the source files
676# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is792# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
677# also the default input encoding. Doxygen uses libiconv (or the iconv built793# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
678# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for794# documentation (see: http://www.gnu.org/software/libiconv) for the list of
679# the list of possible encodings.795# possible encodings.
796# The default value is: UTF-8.
680797
681INPUT_ENCODING = UTF-8798INPUT_ENCODING = UTF-8
682799
683# If the value of the INPUT tag contains directories, you can use the800# If the value of the INPUT tag contains directories, you can use the
684# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp801# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
685# and *.h) to filter out the source-files in the directories. If left802# *.h) to filter out the source-files in the directories.
686# blank the following patterns are tested:803#
687# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh804# Note that for custom extensions or not directly supported extensions you also
688# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py805# need to set EXTENSION_MAPPING for the extension otherwise the files are not
689# *.f90 *.f *.for *.vhd *.vhdl806# read by doxygen.
807#
808# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
809# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
810# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
811# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl,
812# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js.
690813
691FILE_PATTERNS = *.c \814FILE_PATTERNS = *.c \
692 *.cc \815 *.cc \
@@ -723,15 +846,16 @@
723 *.vhd \846 *.vhd \
724 *.vhdl847 *.vhdl
725848
726# The RECURSIVE tag can be used to turn specify whether or not subdirectories849# The RECURSIVE tag can be used to specify whether or not subdirectories should
727# should be searched for input files as well. Possible values are YES and NO.850# be searched for input files as well.
728# If left blank NO is used.851# The default value is: NO.
729852
730RECURSIVE = YES853RECURSIVE = YES
731854
732# The EXCLUDE tag can be used to specify files and/or directories that should be855# The EXCLUDE tag can be used to specify files and/or directories that should be
733# excluded from the INPUT source files. This way you can easily exclude a856# excluded from the INPUT source files. This way you can easily exclude a
734# subdirectory from a directory tree whose root is specified with the INPUT tag.857# subdirectory from a directory tree whose root is specified with the INPUT tag.
858#
735# Note that relative paths are relative to the directory from which doxygen is859# Note that relative paths are relative to the directory from which doxygen is
736# run.860# run.
737861
@@ -740,234 +864,323 @@
740# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or864# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
741# directories that are symbolic links (a Unix file system feature) are excluded865# directories that are symbolic links (a Unix file system feature) are excluded
742# from the input.866# from the input.
867# The default value is: NO.
743868
744EXCLUDE_SYMLINKS = NO869EXCLUDE_SYMLINKS = NO
745870
746# If the value of the INPUT tag contains directories, you can use the871# If the value of the INPUT tag contains directories, you can use the
747# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude872# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
748# certain files from those directories. Note that the wildcards are matched873# certain files from those directories.
749# against the file with absolute path, so to exclude all test directories874#
750# for example use the pattern */test/*875# Note that the wildcards are matched against the file with absolute path, so to
876# exclude all test directories for example use the pattern */test/*
751877
752EXCLUDE_PATTERNS = */include/test/* */3rd_party/*878EXCLUDE_PATTERNS = */include/test/* \
879 */3rd_party/*
753880
754# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names881# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
755# (namespaces, classes, functions, etc.) that should be excluded from the882# (namespaces, classes, functions, etc.) that should be excluded from the
756# output. The symbol name can be a fully qualified name, a word, or if the883# output. The symbol name can be a fully qualified name, a word, or if the
757# wildcard * is used, a substring. Examples: ANamespace, AClass,884# wildcard * is used, a substring. Examples: ANamespace, AClass,
758# AClass::ANamespace, ANamespace::*Test885# AClass::ANamespace, ANamespace::*Test
886#
887# Note that the wildcards are matched against the file with absolute path, so to
888# exclude all test directories use the pattern */test/*
759889
760EXCLUDE_SYMBOLS = google \890EXCLUDE_SYMBOLS = google \
761 mfd \891 mfd \
762 mgg \892 mgg \
763 mp893 mp
764894
765# The EXAMPLE_PATH tag can be used to specify one or more files or895# The EXAMPLE_PATH tag can be used to specify one or more files or directories
766# directories that contain example code fragments that are included (see896# that contain example code fragments that are included (see the \include
767# the \include command).897# command).
768898
769EXAMPLE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/examples899EXAMPLE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/examples
770900
771# If the value of the EXAMPLE_PATH tag contains directories, you can use the901# If the value of the EXAMPLE_PATH tag contains directories, you can use the
772# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp902# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
773# and *.h) to filter out the source-files in the directories. If left903# *.h) to filter out the source-files in the directories. If left blank all
774# blank all files are included.904# files are included.
775905
776EXAMPLE_PATTERNS = *906EXAMPLE_PATTERNS = *
777907
778# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be908# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
779# searched for input files to be used with the \include or \dontinclude909# searched for input files to be used with the \include or \dontinclude commands
780# commands irrespective of the value of the RECURSIVE tag.910# irrespective of the value of the RECURSIVE tag.
781# Possible values are YES and NO. If left blank NO is used.911# The default value is: NO.
782912
783EXAMPLE_RECURSIVE = NO913EXAMPLE_RECURSIVE = NO
784914
785# The IMAGE_PATH tag can be used to specify one or more files or915# The IMAGE_PATH tag can be used to specify one or more files or directories
786# directories that contain image that are included in the documentation (see916# that contain images that are to be included in the documentation (see the
787# the \image command).917# \image command).
788918
789IMAGE_PATH =919IMAGE_PATH =
790920
791# The INPUT_FILTER tag can be used to specify a program that doxygen should921# The INPUT_FILTER tag can be used to specify a program that doxygen should
792# invoke to filter for each input file. Doxygen will invoke the filter program922# invoke to filter for each input file. Doxygen will invoke the filter program
793# by executing (via popen()) the command <filter> <input-file>, where <filter>923# by executing (via popen()) the command:
794# is the value of the INPUT_FILTER tag, and <input-file> is the name of an924#
795# input file. Doxygen will then use the output that the filter program writes925# <filter> <input-file>
796# to standard output.926#
797# If FILTER_PATTERNS is specified, this tag will be ignored.927# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
928# name of an input file. Doxygen will then use the output that the filter
929# program writes to standard output. If FILTER_PATTERNS is specified, this tag
930# will be ignored.
931#
798# Note that the filter must not add or remove lines; it is applied before the932# Note that the filter must not add or remove lines; it is applied before the
799# code is scanned, but not when the output code is generated. If lines are added933# code is scanned, but not when the output code is generated. If lines are added
800# or removed, the anchors will not be placed correctly.934# or removed, the anchors will not be placed correctly.
935#
936# Note that for custom extensions or not directly supported extensions you also
937# need to set EXTENSION_MAPPING for the extension otherwise the files are not
938# properly processed by doxygen.
801939
802INPUT_FILTER =940INPUT_FILTER =
803941
804# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern942# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
805# basis.943# basis. Doxygen will compare the file name with each pattern and apply the
806# Doxygen will compare the file name with each pattern and apply the944# filter if there is a match. The filters are a list of the form: pattern=filter
807# filter if there is a match.945# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
808# The filters are a list of the form:946# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
809# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further947# patterns match the file name, INPUT_FILTER is applied.
810# info on how filters are used. If FILTER_PATTERNS is empty or if948#
811# non of the patterns match the file name, INPUT_FILTER is applied.949# Note that for custom extensions or not directly supported extensions you also
950# need to set EXTENSION_MAPPING for the extension otherwise the files are not
951# properly processed by doxygen.
812952
813FILTER_PATTERNS =953FILTER_PATTERNS =
814954
815# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using955# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
816# INPUT_FILTER) will be used to filter the input files when producing source956# INPUT_FILTER) will also be used to filter the input files that are used for
817# files to browse (i.e. when SOURCE_BROWSER is set to YES).957# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
958# The default value is: NO.
818959
819FILTER_SOURCE_FILES = NO960FILTER_SOURCE_FILES = NO
820961
821# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file962# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
822# pattern. A pattern will override the setting for FILTER_PATTERN (if any)963# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
823# and it is also possible to disable source filtering for a specific pattern964# it is also possible to disable source filtering for a specific pattern using
824# using *.ext= (so without naming a filter). This option only has effect when965# *.ext= (so without naming a filter).
825# FILTER_SOURCE_FILES is enabled.966# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
826967
827FILTER_SOURCE_PATTERNS =968FILTER_SOURCE_PATTERNS =
828969
829# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that970# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
830# is part of the input, its contents will be placed on the main page971# is part of the input, its contents will be placed on the main page
831# (index.html). This can be useful if you have a project on for instance GitHub972# (index.html). This can be useful if you have a project on for instance GitHub
832# and want reuse the introduction page also for the doxygen output.973# and want to reuse the introduction page also for the doxygen output.
833974
834USE_MDFILE_AS_MAINPAGE =975USE_MDFILE_AS_MAINPAGE =
835976
836#---------------------------------------------------------------------------977#---------------------------------------------------------------------------
837# configuration options related to source browsing978# Configuration options related to source browsing
838#---------------------------------------------------------------------------979#---------------------------------------------------------------------------
839980
840# If the SOURCE_BROWSER tag is set to YES then a list of source files will981# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
841# be generated. Documented entities will be cross-referenced with these sources.982# generated. Documented entities will be cross-referenced with these sources.
842# Note: To get rid of all source code in the generated output, make sure also983#
843# VERBATIM_HEADERS is set to NO.984# Note: To get rid of all source code in the generated output, make sure that
985# also VERBATIM_HEADERS is set to NO.
986# The default value is: NO.
844987
845SOURCE_BROWSER = NO988SOURCE_BROWSER = NO
846989
847# Setting the INLINE_SOURCES tag to YES will include the body990# Setting the INLINE_SOURCES tag to YES will include the body of functions,
848# of functions and classes directly in the documentation.991# classes and enums directly into the documentation.
992# The default value is: NO.
849993
850INLINE_SOURCES = NO994INLINE_SOURCES = NO
851995
852# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct996# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
853# doxygen to hide any special comment blocks from generated source code997# special comment blocks from generated source code fragments. Normal C, C++ and
854# fragments. Normal C, C++ and Fortran comments will always remain visible.998# Fortran comments will always remain visible.
999# The default value is: YES.
8551000
856STRIP_CODE_COMMENTS = YES1001STRIP_CODE_COMMENTS = YES
8571002
858# If the REFERENCED_BY_RELATION tag is set to YES1003# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
859# then for each documented function all documented1004# function all documented functions referencing it will be listed.
860# functions referencing it will be listed.1005# The default value is: NO.
8611006
862REFERENCED_BY_RELATION = NO1007REFERENCED_BY_RELATION = NO
8631008
864# If the REFERENCES_RELATION tag is set to YES1009# If the REFERENCES_RELATION tag is set to YES then for each documented function
865# then for each documented function all documented entities1010# all documented entities called/used by that function will be listed.
866# called/used by that function will be listed.1011# The default value is: NO.
8671012
868REFERENCES_RELATION = NO1013REFERENCES_RELATION = NO
8691014
870# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)1015# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
871# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from1016# to YES then the hyperlinks from functions in REFERENCES_RELATION and
872# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will1017# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
873# link to the source code.1018# link to the documentation.
874# Otherwise they will link to the documentation.1019# The default value is: YES.
8751020
876REFERENCES_LINK_SOURCE = YES1021REFERENCES_LINK_SOURCE = YES
8771022
878# If the USE_HTAGS tag is set to YES then the references to source code1023# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
879# will point to the HTML generated by the htags(1) tool instead of doxygen1024# source code will show a tooltip with additional information such as prototype,
880# built-in source browser. The htags tool is part of GNU's global source1025# brief description and links to the definition and documentation. Since this
881# tagging system (see http://www.gnu.org/software/global/global.html). You1026# will make the HTML file larger and loading of large files a bit slower, you
882# will need version 4.8.6 or higher.1027# can opt to disable this feature.
1028# The default value is: YES.
1029# This tag requires that the tag SOURCE_BROWSER is set to YES.
1030
1031SOURCE_TOOLTIPS = YES
1032
1033# If the USE_HTAGS tag is set to YES then the references to source code will
1034# point to the HTML generated by the htags(1) tool instead of doxygen built-in
1035# source browser. The htags tool is part of GNU's global source tagging system
1036# (see http://www.gnu.org/software/global/global.html). You will need version
1037# 4.8.6 or higher.
1038#
1039# To use it do the following:
1040# - Install the latest version of global
1041# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
1042# - Make sure the INPUT points to the root of the source tree
1043# - Run doxygen as normal
1044#
1045# Doxygen will invoke htags (and that will in turn invoke gtags), so these
1046# tools must be available from the command line (i.e. in the search path).
1047#
1048# The result: instead of the source browser generated by doxygen, the links to
1049# source code will now point to the output of htags.
1050# The default value is: NO.
1051# This tag requires that the tag SOURCE_BROWSER is set to YES.
8831052
884USE_HTAGS = NO1053USE_HTAGS = NO
8851054
886# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen1055# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
887# will generate a verbatim copy of the header file for each class for1056# verbatim copy of the header file for each class for which an include is
888# which an include is specified. Set to NO to disable this.1057# specified. Set to NO to disable this.
1058# See also: Section \class.
1059# The default value is: YES.
8891060
890VERBATIM_HEADERS = YES1061VERBATIM_HEADERS = YES
8911062
892#---------------------------------------------------------------------------1063# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
893# configuration options related to the alphabetical class index1064# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
894#---------------------------------------------------------------------------1065# cost of reduced performance. This can be particularly helpful with template
8951066# rich C++ code for which doxygen's built-in parser lacks the necessary type
896# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index1067# information.
897# of all compounds will be generated. Enable this if the project1068# Note: The availability of this option depends on whether or not doxygen was
898# contains a lot of classes, structs, unions or interfaces.1069# generated with the -Duse-libclang=ON option for CMake.
1070# The default value is: NO.
1071
1072CLANG_ASSISTED_PARSING = NO
1073
1074# If clang assisted parsing is enabled you can provide the compiler with command
1075# line options that you would normally use when invoking the compiler. Note that
1076# the include paths will already be set by doxygen for the files and directories
1077# specified with INPUT and INCLUDE_PATH.
1078# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
1079
1080CLANG_OPTIONS =
1081
1082#---------------------------------------------------------------------------
1083# Configuration options related to the alphabetical class index
1084#---------------------------------------------------------------------------
1085
1086# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
1087# compounds will be generated. Enable this if the project contains a lot of
1088# classes, structs, unions or interfaces.
1089# The default value is: YES.
8991090
900ALPHABETICAL_INDEX = YES1091ALPHABETICAL_INDEX = YES
9011092
902# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then1093# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
903# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns1094# which the alphabetical index list will be split.
904# in which this list will be split (can be a number in the range [1..20])1095# Minimum value: 1, maximum value: 20, default value: 5.
1096# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
9051097
906COLS_IN_ALPHA_INDEX = 51098COLS_IN_ALPHA_INDEX = 5
9071099
908# In case all classes in a project start with a common prefix, all1100# In case all classes in a project start with a common prefix, all classes will
909# classes will be put under the same header in the alphabetical index.1101# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
910# The IGNORE_PREFIX tag can be used to specify one or more prefixes that1102# can be used to specify a prefix (or a list of prefixes) that should be ignored
911# should be ignored while generating the index headers.1103# while generating the index headers.
1104# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
9121105
913IGNORE_PREFIX =1106IGNORE_PREFIX =
9141107
915#---------------------------------------------------------------------------1108#---------------------------------------------------------------------------
916# configuration options related to the HTML output1109# Configuration options related to the HTML output
917#---------------------------------------------------------------------------1110#---------------------------------------------------------------------------
9181111
919# If the GENERATE_HTML tag is set to YES (the default) Doxygen will1112# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
920# generate HTML output.1113# The default value is: YES.
9211114
922GENERATE_HTML = YES1115GENERATE_HTML = YES
9231116
924# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.1117# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
925# If a relative path is entered the value of OUTPUT_DIRECTORY will be1118# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
926# put in front of it. If left blank `html' will be used as the default path.1119# it.
1120# The default directory is: html.
1121# This tag requires that the tag GENERATE_HTML is set to YES.
9271122
928HTML_OUTPUT = html1123HTML_OUTPUT = html
9291124
930# The HTML_FILE_EXTENSION tag can be used to specify the file extension for1125# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
931# each generated HTML page (for example: .htm,.php,.asp). If it is left blank1126# generated HTML page (for example: .htm, .php, .asp).
932# doxygen will generate files with .html extension.1127# The default value is: .html.
1128# This tag requires that the tag GENERATE_HTML is set to YES.
9331129
934HTML_FILE_EXTENSION = .html1130HTML_FILE_EXTENSION = .html
9351131
936# The HTML_HEADER tag can be used to specify a personal HTML header for1132# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
937# each generated HTML page. If it is left blank doxygen will generate a1133# each generated HTML page. If the tag is left blank doxygen will generate a
938# standard header. Note that when using a custom header you are responsible1134# standard header.
939# for the proper inclusion of any scripts and style sheets that doxygen1135#
940# needs, which is dependent on the configuration options used.1136# To get valid HTML the header file that includes any scripts and style sheets
941# It is advised to generate a default header using "doxygen -w html1137# that doxygen needs, which is dependent on the configuration options used (e.g.
942# header.html footer.html stylesheet.css YourConfigFile" and then modify1138# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
943# that header. Note that the header is subject to change so you typically1139# default header using
944# have to redo this when upgrading to a newer version of doxygen or when1140# doxygen -w html new_header.html new_footer.html new_stylesheet.css
945# changing the value of configuration settings such as GENERATE_TREEVIEW!1141# YourConfigFile
1142# and then modify the file new_header.html. See also section "Doxygen usage"
1143# for information on how to generate the default header that doxygen normally
1144# uses.
1145# Note: The header is subject to change so you typically have to regenerate the
1146# default header when upgrading to a newer version of doxygen. For a description
1147# of the possible markers and block names see the documentation.
1148# This tag requires that the tag GENERATE_HTML is set to YES.
9461149
947HTML_HEADER =1150HTML_HEADER =
9481151
949# The HTML_FOOTER tag can be used to specify a personal HTML footer for1152# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
950# each generated HTML page. If it is left blank doxygen will generate a1153# generated HTML page. If the tag is left blank doxygen will generate a standard
951# standard footer.1154# footer. See HTML_HEADER for more information on how to generate a default
1155# footer and what special commands can be used inside the footer. See also
1156# section "Doxygen usage" for information on how to generate the default footer
1157# that doxygen normally uses.
1158# This tag requires that the tag GENERATE_HTML is set to YES.
9521159
953HTML_FOOTER = @CMAKE_BINARY_DIR@/doc/footer.html1160HTML_FOOTER = @CMAKE_BINARY_DIR@/doc/footer.html
9541161
955# The HTML_STYLESHEET tag can be used to specify a user-defined cascading1162# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
956# style sheet that is used by each HTML page. It can be used to1163# sheet that is used by each HTML page. It can be used to fine-tune the look of
957# fine-tune the look of the HTML output. If left blank doxygen will1164# the HTML output. If left blank doxygen will generate a default style sheet.
958# generate a default style sheet. Note that it is recommended to use1165# See also section "Doxygen usage" for information on how to generate the style
959# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this1166# sheet that doxygen normally uses.
960# tag will in the future become obsolete.1167# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
1168# it is more robust and this tag (HTML_STYLESHEET) will in the future become
1169# obsolete.
1170# This tag requires that the tag GENERATE_HTML is set to YES.
9611171
962HTML_STYLESHEET =1172HTML_STYLESHEET =
9631173
964# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional1174# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
965# user-defined cascading style sheet that is included after the standard1175# cascading style sheets that are included after the standard style sheets
966# style sheets created by doxygen. Using this option one can overrule1176# created by doxygen. Using this option one can overrule certain style aspects.
967# certain style aspects. This is preferred over using HTML_STYLESHEET1177# This is preferred over using HTML_STYLESHEET since it does not replace the
968# since it does not replace the standard style sheet and is therefor more1178# standard style sheet and is therefore more robust against future updates.
969# robust against future updates. Doxygen will copy the style sheet file to1179# Doxygen will copy the style sheet files to the output directory.
970# the output directory.1180# Note: The order of the extra style sheet files is of importance (e.g. the last
1181# style sheet in the list overrules the setting of the previous ones in the
1182# list). For an example see the documentation.
1183# This tag requires that the tag GENERATE_HTML is set to YES.
9711184
972HTML_EXTRA_STYLESHEET = @CMAKE_BINARY_DIR@/doc/extra.css1185HTML_EXTRA_STYLESHEET = @CMAKE_BINARY_DIR@/doc/extra.css
9731186
@@ -975,632 +1188,847 @@
975# other source files which should be copied to the HTML output directory. Note1188# other source files which should be copied to the HTML output directory. Note
976# that these files will be copied to the base HTML output directory. Use the1189# that these files will be copied to the base HTML output directory. Use the
977# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these1190# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
978# files. In the HTML_STYLESHEET file, use the file name only. Also note that1191# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
979# the files will be copied as-is; there are no commands or markers available.1192# files will be copied as-is; there are no commands or markers available.
1193# This tag requires that the tag GENERATE_HTML is set to YES.
9801194
981HTML_EXTRA_FILES =1195HTML_EXTRA_FILES =
9821196
983# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.1197# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
984# Doxygen will adjust the colors in the style sheet and background images1198# will adjust the colors in the style sheet and background images according to
985# according to this color. Hue is specified as an angle on a colorwheel,1199# this color. Hue is specified as an angle on a colorwheel, see
986# see http://en.wikipedia.org/wiki/Hue for more information.1200# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
987# For instance the value 0 represents red, 60 is yellow, 120 is green,1201# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
988# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.1202# purple, and 360 is red again.
989# The allowed range is 0 to 359.1203# Minimum value: 0, maximum value: 359, default value: 220.
1204# This tag requires that the tag GENERATE_HTML is set to YES.
9901205
991HTML_COLORSTYLE_HUE = 161206HTML_COLORSTYLE_HUE = 16
9921207
993# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of1208# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
994# the colors in the HTML output. For a value of 0 the output will use1209# in the HTML output. For a value of 0 the output will use grayscales only. A
995# grayscales only. A value of 255 will produce the most vivid colors.1210# value of 255 will produce the most vivid colors.
1211# Minimum value: 0, maximum value: 255, default value: 100.
1212# This tag requires that the tag GENERATE_HTML is set to YES.
9961213
997HTML_COLORSTYLE_SAT = 2401214HTML_COLORSTYLE_SAT = 240
9981215
999# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to1216# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
1000# the luminance component of the colors in the HTML output. Values below1217# luminance component of the colors in the HTML output. Values below 100
1001# 100 gradually make the output lighter, whereas values above 100 make1218# gradually make the output lighter, whereas values above 100 make the output
1002# the output darker. The value divided by 100 is the actual gamma applied,1219# darker. The value divided by 100 is the actual gamma applied, so 80 represents
1003# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,1220# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
1004# and 100 does not change the gamma.1221# change the gamma.
1222# Minimum value: 40, maximum value: 240, default value: 80.
1223# This tag requires that the tag GENERATE_HTML is set to YES.
10051224
1006HTML_COLORSTYLE_GAMMA = 801225HTML_COLORSTYLE_GAMMA = 80
10071226
1008# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML1227# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
1009# page will contain the date and time when the page was generated. Setting1228# page will contain the date and time when the page was generated. Setting this
1010# this to NO can help when comparing the output of multiple runs.1229# to YES can help to show when doxygen was last run and thus if the
1230# documentation is up to date.
1231# The default value is: NO.
1232# This tag requires that the tag GENERATE_HTML is set to YES.
10111233
1012HTML_TIMESTAMP = YES1234HTML_TIMESTAMP = YES
10131235
1014# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML1236# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1015# documentation will contain sections that can be hidden and shown after the1237# documentation will contain sections that can be hidden and shown after the
1016# page has loaded.1238# page has loaded.
1239# The default value is: NO.
1240# This tag requires that the tag GENERATE_HTML is set to YES.
10171241
1018HTML_DYNAMIC_SECTIONS = NO1242HTML_DYNAMIC_SECTIONS = NO
10191243
1020# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of1244# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
1021# entries shown in the various tree structured indices initially; the user1245# shown in the various tree structured indices initially; the user can expand
1022# can expand and collapse entries dynamically later on. Doxygen will expand1246# and collapse entries dynamically later on. Doxygen will expand the tree to
1023# the tree to such a level that at most the specified number of entries are1247# such a level that at most the specified number of entries are visible (unless
1024# visible (unless a fully collapsed tree already exceeds this amount).1248# a fully collapsed tree already exceeds this amount). So setting the number of
1025# So setting the number of entries 1 will produce a full collapsed tree by1249# entries 1 will produce a full collapsed tree by default. 0 is a special value
1026# default. 0 is a special value representing an infinite number of entries1250# representing an infinite number of entries and will result in a full expanded
1027# and will result in a full expanded tree by default.1251# tree by default.
1252# Minimum value: 0, maximum value: 9999, default value: 100.
1253# This tag requires that the tag GENERATE_HTML is set to YES.
10281254
1029HTML_INDEX_NUM_ENTRIES = 1001255HTML_INDEX_NUM_ENTRIES = 100
10301256
1031# If the GENERATE_DOCSET tag is set to YES, additional index files1257# If the GENERATE_DOCSET tag is set to YES, additional index files will be
1032# will be generated that can be used as input for Apple's Xcode 31258# generated that can be used as input for Apple's Xcode 3 integrated development
1033# integrated development environment, introduced with OSX 10.5 (Leopard).1259# environment (see: http://developer.apple.com/tools/xcode/), introduced with
1034# To create a documentation set, doxygen will generate a Makefile in the1260# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
1035# HTML output directory. Running make will produce the docset in that1261# Makefile in the HTML output directory. Running make will produce the docset in
1036# directory and running "make install" will install the docset in1262# that directory and running make install will install the docset in
1037# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find1263# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
1038# it at startup.1264# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
1039# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
1040# for more information.1265# for more information.
1266# The default value is: NO.
1267# This tag requires that the tag GENERATE_HTML is set to YES.
10411268
1042GENERATE_DOCSET = NO1269GENERATE_DOCSET = NO
10431270
1044# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the1271# This tag determines the name of the docset feed. A documentation feed provides
1045# feed. A documentation feed provides an umbrella under which multiple1272# an umbrella under which multiple documentation sets from a single provider
1046# documentation sets from a single provider (such as a company or product suite)1273# (such as a company or product suite) can be grouped.
1047# can be grouped.1274# The default value is: Doxygen generated docs.
1275# This tag requires that the tag GENERATE_DOCSET is set to YES.
10481276
1049DOCSET_FEEDNAME = "Doxygen generated docs"1277DOCSET_FEEDNAME = "Doxygen generated docs"
10501278
1051# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that1279# This tag specifies a string that should uniquely identify the documentation
1052# should uniquely identify the documentation set bundle. This should be a1280# set bundle. This should be a reverse domain-name style string, e.g.
1053# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen1281# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
1054# will append .docset to the name.1282# The default value is: org.doxygen.Project.
1283# This tag requires that the tag GENERATE_DOCSET is set to YES.
10551284
1056DOCSET_BUNDLE_ID = org.doxygen.Project1285DOCSET_BUNDLE_ID = org.doxygen.Project
10571286
1058# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely1287# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
1059# identify the documentation publisher. This should be a reverse domain-name1288# the documentation publisher. This should be a reverse domain-name style
1060# style string, e.g. com.mycompany.MyDocSet.documentation.1289# string, e.g. com.mycompany.MyDocSet.documentation.
1290# The default value is: org.doxygen.Publisher.
1291# This tag requires that the tag GENERATE_DOCSET is set to YES.
10611292
1062DOCSET_PUBLISHER_ID = org.doxygen.Publisher1293DOCSET_PUBLISHER_ID = org.doxygen.Publisher
10631294
1064# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.1295# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
1296# The default value is: Publisher.
1297# This tag requires that the tag GENERATE_DOCSET is set to YES.
10651298
1066DOCSET_PUBLISHER_NAME = Publisher1299DOCSET_PUBLISHER_NAME = Publisher
10671300
1068# If the GENERATE_HTMLHELP tag is set to YES, additional index files1301# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
1069# will be generated that can be used as input for tools like the1302# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
1070# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)1303# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
1071# of the generated HTML documentation.1304# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
1305# Windows.
1306#
1307# The HTML Help Workshop contains a compiler that can convert all HTML output
1308# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
1309# files are now used as the Windows 98 help format, and will replace the old
1310# Windows help format (.hlp) on all Windows platforms in the future. Compressed
1311# HTML files also contain an index, a table of contents, and you can search for
1312# words in the documentation. The HTML workshop also contains a viewer for
1313# compressed HTML files.
1314# The default value is: NO.
1315# This tag requires that the tag GENERATE_HTML is set to YES.
10721316
1073GENERATE_HTMLHELP = NO1317GENERATE_HTMLHELP = NO
10741318
1075# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can1319# The CHM_FILE tag can be used to specify the file name of the resulting .chm
1076# be used to specify the file name of the resulting .chm file. You1320# file. You can add a path in front of the file if the result should not be
1077# can add a path in front of the file if the result should not be
1078# written to the html output directory.1321# written to the html output directory.
1322# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
10791323
1080CHM_FILE =1324CHM_FILE =
10811325
1082# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can1326# The HHC_LOCATION tag can be used to specify the location (absolute path
1083# be used to specify the location (absolute path including file name) of1327# including file name) of the HTML help compiler (hhc.exe). If non-empty,
1084# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run1328# doxygen will try to run the HTML help compiler on the generated index.hhp.
1085# the HTML help compiler on the generated index.hhp.1329# The file has to be specified with full path.
1330# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
10861331
1087HHC_LOCATION =1332HHC_LOCATION =
10881333
1089# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag1334# The GENERATE_CHI flag controls if a separate .chi index file is generated
1090# controls if a separate .chi index file is generated (YES) or that1335# (YES) or that it should be included in the master .chm file (NO).
1091# it should be included in the master .chm file (NO).1336# The default value is: NO.
1337# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
10921338
1093GENERATE_CHI = NO1339GENERATE_CHI = NO
10941340
1095# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING1341# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
1096# is used to encode HtmlHelp index (hhk), content (hhc) and project file1342# and project file content.
1097# content.1343# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
10981344
1099CHM_INDEX_ENCODING =1345CHM_INDEX_ENCODING =
11001346
1101# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag1347# The BINARY_TOC flag controls whether a binary table of contents is generated
1102# controls whether a binary table of contents is generated (YES) or a1348# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
1103# normal table of contents (NO) in the .chm file.1349# enables the Previous and Next buttons.
1350# The default value is: NO.
1351# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
11041352
1105BINARY_TOC = NO1353BINARY_TOC = NO
11061354
1107# The TOC_EXPAND flag can be set to YES to add extra items for group members1355# The TOC_EXPAND flag can be set to YES to add extra items for group members to
1108# to the contents of the HTML help documentation and to the tree view.1356# the table of contents of the HTML help documentation and to the tree view.
1357# The default value is: NO.
1358# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
11091359
1110TOC_EXPAND = NO1360TOC_EXPAND = NO
11111361
1112# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and1362# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
1113# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated1363# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
1114# that can be used as input for Qt's qhelpgenerator to generate a1364# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
1115# Qt Compressed Help (.qch) of the generated HTML documentation.1365# (.qch) of the generated HTML documentation.
1366# The default value is: NO.
1367# This tag requires that the tag GENERATE_HTML is set to YES.
11161368
1117GENERATE_QHP = NO1369GENERATE_QHP = NO
11181370
1119# If the QHG_LOCATION tag is specified, the QCH_FILE tag can1371# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
1120# be used to specify the file name of the resulting .qch file.1372# the file name of the resulting .qch file. The path specified is relative to
1121# The path specified is relative to the HTML output folder.1373# the HTML output folder.
1374# This tag requires that the tag GENERATE_QHP is set to YES.
11221375
1123QCH_FILE =1376QCH_FILE =
11241377
1125# The QHP_NAMESPACE tag specifies the namespace to use when generating1378# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
1126# Qt Help Project output. For more information please see1379# Project output. For more information please see Qt Help Project / Namespace
1127# http://doc.trolltech.com/qthelpproject.html#namespace1380# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
1381# The default value is: org.doxygen.Project.
1382# This tag requires that the tag GENERATE_QHP is set to YES.
11281383
1129QHP_NAMESPACE = org.doxygen.Project1384QHP_NAMESPACE = org.doxygen.Project
11301385
1131# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating1386# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
1132# Qt Help Project output. For more information please see1387# Help Project output. For more information please see Qt Help Project / Virtual
1133# http://doc.trolltech.com/qthelpproject.html#virtual-folders1388# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
1389# folders).
1390# The default value is: doc.
1391# This tag requires that the tag GENERATE_QHP is set to YES.
11341392
1135QHP_VIRTUAL_FOLDER = doc1393QHP_VIRTUAL_FOLDER = doc
11361394
1137# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to1395# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
1138# add. For more information please see1396# filter to add. For more information please see Qt Help Project / Custom
1139# http://doc.trolltech.com/qthelpproject.html#custom-filters1397# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
1398# filters).
1399# This tag requires that the tag GENERATE_QHP is set to YES.
11401400
1141QHP_CUST_FILTER_NAME =1401QHP_CUST_FILTER_NAME =
11421402
1143# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the1403# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
1144# custom filter to add. For more information please see1404# custom filter to add. For more information please see Qt Help Project / Custom
1145# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">1405# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
1146# Qt Help Project / Custom Filters</a>.1406# filters).
1407# This tag requires that the tag GENERATE_QHP is set to YES.
11471408
1148QHP_CUST_FILTER_ATTRS =1409QHP_CUST_FILTER_ATTRS =
11491410
1150# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this1411# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1151# project's1412# project's filter section matches. Qt Help Project / Filter Attributes (see:
1152# filter section matches.1413# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
1153# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">1414# This tag requires that the tag GENERATE_QHP is set to YES.
1154# Qt Help Project / Filter Attributes</a>.
11551415
1156QHP_SECT_FILTER_ATTRS =1416QHP_SECT_FILTER_ATTRS =
11571417
1158# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can1418# The QHG_LOCATION tag can be used to specify the location of Qt's
1159# be used to specify the location of Qt's qhelpgenerator.1419# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
1160# If non-empty doxygen will try to run qhelpgenerator on the generated1420# generated .qhp file.
1161# .qhp file.1421# This tag requires that the tag GENERATE_QHP is set to YES.
11621422
1163QHG_LOCATION =1423QHG_LOCATION =
11641424
1165# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files1425# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
1166# will be generated, which together with the HTML files, form an Eclipse help1426# generated, together with the HTML files, they form an Eclipse help plugin. To
1167# plugin. To install this plugin and make it available under the help contents1427# install this plugin and make it available under the help contents menu in
1168# menu in Eclipse, the contents of the directory containing the HTML and XML1428# Eclipse, the contents of the directory containing the HTML and XML files needs
1169# files needs to be copied into the plugins directory of eclipse. The name of1429# to be copied into the plugins directory of eclipse. The name of the directory
1170# the directory within the plugins directory should be the same as1430# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
1171# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before1431# After copying Eclipse needs to be restarted before the help appears.
1172# the help appears.1432# The default value is: NO.
1433# This tag requires that the tag GENERATE_HTML is set to YES.
11731434
1174GENERATE_ECLIPSEHELP = NO1435GENERATE_ECLIPSEHELP = NO
11751436
1176# A unique identifier for the eclipse help plugin. When installing the plugin1437# A unique identifier for the Eclipse help plugin. When installing the plugin
1177# the directory name containing the HTML and XML files should also have1438# the directory name containing the HTML and XML files should also have this
1178# this name.1439# name. Each documentation set should have its own identifier.
1440# The default value is: org.doxygen.Project.
1441# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
11791442
1180ECLIPSE_DOC_ID = org.doxygen.Project1443ECLIPSE_DOC_ID = org.doxygen.Project
11811444
1182# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)1445# If you want full control over the layout of the generated HTML pages it might
1183# at top of each HTML page. The value NO (the default) enables the index and1446# be necessary to disable the index and replace it with your own. The
1184# the value YES disables it. Since the tabs have the same information as the1447# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
1185# navigation tree you can set this option to NO if you already set1448# of each HTML page. A value of NO enables the index and the value YES disables
1186# GENERATE_TREEVIEW to YES.1449# it. Since the tabs in the index contain the same information as the navigation
1450# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
1451# The default value is: NO.
1452# This tag requires that the tag GENERATE_HTML is set to YES.
11871453
1188DISABLE_INDEX = NO1454DISABLE_INDEX = NO
11891455
1190# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index1456# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
1191# structure should be generated to display hierarchical information.1457# structure should be generated to display hierarchical information. If the tag
1192# If the tag value is set to YES, a side panel will be generated1458# value is set to YES, a side panel will be generated containing a tree-like
1193# containing a tree-like index structure (just like the one that1459# index structure (just like the one that is generated for HTML Help). For this
1194# is generated for HTML Help). For this to work a browser that supports1460# to work a browser that supports JavaScript, DHTML, CSS and frames is required
1195# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).1461# (i.e. any modern browser). Windows users are probably better off using the
1196# Windows users are probably better off using the HTML help feature.1462# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
1197# Since the tree basically has the same information as the tab index you1463# further fine-tune the look of the index. As an example, the default style
1198# could consider to set DISABLE_INDEX to NO when enabling this option.1464# sheet generated by doxygen has an example that shows how to put an image at
1465# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
1466# the same information as the tab index, you could consider setting
1467# DISABLE_INDEX to YES when enabling this option.
1468# The default value is: NO.
1469# This tag requires that the tag GENERATE_HTML is set to YES.
11991470
1200GENERATE_TREEVIEW = NO1471GENERATE_TREEVIEW = NO
12011472
1202# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values1473# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
1203# (range [0,1..20]) that doxygen will group on one line in the generated HTML1474# doxygen will group on one line in the generated HTML documentation.
1204# documentation. Note that a value of 0 will completely suppress the enum1475#
1205# values from appearing in the overview section.1476# Note that a value of 0 will completely suppress the enum values from appearing
1477# in the overview section.
1478# Minimum value: 0, maximum value: 20, default value: 4.
1479# This tag requires that the tag GENERATE_HTML is set to YES.
12061480
1207ENUM_VALUES_PER_LINE = 41481ENUM_VALUES_PER_LINE = 4
12081482
1209# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be1483# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
1210# used to set the initial width (in pixels) of the frame in which the tree1484# to set the initial width (in pixels) of the frame in which the tree is shown.
1211# is shown.1485# Minimum value: 0, maximum value: 1500, default value: 250.
1486# This tag requires that the tag GENERATE_HTML is set to YES.
12121487
1213TREEVIEW_WIDTH = 2501488TREEVIEW_WIDTH = 250
12141489
1215# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open1490# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
1216# links to external symbols imported via tag files in a separate window.1491# external symbols imported via tag files in a separate window.
1492# The default value is: NO.
1493# This tag requires that the tag GENERATE_HTML is set to YES.
12171494
1218EXT_LINKS_IN_WINDOW = NO1495EXT_LINKS_IN_WINDOW = NO
12191496
1220# Use this tag to change the font size of Latex formulas included1497# Use this tag to change the font size of LaTeX formulas included as images in
1221# as images in the HTML documentation. The default is 10. Note that1498# the HTML documentation. When you change the font size after a successful
1222# when you change the font size after a successful doxygen run you need1499# doxygen run you need to manually remove any form_*.png images from the HTML
1223# to manually remove any form_*.png images from the HTML output directory1500# output directory to force them to be regenerated.
1224# to force them to be regenerated.1501# Minimum value: 8, maximum value: 50, default value: 10.
1502# This tag requires that the tag GENERATE_HTML is set to YES.
12251503
1226FORMULA_FONTSIZE = 101504FORMULA_FONTSIZE = 10
12271505
1228# Use the FORMULA_TRANPARENT tag to determine whether or not the images1506# Use the FORMULA_TRANPARENT tag to determine whether or not the images
1229# generated for formulas are transparent PNGs. Transparent PNGs are1507# generated for formulas are transparent PNGs. Transparent PNGs are not
1230# not supported properly for IE 6.0, but are supported on all modern browsers.1508# supported properly for IE 6.0, but are supported on all modern browsers.
1231# Note that when changing this option you need to delete any form_*.png files1509#
1232# in the HTML output before the changes have effect.1510# Note that when changing this option you need to delete any form_*.png files in
1511# the HTML output directory before the changes have effect.
1512# The default value is: YES.
1513# This tag requires that the tag GENERATE_HTML is set to YES.
12331514
1234FORMULA_TRANSPARENT = YES1515FORMULA_TRANSPARENT = YES
12351516
1236# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax1517# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
1237# (see http://www.mathjax.org) which uses client side Javascript for the1518# http://www.mathjax.org) which uses client side Javascript for the rendering
1238# rendering instead of using prerendered bitmaps. Use this if you do not1519# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
1239# have LaTeX installed or if you want to formulas look prettier in the HTML1520# installed or if you want to formulas look prettier in the HTML output. When
1240# output. When enabled you may also need to install MathJax separately and1521# enabled you may also need to install MathJax separately and configure the path
1241# configure the path to it using the MATHJAX_RELPATH option.1522# to it using the MATHJAX_RELPATH option.
1523# The default value is: NO.
1524# This tag requires that the tag GENERATE_HTML is set to YES.
12421525
1243USE_MATHJAX = NO1526USE_MATHJAX = NO
12441527
1245# When MathJax is enabled you can set the default output format to be used for1528# When MathJax is enabled you can set the default output format to be used for
1246# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and1529# the MathJax output. See the MathJax site (see:
1247# SVG. The default value is HTML-CSS, which is slower, but has the best1530# http://docs.mathjax.org/en/latest/output.html) for more details.
1248# compatibility.1531# Possible values are: HTML-CSS (which is slower, but has the best
1532# compatibility), NativeMML (i.e. MathML) and SVG.
1533# The default value is: HTML-CSS.
1534# This tag requires that the tag USE_MATHJAX is set to YES.
12491535
1250MATHJAX_FORMAT = HTML-CSS1536MATHJAX_FORMAT = HTML-CSS
12511537
1252# When MathJax is enabled you need to specify the location relative to the1538# When MathJax is enabled you need to specify the location relative to the HTML
1253# HTML output directory using the MATHJAX_RELPATH option. The destination1539# output directory using the MATHJAX_RELPATH option. The destination directory
1254# directory should contain the MathJax.js script. For instance, if the mathjax1540# should contain the MathJax.js script. For instance, if the mathjax directory
1255# directory is located at the same level as the HTML output directory, then1541# is located at the same level as the HTML output directory, then
1256# MATHJAX_RELPATH should be ../mathjax. The default value points to1542# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
1257# the MathJax Content Delivery Network so you can quickly see the result without1543# Content Delivery Network so you can quickly see the result without installing
1258# installing MathJax.1544# MathJax. However, it is strongly recommended to install a local copy of
1259# However, it is strongly recommended to install a local1545# MathJax from http://www.mathjax.org before deployment.
1260# copy of MathJax from http://www.mathjax.org before deployment.1546# The default value is: http://cdn.mathjax.org/mathjax/latest.
1547# This tag requires that the tag USE_MATHJAX is set to YES.
12611548
1262MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest1549MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
12631550
1264# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension1551# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
1265# names that should be enabled during MathJax rendering.1552# extension names that should be enabled during MathJax rendering. For example
1553# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
1554# This tag requires that the tag USE_MATHJAX is set to YES.
12661555
1267MATHJAX_EXTENSIONS =1556MATHJAX_EXTENSIONS =
12681557
1269# The MATHJAX_CODEFILE tag can be used to specify a file with javascript1558# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
1270# pieces of code that will be used on startup of the MathJax code.1559# of code that will be used on startup of the MathJax code. See the MathJax site
1560# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
1561# example see the documentation.
1562# This tag requires that the tag USE_MATHJAX is set to YES.
12711563
1272MATHJAX_CODEFILE =1564MATHJAX_CODEFILE =
12731565
1274# When the SEARCHENGINE tag is enabled doxygen will generate a search box1566# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
1275# for the HTML output. The underlying search engine uses javascript1567# the HTML output. The underlying search engine uses javascript and DHTML and
1276# and DHTML and should work on any modern browser. Note that when using1568# should work on any modern browser. Note that when using HTML help
1277# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets1569# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
1278# (GENERATE_DOCSET) there is already a search function so this one should1570# there is already a search function so this one should typically be disabled.
1279# typically be disabled. For large projects the javascript based search engine1571# For large projects the javascript based search engine can be slow, then
1280# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.1572# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
1573# search using the keyboard; to jump to the search box use <access key> + S
1574# (what the <access key> is depends on the OS and browser, but it is typically
1575# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
1576# key> to jump into the search results window, the results can be navigated
1577# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
1578# the search. The filter options can be selected when the cursor is inside the
1579# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
1580# to select a filter and <Enter> or <escape> to activate or cancel the filter
1581# option.
1582# The default value is: YES.
1583# This tag requires that the tag GENERATE_HTML is set to YES.
12811584
1282SEARCHENGINE = YES1585SEARCHENGINE = YES
12831586
1284# When the SERVER_BASED_SEARCH tag is enabled the search engine will be1587# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1285# implemented using a web server instead of a web client using Javascript.1588# implemented using a web server instead of a web client using Javascript. There
1286# There are two flavours of web server based search depending on the1589# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
1287# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for1590# setting. When disabled, doxygen will generate a PHP script for searching and
1288# searching and an index file used by the script. When EXTERNAL_SEARCH is1591# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
1289# enabled the indexing and searching needs to be provided by external tools.1592# and searching needs to be provided by external tools. See the section
1290# See the manual for details.1593# "External Indexing and Searching" for details.
1594# The default value is: NO.
1595# This tag requires that the tag SEARCHENGINE is set to YES.
12911596
1292SERVER_BASED_SEARCH = NO1597SERVER_BASED_SEARCH = NO
12931598
1294# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP1599# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
1295# script for searching. Instead the search results are written to an XML file1600# script for searching. Instead the search results are written to an XML file
1296# which needs to be processed by an external indexer. Doxygen will invoke an1601# which needs to be processed by an external indexer. Doxygen will invoke an
1297# external search engine pointed to by the SEARCHENGINE_URL option to obtain1602# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
1298# the search results. Doxygen ships with an example indexer (doxyindexer) and1603# search results.
1299# search engine (doxysearch.cgi) which are based on the open source search1604#
1300# engine library Xapian. See the manual for configuration details.1605# Doxygen ships with an example indexer (doxyindexer) and search engine
1606# (doxysearch.cgi) which are based on the open source search engine library
1607# Xapian (see: http://xapian.org/).
1608#
1609# See the section "External Indexing and Searching" for details.
1610# The default value is: NO.
1611# This tag requires that the tag SEARCHENGINE is set to YES.
13011612
1302EXTERNAL_SEARCH = NO1613EXTERNAL_SEARCH = NO
13031614
1304# The SEARCHENGINE_URL should point to a search engine hosted by a web server1615# The SEARCHENGINE_URL should point to a search engine hosted by a web server
1305# which will returned the search results when EXTERNAL_SEARCH is enabled.1616# which will return the search results when EXTERNAL_SEARCH is enabled.
1306# Doxygen ships with an example search engine (doxysearch) which is based on1617#
1307# the open source search engine library Xapian. See the manual for configuration1618# Doxygen ships with an example indexer (doxyindexer) and search engine
1308# details.1619# (doxysearch.cgi) which are based on the open source search engine library
1620# Xapian (see: http://xapian.org/). See the section "External Indexing and
1621# Searching" for details.
1622# This tag requires that the tag SEARCHENGINE is set to YES.
13091623
1310SEARCHENGINE_URL =1624SEARCHENGINE_URL =
13111625
1312# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed1626# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
1313# search data is written to a file for indexing by an external tool. With the1627# search data is written to a file for indexing by an external tool. With the
1314# SEARCHDATA_FILE tag the name of this file can be specified.1628# SEARCHDATA_FILE tag the name of this file can be specified.
1629# The default file is: searchdata.xml.
1630# This tag requires that the tag SEARCHENGINE is set to YES.
13151631
1316SEARCHDATA_FILE = searchdata.xml1632SEARCHDATA_FILE = searchdata.xml
13171633
1318# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the1634# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
1319# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is1635# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
1320# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple1636# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
1321# projects and redirect the results back to the right project.1637# projects and redirect the results back to the right project.
1638# This tag requires that the tag SEARCHENGINE is set to YES.
13221639
1323EXTERNAL_SEARCH_ID =1640EXTERNAL_SEARCH_ID =
13241641
1325# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen1642# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
1326# projects other than the one defined by this configuration file, but that are1643# projects other than the one defined by this configuration file, but that are
1327# all added to the same external search index. Each project needs to have a1644# all added to the same external search index. Each project needs to have a
1328# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id1645# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
1329# of to a relative location where the documentation can be found.1646# to a relative location where the documentation can be found. The format is:
1330# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...1647# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
1648# This tag requires that the tag SEARCHENGINE is set to YES.
13311649
1332EXTRA_SEARCH_MAPPINGS =1650EXTRA_SEARCH_MAPPINGS =
13331651
1334#---------------------------------------------------------------------------1652#---------------------------------------------------------------------------
1335# configuration options related to the LaTeX output1653# Configuration options related to the LaTeX output
1336#---------------------------------------------------------------------------1654#---------------------------------------------------------------------------
13371655
1338# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will1656# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
1339# generate Latex output.1657# The default value is: YES.
13401658
1341GENERATE_LATEX = NO1659GENERATE_LATEX = NO
13421660
1343# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.1661# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
1344# If a relative path is entered the value of OUTPUT_DIRECTORY will be1662# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1345# put in front of it. If left blank `latex' will be used as the default path.1663# it.
1664# The default directory is: latex.
1665# This tag requires that the tag GENERATE_LATEX is set to YES.
13461666
1347LATEX_OUTPUT = latex1667LATEX_OUTPUT = latex
13481668
1349# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be1669# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1350# invoked. If left blank `latex' will be used as the default command name.1670# invoked.
1351# Note that when enabling USE_PDFLATEX this option is only used for1671#
1352# generating bitmaps for formulas in the HTML output, but not in the1672# Note that when enabling USE_PDFLATEX this option is only used for generating
1353# Makefile that is written to the output directory.1673# bitmaps for formulas in the HTML output, but not in the Makefile that is
1674# written to the output directory.
1675# The default file is: latex.
1676# This tag requires that the tag GENERATE_LATEX is set to YES.
13541677
1355LATEX_CMD_NAME = latex1678LATEX_CMD_NAME = latex
13561679
1357# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to1680# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
1358# generate index for LaTeX. If left blank `makeindex' will be used as the1681# index for LaTeX.
1359# default command name.1682# The default file is: makeindex.
1683# This tag requires that the tag GENERATE_LATEX is set to YES.
13601684
1361MAKEINDEX_CMD_NAME = makeindex1685MAKEINDEX_CMD_NAME = makeindex
13621686
1363# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact1687# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
1364# LaTeX documents. This may be useful for small projects and may help to1688# documents. This may be useful for small projects and may help to save some
1365# save some trees in general.1689# trees in general.
1690# The default value is: NO.
1691# This tag requires that the tag GENERATE_LATEX is set to YES.
13661692
1367COMPACT_LATEX = NO1693COMPACT_LATEX = NO
13681694
1369# The PAPER_TYPE tag can be used to set the paper type that is used1695# The PAPER_TYPE tag can be used to set the paper type that is used by the
1370# by the printer. Possible values are: a4, letter, legal and1696# printer.
1371# executive. If left blank a4 will be used.1697# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
1698# 14 inches) and executive (7.25 x 10.5 inches).
1699# The default value is: a4.
1700# This tag requires that the tag GENERATE_LATEX is set to YES.
13721701
1373PAPER_TYPE = a41702PAPER_TYPE = a4
13741703
1375# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX1704# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
1376# packages that should be included in the LaTeX output.1705# that should be included in the LaTeX output. The package can be specified just
1706# by its name or with the correct syntax as to be used with the LaTeX
1707# \usepackage command. To get the times font for instance you can specify :
1708# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
1709# To use the option intlimits with the amsmath package you can specify:
1710# EXTRA_PACKAGES=[intlimits]{amsmath}
1711# If left blank no extra packages will be included.
1712# This tag requires that the tag GENERATE_LATEX is set to YES.
13771713
1378EXTRA_PACKAGES =1714EXTRA_PACKAGES =
13791715
1380# The LATEX_HEADER tag can be used to specify a personal LaTeX header for1716# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
1381# the generated latex document. The header should contain everything until1717# generated LaTeX document. The header should contain everything until the first
1382# the first chapter. If it is left blank doxygen will generate a1718# chapter. If it is left blank doxygen will generate a standard header. See
1383# standard header. Notice: only use this tag if you know what you are doing!1719# section "Doxygen usage" for information on how to let doxygen write the
1720# default header to a separate file.
1721#
1722# Note: Only use a user-defined header if you know what you are doing! The
1723# following commands have a special meaning inside the header: $title,
1724# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
1725# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
1726# string, for the replacement values of the other commands the user is referred
1727# to HTML_HEADER.
1728# This tag requires that the tag GENERATE_LATEX is set to YES.
13841729
1385LATEX_HEADER =1730LATEX_HEADER =
13861731
1387# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for1732# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
1388# the generated latex document. The footer should contain everything after1733# generated LaTeX document. The footer should contain everything after the last
1389# the last chapter. If it is left blank doxygen will generate a1734# chapter. If it is left blank doxygen will generate a standard footer. See
1390# standard footer. Notice: only use this tag if you know what you are doing!1735# LATEX_HEADER for more information on how to generate a default footer and what
1736# special commands can be used inside the footer.
1737#
1738# Note: Only use a user-defined footer if you know what you are doing!
1739# This tag requires that the tag GENERATE_LATEX is set to YES.
13911740
1392LATEX_FOOTER =1741LATEX_FOOTER =
13931742
1394# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images1743# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
1395# or other source files which should be copied to the LaTeX output directory.1744# LaTeX style sheets that are included after the standard style sheets created
1396# Note that the files will be copied as-is; there are no commands or markers1745# by doxygen. Using this option one can overrule certain style aspects. Doxygen
1397# available.1746# will copy the style sheet files to the output directory.
1747# Note: The order of the extra style sheet files is of importance (e.g. the last
1748# style sheet in the list overrules the setting of the previous ones in the
1749# list).
1750# This tag requires that the tag GENERATE_LATEX is set to YES.
1751
1752LATEX_EXTRA_STYLESHEET =
1753
1754# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
1755# other source files which should be copied to the LATEX_OUTPUT output
1756# directory. Note that the files will be copied as-is; there are no commands or
1757# markers available.
1758# This tag requires that the tag GENERATE_LATEX is set to YES.
13981759
1399LATEX_EXTRA_FILES =1760LATEX_EXTRA_FILES =
14001761
1401# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated1762# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
1402# is prepared for conversion to pdf (using ps2pdf). The pdf file will1763# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
1403# contain links (just like the HTML output) instead of page references1764# contain links (just like the HTML output) instead of page references. This
1404# This makes the output suitable for online browsing using a pdf viewer.1765# makes the output suitable for online browsing using a PDF viewer.
1766# The default value is: YES.
1767# This tag requires that the tag GENERATE_LATEX is set to YES.
14051768
1406PDF_HYPERLINKS = YES1769PDF_HYPERLINKS = YES
14071770
1408# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of1771# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
1409# plain latex in the generated Makefile. Set this option to YES to get a1772# the PDF file directly from the LaTeX files. Set this option to YES, to get a
1410# higher quality PDF documentation.1773# higher quality PDF documentation.
1774# The default value is: YES.
1775# This tag requires that the tag GENERATE_LATEX is set to YES.
14111776
1412USE_PDFLATEX = YES1777USE_PDFLATEX = YES
14131778
1414# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.1779# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
1415# command to the generated LaTeX files. This will instruct LaTeX to keep1780# command to the generated LaTeX files. This will instruct LaTeX to keep running
1416# running if errors occur, instead of asking the user for help.1781# if errors occur, instead of asking the user for help. This option is also used
1417# This option is also used when generating formulas in HTML.1782# when generating formulas in HTML.
1783# The default value is: NO.
1784# This tag requires that the tag GENERATE_LATEX is set to YES.
14181785
1419LATEX_BATCHMODE = NO1786LATEX_BATCHMODE = NO
14201787
1421# If LATEX_HIDE_INDICES is set to YES then doxygen will not1788# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
1422# include the index chapters (such as File Index, Compound Index, etc.)1789# index chapters (such as File Index, Compound Index, etc.) in the output.
1423# in the output.1790# The default value is: NO.
1791# This tag requires that the tag GENERATE_LATEX is set to YES.
14241792
1425LATEX_HIDE_INDICES = NO1793LATEX_HIDE_INDICES = NO
14261794
1427# If LATEX_SOURCE_CODE is set to YES then doxygen will include1795# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
1428# source code with syntax highlighting in the LaTeX output.1796# code with syntax highlighting in the LaTeX output.
1429# Note that which sources are shown also depends on other settings1797#
1430# such as SOURCE_BROWSER.1798# Note that which sources are shown also depends on other settings such as
1799# SOURCE_BROWSER.
1800# The default value is: NO.
1801# This tag requires that the tag GENERATE_LATEX is set to YES.
14311802
1432LATEX_SOURCE_CODE = NO1803LATEX_SOURCE_CODE = NO
14331804
1434# The LATEX_BIB_STYLE tag can be used to specify the style to use for the1805# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1435# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See1806# bibliography, e.g. plainnat, or ieeetr. See
1436# http://en.wikipedia.org/wiki/BibTeX for more info.1807# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
1808# The default value is: plain.
1809# This tag requires that the tag GENERATE_LATEX is set to YES.
14371810
1438LATEX_BIB_STYLE = plain1811LATEX_BIB_STYLE = plain
14391812
1440#---------------------------------------------------------------------------1813# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
1441# configuration options related to the RTF output1814# page will contain the date and time when the page was generated. Setting this
1442#---------------------------------------------------------------------------1815# to NO can help when comparing the output of multiple runs.
14431816# The default value is: NO.
1444# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output1817# This tag requires that the tag GENERATE_LATEX is set to YES.
1445# The RTF output is optimized for Word 97 and may not look very pretty with1818
1446# other RTF readers or editors.1819LATEX_TIMESTAMP = NO
1820
1821#---------------------------------------------------------------------------
1822# Configuration options related to the RTF output
1823#---------------------------------------------------------------------------
1824
1825# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
1826# RTF output is optimized for Word 97 and may not look too pretty with other RTF
1827# readers/editors.
1828# The default value is: NO.
14471829
1448GENERATE_RTF = NO1830GENERATE_RTF = NO
14491831
1450# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.1832# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
1451# If a relative path is entered the value of OUTPUT_DIRECTORY will be1833# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1452# put in front of it. If left blank `rtf' will be used as the default path.1834# it.
1835# The default directory is: rtf.
1836# This tag requires that the tag GENERATE_RTF is set to YES.
14531837
1454RTF_OUTPUT = rtf1838RTF_OUTPUT = rtf
14551839
1456# If the COMPACT_RTF tag is set to YES Doxygen generates more compact1840# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
1457# RTF documents. This may be useful for small projects and may help to1841# documents. This may be useful for small projects and may help to save some
1458# save some trees in general.1842# trees in general.
1843# The default value is: NO.
1844# This tag requires that the tag GENERATE_RTF is set to YES.
14591845
1460COMPACT_RTF = NO1846COMPACT_RTF = NO
14611847
1462# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated1848# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
1463# will contain hyperlink fields. The RTF file will1849# contain hyperlink fields. The RTF file will contain links (just like the HTML
1464# contain links (just like the HTML output) instead of page references.1850# output) instead of page references. This makes the output suitable for online
1465# This makes the output suitable for online browsing using WORD or other1851# browsing using Word or some other Word compatible readers that support those
1466# programs which support those fields.1852# fields.
1467# Note: wordpad (write) and others do not support links.1853#
1854# Note: WordPad (write) and others do not support links.
1855# The default value is: NO.
1856# This tag requires that the tag GENERATE_RTF is set to YES.
14681857
1469RTF_HYPERLINKS = NO1858RTF_HYPERLINKS = NO
14701859
1471# Load style sheet definitions from file. Syntax is similar to doxygen's1860# Load stylesheet definitions from file. Syntax is similar to doxygen's config
1472# config file, i.e. a series of assignments. You only have to provide1861# file, i.e. a series of assignments. You only have to provide replacements,
1473# replacements, missing definitions are set to their default value.1862# missing definitions are set to their default value.
1863#
1864# See also section "Doxygen usage" for information on how to generate the
1865# default style sheet that doxygen normally uses.
1866# This tag requires that the tag GENERATE_RTF is set to YES.
14741867
1475RTF_STYLESHEET_FILE =1868RTF_STYLESHEET_FILE =
14761869
1477# Set optional variables used in the generation of an rtf document.1870# Set optional variables used in the generation of an RTF document. Syntax is
1478# Syntax is similar to doxygen's config file.1871# similar to doxygen's config file. A template extensions file can be generated
1872# using doxygen -e rtf extensionFile.
1873# This tag requires that the tag GENERATE_RTF is set to YES.
14791874
1480RTF_EXTENSIONS_FILE =1875RTF_EXTENSIONS_FILE =
14811876
1482#---------------------------------------------------------------------------1877# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
1483# configuration options related to the man page output1878# with syntax highlighting in the RTF output.
1484#---------------------------------------------------------------------------1879#
14851880# Note that which sources are shown also depends on other settings such as
1486# If the GENERATE_MAN tag is set to YES (the default) Doxygen will1881# SOURCE_BROWSER.
1487# generate man pages1882# The default value is: NO.
1883# This tag requires that the tag GENERATE_RTF is set to YES.
1884
1885RTF_SOURCE_CODE = NO
1886
1887#---------------------------------------------------------------------------
1888# Configuration options related to the man page output
1889#---------------------------------------------------------------------------
1890
1891# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
1892# classes and files.
1893# The default value is: NO.
14881894
1489GENERATE_MAN = NO1895GENERATE_MAN = NO
14901896
1491# The MAN_OUTPUT tag is used to specify where the man pages will be put.1897# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
1492# If a relative path is entered the value of OUTPUT_DIRECTORY will be1898# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1493# put in front of it. If left blank `man' will be used as the default path.1899# it. A directory man3 will be created inside the directory specified by
1900# MAN_OUTPUT.
1901# The default directory is: man.
1902# This tag requires that the tag GENERATE_MAN is set to YES.
14941903
1495MAN_OUTPUT = man1904MAN_OUTPUT = man
14961905
1497# The MAN_EXTENSION tag determines the extension that is added to1906# The MAN_EXTENSION tag determines the extension that is added to the generated
1498# the generated man pages (default is the subroutine's section .3)1907# man pages. In case the manual section does not start with a number, the number
1908# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
1909# optional.
1910# The default value is: .3.
1911# This tag requires that the tag GENERATE_MAN is set to YES.
14991912
1500MAN_EXTENSION = .31913MAN_EXTENSION = .3
15011914
1502# If the MAN_LINKS tag is set to YES and Doxygen generates man output,1915# The MAN_SUBDIR tag determines the name of the directory created within
1503# then it will generate one additional man file for each entity1916# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
1504# documented in the real man page(s). These additional files1917# MAN_EXTENSION with the initial . removed.
1505# only source the real man page, but without them the man command1918# This tag requires that the tag GENERATE_MAN is set to YES.
1506# would be unable to find the correct page. The default is NO.1919
1920MAN_SUBDIR =
1921
1922# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
1923# will generate one additional man file for each entity documented in the real
1924# man page(s). These additional files only source the real man page, but without
1925# them the man command would be unable to find the correct page.
1926# The default value is: NO.
1927# This tag requires that the tag GENERATE_MAN is set to YES.
15071928
1508MAN_LINKS = NO1929MAN_LINKS = NO
15091930
1510#---------------------------------------------------------------------------1931#---------------------------------------------------------------------------
1511# configuration options related to the XML output1932# Configuration options related to the XML output
1512#---------------------------------------------------------------------------1933#---------------------------------------------------------------------------
15131934
1514# If the GENERATE_XML tag is set to YES Doxygen will1935# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
1515# generate an XML file that captures the structure of1936# captures the structure of the code including all documentation.
1516# the code including all documentation.1937# The default value is: NO.
15171938
1518GENERATE_XML = YES1939GENERATE_XML = YES
15191940
1520# The XML_OUTPUT tag is used to specify where the XML pages will be put.1941# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
1521# If a relative path is entered the value of OUTPUT_DIRECTORY will be1942# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1522# put in front of it. If left blank `xml' will be used as the default path.1943# it.
1944# The default directory is: xml.
1945# This tag requires that the tag GENERATE_XML is set to YES.
15231946
1524XML_OUTPUT = xml1947XML_OUTPUT = xml
15251948
1526# The XML_SCHEMA tag can be used to specify an XML schema,1949# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
1527# which can be used by a validating XML parser to check the1950# listings (including syntax highlighting and cross-referencing information) to
1528# syntax of the XML files.1951# the XML output. Note that enabling this will significantly increase the size
15291952# of the XML output.
1530XML_SCHEMA =1953# The default value is: YES.
15311954# This tag requires that the tag GENERATE_XML is set to YES.
1532# The XML_DTD tag can be used to specify an XML DTD,
1533# which can be used by a validating XML parser to check the
1534# syntax of the XML files.
1535
1536XML_DTD =
1537
1538# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
1539# dump the program listings (including syntax highlighting
1540# and cross-referencing information) to the XML output. Note that
1541# enabling this will significantly increase the size of the XML output.
15421955
1543XML_PROGRAMLISTING = YES1956XML_PROGRAMLISTING = YES
15441957
1545#---------------------------------------------------------------------------1958#---------------------------------------------------------------------------
1546# configuration options related to the DOCBOOK output1959# Configuration options related to the DOCBOOK output
1547#---------------------------------------------------------------------------1960#---------------------------------------------------------------------------
15481961
1549# If the GENERATE_DOCBOOK tag is set to YES Doxygen will generate DOCBOOK files1962# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
1550# that can be used to generate PDF.1963# that can be used to generate PDF.
1964# The default value is: NO.
15511965
1552GENERATE_DOCBOOK = NO1966GENERATE_DOCBOOK = NO
15531967
1554# The DOCBOOK_OUTPUT tag is used to specify where the DOCBOOK pages will be put.1968# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
1555# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in1969# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
1556# front of it. If left blank docbook will be used as the default path.1970# front of it.
1971# The default directory is: docbook.
1972# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
15571973
1558DOCBOOK_OUTPUT = docbook1974DOCBOOK_OUTPUT = docbook
15591975
1560#---------------------------------------------------------------------------1976# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
1561# configuration options for the AutoGen Definitions output1977# program listings (including syntax highlighting and cross-referencing
1562#---------------------------------------------------------------------------1978# information) to the DOCBOOK output. Note that enabling this will significantly
15631979# increase the size of the DOCBOOK output.
1564# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will1980# The default value is: NO.
1565# generate an AutoGen Definitions (see autogen.sf.net) file1981# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
1566# that captures the structure of the code including all1982
1567# documentation. Note that this feature is still experimental1983DOCBOOK_PROGRAMLISTING = NO
1568# and incomplete at the moment.1984
1985#---------------------------------------------------------------------------
1986# Configuration options for the AutoGen Definitions output
1987#---------------------------------------------------------------------------
1988
1989# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
1990# AutoGen Definitions (see http://autogen.sf.net) file that captures the
1991# structure of the code including all documentation. Note that this feature is
1992# still experimental and incomplete at the moment.
1993# The default value is: NO.
15691994
1570GENERATE_AUTOGEN_DEF = NO1995GENERATE_AUTOGEN_DEF = NO
15711996
1572#---------------------------------------------------------------------------1997#---------------------------------------------------------------------------
1573# configuration options related to the Perl module output1998# Configuration options related to the Perl module output
1574#---------------------------------------------------------------------------1999#---------------------------------------------------------------------------
15752000
1576# If the GENERATE_PERLMOD tag is set to YES Doxygen will2001# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
1577# generate a Perl module file that captures the structure of2002# file that captures the structure of the code including all documentation.
1578# the code including all documentation. Note that this2003#
1579# feature is still experimental and incomplete at the2004# Note that this feature is still experimental and incomplete at the moment.
1580# moment.2005# The default value is: NO.
15812006
1582GENERATE_PERLMOD = NO2007GENERATE_PERLMOD = NO
15832008
1584# If the PERLMOD_LATEX tag is set to YES Doxygen will generate2009# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
1585# the necessary Makefile rules, Perl scripts and LaTeX code to be able2010# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
1586# to generate PDF and DVI output from the Perl module output.2011# output from the Perl module output.
2012# The default value is: NO.
2013# This tag requires that the tag GENERATE_PERLMOD is set to YES.
15872014
1588PERLMOD_LATEX = NO2015PERLMOD_LATEX = NO
15892016
1590# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be2017# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
1591# nicely formatted so it can be parsed by a human reader.2018# formatted so it can be parsed by a human reader. This is useful if you want to
1592# This is useful2019# understand what is going on. On the other hand, if this tag is set to NO, the
1593# if you want to understand what is going on.2020# size of the Perl module output will be much smaller and Perl will parse it
1594# On the other hand, if this2021# just the same.
1595# tag is set to NO the size of the Perl module output will be much smaller2022# The default value is: YES.
1596# and Perl will parse it just the same.2023# This tag requires that the tag GENERATE_PERLMOD is set to YES.
15972024
1598PERLMOD_PRETTY = YES2025PERLMOD_PRETTY = YES
15992026
1600# The names of the make variables in the generated doxyrules.make file2027# The names of the make variables in the generated doxyrules.make file are
1601# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.2028# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
1602# This is useful so different doxyrules.make files included by the same2029# so different doxyrules.make files included by the same Makefile don't
1603# Makefile don't overwrite each other's variables.2030# overwrite each other's variables.
2031# This tag requires that the tag GENERATE_PERLMOD is set to YES.
16042032
1605PERLMOD_MAKEVAR_PREFIX =2033PERLMOD_MAKEVAR_PREFIX =
16062034
@@ -1608,112 +2036,129 @@
1608# Configuration options related to the preprocessor2036# Configuration options related to the preprocessor
1609#---------------------------------------------------------------------------2037#---------------------------------------------------------------------------
16102038
1611# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will2039# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
1612# evaluate all C-preprocessor directives found in the sources and include2040# C-preprocessor directives found in the sources and include files.
1613# files.2041# The default value is: YES.
16142042
1615ENABLE_PREPROCESSING = YES2043ENABLE_PREPROCESSING = YES
16162044
1617# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro2045# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
1618# names in the source code. If set to NO (the default) only conditional2046# in the source code. If set to NO, only conditional compilation will be
1619# compilation will be performed. Macro expansion can be done in a controlled2047# performed. Macro expansion can be done in a controlled way by setting
1620# way by setting EXPAND_ONLY_PREDEF to YES.2048# EXPAND_ONLY_PREDEF to YES.
2049# The default value is: NO.
2050# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
16212051
1622MACRO_EXPANSION = NO2052MACRO_EXPANSION = NO
16232053
1624# 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: