Mir

Merge lp:mir/0.25 into lp:mir/ubuntu

Proposed by Brandon Schaefer
Status: Merged
Approved by: Brandon Schaefer
Approved revision: 3817
Merged at revision: 1293
Proposed branch: lp:mir/0.25
Merge into: lp:mir/ubuntu
Diff against target: 61613 lines (+22843/-14637)
874 files modified
.bzrignore (+2/-0)
3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h (+0/-36)
CMakeLists.txt (+23/-12)
benchmarks/frame-uniformity/CMakeLists.txt (+2/-0)
cmake/FindGtestGmock.cmake (+29/-10)
cmake/MirCommon.cmake (+0/-18)
cross-compile-chroot.sh (+5/-0)
debian/changelog (+103/-0)
debian/control (+62/-17)
debian/copyright (+1/-1)
debian/libmircommon7.install (+1/-1)
debian/libmircore-dev.install (+3/-0)
debian/libmircore1.install (+1/-0)
debian/libmirplatform14.install (+1/-1)
debian/libmirrenderer-dev.install (+2/-0)
debian/libmirserver42.install (+1/-1)
debian/mir-platform-graphics-android11.install (+1/-1)
debian/mir-platform-graphics-mesa-kms11.install (+1/-1)
debian/mir-platform-graphics-mesa-x11.install (+1/-1)
debian/mir-platform-input-evdev6.install (+1/-1)
debian/rules (+5/-0)
doc/Doxyfile.in (+1502/-965)
doc/abi_compatibility_tools.md (+1/-1)
doc/building_source_for_arm.md (+3/-3)
doc/component_reports.md (+1/-0)
doc/footer.html.in (+1/-1)
doc/mainpage.md (+3/-5)
doc/measuring_latency.md (+28/-0)
doc/setup_vmware_for_mir.md (+1/-1)
examples/CMakeLists.txt (+7/-0)
examples/animated_cursor_demo_client.c (+2/-2)
examples/camera.c (+44/-14)
examples/client_touch_validator.cpp (+2/-2)
examples/cursors_demo_client.c (+2/-2)
examples/demo_client_display_config.c (+2/-2)
examples/eglapp.c (+208/-161)
examples/eglapp.h (+18/-4)
examples/eglcounter.cpp (+2/-2)
examples/eglflash.c (+2/-2)
examples/eglplasma.c (+2/-2)
examples/eglstateswitcher.c (+2/-2)
examples/egltriangle.c (+2/-2)
examples/multi_stream.cpp (+17/-10)
examples/pointer_confinement.c (+283/-0)
examples/prompt_session.c (+2/-2)
examples/render_surfaces.cpp (+16/-2)
examples/scroll.cpp (+2/-2)
examples/server_example_adorning_compositor.cpp (+1/-1)
examples/server_example_canonical_window_manager.cpp (+6/-2)
examples/server_example_input_device_config.cpp (+0/-3)
examples/server_example_window_management_info.cpp (+6/-2)
examples/target.c (+2/-2)
examples/tooltip.c (+4/-4)
include/client/mir/event_printer.h (+2/-1)
include/client/mir/events/event_builders.h (+18/-8)
include/client/mir_toolkit/client_types.h (+30/-36)
include/client/mir_toolkit/cursors.h (+4/-2)
include/client/mir_toolkit/events/event.h (+43/-26)
include/client/mir_toolkit/events/input/input_event.h (+11/-9)
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 (+3/-3)
include/client/mir_toolkit/events/input_device_state_event.h (+9/-8)
include/client/mir_toolkit/events/keymap_event.h (+1/-2)
include/client/mir_toolkit/events/prompt_session_event.h (+1/-1)
include/client/mir_toolkit/events/surface_event.h (+4/-4)
include/client/mir_toolkit/events/surface_output_event.h (+11/-0)
include/client/mir_toolkit/events/surface_placement.h (+47/-0)
include/client/mir_toolkit/mir_buffer_stream.h (+62/-15)
include/client/mir_toolkit/mir_connection.h (+20/-3)
include/client/mir_toolkit/mir_cookie.h (+7/-6)
include/client/mir_toolkit/mir_cursor_configuration.h (+1/-1)
include/client/mir_toolkit/mir_display_configuration.h (+97/-0)
include/client/mir_toolkit/mir_input_device.h (+1/-1)
include/client/mir_toolkit/mir_surface.h (+81/-13)
include/client/mir_toolkit/mir_wait.h (+3/-2)
include/client/mir_toolkit/version.h (+2/-2)
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 (+1/-1)
include/common/mir/graphics/native_buffer.h (+8/-12)
include/common/mir/input/keymap.h (+6/-0)
include/common/mir/posix_rw_mutex.h (+69/-0)
include/common/mir/time/posix_timestamp.h (+59/-0)
include/cookie/mir/cookie/authority.h (+1/-1)
include/core/mir/geometry/rectangle.h (+5/-0)
include/core/mir_toolkit/common.h (+141/-1)
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 (+6/-8)
include/platform/mir/graphics/display_configuration.h (+29/-16)
include/platform/mir/graphics/frame.h (+47/-0)
include/platform/mir/graphics/gamma_curves.h (+49/-0)
include/platform/mir/graphics/gl_context.h (+0/-44)
include/platform/mir/graphics/platform.h (+16/-2)
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 (+8/-7)
include/platform/mir/input/platform.h (+11/-4)
include/renderer/mir/renderer/renderer.h (+6/-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/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/session.h (+3/-0)
include/server/mir/frontend/session_mediator_report.h (+0/-2)
include/server/mir/input/seat_report.h (+55/-0)
include/server/mir/main_loop.h (+6/-2)
include/server/mir/observer_registrar.h (+92/-0)
include/server/mir/scene/null_surface_observer.h (+1/-0)
include/server/mir/scene/prompt_session.h (+4/-4)
include/server/mir/scene/surface.h (+3/-1)
include/server/mir/scene/surface_creation_parameters.h (+6/-1)
include/server/mir/scene/surface_observer.h (+2/-0)
include/server/mir/server.h (+7/-0)
include/server/mir/server_status_listener.h (+2/-0)
include/server/mir/shell/abstract_shell.h (+4/-0)
include/server/mir/shell/shell_report.h (+2/-0)
include/server/mir/shell/surface_specification.h (+6/-1)
include/test/mir/test/doubles/fake_display.h (+4/-2)
include/test/mir/test/doubles/mock_display_configuration.h (+4/-4)
include/test/mir/test/doubles/mock_egl.h (+4/-0)
include/test/mir/test/doubles/mock_seat_report.h (+52/-0)
include/test/mir/test/doubles/null_display.h (+20/-5)
include/test/mir/test/doubles/null_display_buffer.h (+1/-1)
include/test/mir/test/doubles/null_gl_context.h (+2/-2)
include/test/mir/test/doubles/stub_display_configuration.h (+22/-2)
include/test/mir/test/doubles/stub_session.h (+5/-3)
include/test/mir/test/doubles/stub_surface.h (+1/-0)
include/test/mir/test/event_matchers.h (+8/-24)
include/test/mir_test_framework/any_surface.h (+3/-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/placement_applying_shell.h (+3/-0)
include/test/mir_test_framework/stub_server_platform_factory.h (+2/-10)
playground/CMakeLists.txt (+22/-0)
playground/README (+3/-4)
playground/demo-shell/demo_compositor.cpp (+1/-1)
playground/demo-shell/demo_shell.cpp (+1/-1)
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 (+7/-7)
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 (+1/-1)
playground/demo-shell/window_manager.h (+1/-1)
playground/diamond.c (+134/-0)
playground/diamond.h (+40/-0)
playground/egldiamond_render_surface.c (+173/-0)
playground/mir_egl_platform_shim.c (+103/-0)
playground/mir_egl_platform_shim.h (+37/-0)
playground/render_surface.cpp (+252/-0)
src/CMakeLists.txt (+5/-2)
src/capnproto/CMakeLists.txt (+29/-0)
src/capnproto/mir_event.capnp (+238/-0)
src/client/CMakeLists.txt (+9/-13)
src/client/atomic_callback.h (+3/-3)
src/client/buffer.cpp (+2/-7)
src/client/buffer.h (+3/-3)
src/client/buffer_stream.cpp (+70/-251)
src/client/buffer_stream.h (+9/-3)
src/client/buffer_vault.cpp (+33/-19)
src/client/buffer_vault.h (+2/-2)
src/client/client_buffer_depository.cpp (+0/-92)
src/client/client_buffer_depository.h (+0/-78)
src/client/client_buffer_stream.h (+4/-0)
src/client/connection_configuration.h (+2/-0)
src/client/connection_surface_map.cpp (+31/-7)
src/client/connection_surface_map.h (+5/-1)
src/client/default_connection_configuration.cpp (+13/-2)
src/client/default_connection_configuration.h (+2/-0)
src/client/display_configuration_api.cpp (+113/-1)
src/client/error_buffer.cpp (+2/-3)
src/client/error_buffer.h (+2/-3)
src/client/error_handler.h (+35/-0)
src/client/error_stream.cpp (+123/-1)
src/client/error_stream.h (+50/-1)
src/client/event.cpp (+96/-71)
src/client/event_printer.cpp (+18/-5)
src/client/events/event_builders.cpp (+77/-42)
src/client/handle_event_exception.h (+30/-0)
src/client/input/android/android_input_receiver.cpp (+27/-16)
src/client/input/input_event.cpp (+59/-66)
src/client/input/xkb_mapper.cpp (+151/-28)
src/client/mir_buffer.h (+4/-3)
src/client/mir_buffer_api.cpp (+40/-20)
src/client/mir_buffer_stream_api.cpp (+90/-3)
src/client/mir_connection.cpp (+90/-23)
src/client/mir_connection.h (+35/-9)
src/client/mir_connection_api.cpp (+16/-1)
src/client/mir_cookie.cpp (+10/-9)
src/client/mir_cookie.h (+6/-4)
src/client/mir_cursor_api.cpp (+16/-15)
src/client/mir_render_surface.h (+59/-0)
src/client/mir_render_surface_api.cpp (+183/-0)
src/client/mir_surface.cpp (+7/-2)
src/client/mir_surface.h (+6/-2)
src/client/mir_surface_api.cpp (+64/-2)
src/client/mirclient.pc.in (+3/-4)
src/client/no_tls_future-inl.h (+356/-73)
src/client/probing_client_platform_factory.cpp (+5/-3)
src/client/probing_client_platform_factory.h (+3/-1)
src/client/render_surface.cpp (+181/-0)
src/client/render_surface.h (+115/-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_display_server.cpp (+7/-7)
src/client/rpc/mir_display_server.h (+4/-4)
src/client/rpc/mir_protobuf_rpc_channel.cpp (+19/-1)
src/client/rpc/mir_protobuf_rpc_channel.h (+3/-0)
src/client/screencast_stream.cpp (+29/-9)
src/client/screencast_stream.h (+5/-3)
src/client/symbols.map (+46/-3)
src/common/CMakeLists.txt (+11/-8)
src/common/dispatch/CMakeLists.txt (+0/-1)
src/common/dispatch/legacy_readable_fd.cpp (+0/-34)
src/common/dispatch/multiplexing_dispatchable.cpp (+8/-78)
src/common/events/CMakeLists.txt (+4/-0)
src/common/events/close_surface_event.cpp (+4/-4)
src/common/events/event.cpp (+71/-106)
src/common/events/input_configuration_event.cpp (+8/-8)
src/common/events/input_device_state_event.cpp (+31/-128)
src/common/events/input_event.cpp (+0/-5)
src/common/events/keyboard_event.cpp (+31/-26)
src/common/events/keymap_event.cpp (+11/-113)
src/common/events/motion_event.cpp (+130/-109)
src/common/events/orientation_event.cpp (+6/-6)
src/common/events/prompt_session_event.cpp (+4/-4)
src/common/events/resize_event.cpp (+8/-8)
src/common/events/surface_event.cpp (+8/-8)
src/common/events/surface_output_event.cpp (+22/-12)
src/common/events/surface_placement_event.cpp (+55/-0)
src/common/fatal/CMakeLists.txt (+0/-3)
src/common/geometry/CMakeLists.txt (+0/-27)
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 (+101/-112)
src/cookie/CMakeLists.txt (+2/-3)
src/core/CMakeLists.txt (+53/-0)
src/core/geometry/rectangle.cpp (+25/-29)
src/core/mircore.pc.in (+10/-0)
src/core/symbols.map (+51/-0)
src/include/client/mir/client_buffer.h (+8/-3)
src/include/client/mir/client_platform.h (+2/-1)
src/include/client/mir/client_platform_factory.h (+16/-2)
src/include/client/mir_toolkit/client_types_nbs.h (+1/-1)
src/include/client/mir_toolkit/mir_buffer.h (+17/-20)
src/include/client/mir_toolkit/mir_buffer_private.h (+51/-0)
src/include/client/mir_toolkit/mir_presentation_chain.h (+1/-0)
src/include/client/mir_toolkit/mir_render_surface.h (+160/-0)
src/include/common/mir/events/close_surface_event.h (+0/-3)
src/include/common/mir/events/event.h (+9/-63)
src/include/common/mir/events/input_configuration_event.h (+2/-7)
src/include/common/mir/events/input_device_state_event.h (+4/-25)
src/include/common/mir/events/input_event.h (+0/-1)
src/include/common/mir/events/keyboard_event.h (+3/-15)
src/include/common/mir/events/keymap_event.h (+0/-18)
src/include/common/mir/events/motion_event.h (+9/-40)
src/include/common/mir/events/orientation_event.h (+0/-4)
src/include/common/mir/events/prompt_session_event.h (+0/-3)
src/include/common/mir/events/resize_event.h (+0/-5)
src/include/common/mir/events/surface_event.h (+0/-5)
src/include/common/mir/events/surface_output_event.h (+3/-8)
src/include/common/mir/events/surface_placement_event.h (+36/-0)
src/include/common/mir/input/key_mapper.h (+0/-1)
src/include/common/mir/input/xkb_mapper.h (+21/-5)
src/include/common/mir/output_type_names.h (+26/-0)
src/include/common/mir/protobuf/display_server.h (+4/-4)
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/options/configuration.h (+2/-0)
src/include/server/mir/compositor/buffer_stream.h (+1/-0)
src/include/server/mir/default_server_configuration.h (+10/-4)
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 (+2/-0)
src/include/server/mir/frontend/event_sink.h (+2/-0)
src/include/server/mir/frontend/unsupported_feature_exception.h (+0/-41)
src/include/server/mir/glib_main_loop.h (+2/-0)
src/include/server/mir/graphics/surfaceless_egl_context.h (+2/-2)
src/include/server/mir/input/validator.h (+9/-10)
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 (+1/-0)
src/include/server/mir/scene/surface_observers.h (+1/-0)
src/platform/CMakeLists.txt (+2/-2)
src/platform/graphics/CMakeLists.txt (+3/-0)
src/platform/graphics/atomic_frame.cpp (+50/-0)
src/platform/graphics/display_configuration.cpp (+6/-30)
src/platform/graphics/gamma_curves.cpp (+38/-0)
src/platform/mirplatform.pc.in (+1/-0)
src/platform/options/default_configuration.cpp (+7/-3)
src/platform/symbols.map (+11/-12)
src/platforms/CMakeLists.txt (+5/-6)
src/platforms/android/client/CMakeLists.txt (+2/-4)
src/platforms/android/client/android_client_platform.cpp (+21/-10)
src/platforms/android/client/android_client_platform.h (+6/-3)
src/platforms/android/client/buffer.cpp (+60/-24)
src/platforms/android/client/buffer.h (+9/-4)
src/platforms/android/client/buffer_registrar.h (+3/-3)
src/platforms/android/client/client_platform_factory.cpp (+3/-2)
src/platforms/android/client/egl_native_surface_interpreter.cpp (+5/-6)
src/platforms/android/client/egl_native_surface_interpreter.h (+18/-1)
src/platforms/android/client/gralloc_registrar.cpp (+7/-7)
src/platforms/android/client/gralloc_registrar.h (+2/-2)
src/platforms/android/common/android_native_buffer.cpp (+30/-0)
src/platforms/android/common/mir_native_window.cpp (+6/-0)
src/platforms/android/common/syncfence.cpp (+17/-0)
src/platforms/android/include/android_format_conversion-inl.h (+1/-0)
src/platforms/android/include/android_native_buffer.h (+3/-1)
src/platforms/android/include/fence.h (+3/-0)
src/platforms/android/include/mir_native_window.h (+2/-1)
src/platforms/android/include/native_buffer.h (+11/-7)
src/platforms/android/include/sync_fence.h (+5/-3)
src/platforms/android/server/CMakeLists.txt (+2/-3)
src/platforms/android/server/buffer.h (+7/-5)
src/platforms/android/server/device_quirks.cpp (+9/-7)
src/platforms/android/server/device_quirks.h (+2/-2)
src/platforms/android/server/display.cpp (+113/-52)
src/platforms/android/server/display.h (+21/-3)
src/platforms/android/server/display_buffer.cpp (+1/-1)
src/platforms/android/server/display_buffer.h (+1/-1)
src/platforms/android/server/display_configuration.cpp (+5/-1)
src/platforms/android/server/fb_device.cpp (+6/-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 (+2/-4)
src/platforms/android/server/gralloc_module.cpp (+3/-3)
src/platforms/android/server/graphic_buffer_allocator.cpp (+0/-19)
src/platforms/android/server/graphic_buffer_allocator.h (+1/-2)
src/platforms/android/server/hal_component_factory.cpp (+4/-1)
src/platforms/android/server/hwc_blanking_control.cpp (+19/-7)
src/platforms/android/server/hwc_configuration.h (+6/-4)
src/platforms/android/server/hwc_device.cpp (+2/-1)
src/platforms/android/server/hwc_fallback_gl_renderer.cpp (+2/-2)
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 (+3/-3)
src/platforms/android/server/hwc_layers.h (+0/-1)
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 (+10/-9)
src/platforms/android/server/real_hwc_wrapper.cpp (+11/-3)
src/platforms/android/server/real_hwc_wrapper.h (+3/-3)
src/platforms/android/server/server_render_window.cpp (+2/-2)
src/platforms/android/server/server_render_window.h (+1/-1)
src/platforms/android/utils/CMakeLists.txt (+1/-1)
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 (+17/-6)
src/platforms/android/utils/test_android_hardware_sanity.cpp (+22/-8)
src/platforms/common/server/CMakeLists.txt (+4/-1)
src/platforms/common/server/kms-utils/CMakeLists.txt (+6/-2)
src/platforms/common/server/kms-utils/kms_connector.cpp (+2/-29)
src/platforms/common/server/shm_buffer.cpp (+1/-11)
src/platforms/common/server/shm_buffer.h (+14/-5)
src/platforms/eglstream-kms/CMakeLists.txt (+2/-0)
src/platforms/eglstream-kms/client/CMakeLists.txt (+2/-4)
src/platforms/eglstream-kms/client/client_buffer.cpp (+26/-15)
src/platforms/eglstream-kms/client/client_buffer.h (+7/-5)
src/platforms/eglstream-kms/client/client_platform.cpp (+9/-3)
src/platforms/eglstream-kms/client/client_platform.h (+1/-0)
src/platforms/eglstream-kms/client/client_platform_factory.cpp (+3/-1)
src/platforms/eglstream-kms/include/native_buffer.h (+39/-0)
src/platforms/eglstream-kms/server/CMakeLists.txt (+3/-4)
src/platforms/eglstream-kms/server/buffer_allocator.cpp (+3/-5)
src/platforms/eglstream-kms/server/display.cpp (+29/-8)
src/platforms/eglstream-kms/server/display.h (+11/-3)
src/platforms/eglstream-kms/server/egl_output.cpp (+0/-2)
src/platforms/eglstream-kms/server/platform.cpp (+9/-3)
src/platforms/eglstream-kms/server/platform_symbols.cpp (+13/-24)
src/platforms/eglstream-kms/server/software_buffer.cpp (+48/-0)
src/platforms/eglstream-kms/server/software_buffer.h (+52/-0)
src/platforms/evdev/CMakeLists.txt (+2/-3)
src/platforms/evdev/libinput_device.cpp (+17/-11)
src/platforms/evdev/libinput_device.h (+1/-1)
src/platforms/mesa/CMakeLists.txt (+2/-2)
src/platforms/mesa/client/CMakeLists.txt (+3/-4)
src/platforms/mesa/client/client_buffer.cpp (+45/-19)
src/platforms/mesa/client/client_buffer.h (+9/-5)
src/platforms/mesa/client/client_platform.cpp (+11/-21)
src/platforms/mesa/client/client_platform.h (+2/-2)
src/platforms/mesa/client/client_platform_factory.cpp (+3/-1)
src/platforms/mesa/client/native_surface.cpp (+27/-9)
src/platforms/mesa/client/native_surface.h (+3/-2)
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 (+42/-0)
src/platforms/mesa/server/CMakeLists.txt (+2/-0)
src/platforms/mesa/server/buffer_allocator.cpp (+6/-35)
src/platforms/mesa/server/buffer_allocator.h (+1/-2)
src/platforms/mesa/server/display_helpers.cpp (+2/-1)
src/platforms/mesa/server/gbm_buffer.cpp (+4/-96)
src/platforms/mesa/server/gbm_buffer.h (+2/-14)
src/platforms/mesa/server/ipc_operations.cpp (+5/-2)
src/platforms/mesa/server/kms/CMakeLists.txt (+2/-4)
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 (+39/-10)
src/platforms/mesa/server/kms/display.h (+11/-3)
src/platforms/mesa/server/kms/display_buffer.cpp (+27/-18)
src/platforms/mesa/server/kms/display_buffer.h (+1/-1)
src/platforms/mesa/server/kms/kms_output.h (+3/-0)
src/platforms/mesa/server/kms/kms_page_flipper.cpp (+36/-10)
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/page_flipper.h (+3/-2)
src/platforms/mesa/server/kms/platform_symbols.cpp (+2/-1)
src/platforms/mesa/server/kms/real_kms_display_configuration.cpp (+54/-1)
src/platforms/mesa/server/kms/real_kms_display_configuration.h (+1/-0)
src/platforms/mesa/server/kms/real_kms_output.cpp (+50/-10)
src/platforms/mesa/server/kms/real_kms_output.h (+6/-0)
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 (+3/-4)
src/platforms/mesa/server/x11/graphics/CMakeLists.txt (+1/-3)
src/platforms/mesa/server/x11/graphics/display.cpp (+115/-132)
src/platforms/mesa/server/x11/graphics/display.h (+32/-52)
src/platforms/mesa/server/x11/graphics/display_buffer.cpp (+108/-19)
src/platforms/mesa/server/x11/graphics/display_buffer.h (+30/-9)
src/platforms/mesa/server/x11/graphics/display_configuration.cpp (+7/-2)
src/platforms/mesa/server/x11/graphics/display_configuration.h (+2/-0)
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/platform.cpp (+6/-2)
src/platforms/mesa/server/x11/graphics/platform.h (+5/-1)
src/platforms/mesa/server/x11/input/input_device.cpp (+6/-0)
src/protobuf/CMakeLists.txt (+2/-2)
src/protobuf/mir_protobuf.proto (+19/-0)
src/protobuf/mir_protobuf_wire.proto (+1/-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/renderer.cpp (+70/-63)
src/renderers/gl/renderer.h (+2/-2)
src/renderers/gl/renderer_factory.cpp (+1/-3)
src/renderers/gl/renderer_factory.h (+3/-3)
src/server/CMakeLists.txt (+9/-3)
src/server/compositor/CMakeLists.txt (+0/-2)
src/server/compositor/buffer_acquisition.h (+6/-35)
src/server/compositor/buffer_map.cpp (+8/-4)
src/server/compositor/buffer_map.h (+3/-1)
src/server/compositor/buffer_queue.cpp (+0/-699)
src/server/compositor/buffer_queue.h (+0/-135)
src/server/compositor/buffer_stream_factory.cpp (+9/-24)
src/server/compositor/buffer_stream_factory.h (+1/-3)
src/server/compositor/buffer_stream_surfaces.cpp (+0/-166)
src/server/compositor/buffer_stream_surfaces.h (+0/-85)
src/server/compositor/compositing_screencast.cpp (+0/-1)
src/server/compositor/default_configuration.cpp (+2/-3)
src/server/compositor/default_display_buffer_compositor.cpp (+14/-6)
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 (+11/-0)
src/server/compositor/multi_monitor_arbiter.h (+2/-1)
src/server/compositor/multi_threaded_compositor.h (+1/-1)
src/server/compositor/screencast_display_buffer.cpp (+12/-3)
src/server/compositor/screencast_display_buffer.h (+13/-5)
src/server/compositor/stream.cpp (+11/-0)
src/server/compositor/stream.h (+2/-0)
src/server/compositor/temporary_buffers.cpp (+1/-17)
src/server/compositor/temporary_buffers.h (+0/-3)
src/server/display_server.cpp (+1/-2)
src/server/frontend/CMakeLists.txt (+0/-2)
src/server/frontend/authorizing_display_changer.cpp (+8/-0)
src/server/frontend/authorizing_display_changer.h (+2/-1)
src/server/frontend/buffer_stream_tracker.cpp (+0/-119)
src/server/frontend/buffer_stream_tracker.h (+0/-82)
src/server/frontend/client_buffer_tracker.cpp (+0/-74)
src/server/frontend/client_buffer_tracker.h (+0/-63)
src/server/frontend/event_sender.cpp (+10/-0)
src/server/frontend/event_sender.h (+1/-0)
src/server/frontend/protobuf_buffer_packer.cpp (+13/-0)
src/server/frontend/protobuf_buffer_packer.h (+1/-0)
src/server/frontend/protobuf_message_processor.cpp (+8/-11)
src/server/frontend/protobuf_message_processor.h (+1/-1)
src/server/frontend/session_mediator.cpp (+83/-125)
src/server/frontend/session_mediator.h (+7/-8)
src/server/glib_main_loop.cpp (+16/-0)
src/server/graphics/CMakeLists.txt (+4/-1)
src/server/graphics/default_configuration.cpp (+10/-21)
src/server/graphics/nested/CMakeLists.txt (+3/-0)
src/server/graphics/nested/buffer.cpp (+200/-0)
src/server/graphics/nested/buffer.h (+59/-0)
src/server/graphics/nested/display.cpp (+30/-25)
src/server/graphics/nested/display.h (+19/-6)
src/server/graphics/nested/display_buffer.cpp (+111/-12)
src/server/graphics/nested/display_buffer.h (+28/-7)
src/server/graphics/nested/host_chain.h (+45/-0)
src/server/graphics/nested/host_connection.h (+19/-2)
src/server/graphics/nested/host_stream.h (+46/-0)
src/server/graphics/nested/host_surface.h (+2/-1)
src/server/graphics/nested/host_surface_spec.h (+49/-0)
src/server/graphics/nested/input_platform.cpp (+26/-21)
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 (+267/-4)
src/server/graphics/nested/mir_client_host_connection.h (+12/-2)
src/server/graphics/nested/native_buffer.h (+63/-0)
src/server/graphics/nested/nested_display_configuration.cpp (+13/-4)
src/server/graphics/nested/nested_display_configuration.h (+3/-0)
src/server/graphics/nested/passthrough_option.h (+35/-0)
src/server/graphics/nested/platform.cpp (+128/-0)
src/server/graphics/nested/platform.h (+66/-0)
src/server/graphics/software_cursor.cpp (+14/-4)
src/server/input/CMakeLists.txt (+1/-1)
src/server/input/android/input_sender.cpp (+24/-6)
src/server/input/basic_seat.cpp (+10/-2)
src/server/input/basic_seat.h (+3/-1)
src/server/input/default-theme.h (+165/-165)
src/server/input/default_configuration.cpp (+4/-2)
src/server/input/default_event_builder.cpp (+35/-31)
src/server/input/default_event_builder.h (+7/-6)
src/server/input/default_input_device_hub.cpp (+16/-1)
src/server/input/default_input_device_hub.h (+5/-1)
src/server/input/key_repeat_dispatcher.cpp (+25/-16)
src/server/input/seat_input_device_tracker.cpp (+38/-14)
src/server/input/seat_input_device_tracker.h (+9/-2)
src/server/input/surface_input_dispatcher.cpp (+30/-48)
src/server/input/surface_input_dispatcher.h (+3/-3)
src/server/input/touchspot_controller.cpp (+17/-2)
src/server/input/validator.cpp (+112/-191)
src/server/mirserver.pc.in (+2/-2)
src/server/report/default_server_configuration.cpp (+9/-0)
src/server/report/logging/CMakeLists.txt (+1/-0)
src/server/report/logging/display_configuration_report.cpp (+18/-28)
src/server/report/logging/display_report.cpp (+29/-20)
src/server/report/logging/display_report.h (+5/-7)
src/server/report/logging/logging_report_factory.cpp (+7/-1)
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 (+0/-5)
src/server/report/logging/session_mediator_report.h (+0/-2)
src/server/report/logging_report_factory.h (+1/-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 (+5/-0)
src/server/report/lttng/session_mediator_report.cpp (+0/-1)
src/server/report/lttng/session_mediator_report.h (+0/-1)
src/server/report/lttng/session_mediator_report_tp.h (+0/-1)
src/server/report/lttng_report_factory.h (+1/-0)
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 (+11/-0)
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 (+0/-4)
src/server/report/null/session_mediator_report.h (+0/-2)
src/server/report/null_report_factory.h (+2/-0)
src/server/report/report_factory.h (+2/-0)
src/server/scene/CMakeLists.txt (+1/-0)
src/server/scene/application_session.cpp (+6/-0)
src/server/scene/application_session.h (+1/-0)
src/server/scene/basic_surface.cpp (+41/-20)
src/server/scene/basic_surface.h (+1/-3)
src/server/scene/default_configuration.cpp (+12/-2)
src/server/scene/gl_pixel_buffer.cpp (+2/-2)
src/server/scene/gl_pixel_buffer.h (+9/-3)
src/server/scene/global_event_sender.cpp (+5/-0)
src/server/scene/global_event_sender.h (+1/-0)
src/server/scene/legacy_surface_change_notification.cpp (+4/-0)
src/server/scene/legacy_surface_change_notification.h (+1/-0)
src/server/scene/mediating_display_changer.cpp (+221/-39)
src/server/scene/mediating_display_changer.h (+7/-5)
src/server/scene/null_surface_observer.cpp (+1/-0)
src/server/scene/output_properties_cache.cpp (+1/-0)
src/server/scene/output_properties_cache.h (+1/-0)
src/server/scene/surface_allocator.cpp (+0/-8)
src/server/scene/surface_event_source.cpp (+6/-0)
src/server/scene/unsupported_coordinate_translator.cpp (+3/-2)
src/server/server.cpp (+3/-62)
src/server/shell/abstract_shell.cpp (+54/-2)
src/server/shell/canonical_window_manager.cpp (+4/-0)
src/server/symbols.map (+4/-1)
src/utils/out.c (+1/-26)
src/utils/vanity.c (+112/-18)
tests/CMakeLists.txt (+6/-12)
tests/acceptance-tests/CMakeLists.txt (+5/-1)
tests/acceptance-tests/buffer_stream_arrangement.h (+101/-0)
tests/acceptance-tests/server_configuration_options.cpp (+32/-19)
tests/acceptance-tests/staging/CMakeLists.txt (+10/-0)
tests/acceptance-tests/staging/test_buffer_stream_arrangement.cpp (+85/-0)
tests/acceptance-tests/staging/test_presentation_chain.cpp (+60/-10)
tests/acceptance-tests/staging/test_render_surface.cpp (+141/-0)
tests/acceptance-tests/strict_close.cpp (+45/-0)
tests/acceptance-tests/test_application_not_responding_detection.cpp (+3/-3)
tests/acceptance-tests/test_buffer_stream_arrangement.cpp (+153/-195)
tests/acceptance-tests/test_client_input.cpp (+22/-21)
tests/acceptance-tests/test_client_library.cpp (+0/-31)
tests/acceptance-tests/test_client_surface_events.cpp (+22/-3)
tests/acceptance-tests/test_client_surface_visibility.cpp (+2/-0)
tests/acceptance-tests/test_client_surfaces.cpp (+22/-0)
tests/acceptance-tests/test_confined_pointer.cpp (+120/-21)
tests/acceptance-tests/test_custom_input_dispatcher.cpp (+0/-3)
tests/acceptance-tests/test_custom_window_management.cpp (+235/-1)
tests/acceptance-tests/test_latency.cpp (+36/-4)
tests/acceptance-tests/test_nested_input.cpp (+1/-1)
tests/acceptance-tests/test_nested_mir.cpp (+138/-54)
tests/acceptance-tests/test_new_display_configuration.cpp (+574/-20)
tests/acceptance-tests/test_prompt_session_client_api.cpp (+23/-17)
tests/acceptance-tests/test_server_disconnect.cpp (+6/-1)
tests/acceptance-tests/test_session_mediator_report.cpp (+1/-2)
tests/acceptance-tests/test_unresponsive_client.cpp (+7/-2)
tests/acceptance-tests/throwback/CMakeLists.txt (+0/-2)
tests/acceptance-tests/throwback/test_client_library_errors.cpp (+91/-35)
tests/include/mir/test/doubles/fake_renderable.h (+5/-0)
tests/include/mir/test/doubles/mock_android_native_buffer.h (+6/-3)
tests/include/mir/test/doubles/mock_buffer.h (+3/-1)
tests/include/mir/test/doubles/mock_buffer_bundle.h (+0/-67)
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 (+3/-1)
tests/include/mir/test/doubles/mock_client_buffer.h (+4/-2)
tests/include/mir/test/doubles/mock_client_buffer_stream.h (+2/-0)
tests/include/mir/test/doubles/mock_display.h (+3/-2)
tests/include/mir/test/doubles/mock_display_buffer.h (+1/-1)
tests/include/mir/test/doubles/mock_display_report.h (+2/-2)
tests/include/mir/test/doubles/mock_drm.h (+7/-1)
tests/include/mir/test/doubles/mock_event_sink.h (+2/-0)
tests/include/mir/test/doubles/mock_fence.h (+2/-0)
tests/include/mir/test/doubles/mock_hwc_device_wrapper.h (+1/-1)
tests/include/mir/test/doubles/mock_interpreter_resource_cache.h (+1/-1)
tests/include/mir/test/doubles/mock_libinput.h (+1/-1)
tests/include/mir/test/doubles/mock_main_loop.h (+11/-3)
tests/include/mir/test/doubles/mock_mir_buffer.h (+2/-3)
tests/include/mir/test/doubles/mock_renderable.h (+1/-0)
tests/include/mir/test/doubles/mock_renderer.h (+2/-2)
tests/include/mir/test/doubles/mock_scene_session.h (+2/-0)
tests/include/mir/test/doubles/mock_server_status_listener.h (+2/-0)
tests/include/mir/test/doubles/mock_surface.h (+0/-1)
tests/include/mir/test/doubles/mock_x11.h (+2/-1)
tests/include/mir/test/doubles/null_client_buffer.h (+5/-3)
tests/include/mir/test/doubles/null_display_changer.h (+4/-0)
tests/include/mir/test/doubles/null_event_sink.h (+1/-0)
tests/include/mir/test/doubles/null_prompt_session_manager.h (+13/-13)
tests/include/mir/test/doubles/stub_android_native_buffer.h (+6/-3)
tests/include/mir/test/doubles/stub_buffer.h (+18/-8)
tests/include/mir/test/doubles/stub_buffer_stream.h (+16/-12)
tests/include/mir/test/doubles/stub_client_buffer.h (+29/-15)
tests/include/mir/test/doubles/stub_client_buffer_factory.h (+1/-1)
tests/include/mir/test/doubles/stub_display_builder.h (+6/-3)
tests/include/mir/test/doubles/stub_display_server.h (+4/-0)
tests/include/mir/test/doubles/stub_driver_interpreter.h (+1/-1)
tests/include/mir/test/doubles/stub_gbm_native_buffer.h (+2/-1)
tests/include/mir/test/doubles/stub_host_connection.h (+117/-22)
tests/include/mir/test/doubles/stub_input_scene.h (+5/-5)
tests/include/mir/test/doubles/stub_renderable.h (+24/-0)
tests/include/mir/test/doubles/stub_renderer.h (+2/-2)
tests/include/mir/test/doubles/stub_scene_element.h (+1/-1)
tests/include/mir/test/doubles/stub_scene_surface.h (+6/-5)
tests/include/mir/test/doubles/triggered_main_loop.h (+4/-0)
tests/include/mir/test/gmock_fixes.h (+4/-0)
tests/include/mir/test/stub_server_tool.h (+2/-7)
tests/include/mir/test/test_protobuf_client.h (+5/-5)
tests/include/mir_test_framework/client_platform_factory.h (+2/-2)
tests/include/mir_test_framework/stub_client_platform_factory.h (+9/-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/integration-tests/CMakeLists.txt (+2/-3)
tests/integration-tests/client/test_mirsurface.cpp (+6/-6)
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/-22)
tests/integration-tests/graphics/mesa/CMakeLists.txt (+0/-2)
tests/integration-tests/input/test_single_seat_setup.cpp (+23/-21)
tests/integration-tests/surface_composition.cpp (+0/-128)
tests/integration-tests/test_buffer_scheduling.cpp (+51/-336)
tests/integration-tests/test_client_screencast.cpp (+10/-4)
tests/integration-tests/test_display_server_main_loop_events.cpp (+1/-1)
tests/integration-tests/test_protobuf.cpp (+2/-2)
tests/integration-tests/test_protobuf.proto (+1/-0)
tests/integration-tests/test_server_client_types.cpp (+2/-0)
tests/integration-tests/test_session.cpp (+2/-2)
tests/integration-tests/test_stale_frames.cpp (+5/-5)
tests/integration-tests/test_submit_buffer.cpp (+119/-177)
tests/integration-tests/test_surface_first_frame_sync.cpp (+6/-6)
tests/integration-tests/test_surface_stack_with_compositor.cpp (+44/-33)
tests/integration-tests/test_swapinterval.cpp (+32/-4)
tests/integration-tests/test_touchspot_visualization.cpp (+1/-1)
tests/mir_test/display_config_matchers.cpp (+12/-3)
tests/mir_test_doubles/CMakeLists.txt (+1/-1)
tests/mir_test_doubles/fake_display.cpp (+29/-4)
tests/mir_test_doubles/mock_drm.cpp (+15/-1)
tests/mir_test_doubles/mock_egl.cpp (+14/-0)
tests/mir_test_doubles/mock_event_sink_factory.cpp (+6/-0)
tests/mir_test_doubles/mock_libinput.cpp (+3/-1)
tests/mir_test_doubles/mock_x11.cpp (+19/-2)
tests/mir_test_doubles/stub_buffer.cpp (+0/-37)
tests/mir_test_doubles/stub_display_configuration.cpp (+64/-11)
tests/mir_test_doubles/test_protobuf_client.cpp (+13/-12)
tests/mir_test_doubles/triggered_main_loop.cpp (+19/-2)
tests/mir_test_framework/CMakeLists.txt (+2/-1)
tests/mir_test_framework/any_surface.cpp (+18/-1)
tests/mir_test_framework/fake_input_device_impl.cpp (+24/-19)
tests/mir_test_framework/fake_input_device_impl.h (+12/-9)
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/placement_applying_shell.cpp (+1/-0)
tests/mir_test_framework/platform_graphics_throw.cpp (+3/-2)
tests/mir_test_framework/stub_client_platform_factory.cpp (+46/-11)
tests/mir_test_framework/stub_client_platform_module.cpp (+3/-1)
tests/mir_test_framework/stub_input.cpp (+9/-0)
tests/mir_test_framework/stub_session.cpp (+8/-1)
tests/mir_test_framework/stub_surface.cpp (+3/-0)
tests/mir_test_framework/stubbed_graphics_platform.cpp (+43/-79)
tests/mir_test_framework/stubbed_server_configuration.cpp (+5/-5)
tests/mir_test_framework/testing_server_options.cpp (+2/-0)
tests/mirtest.pc.in (+1/-1)
tests/performance-tests/CMakeLists.txt (+15/-0)
tests/performance-tests/system_performance_test.cpp (+191/-0)
tests/performance-tests/system_performance_test.h (+46/-0)
tests/performance-tests/test_compositor.cpp (+11/-164)
tests/unit-tests/CMakeLists.txt (+6/-28)
tests/unit-tests/client/CMakeLists.txt (+1/-9)
tests/unit-tests/client/input/test_android_input_receiver.cpp (+6/-23)
tests/unit-tests/client/input/test_xkb_mapper.cpp (+104/-0)
tests/unit-tests/client/test_aging_buffer.cpp (+21/-16)
tests/unit-tests/client/test_buffer_vault.cpp (+16/-10)
tests/unit-tests/client/test_client_buffer_depository.cpp (+0/-451)
tests/unit-tests/client/test_client_buffer_stream.cpp (+97/-126)
tests/unit-tests/client/test_client_mir_surface.cpp (+1/-10)
tests/unit-tests/client/test_client_platform.cpp (+4/-4)
tests/unit-tests/client/test_connection_resource_map.cpp (+20/-0)
tests/unit-tests/client/test_mir_buffer.cpp (+9/-22)
tests/unit-tests/client/test_mir_connection.cpp (+111/-6)
tests/unit-tests/client/test_no_tls_future.cpp (+355/-0)
tests/unit-tests/client/test_probing_client_platform_factory.cpp (+9/-9)
tests/unit-tests/client/test_protobuf_rpc_channel.cpp (+19/-16)
tests/unit-tests/client/test_screencast_stream.cpp (+50/-0)
tests/unit-tests/compositor/CMakeLists.txt (+0/-2)
tests/unit-tests/compositor/test_buffer_queue.cpp (+0/-2029)
tests/unit-tests/compositor/test_buffer_stream.cpp (+0/-284)
tests/unit-tests/compositor/test_client_buffers.cpp (+10/-10)
tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp (+8/-8)
tests/unit-tests/compositor/test_multi_monitor_arbiter.cpp (+13/-0)
tests/unit-tests/compositor/test_multi_threaded_compositor.cpp (+3/-3)
tests/unit-tests/compositor/test_screencast_display_buffer.cpp (+1/-1)
tests/unit-tests/compositor/test_stream.cpp (+6/-0)
tests/unit-tests/compositor/test_temporary_buffers.cpp (+1/-12)
tests/unit-tests/dispatch/test_multiplexing_dispatchable.cpp (+3/-3)
tests/unit-tests/dispatch/test_threaded_dispatcher.cpp (+4/-5)
tests/unit-tests/frontend/CMakeLists.txt (+0/-1)
tests/unit-tests/frontend/stress_protobuf_communicator.cpp (+16/-16)
tests/unit-tests/frontend/test_client_buffer_tracker.cpp (+0/-258)
tests/unit-tests/frontend/test_event_sender.cpp (+72/-27)
tests/unit-tests/frontend/test_protobuf_message_processor.cpp (+2/-47)
tests/unit-tests/frontend/test_published_socket_connector.cpp (+9/-10)
tests/unit-tests/frontend/test_session_mediator.cpp (+69/-401)
tests/unit-tests/graphics/CMakeLists.txt (+3/-17)
tests/unit-tests/graphics/test_default_display_configuration_policy.cpp (+4/-1)
tests/unit-tests/graphics/test_display_configuration.cpp (+4/-1)
tests/unit-tests/graphics/test_gamma_curves.cpp (+67/-0)
tests/unit-tests/graphics/test_overlapping_output_grouping.cpp (+6/-3)
tests/unit-tests/graphics/test_platform_prober.cpp (+3/-1)
tests/unit-tests/graphics/test_shm_buffer.cpp (+26/-33)
tests/unit-tests/input/android/test_android_input_sender.cpp (+37/-32)
tests/unit-tests/input/evdev/test_libinput_device.cpp (+45/-41)
tests/unit-tests/input/test_default_input_device_hub.cpp (+22/-1)
tests/unit-tests/input/test_event_builders.cpp (+16/-9)
tests/unit-tests/input/test_input_platform_probing.cpp (+1/-1)
tests/unit-tests/input/test_nested_input_platform.cpp (+1/-23)
tests/unit-tests/input/test_seat_input_device_tracker.cpp (+26/-25)
tests/unit-tests/input/test_surface_input_dispatcher.cpp (+1/-45)
tests/unit-tests/input/test_validator.cpp (+32/-32)
tests/unit-tests/library_example.h (+10/-0)
tests/unit-tests/logging/test_display_report.cpp (+61/-20)
tests/unit-tests/platforms/CMakeLists.txt (+11/-0)
tests/unit-tests/platforms/android/CMakeLists.txt (+42/-0)
tests/unit-tests/platforms/android/client/CMakeLists.txt (+2/-2)
tests/unit-tests/platforms/android/client/test_android_client_platform.cpp (+15/-0)
tests/unit-tests/platforms/android/client/test_android_native_window.cpp (+19/-11)
tests/unit-tests/platforms/android/client/test_buffer.cpp (+86/-14)
tests/unit-tests/platforms/android/client/test_egl_native_surface_interpreter.cpp (+0/-10)
tests/unit-tests/platforms/android/client/test_gralloc_registrar.cpp (+8/-8)
tests/unit-tests/platforms/android/server/CMakeLists.txt (+2/-3)
tests/unit-tests/platforms/android/server/hwc_struct_helpers.cpp (+2/-1)
tests/unit-tests/platforms/android/server/test_buffer.cpp (+4/-4)
tests/unit-tests/platforms/android/server/test_device_detection.cpp (+19/-0)
tests/unit-tests/platforms/android/server/test_display.cpp (+60/-5)
tests/unit-tests/platforms/android/server/test_display_buffer.cpp (+29/-19)
tests/unit-tests/platforms/android/server/test_display_generic.cpp (+11/-6)
tests/unit-tests/platforms/android/server/test_display_group.cpp (+3/-3)
tests/unit-tests/platforms/android/server/test_display_hotplug.cpp (+2/-2)
tests/unit-tests/platforms/android/server/test_fb_device.cpp (+1/-1)
tests/unit-tests/platforms/android/server/test_gralloc.cpp (+1/-1)
tests/unit-tests/platforms/android/server/test_graphic_buffer_allocator.cpp (+0/-50)
tests/unit-tests/platforms/android/server/test_graphics_platform.cpp (+6/-4)
tests/unit-tests/platforms/android/server/test_hwc_configuration.cpp (+8/-6)
tests/unit-tests/platforms/android/server/test_hwc_device.cpp (+11/-0)
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 (+7/-4)
tests/unit-tests/platforms/android/server/test_hwc_logger.cpp (+20/-16)
tests/unit-tests/platforms/android/server/test_hwc_wrapper.cpp (+15/-13)
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 (+31/-1)
tests/unit-tests/platforms/android/server/test_platform.cpp (+32/-18)
tests/unit-tests/platforms/android/server/test_server_interpreter.cpp (+1/-1)
tests/unit-tests/platforms/android/server/test_sync_fence.cpp (+23/-0)
tests/unit-tests/platforms/mesa/CMakeLists.txt (+3/-12)
tests/unit-tests/platforms/mesa/client/CMakeLists.txt (+1/-0)
tests/unit-tests/platforms/mesa/client/test_client_buffer.cpp (+35/-21)
tests/unit-tests/platforms/mesa/client/test_client_platform.cpp (+14/-0)
tests/unit-tests/platforms/mesa/client/test_native_surface.cpp (+64/-21)
tests/unit-tests/platforms/mesa/kms/CMakeLists.txt (+3/-0)
tests/unit-tests/platforms/mesa/kms/mock_kms_output.h (+3/-0)
tests/unit-tests/platforms/mesa/kms/test_buffer_allocator.cpp (+13/-69)
tests/unit-tests/platforms/mesa/kms/test_bypass.cpp (+15/-0)
tests/unit-tests/platforms/mesa/kms/test_cursor.cpp (+37/-5)
tests/unit-tests/platforms/mesa/kms/test_display.cpp (+37/-14)
tests/unit-tests/platforms/mesa/kms/test_display_buffer.cpp (+17/-17)
tests/unit-tests/platforms/mesa/kms/test_display_configuration.cpp (+185/-9)
tests/unit-tests/platforms/mesa/kms/test_display_generic.cpp (+0/-1)
tests/unit-tests/platforms/mesa/kms/test_gbm_buffer.cpp (+8/-3)
tests/unit-tests/platforms/mesa/kms/test_ipc_operations.cpp (+4/-3)
tests/unit-tests/platforms/mesa/kms/test_kms_page_flipper.cpp (+22/-13)
tests/unit-tests/platforms/mesa/kms/test_real_kms_output.cpp (+90/-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 (+37/-13)
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/-5)
tests/unit-tests/platforms/nested/test_buffer.cpp (+252/-0)
tests/unit-tests/platforms/nested/test_ipc_operations.cpp (+199/-0)
tests/unit-tests/platforms/nested/test_nested_display.cpp (+2/-1)
tests/unit-tests/platforms/nested/test_nested_display_buffer.cpp (+348/-15)
tests/unit-tests/platforms/test_display.h (+15/-2)
tests/unit-tests/scene/test_application_session.cpp (+82/-29)
tests/unit-tests/scene/test_basic_surface.cpp (+30/-8)
tests/unit-tests/scene/test_gl_pixel_buffer.cpp (+6/-5)
tests/unit-tests/scene/test_mediating_display_changer.cpp (+300/-39)
tests/unit-tests/scene/test_session_manager.cpp (+0/-1)
tests/unit-tests/scene/test_surface.cpp (+3/-5)
tests/unit-tests/scene/test_surface_impl.cpp (+6/-9)
tests/unit-tests/scene/test_surface_stack.cpp (+39/-51)
tests/unit-tests/test_observer_multiplexer.cpp (+608/-0)
tests/unit-tests/test_posix_rw_mutex.cpp (+311/-0)
tools/process_doxygen_xml.py (+7/-6)
tools/setup-partial-armhf-chroot.sh (+16/-6)
tools/update_package_abis.sh (+1/-0)
To merge this branch: bzr merge lp:mir/0.25
Reviewer Review Type Date Requested Status
Daniel van Vugt Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+310238@code.launchpad.net

Commit message

Mir 0.25.0 release

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

FAILED: Continuous integration, rev:3810
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/60/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/2738/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2801
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2793
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2793
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2793
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2767/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2767
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2767/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2767
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2767/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2767
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2767/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2767
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2767/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2767
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2767/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

(1) ^^^ Don't know why that failure just started happening here.
23:34:09 /usr/bin/ld: ../../lib/libmircommon.so.7: version node not found for symbol _ZN3mir8dispatch10ReadableFdD0Ev@MIR_COMMON_5.1
23:34:09 /usr/bin/ld: failed to set dynamic section sizes: Bad value
23:34:09 clang: error: linker command failed with exit code 1 (use -v to see invocation)

(2) debian/changelog: Spelling mistakes, incorrect grammar and possibly more features need documenting.

review: Needs Fixing
lp:mir/0.25 updated
3811. By Daniel van Vugt

Expand and correct the Enhancements list

3812. By Daniel van Vugt

Revert most of r3808 which was completely wrong and causing the
build failure.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

(1) and (2) both fixed now.

Still needs more people to take a closer look at the branch though.

review: Abstain
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:3811
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/61/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/2740/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2803
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2795
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2795
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2795
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2769/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2769
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2769/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2769
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2769/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2769
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2769/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2769
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2769/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2769
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2769/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:3812
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/62/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2741
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2804
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2796
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2796
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2796
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2770
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2770/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2770
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2770/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2770
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2770/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2770
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2770/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2770
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2770/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2770
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2770/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Failure is expected. Already fixed in r3812.

lp:mir/0.25 updated
3813. By Daniel van Vugt

Correct more grammar

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Overall diff is looking good.

review: Approve
lp:mir/0.25 updated
3814. By Daniel van Vugt

Fix another mistake from r3808: Source file added twice

Revision history for this message
Daniel van Vugt (vanvugt) :
review: Approve
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:3813
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/63/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2761
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2824
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2816
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2816
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2816
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2790
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2790/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2790
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2790/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2790
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2790/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2790
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2790/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2790
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2790/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2790
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2790/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:3814
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/64/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2763
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2826
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2818
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2818
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2818
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2792
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2792/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2792
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2792/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2792
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2792/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2792
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2792/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2792
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2792/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2792
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2792/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
lp:mir/0.25 updated
3815. By Brandon Schaefer

Cherry pick 3819 from trunk: Server::override_the_coordinate_translator() cannot be effectively used downstream

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:3815
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/65/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2801
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2866
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2858
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2858
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2858
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2830
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2830/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2830
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2830/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2830
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2830/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2830
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2830/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2830
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2830/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2830
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2830/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
lp:mir/0.25 updated
3816. By Brandon Schaefer

* TEST Lets turn off link time optimization

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:3816
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/66/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2804
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2869
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2861
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2861
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2861
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2833
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2833/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2833
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2833/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2833
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2833/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2833
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2833/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2833
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2833/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2833
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2833/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
lp:mir/0.25 updated
3817. By Brandon Schaefer

LTO causes FTBFS on s390x. Lets disable

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:3817
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/67/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2809
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2874
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2866
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2866
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2866
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2838
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2838/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2838
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2838/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2838
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2838/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2838
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2838/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2838
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2838/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2838
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2838/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Good news: Xmir builds fine against this tree (with some warnings I will fix later).

And it works too.

Revision history for this message
Daniel van Vugt (vanvugt) :
review: Approve
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Don't forget this one, eventually:
   https://code.launchpad.net/~vanvugt/mir/not-fixed-in-0.25/+merge/311455

Also if you need to rebuild zesty at all then you will hit build failures now (thanks to the new googletest package). That is fixed here:
   https://code.launchpad.net/~raof/mir/fix-googletest-zesty-build/+merge/311678

lp:mir/0.25 updated
3818. By Daniel van Vugt

Don't document bugs that aren't really fixed (these have all been
reopened in recent weeks).

3819. By Chris Halse Rogers

Fix build failures against GoogleTest 1.8 in zesty (LP: #1644062).

3820. By Daniel van Vugt

Add changelog entry for the new bug fix (assuming it makes it to 0.25.0)

Preview Diff

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

Subscribers

People subscribed via source and target branches

to all changes: