Mir

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

Proposed by Brandon Schaefer on 2016-11-07
Status: Merged
Approved by: Brandon Schaefer on 2016-11-21
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 2016-11-07 Approve on 2016-11-15
Mir CI Bot continuous-integration Approve on 2016-11-15
Review via email: mp+310238@code.launchpad.net

Commit message

Mir 0.25.0 release

To post a comment you must log in.
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)
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 on 2016-11-08
3811. By Daniel van Vugt on 2016-11-08

Expand and correct the Enhancements list

3812. By Daniel van Vugt on 2016-11-08

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

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
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)
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)
Daniel van Vugt (vanvugt) wrote :

Failure is expected. Already fixed in r3812.

lp:mir/0.25 updated on 2016-11-09
3813. By Daniel van Vugt on 2016-11-09

Correct more grammar

Daniel van Vugt (vanvugt) wrote :

Overall diff is looking good.

review: Approve
lp:mir/0.25 updated on 2016-11-09
3814. By Daniel van Vugt on 2016-11-09

Fix another mistake from r3808: Source file added twice

Daniel van Vugt (vanvugt) :
review: Approve
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)
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 on 2016-11-14
3815. By Brandon Schaefer on 2016-11-14

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

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 on 2016-11-14
3816. By Brandon Schaefer on 2016-11-14

* TEST Lets turn off link time optimization

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 on 2016-11-15
3817. By Brandon Schaefer on 2016-11-15

LTO causes FTBFS on s390x. Lets disable

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)
Daniel van Vugt (vanvugt) wrote :

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

And it works too.

Daniel van Vugt (vanvugt) :
review: Approve
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 on 2016-11-29
3818. By Daniel van Vugt on 2016-11-29

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

3819. By Chris Halse Rogers on 2016-11-29

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

3820. By Daniel van Vugt on 2016-11-29

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: