Mir

Merge lp:~mir-team/mir/fix-1372850 into lp:mir/ubuntu

Proposed by Robert Carr
Status: Superseded
Proposed branch: lp:~mir-team/mir/fix-1372850
Merge into: lp:mir/ubuntu
Diff against target: 19527 lines (+11298/-2260) (has conflicts)
292 files modified
3rd_party/android-input/android/CMakeLists.txt (+2/-0)
CMakeLists.txt (+56/-2)
benchmarks/android-input/CMakeLists.txt (+1/-1)
client-ABI-sha1sums (+9/-0)
cmake/ABICheck.cmake (+93/-0)
cmake/MirCommon.cmake (+36/-0)
common-ABI-sha1sums (+21/-0)
cross-compile-chroot.sh (+3/-1)
debian/control (+45/-10)
debian/copyright (+1/-1)
debian/create_postinst_prerm_scripts.sh (+1/-1)
debian/install_ld_so_conf.sh (+1/-1)
debian/libmirclient8driver-android.install (+1/-1)
debian/libmirclient8driver-mesa.install (+1/-1)
debian/libmircommon2.install (+1/-1)
debian/libmirplatform3.install (+4/-0)
debian/libmirplatform3driver-android.install (+1/-1)
debian/libmirplatform3driver-mesa.install (+1/-1)
debian/rules (+5/-2)
doc/dso_versioning_guide.md (+195/-0)
examples/CMakeLists.txt (+12/-11)
examples/basic_server_configuration.cpp (+0/-4)
examples/demo_input_filter.cpp (+0/-2)
examples/eglapp.c (+1/-16)
examples/fingerpaint.c (+1/-0)
examples/flicker.c (+0/-13)
examples/multiwin.c (+1/-0)
examples/pixel_format_selector.cpp (+9/-2)
examples/progressbar.c (+1/-0)
include/common/mir/geometry/rectangle.h (+1/-1)
include/common/mir/geometry/rectangles.h (+5/-2)
include/common/mir/geometry/size.h (+1/-1)
include/common/mir/time/clock.h (+4/-3)
include/platform/mir/graphics/display_configuration.h (+0/-1)
include/platform/mir/graphics/platform.h (+3/-0)
include/platform/mir/options/configuration.h (+7/-2)
include/platform/mir/options/default_configuration.h (+2/-1)
include/platform/mir/options/program_option.h (+1/-1)
include/server/mir/default_server_configuration.h (+5/-2)
include/server/mir/input/cursor_listener.h (+2/-2)
include/server/mir/input/touch_visualizer.h (+65/-0)
include/test/mir_test_framework/input_testing_client_configuration.h (+0/-69)
platform-ABI-sha1sums (+42/-0)
playground/CMakeLists.txt (+37/-0)
playground/README (+6/-0)
playground/demo-inprocess-surface-client/CMakeLists.txt (+1/-3)
playground/demo-inprocess-surface-client/demo_inprocess_surface_client.cpp (+1/-1)
playground/demo-shell/CMakeLists.txt (+5/-1)
playground/demo-shell/demo_compositor.cpp (+113/-0)
playground/demo-shell/demo_renderer.cpp (+11/-1)
playground/demo-shell/demo_renderer.h (+24/-0)
playground/demo-shell/demo_shell.cpp (+1/-1)
playground/demo-shell/window_manager.cpp (+2/-2)
playground/testdraw/mesa_graphics_region_factory.cpp (+1/-1)
server-ABI-sha1sums (+101/-0)
src/CMakeLists.txt (+1/-1)
src/client/CMakeLists.txt (+9/-1)
src/client/android/CMakeLists.txt (+5/-5)
src/client/default_connection_configuration.cpp (+51/-14)
src/client/default_connection_configuration.h (+9/-1)
src/client/logging/perf_report.cpp (+53/-0)
src/client/logging/perf_report.h (+48/-0)
src/client/lttng/CMakeLists.txt (+1/-0)
src/client/lttng/input_receiver_report_tp.h (+0/-14)
src/client/lttng/rpc_report_tp.h (+0/-14)
src/client/lttng/shared_library_prober_report.cpp (+50/-0)
src/client/lttng/shared_library_prober_report.h (+55/-0)
src/client/lttng/shared_library_prober_report_tp.h (+85/-0)
src/client/mesa/CMakeLists.txt (+5/-5)
src/client/mir_connection.cpp (+14/-0)
src/client/mir_connection.h (+1/-0)
src/client/mir_surface.cpp (+16/-0)
src/client/mir_surface.h (+2/-0)
src/client/perf_report.h (+47/-0)
src/client/periodic_perf_report.cpp (+98/-0)
src/client/periodic_perf_report.h (+64/-0)
src/common/CMakeLists.txt (+8/-1)
src/common/fd/CMakeLists.txt (+2/-1)
src/common/fd/fd_socket_transmission.cpp (+72/-0)
src/common/logging/CMakeLists.txt (+1/-0)
src/common/logging/shared_library_prober_report.cpp (+58/-0)
src/common/protobuf/mir_protobuf.proto (+6/-0)
src/common/sharedlibrary/CMakeLists.txt (+1/-0)
src/common/sharedlibrary/shared_library.cpp (+12/-0)
src/common/sharedlibrary/shared_library_prober.cpp (+74/-0)
src/common/symbols.map (+1010/-0)
src/common/time/high_resolution_clock.cpp (+3/-3)
src/include/common/mir/fd_socket_transmission.h (+28/-0)
src/include/common/mir/geometry/displacement.h (+2/-2)
src/include/common/mir/logging/null_shared_library_prober_report.h (+49/-0)
src/include/common/mir/logging/shared_library_prober_report.h (+48/-0)
src/include/common/mir/report/lttng/mir_tracepoint.h (+0/-17)
src/include/common/mir/shared_library.h (+9/-0)
src/include/common/mir/shared_library_prober.h (+36/-0)
src/include/common/mir/shared_library_prober_report.h (+44/-0)
src/include/common/mir/time/high_resolution_clock.h (+3/-3)
src/include/platform/mir/graphics/buffer_writer.h (+44/-0)
src/include/platform/mir/graphics/native_platform.h (+3/-0)
src/include/server/mir/compositor/recently_used_cache.h (+1/-0)
src/include/server/mir/compositor/scene_element.h (+4/-0)
src/include/server/mir/frontend/session_mediator_report.h (+2/-0)
src/include/server/mir/input/scene.h (+23/-8)
src/include/server/mir/scene/legacy_scene_change_notification.h (+2/-0)
src/include/server/mir/scene/observer.h (+4/-0)
src/include/server/mir/thread/basic_thread_pool.h (+63/-0)
src/platform/CMakeLists.txt (+19/-0)
src/platform/graphics/android/CMakeLists.txt (+16/-7)
src/platform/graphics/android/buffer_writer.cpp (+70/-0)
src/platform/graphics/android/buffer_writer.h (+50/-0)
src/platform/graphics/android/display.cpp (+23/-23)
src/platform/graphics/android/display.h (+7/-7)
src/platform/graphics/android/display_buffer.h (+1/-1)
src/platform/graphics/android/display_configuration.cpp (+8/-8)
src/platform/graphics/android/display_configuration.h (+8/-8)
src/platform/graphics/android/display_resource_factory.h (+3/-2)
src/platform/graphics/android/hwc_common_device.cpp (+10/-6)
src/platform/graphics/android/hwc_common_device.h (+3/-3)
src/platform/graphics/android/hwc_wrapper.h (+2/-1)
src/platform/graphics/android/output_builder.cpp (+6/-3)
src/platform/graphics/android/output_builder.h (+5/-1)
src/platform/graphics/android/platform.cpp (+24/-18)
src/platform/graphics/android/platform.h (+6/-5)
src/platform/graphics/android/real_hwc_wrapper.cpp (+4/-2)
src/platform/graphics/android/real_hwc_wrapper.h (+4/-1)
src/platform/graphics/android/resource_factory.cpp (+3/-10)
src/platform/graphics/android/resource_factory.h (+2/-7)
src/platform/graphics/mesa/CMakeLists.txt (+10/-5)
src/platform/graphics/mesa/buffer_allocator.cpp (+1/-1)
src/platform/graphics/mesa/buffer_writer.cpp (+40/-0)
src/platform/graphics/mesa/buffer_writer.h (+43/-0)
src/platform/graphics/mesa/display_buffer.cpp (+3/-12)
src/platform/graphics/mesa/native_platform.cpp (+5/-0)
src/platform/graphics/mesa/native_platform.h (+1/-0)
src/platform/graphics/mesa/platform.cpp (+6/-0)
src/platform/graphics/mesa/platform.h (+1/-0)
src/platform/graphics/mesa/shm_buffer.cpp (+13/-0)
src/platform/graphics/mesa/shm_buffer.h (+2/-0)
src/platform/options/default_configuration.cpp (+36/-3)
src/platform/symbols.map (+363/-0)
src/server/CMakeLists.txt (+45/-1)
src/server/compositor/recently_used_cache.cpp (+3/-3)
src/server/frontend/client_buffer_tracker.cpp (+42/-21)
src/server/frontend/client_buffer_tracker.h (+13/-4)
src/server/frontend/protobuf_message_processor.cpp (+4/-0)
src/server/frontend/session_mediator.cpp (+32/-0)
src/server/frontend/session_mediator.h (+6/-0)
src/server/frontend/socket_messenger.cpp (+6/-44)
src/server/frontend/socket_messenger.h (+1/-0)
src/server/frontend/surface_tracker.cpp (+87/-0)
src/server/frontend/surface_tracker.h (+77/-0)
src/server/graphics/default_configuration.cpp (+10/-0)
src/server/graphics/nested/nested_output.cpp (+1/-0)
src/server/graphics/nested/nested_platform.cpp (+5/-0)
src/server/graphics/nested/nested_platform.h (+1/-0)
src/server/input/CMakeLists.txt (+1/-0)
src/server/input/android/android_input_registrar.cpp (+4/-0)
src/server/input/android/android_input_registrar.h (+1/-0)
src/server/input/android/android_input_target_enumerator.cpp (+4/-4)
src/server/input/android/android_input_target_enumerator.h (+3/-3)
src/server/input/android/input_sender.cpp (+9/-5)
src/server/input/android/input_sender.h (+1/-0)
src/server/input/cursor_controller.cpp (+8/-3)
src/server/input/cursor_controller.h (+3/-3)
src/server/input/default_configuration.cpp (+27/-2)
src/server/input/touchspot_controller.cpp (+175/-0)
src/server/input/touchspot_controller.h (+77/-0)
src/server/input/touchspot_image.c (+1034/-0)
src/server/report/logging/session_mediator_report.cpp (+5/-0)
src/server/report/logging/session_mediator_report.h (+2/-0)
src/server/report/lttng/compositor_report_tp.h (+0/-2)
src/server/report/lttng/connector_report_tp.h (+0/-2)
src/server/report/lttng/display_report_tp.h (+0/-2)
src/server/report/lttng/input_report_tp.h (+0/-2)
src/server/report/lttng/lttng_utils.h (+0/-11)
src/server/report/lttng/lttng_utils_pop.h (+0/-22)
src/server/report/lttng/message_processor_report_tp.h (+0/-2)
src/server/report/lttng/scene_report_tp.h (+0/-2)
src/server/report/lttng/session_mediator_report.cpp (+1/-0)
src/server/report/lttng/session_mediator_report.h (+1/-0)
src/server/report/lttng/session_mediator_report_tp.h (+1/-2)
src/server/report/null/session_mediator_report.cpp (+4/-0)
src/server/report/null/session_mediator_report.h (+2/-0)
src/server/scene/basic_surface.cpp (+0/-1)
src/server/scene/default_configuration.cpp (+2/-2)
src/server/scene/legacy_scene_change_notification.cpp (+5/-0)
src/server/scene/surface_stack.cpp (+78/-0)
src/server/scene/surface_stack.h (+16/-3)
src/server/shell/default_focus_mechanism.cpp (+5/-3)
src/server/symbols.map (+1068/-0)
src/utils/ping.c (+1/-0)
src/utils/screencast.cpp (+1/-0)
tests/CMakeLists.txt (+5/-1)
tests/acceptance-tests/CMakeLists.txt (+16/-3)
tests/acceptance-tests/precompiled.hpp (+30/-0)
tests/acceptance-tests/test_client_cursor_api.cpp (+274/-329)
tests/acceptance-tests/test_client_input.cpp (+494/-390)
tests/acceptance-tests/test_nested_mir.cpp (+10/-5)
tests/acceptance-tests/test_protobuf.cpp (+7/-0)
tests/acceptance-tests/test_server_disconnect.cpp (+58/-27)
tests/acceptance-tests/test_symbols_required_by_mesa.cpp (+2/-2)
tests/acceptance-tests/test_touchspot_visualization.cpp (+449/-222)
tests/include/mir_test/auto_unblock_thread.h (+9/-0)
tests/include/mir_test/fake_event_hub.h (+1/-1)
tests/include/mir_test/test_protobuf_client.h (+6/-0)
tests/include/mir_test_doubles/mock_egl.h (+2/-0)
tests/include/mir_test_doubles/mock_frontend_surface.h (+21/-1)
tests/include/mir_test_doubles/mock_gl.h (+1/-0)
tests/include/mir_test_doubles/mock_hwc_device_wrapper.h (+1/-1)
tests/include/mir_test_doubles/null_platform.h (+7/-2)
tests/include/mir_test_doubles/stub_buffer.h (+14/-1)
tests/include/mir_test_doubles/stub_gbm_native_buffer.h (+12/-4)
tests/include/mir_test_doubles/stub_input_scene.h (+16/-5)
tests/include/mir_test_doubles/stub_scene_element.h (+5/-0)
tests/include/mir_test_doubles/stub_touch_visualizer.h (+95/-43)
tests/include/mir_test_framework/declarative_placement_strategy.h (+2/-2)
tests/include/mir_test_framework/display_server_test_fixture.h (+0/-1)
tests/include/mir_test_framework/executable_path.h (+2/-0)
tests/include/mir_test_framework/fake_event_hub_server_configuration.h (+64/-0)
tests/include/mir_test_framework/testing_process_manager.h (+4/-0)
tests/integration-tests/CMakeLists.txt (+12/-3)
tests/integration-tests/client/test_client_render.cpp (+14/-2)
tests/integration-tests/frontend/CMakeLists.txt (+1/-1)
tests/integration-tests/frontend/test_session_mediator_report.cpp (+189/-134)
tests/integration-tests/graphics/android/test_buffer_integration.cpp (+2/-2)
tests/integration-tests/graphics/android/test_display_integration.cpp (+37/-22)
tests/integration-tests/input/android/test_android_cursor_listener.cpp (+1/-1)
tests/integration-tests/input/android/test_android_input_manager.cpp (+1/-1)
tests/integration-tests/input/test_nested_input.cpp (+1/-1)
tests/integration-tests/precompiled.hpp (+30/-0)
tests/integration-tests/test_exchange_buffer.cpp (+182/-0)
tests/mir_test/pipe.cpp (+4/-3)
tests/mir_test/popen.cpp (+4/-5)
tests/mir_test_doubles/fake_event_hub.cpp (+1/-0)
tests/mir_test_doubles/mock_egl.cpp (+9/-0)
tests/mir_test_doubles/mock_gl.cpp (+26/-7)
tests/mir_test_doubles/test_protobuf_client.cpp (+18/-0)
tests/mir_test_framework/CMakeLists.txt (+1/-1)
tests/mir_test_framework/cross_process_sync.cpp (+17/-17)
tests/mir_test_framework/declarative_placement_strategy.cpp (+2/-2)
tests/mir_test_framework/display_server_test_fixture.cpp (+0/-6)
tests/mir_test_framework/executable_path.cpp (+5/-0)
tests/mir_test_framework/fake_event_hub_server_configuration.cpp (+64/-0)
tests/mir_test_framework/input_testing_client_configuration.cpp (+0/-85)
tests/mir_test_framework/process.cpp (+5/-3)
tests/mir_test_framework/stubbed_server_configuration.cpp (+15/-1)
tests/mir_test_framework/testing_process_manager.cpp (+0/-13)
tests/mir_test_framework/using_stub_client_platform.cpp (+41/-0)
tests/unit-tests/CMakeLists.txt (+52/-19)
tests/unit-tests/client/CMakeLists.txt (+1/-0)
tests/unit-tests/client/input/test_android_input_receiver.cpp (+1/-1)
tests/unit-tests/client/input/test_android_input_receiver_thread.cpp (+2/-2)
tests/unit-tests/client/test_client_mir_surface.cpp (+10/-0)
tests/unit-tests/client/test_periodic_perf_report.cpp (+146/-0)
tests/unit-tests/compositor/test_buffer_queue.cpp (+10/-8)
tests/unit-tests/compositor/test_gl_texture_cache.cpp (+15/-0)
tests/unit-tests/draw/test_draw_patterns.cpp (+1/-1)
tests/unit-tests/examples/test_demo_compositor.cpp (+121/-0)
tests/unit-tests/examples/test_demo_renderer.cpp (+64/-0)
tests/unit-tests/frontend/test_client_buffer_tracker.cpp (+225/-75)
tests/unit-tests/frontend/test_session_mediator.cpp (+422/-72)
tests/unit-tests/graphics/android/CMakeLists.txt (+3/-3)
tests/unit-tests/graphics/android/test_display.cpp (+19/-19)
tests/unit-tests/graphics/android/test_display_buffer.cpp (+20/-21)
tests/unit-tests/graphics/android/test_hwc_common_device.cpp (+34/-16)
tests/unit-tests/graphics/android/test_hwc_wrapper.cpp (+13/-5)
tests/unit-tests/graphics/android/test_output_builder.cpp (+11/-8)
tests/unit-tests/graphics/android/test_platform.cpp (+4/-4)
tests/unit-tests/graphics/android/test_resource_factory.cpp (+4/-10)
tests/unit-tests/graphics/mesa/test_display.cpp (+4/-9)
tests/unit-tests/graphics/mesa/test_display_buffer.cpp (+2/-9)
tests/unit-tests/graphics/mesa/test_display_configuration.cpp (+2/-7)
tests/unit-tests/graphics/mesa/test_display_multi_monitor.cpp (+2/-7)
tests/unit-tests/graphics/mesa/test_shm_buffer.cpp (+1/-1)
tests/unit-tests/graphics/nested/test_nested_platform.cpp (+5/-0)
tests/unit-tests/graphics/offscreen/test_offscreen_display.cpp (+3/-8)
tests/unit-tests/graphics/test_display.cpp (+2/-8)
tests/unit-tests/input/CMakeLists.txt (+1/-0)
tests/unit-tests/input/android/test_android_input_target_enumerator.cpp (+5/-4)
tests/unit-tests/input/test_cursor_controller.cpp (+12/-11)
tests/unit-tests/input/test_touchspot_controller.cpp (+246/-0)
tests/unit-tests/precompiled.hpp (+30/-0)
tests/unit-tests/scene/CMakeLists.txt (+0/-1)
tests/unit-tests/scene/test_surface_stack.cpp (+141/-21)
tests/unit-tests/shared_library_test.cpp (+63/-18)
tests/unit-tests/shell/CMakeLists.txt (+1/-0)
tests/unit-tests/shell/test_default_focus_mechanism.cpp (+23/-2)
tests/unit-tests/test_shared_library_prober.cpp (+182/-0)
tools/install_on_android.sh (+7/-0)
tools/lib_descriptor.xml.skel (+20/-0)
tools/process_doxygen_xml.py (+209/-0)
tools/update-all-ABI-sha1sums.sh (+22/-0)
tools/valgrind_suppressions_armhf (+8/-0)
Text conflict in CMakeLists.txt
Text conflict in client-ABI-sha1sums
Text conflict in common-ABI-sha1sums
Text conflict in debian/control
Path conflict: debian/libmirplatform2.install / debian/libmirplatform3.install
Text conflict in debian/libmirplatform3.install
Text conflict in examples/CMakeLists.txt
Path conflict: include/platform/mir/fatal.h / src/include/platform/mir/fatal.h
Text conflict in include/platform/mir/options/configuration.h
Text conflict in include/server/mir/input/touch_visualizer.h
Text conflict in platform-ABI-sha1sums
Text conflict in playground/demo-shell/demo_compositor.cpp
Text conflict in playground/demo-shell/demo_renderer.cpp
Text conflict in playground/demo-shell/demo_renderer.h
Text conflict in server-ABI-sha1sums
Text conflict in src/client/default_connection_configuration.cpp
Text conflict in src/client/default_connection_configuration.h
Text conflict in src/client/mir_connection.cpp
Text conflict in src/common/CMakeLists.txt
Text conflict in src/common/symbols.map
Text conflict in src/platform/CMakeLists.txt
Text conflict in src/platform/graphics/android/CMakeLists.txt
Text conflict in src/platform/options/default_configuration.cpp
Text conflict in src/platform/symbols.map
Text conflict in src/server/CMakeLists.txt
Text conflict in src/server/frontend/client_buffer_tracker.h
Text conflict in src/server/frontend/surface_tracker.cpp
Text conflict in src/server/frontend/surface_tracker.h
Text conflict in src/server/input/default_configuration.cpp
Text conflict in src/server/symbols.map
Text conflict in tests/acceptance-tests/CMakeLists.txt
Text conflict in tests/acceptance-tests/test_client_cursor_api.cpp
Text conflict in tests/acceptance-tests/test_client_input.cpp
Text conflict in tests/acceptance-tests/test_server_disconnect.cpp
Text conflict in tests/acceptance-tests/test_touchspot_visualization.cpp
Text conflict in tests/include/mir_test/auto_unblock_thread.h
Text conflict in tests/include/mir_test_doubles/mock_frontend_surface.h
Text conflict in tests/include/mir_test_doubles/stub_touch_visualizer.h
Text conflict in tests/include/mir_test_framework/testing_process_manager.h
Text conflict in tests/integration-tests/CMakeLists.txt
Text conflict in tests/integration-tests/client/test_client_render.cpp
Text conflict in tests/mir_test_doubles/mock_gl.cpp
Text conflict in tests/mir_test_framework/using_stub_client_platform.cpp
Text conflict in tests/unit-tests/CMakeLists.txt
Text conflict in tests/unit-tests/client/test_client_mir_surface.cpp
Text conflict in tests/unit-tests/examples/test_demo_compositor.cpp
Text conflict in tests/unit-tests/examples/test_demo_renderer.cpp
Text conflict in tests/unit-tests/frontend/test_client_buffer_tracker.cpp
Text conflict in tests/unit-tests/frontend/test_session_mediator.cpp
Text conflict in tests/unit-tests/scene/test_surface_stack.cpp
Text conflict in tools/install_on_android.sh
Text conflict in tools/process_doxygen_xml.py
Path conflict: tools/process_doygen_xml.py / tools/process_doxygen_xml.py
Text conflict in tools/update-all-ABI-sha1sums.sh
To merge this branch: bzr merge lp:~mir-team/mir/fix-1372850
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Needs Fixing
Kevin DuBois (community) Needs Resubmitting
Review via email: mp+235679@code.launchpad.net

This proposal has been superseded by a proposal from 2014-09-23.

Commit message

Ensure touchspots do not update the scene when disabled.

Description of the change

Ensure touchspots do not update the scene when disabled. I can't see what else could becausing 1372850 as this effectively makes the touchspot feature no op unless enabled.

It's alarming that scene updates could trigger a noticeable slowdown.

To post a comment you must log in.
Revision history for this message
Robert Carr (robertcarr) wrote :

s/alarming that scene updates/alarming that extra scene updates/

Revision history for this message
Kevin DuBois (kdub) wrote :

retarget to devel?

review: Needs Resubmitting
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '3rd_party/android-input/android/CMakeLists.txt'
2--- 3rd_party/android-input/android/CMakeLists.txt 2014-07-14 10:39:48 +0000
3+++ 3rd_party/android-input/android/CMakeLists.txt 2014-09-23 17:34:29 +0000
4@@ -7,7 +7,9 @@
5 system/extras/ext4_utils
6
7 ${PROJECT_SOURCE_DIR}/include/server
8+ ${PROJECT_SOURCE_DIR}/src/include/server
9 ${PROJECT_SOURCE_DIR}/include/platform
10+ ${PROJECT_SOURCE_DIR}/src/include/platform
11 )
12
13 add_definitions(
14
15=== modified file 'CMakeLists.txt'
16--- CMakeLists.txt 2014-09-16 08:33:51 +0000
17+++ CMakeLists.txt 2014-09-23 17:34:29 +0000
18@@ -27,10 +27,17 @@
19 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
20
21 set(MIR_VERSION_MAJOR 0)
22+<<<<<<< TREE
23 set(MIR_VERSION_MINOR 7) # This should change at least with every MIRSERVER_ABI
24 set(MIR_VERSION_PATCH 3)
25
26 set(MIR_VERSION ${MIR_VERSION_MAJOR}.${MIR_VERSION_MINOR}.${MIR_VERSION_PATCH})
27+=======
28+set(MIR_VERSION_MINOR 8) # This should change at least with every MIRSERVER_ABI
29+set(MIR_VERSION_PATCH 0)
30+>>>>>>> MERGE-SOURCE
31+
32+set(MIR_VERSION ${MIR_VERSION_MAJOR}.${MIR_VERSION_MINOR}.${MIR_VERSION_PATCH})
33
34 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
35 execute_process(
36@@ -104,10 +111,14 @@
37
38 enable_testing()
39
40-include_directories(include/shared)
41+include_directories(include/common src/include/common)
42
43 # Check for boost
44+<<<<<<< TREE
45 find_package(Boost 1.48.0 COMPONENTS date_time system program_options iostreams REQUIRED)
46+=======
47+find_package(Boost 1.48.0 COMPONENTS date_time system program_options iostreams filesystem REQUIRED)
48+>>>>>>> MERGE-SOURCE
49 include_directories (
50 ${Boost_INCLUDE_DIRS}
51 )
52@@ -190,9 +201,11 @@
53 add_subdirectory(benchmarks/)
54 add_subdirectory(tools/)
55 add_subdirectory(examples/)
56+add_subdirectory(playground/)
57 add_subdirectory(guides/)
58 add_subdirectory(cmake/)
59
60+<<<<<<< TREE
61 if (MIR_ENABLE_TESTS)
62 find_package(Gtest REQUIRED)
63 include_directories(${GMOCK_INCLUDE_DIR} ${GTEST_INCLUDE_DIR})
64@@ -226,6 +239,47 @@
65 COMMAND sha1sum -c platform-ABI-sha1sums
66 )
67 endif ()
68+=======
69+if (MIR_ENABLE_TESTS)
70+ find_package(Gtest REQUIRED)
71+ include_directories(${GMOCK_INCLUDE_DIR} ${GTEST_INCLUDE_DIR})
72+ add_subdirectory(tests/)
73+
74+ # There's no nice way to format this. Thanks CMake.
75+ add_test(LGPL-required
76+ /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"
77+ )
78+ add_test(GPL-required
79+ /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"
80+ )
81+
82+ add_test(NAME server-ABI-unchanged
83+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
84+ COMMAND sha1sum -c server-ABI-sha1sums
85+ )
86+
87+ add_test(NAME client-ABI-unchanged
88+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
89+ COMMAND sha1sum -c client-ABI-sha1sums
90+ )
91+
92+ add_test(NAME common-ABI-unchanged
93+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
94+ COMMAND sha1sum -c common-ABI-sha1sums
95+ )
96+
97+ add_test(NAME platform-ABI-unchanged
98+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
99+ COMMAND sha1sum -c platform-ABI-sha1sums
100+ )
101+endif ()
102+>>>>>>> MERGE-SOURCE
103
104 enable_coverage_report(mirserver)
105-include (cmake/Doxygen.cmake)
106+<<<<<<< TREE
107+include (cmake/Doxygen.cmake)
108+=======
109+include (cmake/Doxygen.cmake)
110+include (cmake/ABICheck.cmake)
111+
112+>>>>>>> MERGE-SOURCE
113
114=== modified file 'benchmarks/android-input/CMakeLists.txt'
115--- benchmarks/android-input/CMakeLists.txt 2014-08-27 19:44:04 +0000
116+++ benchmarks/android-input/CMakeLists.txt 2014-09-23 17:34:29 +0000
117@@ -5,7 +5,7 @@
118 )
119
120 include_directories(
121- ${Mir_SOURCE_DIR}/include/test
122+ ${Mir_SOURCE_DIR}/tests/include
123 ${Mir_SOURCE_DIR}/include/platform
124 )
125
126
127=== modified file 'client-ABI-sha1sums'
128--- client-ABI-sha1sums 2014-08-05 14:01:56 +0000
129+++ client-ABI-sha1sums 2014-09-23 17:34:29 +0000
130@@ -8,9 +8,18 @@
131 21d07e655e85eeec8a3523e1c6f9c2252176ec01 include/client/mir_toolkit/mir_screencast.h
132 8609754db3be20e11e43858dd2c36b5bd480d5ec include/client/mir_toolkit/mir_surface.h
133 b141c4d79802ad626d969249c0004744e5c2a525 include/client/mir_toolkit/mir_wait.h
134+<<<<<<< TREE
135 9907751d046e4aea81881cf19e5df52c7a6a813e include/shared/mir_toolkit/client_types.h
136 183d9e5e6cfe48b3d9145a28541dd4202ff6137b include/shared/mir_toolkit/common.h
137 fce4c1a9e0d037244f7e9e96ea2d8eaab4fc404c include/shared/mir_toolkit/cursors.h
138 bdaceadd56e41d2cb708f7c4da97acf84dfc75b7 include/shared/mir_toolkit/event.h
139 99ef5f3bf548508fae24c60f74be1dea018a6e8c include/shared/mir_toolkit/mesa/native_display.h
140 101017c17714a57db57d79b7b5e7df40a3568236 include/shared/mir_toolkit/mir_native_buffer.h
141+=======
142+9907751d046e4aea81881cf19e5df52c7a6a813e include/common/mir_toolkit/client_types.h
143+183d9e5e6cfe48b3d9145a28541dd4202ff6137b include/common/mir_toolkit/common.h
144+fce4c1a9e0d037244f7e9e96ea2d8eaab4fc404c include/common/mir_toolkit/cursors.h
145+bdaceadd56e41d2cb708f7c4da97acf84dfc75b7 include/common/mir_toolkit/event.h
146+99ef5f3bf548508fae24c60f74be1dea018a6e8c include/common/mir_toolkit/mesa/native_display.h
147+101017c17714a57db57d79b7b5e7df40a3568236 include/common/mir_toolkit/mir_native_buffer.h
148+>>>>>>> MERGE-SOURCE
149
150=== added file 'cmake/ABICheck.cmake'
151--- cmake/ABICheck.cmake 1970-01-01 00:00:00 +0000
152+++ cmake/ABICheck.cmake 2014-09-23 17:34:29 +0000
153@@ -0,0 +1,93 @@
154+cmake_minimum_required (VERSION 2.6)
155+
156+execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpmachine OUTPUT_VARIABLE ABI_CHECK_TARGET_MACH OUTPUT_STRIP_TRAILING_WHITESPACE)
157+set(REL_ABI_DUMPS_DIR $ENV{REL_ABI_DUMPS_DIR})
158+if ("${REL_ABI_DUMPS_DIR}" STREQUAL "")
159+ set(REL_ABI_DUMPS_DIR ${CMAKE_BINARY_DIR}/abi_dumps)
160+endif()
161+
162+set(ABI_DUMPS_DIR_PREFIX "abi_dumps/${ABI_CHECK_TARGET_MACH}")
163+
164+function(get_value_for_arg alist name output)
165+ list(FIND alist ${name} idx)
166+ if (idx GREATER -1)
167+ math(EXPR idx "${idx} + 1")
168+ list(GET alist ${idx} tmp_out)
169+ set(${output} "${tmp_out}" PARENT_SCOPE)
170+ endif()
171+endfunction()
172+
173+function(get_includes libname output)
174+ get_property(lib_includes TARGET ${libname} PROPERTY INCLUDE_DIRECTORIES)
175+ list(REMOVE_DUPLICATES lib_includes)
176+ string(REPLACE ";" "\n " tmp_out "${lib_includes}")
177+ set(${output} "${tmp_out}" PARENT_SCOPE)
178+endfunction()
179+
180+function(make_lib_descriptor name)
181+ set(libname "mir${name}")
182+
183+ list(FIND ARGN "INCLUDE_PRIVATE" include_private)
184+ if (include_private GREATER -1)
185+ set(private_headers "${CMAKE_SOURCE_DIR}/src/include/${name}")
186+ endif()
187+
188+ set(LIB_DESC_HEADERS "${CMAKE_SOURCE_DIR}/include/${name}
189+ ${private_headers}"
190+ )
191+
192+ get_property(LIB_DESC_LIBS TARGET ${libname} PROPERTY LOCATION)
193+
194+ get_includes(${libname} LIB_DESC_INCLUDE_PATHS)
195+ set(LIB_DESC_GCC_OPTS "${CMAKE_CXX_FLAGS}")
196+
197+ get_value_for_arg("${ARGN}" "EXCLUDE_HEADERS" LIB_DESC_SKIP_HEADERS)
198+
199+ configure_file(${CMAKE_SOURCE_DIR}/tools/lib_descriptor.xml.skel ${libname}_desc.xml)
200+endfunction()
201+
202+#These headers are not part of the libmircommon interface
203+set(android-platform-headers "${CMAKE_SOURCE_DIR}/src/include/common/mir/graphics/android")
204+
205+make_lib_descriptor(client)
206+make_lib_descriptor(server)
207+make_lib_descriptor(common INCLUDE_PRIVATE EXCLUDE_HEADERS ${android-platform-headers})
208+make_lib_descriptor(platform INCLUDE_PRIVATE)
209+
210+macro(_add_custom_abi_dump_command libname version)
211+ set(ABI_DUMP_NAME ${ABI_DUMPS_DIR_PREFIX}/${libname}_${version}.abi.tar.gz)
212+ add_custom_command(OUTPUT ${ABI_DUMP_NAME}
213+ COMMAND abi-compliance-checker -gcc-path ${CMAKE_C_COMPILER} -l ${libname} -v1 ${version} -dump-path ${ABI_DUMP_NAME} -dump-abi ${libname}_desc.xml
214+ DEPENDS ${libname}
215+ )
216+endmacro(_add_custom_abi_dump_command)
217+
218+macro(_define_abi_dump_for libname)
219+ _add_custom_abi_dump_command(${libname} next)
220+ add_custom_target(abi-dump-${libname} DEPENDS ${ABI_DUMP_NAME})
221+ _add_custom_abi_dump_command(${libname} base)
222+ add_custom_target(abi-dump-base-${libname} DEPENDS ${ABI_DUMP_NAME})
223+endmacro(_define_abi_dump_for)
224+
225+macro(_define_abi_check_for libname)
226+ set(OLD_ABI_DUMP "${REL_ABI_DUMPS_DIR}/${ABI_CHECK_TARGET_MACH}/${libname}_base.abi.tar.gz")
227+ set(NEW_ABI_DUMP ${ABI_DUMPS_DIR_PREFIX}/${libname}_next.abi.tar.gz)
228+ add_custom_target(abi-check-${libname}
229+ COMMAND abi-compliance-checker -l ${libname} -old "${OLD_ABI_DUMP}" -new "${NEW_ABI_DUMP}" -check-implementation
230+ DEPENDS abi-dump-${libname}
231+ )
232+endmacro(_define_abi_check_for)
233+
234+set(the_libs mirserver mirclient mircommon mirplatform)
235+
236+foreach(libname ${the_libs})
237+ _define_abi_dump_for(${libname})
238+ _define_abi_check_for(${libname})
239+ list(APPEND abi-dump-list abi-dump-${libname})
240+ list(APPEND abi-dump-base-list abi-dump-base-${libname})
241+ list(APPEND abi-check-list abi-check-${libname})
242+endforeach(libname)
243+
244+add_custom_target(abi-dump DEPENDS ${abi-dump-list})
245+add_custom_target(abi-dump-base DEPENDS ${abi-dump-base-list})
246+add_custom_target(abi-check DEPENDS ${abi-check-list})
247
248=== modified file 'cmake/MirCommon.cmake'
249--- cmake/MirCommon.cmake 2014-08-26 14:59:57 +0000
250+++ cmake/MirCommon.cmake 2014-09-23 17:34:29 +0000
251@@ -16,6 +16,12 @@
252 OFF
253 )
254
255+option(
256+ MIR_USE_PRECOMPILED_HEADERS
257+ "Use precompiled headers"
258+ ON
259+)
260+
261 if(ENABLE_MEMCHECK_OPTION)
262 find_program(
263 VALGRIND_EXECUTABLE
264@@ -117,3 +123,33 @@
265 endif()
266 endif()
267 endfunction()
268+
269+function (mir_precompiled_header TARGET HEADER)
270+ if (MIR_USE_PRECOMPILED_HEADERS)
271+ get_property(TARGET_COMPILE_FLAGS TARGET ${TARGET} PROPERTY COMPILE_FLAGS)
272+ get_property(TARGET_INCLUDE_DIRECTORIES TARGET ${TARGET} PROPERTY INCLUDE_DIRECTORIES)
273+ foreach(dir ${TARGET_INCLUDE_DIRECTORIES})
274+ if (${dir} MATCHES "usr/include")
275+ set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -isystem ${dir}")
276+ else()
277+ set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -I${dir}")
278+ endif()
279+ endforeach()
280+
281+ separate_arguments(
282+ PCH_CXX_FLAGS UNIX_COMMAND
283+ "${CMAKE_CXX_FLAGS} ${TARGET_COMPILE_FLAGS} ${TARGET_INCLUDE_DIRECTORIES_STRING}"
284+ )
285+
286+ add_custom_command(
287+ OUTPUT ${TARGET}_precompiled.hpp.gch
288+ DEPENDS ${HEADER}
289+ COMMAND ${CMAKE_CXX_COMPILER} ${PCH_CXX_FLAGS} -x c++-header -c ${HEADER} -o ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_precompiled.hpp.gch
290+ )
291+
292+ set_property(TARGET ${TARGET} APPEND_STRING PROPERTY COMPILE_FLAGS " -include ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_precompiled.hpp -Winvalid-pch ")
293+
294+ add_custom_target(${TARGET}_pch DEPENDS ${TARGET}_precompiled.hpp.gch)
295+ add_dependencies(${TARGET} ${TARGET}_pch)
296+ endif()
297+endfunction()
298
299=== modified file 'common-ABI-sha1sums'
300--- common-ABI-sha1sums 2014-08-27 19:35:36 +0000
301+++ common-ABI-sha1sums 2014-09-23 17:34:29 +0000
302@@ -1,3 +1,4 @@
303+<<<<<<< TREE
304 6ad1f35928df9ffd917fbf17cbcdd533a8b5b27d include/shared/mir/basic_observers.h
305 3329ada91412ded2f127aee9a92f065e57b81cb2 include/shared/mir/cached_ptr.h
306 691278e8b89265fa7f11db78dc8a9b530cef6e99 include/shared/mir/default_configuration.h
307@@ -43,3 +44,23 @@
308 101017c17714a57db57d79b7b5e7df40a3568236 include/shared/mir_toolkit/mir_native_buffer.h
309 9f646fa12eaca5fc3b7a8fde6208673c071c8ef3 include/shared/mir/udev/wrapper.h
310 9fd77ab693cc4c9a200e44804f5493733528a674 include/shared/mir/variable_length_array.h
311+=======
312+3329ada91412ded2f127aee9a92f065e57b81cb2 include/common/mir/cached_ptr.h
313+82ff9499ef62739379616e02164dc98f9914c329 include/common/mir/fd.h
314+b399dc08514751c86e23824612a52378dd9b1e23 include/common/mir/geometry/dimensions.h
315+d954464ef2d20c2876db68c94512a443186da09b include/common/mir/geometry/point.h
316+dc7c62d3916eec025e8e7deaf57e06077ce38928 include/common/mir/geometry/rectangle.h
317+5161774957e3ca4f5fa4e7db025d0978d2bbef06 include/common/mir/geometry/rectangles.h
318+42646c2367b9821e3aa71feff6e31cf50526acaa include/common/mir/geometry/size.h
319+e1be9faee8b844ca2ce617f8fd82c9ee08d56bed include/common/mir/graphics/native_buffer.h
320+dcf8b8982f138bdde39a241825c610e955cd5e33 include/common/mir/input/input_platform.h
321+208cd6aed5ef5f8f39b3eb86604e4133cb840485 include/common/mir/input/input_receiver_thread.h
322+be7d58c9fde2ce91cc66dd6144b76e08b536266b include/common/mir/int_wrapper.h
323+48015c67ddc4998ed5a2e8bb04ff3a4bfdd6a613 include/common/mir/time/clock.h
324+9907751d046e4aea81881cf19e5df52c7a6a813e include/common/mir_toolkit/client_types.h
325+183d9e5e6cfe48b3d9145a28541dd4202ff6137b include/common/mir_toolkit/common.h
326+fce4c1a9e0d037244f7e9e96ea2d8eaab4fc404c include/common/mir_toolkit/cursors.h
327+bdaceadd56e41d2cb708f7c4da97acf84dfc75b7 include/common/mir_toolkit/event.h
328+99ef5f3bf548508fae24c60f74be1dea018a6e8c include/common/mir_toolkit/mesa/native_display.h
329+101017c17714a57db57d79b7b5e7df40a3568236 include/common/mir_toolkit/mir_native_buffer.h
330+>>>>>>> MERGE-SOURCE
331
332=== modified file 'cross-compile-chroot.sh'
333--- cross-compile-chroot.sh 2014-03-26 05:48:59 +0000
334+++ cross-compile-chroot.sh 2014-09-23 17:34:29 +0000
335@@ -24,9 +24,11 @@
336 case $OPTNAME in
337 c )
338 clean_build_dir ${BUILD_DIR}
339+ shift
340 ;;
341 u )
342 _do_update_chroot=1
343+ shift
344 ;;
345 h )
346 usage
347@@ -78,6 +80,6 @@
348 -DMIR_PLATFORM=android\;mesa \
349 ..
350
351- make -j${NUM_JOBS}
352+ make -j${NUM_JOBS} $@
353
354 popd > /dev/null
355
356=== modified file 'debian/control'
357--- debian/control 2014-09-18 06:04:10 +0000
358+++ debian/control 2014-09-23 17:34:29 +0000
359@@ -18,7 +18,12 @@
360 libboost-date-time-dev,
361 libboost-program-options-dev,
362 libboost-system-dev,
363- libboost-iostreams-dev,
364+<<<<<<< TREE
365+ libboost-iostreams-dev,
366+=======
367+ libboost-iostreams-dev,
368+ libboost-filesystem-dev,
369+>>>>>>> MERGE-SOURCE
370 protobuf-compiler,
371 libdrm-dev,
372 libegl1-mesa-dev,
373@@ -51,15 +56,23 @@
374 Pre-Depends: ${misc:Pre-Depends}
375 Depends: ${misc:Depends},
376 ${shlibs:Depends},
377+<<<<<<< TREE
378 libmirplatformgraphics-mesa (= ${binary:Version}) |
379 libmirplatformgraphics-android (= ${binary:Version}),
380+=======
381+ libmirplatform3driver-mesa | libmirplatform3driver-android,
382+>>>>>>> MERGE-SOURCE
383 Description: Display server for Ubuntu - server library
384 Mir is a display server running on linux systems, with a focus on efficiency,
385 robust operation and a well-defined driver model.
386 .
387 Contains the shared library needed by server applications for Mir.
388
389+<<<<<<< TREE
390 Package: libmirplatform2
391+=======
392+Package: libmirplatform3
393+>>>>>>> MERGE-SOURCE
394 Section: libs
395 Architecture: i386 amd64 armhf arm64
396 Multi-Arch: same
397@@ -73,7 +86,7 @@
398 Contains the shared libraries required for the Mir server to interact with
399 the underlying hardware platform.
400
401-Package: libmirplatformgraphics-mesa
402+Package: libmirplatform3driver-mesa
403 Section: libs
404 Architecture: i386 amd64 armhf arm64
405 Multi-Arch: same
406@@ -87,7 +100,7 @@
407 Contains the shared libraries required for the Mir server to interact with
408 the hardware platform using the Mesa drivers.
409
410-Package: libmirplatformgraphics-android
411+Package: libmirplatform3driver-android
412 Section: libs
413 Architecture: i386 amd64 armhf
414 Multi-Arch: same
415@@ -106,8 +119,13 @@
416 Architecture: i386 amd64 armhf arm64
417 Multi-Arch: same
418 Pre-Depends: ${misc:Pre-Depends}
419+<<<<<<< TREE
420 Depends: libmircommon1 (= ${binary:Version}),
421 libprotobuf-dev (>= 2.4.1),
422+=======
423+Depends: libmircommon2 (= ${binary:Version}),
424+ libprotobuf-dev (>= 2.4.1),
425+>>>>>>> MERGE-SOURCE
426 ${misc:Depends},
427 Breaks: mircommon-dev (<< 0.6)
428 Replaces: mircommon-dev (<< 0.6)
429@@ -117,6 +135,7 @@
430 .
431 Contains header files required for server and/or client development.
432
433+<<<<<<< TREE
434 Package: libmirplatform-dev
435 Section: libdevel
436 Architecture: i386 amd64 armhf arm64
437@@ -134,6 +153,25 @@
438 .
439 Contains header files required for hardware/driver support development.
440
441+=======
442+Package: libmirplatform-dev
443+Section: libdevel
444+Architecture: i386 amd64 armhf arm64
445+Multi-Arch: same
446+Pre-Depends: ${misc:Pre-Depends}
447+Depends: libmirplatform3 (= ${binary:Version}),
448+ libmircommon-dev,
449+ libboost-program-options-dev,
450+ ${misc:Depends},
451+Breaks: libmirplatform (<< 0.6)
452+Replaces: libmirplatform (<< 0.6)
453+Description: Display server for Ubuntu - development headers
454+ Mir is a display server running on linux systems, with a focus on efficiency,
455+ robust operation and a well-defined driver model.
456+ .
457+ Contains header files required for hardware/driver support development.
458+
459+>>>>>>> MERGE-SOURCE
460 Package: libmirserver-dev
461 Section: libdevel
462 Architecture: i386 amd64 armhf arm64
463@@ -157,8 +195,7 @@
464 Pre-Depends: ${misc:Pre-Depends}
465 Depends: ${misc:Depends},
466 ${shlibs:Depends},
467- libmirclientplatform-mesa (= ${binary:Version}) |
468- libmirclientplatform-android (= ${binary:Version}),
469+ libmirclient8driver-mesa | libmirclient8driver-android,
470 Description: Display server for Ubuntu - client library
471 Mir is a display server running on linux systems, with a focus on efficiency,
472 robust operation and a well-defined driver model.
473@@ -180,14 +217,13 @@
474 .
475 Contains header files required to develop against Mir.
476
477-Package: libmirclientplatform-mesa
478+Package: libmirclient8driver-mesa
479 Section: libs
480 Architecture: i386 amd64 armhf arm64
481 Multi-Arch: same
482 Pre-Depends: ${misc:Pre-Depends}
483 Depends: ${misc:Depends},
484 ${shlibs:Depends}
485-Replaces: libmirclientplatform
486 Description: Display server for Ubuntu - client platform library for Mesa
487 Mir is a display server running on linux systems, with a focus on efficiency,
488 robust operation and a well-defined driver model.
489@@ -195,14 +231,13 @@
490 Contains the shared libraries required for the Mir clients to interact with
491 the underlying hardware platform using the Mesa drivers.
492
493-Package: libmirclientplatform-android
494+Package: libmirclient8driver-android
495 Section: libs
496 Architecture: i386 amd64 armhf
497 Multi-Arch: same
498 Pre-Depends: ${misc:Pre-Depends}
499 Depends: ${misc:Depends},
500 ${shlibs:Depends}
501-Replaces: libmirclientplatform
502 Description: Display server for Ubuntu - client platform library for Android
503 Mir is a display server running on linux systems, with a focus on efficiency,
504 robust operation and a well-defined driver model.
505@@ -250,7 +285,7 @@
506 .
507 Contains a tool for stress testing the Mir display server
508
509-Package: libmircommon1
510+Package: libmircommon2
511 Section: libs
512 Architecture: i386 amd64 armhf arm64
513 Multi-Arch: same
514
515=== modified file 'debian/copyright'
516--- debian/copyright 2013-08-28 03:41:48 +0000
517+++ debian/copyright 2014-09-23 17:34:29 +0000
518@@ -50,7 +50,7 @@
519 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
520 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
521
522-Files: include/client/* include/shared/* src/client/* src/shared/* 3rd_party/android-deps/std/*
523+Files: include/client/* include/common/* src/client/* src/common/* 3rd_party/android-deps/std/*
524 Copyright: 2012-2013, Canonical Ltd.
525 License: LGPL-3
526 This program is free software: you can redistribute it and/or modify
527
528=== modified file 'debian/create_postinst_prerm_scripts.sh'
529--- debian/create_postinst_prerm_scripts.sh 2014-04-15 15:02:05 +0000
530+++ debian/create_postinst_prerm_scripts.sh 2014-09-23 17:34:29 +0000
531@@ -6,7 +6,7 @@
532 deb_host_arch=$1
533 deb_host_multiarch=$2
534
535-mir_platform_types="platformgraphics clientplatform"
536+mir_platform_types="${PLATFORM_DRIVER} ${CLIENT_DRIVER}"
537 case $deb_host_arch in
538 arm64)
539 mir_platforms="mesa"
540
541=== modified file 'debian/install_ld_so_conf.sh'
542--- debian/install_ld_so_conf.sh 2014-04-15 15:02:05 +0000
543+++ debian/install_ld_so_conf.sh 2014-09-23 17:34:29 +0000
544@@ -5,7 +5,7 @@
545 DEB_HOST_ARCH=$1
546 DEB_HOST_MULTIARCH=$2
547
548-mir_platform_types="platformgraphics clientplatform"
549+mir_platform_types="${PLATFORM_DRIVER} ${CLIENT_DRIVER}"
550 case $DEB_HOST_ARCH in
551 arm64)
552 mir_platforms="mesa"
553
554=== renamed file 'debian/libmirclientplatform-android.install' => 'debian/libmirclient8driver-android.install'
555--- debian/libmirclientplatform-android.install 2014-02-14 08:43:47 +0000
556+++ debian/libmirclient8driver-android.install 2014-09-23 17:34:29 +0000
557@@ -1,1 +1,1 @@
558-usr/lib/*/mir/clientplatform/android/*
559+usr/lib/*/mir/client*driver/android/*
560
561=== renamed file 'debian/libmirclientplatform-mesa.install' => 'debian/libmirclient8driver-mesa.install'
562--- debian/libmirclientplatform-mesa.install 2014-02-14 08:43:47 +0000
563+++ debian/libmirclient8driver-mesa.install 2014-09-23 17:34:29 +0000
564@@ -1,1 +1,1 @@
565-usr/lib/*/mir/clientplatform/mesa/*
566+usr/lib/*/mir/client*driver/mesa/*
567
568=== renamed file 'debian/libmircommon1.install' => 'debian/libmircommon2.install'
569--- debian/libmircommon1.install 2014-08-26 14:59:57 +0000
570+++ debian/libmircommon2.install 2014-09-23 17:34:29 +0000
571@@ -1,1 +1,1 @@
572-usr/lib/*/libmircommon.so.1
573+usr/lib/*/libmircommon.so.2
574
575=== renamed file 'debian/libmirplatform2.install' => 'debian/libmirplatform3.install'
576--- debian/libmirplatform2.install 2014-08-26 14:41:22 +0000
577+++ debian/libmirplatform3.install 2014-09-23 17:34:29 +0000
578@@ -1,1 +1,5 @@
579+<<<<<<< TREE
580 usr/lib/*/libmirplatform.so.2
581+=======
582+usr/lib/*/libmirplatform.so.3
583+>>>>>>> MERGE-SOURCE
584
585=== renamed file 'debian/libmirplatformgraphics-android.install' => 'debian/libmirplatform3driver-android.install'
586--- debian/libmirplatformgraphics-android.install 2014-02-14 08:43:47 +0000
587+++ debian/libmirplatform3driver-android.install 2014-09-23 17:34:29 +0000
588@@ -1,1 +1,1 @@
589-usr/lib/*/mir/platformgraphics/android/*
590+usr/lib/*/mir/platform*driver/android/*
591
592=== renamed file 'debian/libmirplatformgraphics-mesa.install' => 'debian/libmirplatform3driver-mesa.install'
593--- debian/libmirplatformgraphics-mesa.install 2014-02-14 08:43:47 +0000
594+++ debian/libmirplatform3driver-mesa.install 2014-09-23 17:34:29 +0000
595@@ -1,1 +1,1 @@
596-usr/lib/*/mir/platformgraphics/mesa/*
597+usr/lib/*/mir/platform*driver/mesa/*
598
599=== modified file 'debian/rules'
600--- debian/rules 2014-08-27 19:34:09 +0000
601+++ debian/rules 2014-09-23 17:34:29 +0000
602@@ -13,6 +13,9 @@
603 export CC=$(DEB_HOST_GNU_TYPE)-gcc-4.9
604 export CXX=$(DEB_HOST_GNU_TYPE)-g++-4.9
605
606+export PLATFORM_DRIVER = platform3driver
607+export CLIENT_DRIVER = client8driver
608+
609 %:
610 dh $@ --parallel --fail-missing
611
612@@ -49,8 +52,8 @@
613
614 override_dh_install:
615 dh_install --fail-missing \
616- -Xusr/lib/$(DEB_HOST_MULTIARCH)/libmirplatformgraphics.so \
617- -Xusr/lib/$(DEB_HOST_MULTIARCH)/libmirclientplatform.so
618+ -Xusr/lib/$(DEB_HOST_MULTIARCH)/libmir$(PLATFORM_DRIVER).so \
619+ -Xusr/lib/$(DEB_HOST_MULTIARCH)/libmir$(CLIENT_DRIVER).so
620 sh debian/install_ld_so_conf.sh $(DEB_HOST_ARCH) $(DEB_HOST_MULTIARCH)
621
622 override_dh_installdeb:
623
624=== added file 'doc/dso_versioning_guide.md'
625--- doc/dso_versioning_guide.md 1970-01-01 00:00:00 +0000
626+++ doc/dso_versioning_guide.md 2014-09-23 17:34:29 +0000
627@@ -0,0 +1,195 @@
628+A brief guide for versioning symbols in the Mir DSOs
629+====================================================
630+
631+So, what do I have to do?
632+-------------------------
633+
634+There are more detailed descriptions below, but as a general rule:
635+
636+ - If you add a new symbol, add it to a _new_ dotted-decimal version stanza,
637+   like `MIR_CLIENT_8.1`, `MIR_CLIENT_8.2`, etc.
638+ - If you change the behaviour or signature of a symbol and not change SONAME,
639+ see "Change symbols without breaking ABI" below
640+ - If you change SONAME, collect all previous symbol version stanzas into a
641+ single labelled with the new SOVER. For example, remove the `MIR_CLIENT_8`,
642+ `MIR_CLIENT_8.1`, and `MIR_CLIENT_8.2` stanzas and consolidate their
643+ contents into a single new `MIR_CLIENT_9` stanza.
644+
645+Can I have some details?
646+------------------------
647+
648+Sure.
649+
650+Mir is a set of libraries, one C++ library for writing display-
651+server/compositor/shells and one C library for writing clients (or, more
652+usually, toolkits for clients) that use a Mir display-server for output. Mir
653+also has internal dynamic libraries for platform support - drivers - and may in
654+future allow the same with extensions to the core functionality. As such, the
655+ABI of these interfaces is important to keep in mind.
656+
657+Mir uses the ELF symbol versioning support. This provides three advantages:
658+
659+ - Consumers of the Mir libraries can know at load time rather than symbol
660+ resolution time whether the library exposes all the symbols they expect.
661+ - We can drop or change the behaviour of symbols without breaking ABI by
662+ exposing multiple different implementations under different versions, and
663+ - We can (modulo protobuf singletons in our current implementation, and with
664+ some care) safely load multiple different versions of Mir libraries into the
665+ same process.
666+
667+When should I bump SONAME?
668+--------------------------
669+
670+There are varying standards for when to bump SONAME. In Mir we choose to bump
671+the SONAME of a library whenever we make a change that could cause a binary
672+linked to the library to fail _as long as_ the binary is using only public
673+interfaces and (where applicable) relying on documented behaviour. In general,
674+changes that make an interface work as described by its documentation will not
675+result in SONAME bumps.
676+
677+With that explanation, you _should_ bump SONAME when:
678+
679+ - You remove a public symbol from a library
680+ - You change the signature of a public symbol _without_ retaining the previous
681+ signature exposed under the old versioning.
682+ - You change the behaviour of a public symbol _without_ retaining the previous
683+ behaviour exposed with the old versioning.
684+
685+If you are changing the behaviour of an interface, think about whether it's easy
686+to maintain the old interface in parallel. If it is, you should consider
687+providing both under different versions. This should become easier over time as
688+the Mir ABI becomes more stable and also more valuable over time as the Mir
689+libraries become more widely used.
690+
691+Load-time version detection
692+---------------------------
693+
694+When using versioned symbols the linker adds an extra, special symbol containing
695+the version(s) exported from the library. Consumers of the library resolve this
696+on library load. For example:
697+
698+ $ objdump -C -T lib/libmirclient.so
699+ …
700+ 00000000002a2080 w DO .data.rel.ro 0000000000000080 MIR_CLIENT_8 vtable for mir::client::DefaultConnectionConfiguration
701+ 0000000000000000 g DO *ABS* 0000000000000000 MIR_CLIENT_8 MIR_CLIENT_8
702+ 0000000000030ed2 g DF .text 0000000000000098 MIR_CLIENT_8 mir::client::DefaultConnectionConfiguration::the_rpc_report()
703+ …
704+
705+This shows the special `MIR_CLIENT_8` symbol of the current libmirclient, along
706+with a versioned symbol in the read-only data segment (the vtable for
707+`mir::client::DefaultConnectionConfiguration`) and a versioned symbol in the
708+text segment (the implementation of
709+`mir::client::DefaultConnectionConfiguration::the_rpc_report()`). If a client
710+needed a symbol versioned with `MIR_CLIENT_9`, it would try to resolve this at
711+load time and fail, rather than failing when the symbol was first referenced -
712+possibly much later, and more confusingly.
713+
714+### So what do I have to do to make this work?
715+
716+When you add new symbols, add them to a new `version` block in the relevant
717+`symbols.map` file, like so:
718+
719+ MIR_CLIENT_8 {
720+ global:
721+ mir_connect_sync;
722+ ...
723+ /* Other symbols go here */
724+ };
725+
726+ MIR_CLIENT_8.1 {
727+ global:
728+ mir_connect_new_symbol;
729+ local:
730+ *;
731+ } MIR_CLIENT_8;
732+
733+Note that the script is read top to bottom; wildcards are greedily bound when
734+first encountered, so to avoid surprises you should only have a wildcard in the
735+final stanza.
736+
737+Change symbols without breaking ABI
738+-----------------------------------
739+
740+ELF DSOs can have multiple implementations for the same symbol with different
741+versions. This means that you can change the signature or behaviour of a symbol
742+without breaking dependants that use the old behaviour. While there can be as
743+many different implementations with different versions as you want, there can
744+only be one default implementation - this is what the linker will resolve to
745+when building a dependant project.
746+
747+Binding different implementations to the versioned symbol is done with `__asm__`
748+directives in the relevant source file(s). The default implementation is
749+specified with `symbol_name@@VERSION`; other versions are specified with
750+`symbol_name@VERSION`.
751+
752+Note that this does _not_ require a change in SONAME. Binaries that have been
753+linked against the old library will continue to work and resolve to the old
754+implementation. Binaries linked against the new library will resolve to the new
755+(default) implementation.
756+
757+### So, what do I have to do to make this work?
758+For example, if you wanted to change the signature of
759+`mir_connection_create_surface` to take a new parameter:
760+
761+`mir_connection_api.cpp`:
762+
763+ __asm__(".symver old_mir_connection_create_surface,mir_connection_create_surface@MIR_CLIENT_8");
764+
765+ MirWaitHandle* old_mir_connection_create_surface(...)
766+ /* The old implementation */
767+
768+ /* The @@ specifies that this is the default version */
769+ __asm__(".symver mir_connection_create_surface,mir_connection_create_surface@@@MIR_CLIENT_8.1");
770+ MirWaitHandle* mir_connection_create_surface(...)
771+ /* The new implementation */
772+
773+`symbols.map`:
774+
775+ MIR_CLIENT_8 {
776+ global:
777+ ...
778+ mir_connection_create_surface;
779+ ...
780+ };
781+
782+ MIR_CLIENT_8.1 {
783+ global:
784+ ...
785+ mir_connection_create_surface;
786+ ...
787+ local:
788+ *;
789+ } MIR_CLIENT_8;
790+
791+Safely load multiple versions of a library into the same address space
792+----------------------------------------------------------------------
793+
794+This benefit is currently theoretical, as there seems to be a Protobuf singleton
795+that aborts if we try this. But should that be resolved, it's theoretically
796+possible and of some benefit...
797+
798+This situation will come about - the Qtmir plugin links to libmirclient and also
799+libEGL, and libEGL will link to libmirclient itself. There is no guarantee that
800+Qtmir and libEGL will link to the same SONAME, and so a process can end up
801+trying to load both `libmirclient.so.8` and `libmirclient.so.9` into its address
802+space. Without symbol versioning this is potentially broken - there's no
803+mechanism for libEGL to only resolve symbols from `libmirclient.so.8` and Qtmir
804+to only resolve symbols from `libmirclient.so.9`, so in cases where symbols have
805+changed use of those symbols will break.
806+
807+By versioning the symbols we ensure that code always gets exactly the symbol
808+implementation it expects, even when multiple library versions are loaded.
809+
810+### So, what do I have to do to make this work?
811+
812+Ensure that different implementations of a symbol have different versions.
813+
814+Additionally there's the complication of passing objects between different
815+versions. For the moment, we can not bother trying to make this work.
816+
817+
818+See also:
819+---------
820+[Binutils manual](https://sourceware.org/binutils/docs/ld/VERSION.html)
821+
822+[Former glibc maintainer's DSO guide](http://www.akkadia.org/drepper/dsohowto.pdf)
823
824=== modified file 'examples/CMakeLists.txt'
825--- examples/CMakeLists.txt 2014-08-08 17:04:36 +0000
826+++ examples/CMakeLists.txt 2014-09-23 17:34:29 +0000
827@@ -1,12 +1,14 @@
828
829-#its a bit troubling that these need to be included for demo_input_filter
830-include_directories(${MIR_3RD_PARTY_INCLUDE_DIRECTORIES})
831-include_directories(${MIR_ANDROID_INCLUDE_DIRECTORIES})
832 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -fno-strict-aliasing -Wextra")
833
834 add_library(eglapp STATIC
835 eglapp.c
836 )
837+
838+add_library(exampleserverconfig STATIC
839+ server_configuration.cpp
840+)
841+
842 target_link_libraries(eglapp
843 mirclient
844 ${EGL_LIBRARIES}
845@@ -121,6 +123,7 @@
846 ${Boost_LIBRARIES}
847 )
848
849+<<<<<<< TREE
850 add_executable(mir_demo_standalone_render_overlays
851 render_overlays.cpp
852 )
853@@ -143,13 +146,15 @@
854 ${Boost_LIBRARIES}
855 )
856
857+=======
858+>>>>>>> MERGE-SOURCE
859 add_executable(mir_demo_standalone_input_filter
860 demo_input_filter.cpp
861- server_configuration.cpp
862 )
863
864 target_link_libraries(mir_demo_standalone_input_filter
865 mirserver
866+ exampleserverconfig
867 )
868
869 set (INSTALL_DEMOS
870@@ -159,6 +164,7 @@
871 mir_demo_client_eglflash
872 mir_demo_client_egltriangle
873 mir_demo_client_eglplasma
874+ mir_demo_client_eglcounter
875 mir_demo_client_fingerpaint
876 mir_demo_client_multiwin
877 mir_demo_client_display_config
878@@ -166,23 +172,18 @@
879 mir_demo_client_prompt_session
880 mir_demo_standalone_input_filter
881 mir_demo_standalone_render_to_fb
882- mir_demo_standalone_render_surfaces
883 )
884
885-add_subdirectory(demo-inprocess-surface-client)
886-add_subdirectory(demo-shell)
887-add_subdirectory(testdraw)
888-
889 install(TARGETS ${INSTALL_DEMOS} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
890
891 add_executable(mir_demo_server_basic
892 basic_server.cpp
893 basic_server_configuration.cpp
894- server_configuration.cpp
895 )
896
897 target_link_libraries(mir_demo_server_basic
898 mirserver
899+ exampleserverconfig
900 ${Boost_LIBRARIES}
901 )
902
903@@ -201,11 +202,11 @@
904 translucent_server_configuration.cpp
905 pixel_format_selector.cpp
906 basic_server_configuration.cpp
907- server_configuration.cpp
908 )
909
910 target_link_libraries(mir_demo_server_translucent
911 mirserver
912+ exampleserverconfig
913 ${Boost_LIBRARIES}
914 )
915
916
917=== modified file 'examples/basic_server_configuration.cpp'
918--- examples/basic_server_configuration.cpp 2014-03-06 06:05:17 +0000
919+++ examples/basic_server_configuration.cpp 2014-09-23 17:34:29 +0000
920@@ -20,7 +20,6 @@
921 #include "mir/options/default_configuration.h"
922
923 #include "mir/abnormal_exit.h"
924-#include "mir/frontend/connector.h"
925 #include "mir/options/option.h"
926
927 #include <cstdlib>
928@@ -54,9 +53,6 @@
929 {
930 if (the_options()->is_set(launch_child_opt))
931 {
932- char buffer[128] = {0};
933- sprintf(buffer, "fd://%d", the_connector()->client_socket_fd());
934- setenv("MIR_SOCKET", buffer, 1);
935 auto ignore = std::system((the_options()->get<std::string>(launch_child_opt) + "&").c_str());
936 (void)ignore;
937 }
938
939=== modified file 'examples/demo_input_filter.cpp'
940--- examples/demo_input_filter.cpp 2014-03-06 06:05:17 +0000
941+++ examples/demo_input_filter.cpp 2014-09-23 17:34:29 +0000
942@@ -84,7 +84,6 @@
943 }
944
945
946-#include <std/MirLog.h>
947 void my_write_to_log(int /*prio*/, char const* buffer)
948 {
949 printf("%s\n", buffer);
950@@ -94,7 +93,6 @@
951 try
952 {
953 DemoServerConfiguration config(argc, argv);
954- mir::write_to_log = my_write_to_log;
955
956 mir::run_mir(config, [](mir::DisplayServer&) {/* empty init */});
957 return 0;
958
959=== modified file 'examples/eglapp.c'
960--- examples/eglapp.c 2014-07-08 16:27:24 +0000
961+++ examples/eglapp.c 2014-09-23 17:34:29 +0000
962@@ -70,12 +70,6 @@
963
964 void mir_eglapp_swap_buffers(void)
965 {
966- static time_t lasttime = 0;
967- static int lastcount = 0;
968- static int count = 0;
969- time_t now = time(NULL);
970- time_t dtime;
971- int dcount;
972 EGLint width, height;
973
974 if (!running)
975@@ -83,16 +77,6 @@
976
977 eglSwapBuffers(egldisplay, eglsurface);
978
979- count++;
980- dcount = count - lastcount;
981- dtime = now - lasttime;
982- if (dtime)
983- {
984- printf("%d FPS\n", dcount);
985- lasttime = now;
986- lastcount = count;
987- }
988-
989 /*
990 * Querying the surface (actually the current buffer) dimensions here is
991 * the only truly safe way to be sure that the dimensions we think we
992@@ -404,6 +388,7 @@
993
994 signal(SIGINT, shutdown);
995 signal(SIGTERM, shutdown);
996+ signal(SIGHUP, shutdown);
997
998 *width = surfaceparm.width;
999 *height = surfaceparm.height;
1000
1001=== modified file 'examples/fingerpaint.c'
1002--- examples/fingerpaint.c 2014-07-21 03:35:31 +0000
1003+++ examples/fingerpaint.c 2014-09-23 17:34:29 +0000
1004@@ -403,6 +403,7 @@
1005 {
1006 signal(SIGINT, shutdown);
1007 signal(SIGTERM, shutdown);
1008+ signal(SIGHUP, shutdown);
1009
1010 clear_region(&canvas, &background);
1011 redraw(surf, &canvas);
1012
1013=== modified file 'examples/flicker.c'
1014--- examples/flicker.c 2014-03-06 06:05:17 +0000
1015+++ examples/flicker.c 2014-09-23 17:34:29 +0000
1016@@ -156,10 +156,6 @@
1017 uint32_t pattern[2] = {0};
1018 fill_pattern(pattern, pixel_format);
1019
1020- time_t lasttime = 0;
1021- int lastcount = 0;
1022- int count = 0;
1023-
1024 MirGraphicsRegion graphics_region;
1025 int i=0;
1026 while (1)
1027@@ -168,15 +164,6 @@
1028 i++;
1029 render_pattern(&graphics_region, pattern[i & 1]);
1030 mir_surface_swap_buffers_sync(surface);
1031-
1032- count++;
1033- time_t now = time(NULL);
1034- if (now != lasttime)
1035- {
1036- printf("%d FPS\n", count - lastcount);
1037- lasttime = now;
1038- lastcount = count;
1039- }
1040 }
1041
1042 mir_surface_release_sync(surface);
1043
1044=== modified file 'examples/multiwin.c'
1045--- examples/multiwin.c 2014-07-11 03:33:03 +0000
1046+++ examples/multiwin.c 2014-09-23 17:34:29 +0000
1047@@ -218,6 +218,7 @@
1048
1049 signal(SIGINT, shutdown);
1050 signal(SIGTERM, shutdown);
1051+ signal(SIGHUP, shutdown);
1052
1053 while (running)
1054 {
1055
1056=== modified file 'examples/pixel_format_selector.cpp'
1057--- examples/pixel_format_selector.cpp 2014-03-26 05:48:59 +0000
1058+++ examples/pixel_format_selector.cpp 2014-09-23 17:34:29 +0000
1059@@ -19,11 +19,18 @@
1060 #include "pixel_format_selector.h"
1061
1062 #include "mir/graphics/display_configuration.h"
1063-#include "mir/graphics/pixel_format_utils.h"
1064
1065 #include <stdexcept>
1066 #include <algorithm>
1067
1068+namespace
1069+{
1070+bool contains_alpha(MirPixelFormat format)
1071+{
1072+ return (format == mir_pixel_format_abgr_8888 ||
1073+ format == mir_pixel_format_argb_8888);
1074+}
1075+}
1076
1077 namespace mir
1078 {
1079@@ -48,7 +55,7 @@
1080 conf_output.pixel_formats.end(),
1081 [&](MirPixelFormat format) -> bool
1082 {
1083- return graphics::contains_alpha(format) == with_alpha;
1084+ return contains_alpha(format) == with_alpha;
1085 }
1086 );
1087
1088
1089=== modified file 'examples/progressbar.c'
1090--- examples/progressbar.c 2014-03-06 06:05:17 +0000
1091+++ examples/progressbar.c 2014-09-23 17:34:29 +0000
1092@@ -268,6 +268,7 @@
1093
1094 signal(SIGINT, shutdown);
1095 signal(SIGTERM, shutdown);
1096+ signal(SIGHUP, shutdown);
1097
1098 while (running)
1099 {
1100
1101=== renamed directory 'include/shared' => 'include/common'
1102=== modified file 'include/common/mir/geometry/rectangle.h'
1103--- include/shared/mir/geometry/rectangle.h 2014-07-21 03:35:31 +0000
1104+++ include/common/mir/geometry/rectangle.h 2014-09-23 17:34:29 +0000
1105@@ -20,7 +20,7 @@
1106 #ifndef MIR_GEOMETRY_RECTANGLE_H_
1107 #define MIR_GEOMETRY_RECTANGLE_H_
1108
1109-#include "point.h"
1110+#include "mir/geometry/point.h"
1111 #include "size.h"
1112
1113 #include <iosfwd>
1114
1115=== modified file 'include/common/mir/geometry/rectangles.h'
1116--- include/shared/mir/geometry/rectangles.h 2013-08-28 03:41:48 +0000
1117+++ include/common/mir/geometry/rectangles.h 2014-09-23 17:34:29 +0000
1118@@ -14,13 +14,16 @@
1119 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1120 *
1121 * Authored by: Alexandros Frantzis <alexandros.frantzis@canonical.com>
1122+ *
1123+ * XXX This header is only used externally in one location in QtMir. It could
1124+ * possibly be made private with only minor changes.
1125 */
1126
1127 #ifndef MIR_GEOMETRY_RECTANGLES_H_
1128 #define MIR_GEOMETRY_RECTANGLES_H_
1129
1130-#include "point.h"
1131-#include "rectangle.h"
1132+#include "mir/geometry/point.h"
1133+#include "mir/geometry/rectangle.h"
1134
1135 #include <vector>
1136 #include <initializer_list>
1137
1138=== modified file 'include/common/mir/geometry/size.h'
1139--- include/shared/mir/geometry/size.h 2014-03-06 06:05:17 +0000
1140+++ include/common/mir/geometry/size.h 2014-09-23 17:34:29 +0000
1141@@ -19,7 +19,7 @@
1142 #ifndef MIR_GEOMETRY_SIZE_H_
1143 #define MIR_GEOMETRY_SIZE_H_
1144
1145-#include "dimensions.h"
1146+#include "mir/geometry/dimensions.h"
1147 #include <iosfwd>
1148
1149 namespace mir
1150
1151=== added directory 'include/common/mir/time'
1152=== renamed file 'include/server/mir/time/clock.h' => 'include/common/mir/time/clock.h'
1153--- include/server/mir/time/clock.h 2014-03-06 06:05:17 +0000
1154+++ include/common/mir/time/clock.h 2014-09-23 17:34:29 +0000
1155@@ -2,15 +2,15 @@
1156 * Copyright © 2012 Canonical Ltd.
1157 *
1158 * This program is free software: you can redistribute it and/or modify it
1159- * under the terms of the GNU General Public License version 3,
1160+ * under the terms of the GNU Lesser General Public License version 3,
1161 * as published by the Free Software Foundation.
1162 *
1163 * This program is distributed in the hope that it will be useful,
1164 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1165 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1166- * GNU General Public License for more details.
1167+ * GNU Lesser General Public License for more details.
1168 *
1169- * You should have received a copy of the GNU General Public License
1170+ * You should have received a copy of the GNU Lesser General Public License
1171 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1172 *
1173 * Authored by: Thomas Voss <thomas.voss@canonical.com>
1174@@ -27,6 +27,7 @@
1175 {
1176
1177 typedef std::chrono::high_resolution_clock::time_point Timestamp;
1178+typedef std::chrono::high_resolution_clock::duration Duration;
1179
1180 class Clock
1181 {
1182
1183=== modified file 'include/platform/mir/graphics/display_configuration.h'
1184--- include/platform/mir/graphics/display_configuration.h 2014-06-02 17:07:02 +0000
1185+++ include/platform/mir/graphics/display_configuration.h 2014-09-23 17:34:29 +0000
1186@@ -23,7 +23,6 @@
1187 #include "mir/geometry/size.h"
1188 #include "mir/geometry/rectangle.h"
1189 #include "mir/geometry/point.h"
1190-#include "mir/graphics/pixel_format_utils.h"
1191 #include "mir_toolkit/common.h"
1192
1193 #include <functional>
1194
1195=== modified file 'include/platform/mir/graphics/platform.h'
1196--- include/platform/mir/graphics/platform.h 2014-06-19 15:44:20 +0000
1197+++ include/platform/mir/graphics/platform.h 2014-09-23 17:34:29 +0000
1198@@ -53,6 +53,7 @@
1199 class GraphicBufferAllocator;
1200 class GLConfig;
1201 class GLProgramFactory;
1202+class BufferWriter;
1203
1204 enum class BufferIpcMsgType
1205 {
1206@@ -86,6 +87,8 @@
1207
1208 virtual std::shared_ptr<GraphicBufferAllocator> create_buffer_allocator(
1209 std::shared_ptr<BufferInitializer> const& buffer_initializer) = 0;
1210+
1211+ virtual std::shared_ptr<BufferWriter> make_buffer_writer() = 0;
1212
1213 /**
1214 * Creates the display subsystem.
1215
1216=== modified file 'include/platform/mir/options/configuration.h'
1217--- include/platform/mir/options/configuration.h 2014-08-08 17:06:49 +0000
1218+++ include/platform/mir/options/configuration.h 2014-09-23 17:34:29 +0000
1219@@ -19,7 +19,7 @@
1220 #ifndef MIR_OPTIONS_CONFIGURATION_H_
1221 #define MIR_OPTIONS_CONFIGURATION_H_
1222
1223-#include "mir/options/program_option.h"
1224+#include "mir/options/option.h"
1225
1226 #include <memory>
1227
1228@@ -41,7 +41,12 @@
1229 extern char const* const input_report_opt;
1230 extern char const* const host_socket_opt;
1231 extern char const* const frontend_threads_opt;
1232-extern char const* const fatal_abort_opt;
1233+<<<<<<< TREE
1234+extern char const* const fatal_abort_opt;
1235+=======
1236+extern char const* const touchspots_opt;
1237+extern char const* const fatal_abort_opt;
1238+>>>>>>> MERGE-SOURCE
1239
1240 extern char const* const name_opt;
1241 extern char const* const offscreen_opt;
1242
1243=== modified file 'include/platform/mir/options/default_configuration.h'
1244--- include/platform/mir/options/default_configuration.h 2014-08-08 17:03:03 +0000
1245+++ include/platform/mir/options/default_configuration.h 2014-09-23 17:34:29 +0000
1246@@ -20,7 +20,8 @@
1247 #define MIR_OPTIONS_DEFAULT_CONFIGURATION_H_
1248
1249 #include "mir/options/configuration.h"
1250-
1251+#include "mir/options/program_option.h"
1252+#include <boost/program_options/options_description.hpp>
1253
1254 namespace mir
1255 {
1256
1257=== modified file 'include/platform/mir/options/program_option.h'
1258--- include/platform/mir/options/program_option.h 2014-08-08 17:03:03 +0000
1259+++ include/platform/mir/options/program_option.h 2014-09-23 17:34:29 +0000
1260@@ -20,7 +20,7 @@
1261 #ifndef MIR_OPTIONS_PROGRAM_OPTION_H_
1262 #define MIR_OPTIONS_PROGRAM_OPTION_H_
1263
1264-#include "option.h"
1265+#include "mir/options/option.h"
1266
1267 #include <boost/program_options/variables_map.hpp>
1268 #include <boost/program_options/options_description.hpp>
1269
1270=== removed directory 'include/platform/mir/udev'
1271=== modified file 'include/server/mir/default_server_configuration.h'
1272--- include/server/mir/default_server_configuration.h 2014-08-08 17:06:49 +0000
1273+++ include/server/mir/default_server_configuration.h 2014-09-23 17:34:29 +0000
1274@@ -105,6 +105,7 @@
1275 class BufferInitializer;
1276 class DisplayReport;
1277 class GraphicBufferAllocator;
1278+class BufferWriter;
1279 class Cursor;
1280 class CursorImage;
1281 class GLConfig;
1282@@ -114,7 +115,7 @@
1283 namespace input
1284 {
1285 class InputReport;
1286-class InputTargets;
1287+class Scene;
1288 class InputManager;
1289 class CompositeEventFilter;
1290 class InputChannelFactory;
1291@@ -214,6 +215,7 @@
1292 * dependencies of compositor on the rest of the Mir
1293 * @{ */
1294 virtual std::shared_ptr<graphics::GraphicBufferAllocator> the_buffer_allocator();
1295+ virtual std::shared_ptr<graphics::BufferWriter> the_buffer_writer();
1296 virtual std::shared_ptr<compositor::Scene> the_scene();
1297 virtual std::shared_ptr<compositor::FrameDroppingPolicyFactory> the_frame_dropping_policy_factory();
1298 /** @} */
1299@@ -291,7 +293,7 @@
1300 virtual std::shared_ptr<input::InputReport> the_input_report();
1301 virtual std::shared_ptr<input::CompositeEventFilter> the_composite_event_filter();
1302 virtual std::shared_ptr<shell::InputTargeter> the_input_targeter();
1303- virtual std::shared_ptr<input::InputTargets> the_input_targets();
1304+ virtual std::shared_ptr<input::Scene> the_input_scene();
1305 virtual std::shared_ptr<input::CursorListener> the_cursor_listener();
1306 virtual std::shared_ptr<input::TouchVisualizer> the_touch_visualizer();
1307 virtual std::shared_ptr<input::InputRegion> the_input_region();
1308@@ -359,6 +361,7 @@
1309 CachedPtr<graphics::NativePlatform> graphics_native_platform;
1310 CachedPtr<graphics::BufferInitializer> buffer_initializer;
1311 CachedPtr<graphics::GraphicBufferAllocator> buffer_allocator;
1312+ CachedPtr<graphics::BufferWriter> buffer_writer;
1313 CachedPtr<graphics::Display> display;
1314 CachedPtr<graphics::Cursor> cursor;
1315 CachedPtr<graphics::CursorImage> default_cursor_image;
1316
1317=== removed directory 'include/server/mir/graphics'
1318=== removed directory 'include/server/mir/input/android'
1319=== modified file 'include/server/mir/input/cursor_listener.h'
1320--- include/server/mir/input/cursor_listener.h 2013-04-30 20:44:31 +0000
1321+++ include/server/mir/input/cursor_listener.h 2014-09-23 17:34:29 +0000
1322@@ -35,8 +35,8 @@
1323
1324 protected:
1325 CursorListener() = default;
1326- CursorListener(const CursorListener&) = delete;
1327- CursorListener& operator=(const CursorListener&) = delete;
1328+ CursorListener(CursorListener const&) = delete;
1329+ CursorListener& operator=(CursorListener const&) = delete;
1330 };
1331
1332 }
1333
1334=== modified file 'include/server/mir/input/touch_visualizer.h'
1335--- include/server/mir/input/touch_visualizer.h 2014-08-08 17:01:17 +0000
1336+++ include/server/mir/input/touch_visualizer.h 2014-09-23 17:34:29 +0000
1337@@ -1,3 +1,4 @@
1338+<<<<<<< TREE
1339 /*
1340 * Copyright © 2014 Canonical Ltd.
1341 *
1342@@ -56,3 +57,67 @@
1343 }
1344
1345 #endif // MIR_INPUT_TOUCH_VISUALIZER_H_
1346+=======
1347+/*
1348+ * Copyright © 2014 Canonical Ltd.
1349+ *
1350+ * This program is free software: you can redistribute it and/or modify it
1351+ * under the terms of the GNU General Public License version 3,
1352+ * as published by the Free Software Foundation.
1353+ *
1354+ * This program is distributed in the hope that it will be useful,
1355+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1356+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1357+ * GNU General Public License for more details.
1358+ *
1359+ * You should have received a copy of the GNU General Public License
1360+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1361+ *
1362+ * Authored by: Robert Carr <robert.carr@canonical.com>
1363+ */
1364+
1365+#ifndef MIR_INPUT_TOUCH_VISUALIZER_H_
1366+#define MIR_INPUT_TOUCH_VISUALIZER_H_
1367+
1368+#include "mir/geometry/point.h"
1369+
1370+#include <vector>
1371+
1372+namespace mir
1373+{
1374+namespace input
1375+{
1376+
1377+/// An interface for listening to a low level stream of touches, in order to provide
1378+// a "spot" style visualization.
1379+class TouchVisualizer
1380+{
1381+public:
1382+ virtual ~TouchVisualizer() = default;
1383+
1384+ struct Spot
1385+ {
1386+ geometry::Point touch_location;
1387+
1388+ // If pressure is zero, the touch-point can be interpreted as a hover.
1389+ float pressure;
1390+ };
1391+
1392+ // Toggle visualization of touches
1393+ virtual void enable() = 0;
1394+ virtual void disable() = 0;
1395+
1396+ // Visualize a given set of touches statelessly.
1397+ virtual void visualize_touches(std::vector<Spot> const& touches) = 0;
1398+
1399+protected:
1400+ TouchVisualizer() = default;
1401+ TouchVisualizer(const TouchVisualizer&) = delete;
1402+ TouchVisualizer& operator=(const TouchVisualizer&) = delete;
1403+};
1404+
1405+}
1406+}
1407+
1408+#endif // MIR_INPUT_TOUCH_VISUALIZER_H_
1409+>>>>>>> MERGE-SOURCE
1410
1411=== removed directory 'include/server/mir/logging'
1412=== removed directory 'include/server/mir/report'
1413=== removed directory 'include/server/mir/report/logging'
1414=== removed directory 'include/shared/mir/frontend'
1415=== removed directory 'include/shared/mir/graphics/android'
1416=== removed directory 'include/shared/mir/input/android'
1417=== removed directory 'include/shared/mir/logging'
1418=== removed directory 'include/shared/mir/protobuf'
1419=== removed directory 'include/shared/mir/raii'
1420=== removed directory 'include/shared/mir/report'
1421=== removed directory 'include/shared/mir/report/lttng'
1422=== removed directory 'include/shared/mir/udev'
1423=== removed file 'include/test/mir_test_framework/input_testing_client_configuration.h'
1424--- include/test/mir_test_framework/input_testing_client_configuration.h 2014-05-27 10:35:07 +0000
1425+++ include/test/mir_test_framework/input_testing_client_configuration.h 1970-01-01 00:00:00 +0000
1426@@ -1,69 +0,0 @@
1427-/*
1428- * Copyright © 2013 Canonical Ltd.
1429- *
1430- * This program is free software: you can redistribute it and/or modify it
1431- * under the terms of the GNU General Public License version 3,
1432- * as published by the Free Software Foundation.
1433- *
1434- * This program is distributed in the hope that it will be useful,
1435- * but WITHOUT ANY WARRANTY; without even the implied warranty of
1436- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1437- * GNU General Public License for more details.
1438- *
1439- * You should have received a copy of the GNU General Public License
1440- * along with this program. If not, see <http://www.gnu.org/licenses/>.
1441- *
1442- * Authored by: Robert Carr <robert.carr@canonical.com>n
1443- */
1444-
1445-#ifndef MIR_TEST_FRAMEWORK_INPUT_TESTING_CLIENT_CONFIGURATION
1446-#define MIR_TEST_FRAMEWORK_INPUT_TESTING_CLIENT_CONFIGURATION
1447-
1448-#include "mir_test_framework/testing_client_configuration.h"
1449-#include "mir_test/barrier.h"
1450-
1451-#include <mir_toolkit/event.h>
1452-
1453-#include <gmock/gmock.h>
1454-
1455-#include <string>
1456-
1457-namespace mir { namespace test { class WaitCondition; } }
1458-namespace mir_test_framework
1459-{
1460-
1461-/// A fixture to be used with InputTestingServerConfiguration for input acceptance testing scenarios.
1462-/// By default, the client will connect and a surface will be created.
1463-/// The framework ensures the server will not send events before client is ready through CrossProcessSync.
1464-class InputTestingClientConfiguration : public TestingClientConfiguration
1465-{
1466-public:
1467- InputTestingClientConfiguration(std::string const& client_name, mir::test::Barrier& input_cb_setup_fence);
1468- virtual ~InputTestingClientConfiguration() = default;
1469-
1470- void exec();
1471-
1472- struct MockInputHandler
1473- {
1474- MOCK_METHOD1(handle_input, void(MirEvent const*));
1475- };
1476- // This function will be called at an appropriate time for input expectations to be set.
1477- // on handler. It is expected that mt::WakeUp(all_events_received) will be triggered by
1478- // the last expectation, as this is what triggers the verification of the Mock and
1479- // termination of the testing client.
1480- virtual void expect_input(MockInputHandler &handler, mir::test::WaitCondition& all_events_received) = 0;
1481-
1482- // This fixture is intended to be used with InputTestingServer
1483- // which allows for setting surface sizes as part of the
1484- // input-testing shell.
1485- static int const surface_width = 100;
1486- static int const surface_height = 100;
1487-
1488- std::string connect_string;
1489-private:
1490- std::string const client_name;
1491- mir::test::Barrier& input_cb_setup_fence;
1492-};
1493-
1494-}
1495-#endif /* MIR_TEST_FRAMEWORK_INPUT_TESTING_CLIENT_CONFIGURATION */
1496
1497=== modified file 'platform-ABI-sha1sums'
1498--- platform-ABI-sha1sums 2014-08-27 19:35:36 +0000
1499+++ platform-ABI-sha1sums 2014-09-23 17:34:29 +0000
1500@@ -1,3 +1,4 @@
1501+<<<<<<< TREE
1502 871e609c0fed0d566ddbaaa8ac2d7cd5c06dd09a include/platform/mir/abnormal_exit.h
1503 498d728ea1052cb6cadb9de7828ae48eb5a201df include/platform/mir/emergency_cleanup_registry.h
1504 8f47feb6d983aa5c9ebd58e9d1524361c9f5e651 include/platform/mir/fatal.h
1505@@ -87,3 +88,44 @@
1506 101017c17714a57db57d79b7b5e7df40a3568236 include/shared/mir_toolkit/mir_native_buffer.h
1507 9f646fa12eaca5fc3b7a8fde6208673c071c8ef3 include/shared/mir/udev/wrapper.h
1508 9fd77ab693cc4c9a200e44804f5493733528a674 include/shared/mir/variable_length_array.h
1509+=======
1510+3329ada91412ded2f127aee9a92f065e57b81cb2 include/common/mir/cached_ptr.h
1511+82ff9499ef62739379616e02164dc98f9914c329 include/common/mir/fd.h
1512+b399dc08514751c86e23824612a52378dd9b1e23 include/common/mir/geometry/dimensions.h
1513+d954464ef2d20c2876db68c94512a443186da09b include/common/mir/geometry/point.h
1514+dc7c62d3916eec025e8e7deaf57e06077ce38928 include/common/mir/geometry/rectangle.h
1515+5161774957e3ca4f5fa4e7db025d0978d2bbef06 include/common/mir/geometry/rectangles.h
1516+42646c2367b9821e3aa71feff6e31cf50526acaa include/common/mir/geometry/size.h
1517+e1be9faee8b844ca2ce617f8fd82c9ee08d56bed include/common/mir/graphics/native_buffer.h
1518+dcf8b8982f138bdde39a241825c610e955cd5e33 include/common/mir/input/input_platform.h
1519+208cd6aed5ef5f8f39b3eb86604e4133cb840485 include/common/mir/input/input_receiver_thread.h
1520+be7d58c9fde2ce91cc66dd6144b76e08b536266b include/common/mir/int_wrapper.h
1521+48015c67ddc4998ed5a2e8bb04ff3a4bfdd6a613 include/common/mir/time/clock.h
1522+9907751d046e4aea81881cf19e5df52c7a6a813e include/common/mir_toolkit/client_types.h
1523+183d9e5e6cfe48b3d9145a28541dd4202ff6137b include/common/mir_toolkit/common.h
1524+fce4c1a9e0d037244f7e9e96ea2d8eaab4fc404c include/common/mir_toolkit/cursors.h
1525+bdaceadd56e41d2cb708f7c4da97acf84dfc75b7 include/common/mir_toolkit/event.h
1526+99ef5f3bf548508fae24c60f74be1dea018a6e8c include/common/mir_toolkit/mesa/native_display.h
1527+101017c17714a57db57d79b7b5e7df40a3568236 include/common/mir_toolkit/mir_native_buffer.h
1528+871e609c0fed0d566ddbaaa8ac2d7cd5c06dd09a include/platform/mir/abnormal_exit.h
1529+e9e97ba2db4c6aeb269630547bf5a558da17d896 include/platform/mir/graphics/basic_platform.h
1530+54328767ca330ba166160a486bd0688406ab0222 include/platform/mir/graphics/buffer.h
1531+5875f13f5b029a4b5291e9baec3ae434b72be27c include/platform/mir/graphics/buffer_id.h
1532+748f5c2aab11189aa02c4a89ab900561548e7304 include/platform/mir/graphics/buffer_properties.h
1533+986f5d0d8ea2c6a42cc320f468e682f81fec46ae include/platform/mir/graphics/display_buffer.h
1534+f53a0020b8f1bd4a941a201eb26271cffee0a7dd include/platform/mir/graphics/display_configuration.h
1535+6fe08da318c920b0d20ea8b8f560f5ac7ed389fe include/platform/mir/graphics/display_configuration_policy.h
1536+41ea906d208b761e3d5d5056095de9de2d4ffa17 include/platform/mir/graphics/display.h
1537+815405c5aee8000bc18c1c9480bac620a451b416 include/platform/mir/graphics/event_handler_register.h
1538+5dc095474ef3e294c0aa4008e9ed997bdb21d34c include/platform/mir/graphics/gl_config.h
1539+d0442a5d5d88a4be6e3e1f99e433c1c43a86bfce include/platform/mir/graphics/gl_context.h
1540+979d2c1ac723ccef538d9a378228a02b0f173bd7 include/platform/mir/graphics/graphic_buffer_allocator.h
1541+f90a35371e236a6cfec8e9a8474dbb3305c7621e include/platform/mir/graphics/internal_client.h
1542+c9730cac4a3a101f9706ec6f444958abe047fd88 include/platform/mir/graphics/internal_surface.h
1543+c775727ea15fd8affa5b4dc9cd226d782e436001 include/platform/mir/graphics/platform.h
1544+15f201741a465de33e55ffc1ea775b507a5be950 include/platform/mir/graphics/renderable.h
1545+f5746dab3336266cfd410ce4e4d01333df6e5b99 include/platform/mir/options/configuration.h
1546+47007c783c174f8e94d332c4b13c6b01358b48fb include/platform/mir/options/default_configuration.h
1547+b45f14082c4f8b29efaa1b13de795dcb29deb738 include/platform/mir/options/option.h
1548+3c37cc31e8b290b89c311d82f02e07d342766451 include/platform/mir/options/program_option.h
1549+>>>>>>> MERGE-SOURCE
1550
1551=== added directory 'playground'
1552=== added file 'playground/CMakeLists.txt'
1553--- playground/CMakeLists.txt 1970-01-01 00:00:00 +0000
1554+++ playground/CMakeLists.txt 2014-09-23 17:34:29 +0000
1555@@ -0,0 +1,37 @@
1556+
1557+include_directories(
1558+ ${PROJECT_SOURCE_DIR}/src/include/server
1559+ ${PROJECT_SOURCE_DIR}/src/include/platform
1560+ ${PROJECT_SOURCE_DIR}/include/client
1561+ ${PROJECT_SOURCE_DIR}/include/server
1562+ ${PROJECT_SOURCE_DIR}/include/platform
1563+ ${PROJECT_SOURCE_DIR}/examples/
1564+)
1565+
1566+set(RENDER_SURFACES_SOURCES
1567+ render_surfaces.cpp
1568+ buffer_render_target.cpp
1569+ image_renderer.cpp
1570+)
1571+add_executable(mir_demo_standalone_render_surfaces ${RENDER_SURFACES_SOURCES})
1572+target_link_libraries(mir_demo_standalone_render_surfaces
1573+ mirserver
1574+ exampleserverconfig
1575+ ${Boost_LIBRARIES}
1576+)
1577+
1578+install(TARGETS mir_demo_standalone_render_surfaces RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1579+
1580+add_executable(mir_demo_standalone_render_overlays
1581+ render_overlays.cpp
1582+)
1583+
1584+target_link_libraries(mir_demo_standalone_render_overlays
1585+ mirserver
1586+ mirtestdraw
1587+ mircommon
1588+)
1589+
1590+add_subdirectory(testdraw/)
1591+add_subdirectory(demo-shell/)
1592+add_subdirectory(demo-inprocess-surface-client/)
1593\ No newline at end of file
1594
1595=== added file 'playground/README'
1596--- playground/README 1970-01-01 00:00:00 +0000
1597+++ playground/README 2014-09-23 17:34:29 +0000
1598@@ -0,0 +1,6 @@
1599+The Playground
1600+
1601+These are mir demos that excercise private in-flux mir functionality.
1602+As such functionality matures, related headers become public and the playground
1603+code may become an example of how to use such feature.
1604+
1605
1606=== renamed file 'examples/buffer_render_target.cpp' => 'playground/buffer_render_target.cpp'
1607=== renamed file 'examples/buffer_render_target.h' => 'playground/buffer_render_target.h'
1608=== renamed directory 'examples/demo-inprocess-surface-client' => 'playground/demo-inprocess-surface-client'
1609=== modified file 'playground/demo-inprocess-surface-client/CMakeLists.txt'
1610--- examples/demo-inprocess-surface-client/CMakeLists.txt 2013-08-28 03:41:48 +0000
1611+++ playground/demo-inprocess-surface-client/CMakeLists.txt 2014-09-23 17:34:29 +0000
1612@@ -1,14 +1,12 @@
1613-include_directories(..)
1614-
1615 add_executable(mir_demo_standalone_inprocess_egl
1616 demo_inprocess_surface_client.cpp
1617 inprocess_egl_client.cpp
1618 example_egl_helper.cpp
1619- ../server_configuration.cpp
1620 )
1621
1622 target_link_libraries(mir_demo_standalone_inprocess_egl
1623 mirserver
1624 mirdraw
1625+ exampleserverconfig
1626 )
1627 # TODO Install this demo?
1628
1629=== modified file 'playground/demo-inprocess-surface-client/demo_inprocess_surface_client.cpp'
1630--- examples/demo-inprocess-surface-client/demo_inprocess_surface_client.cpp 2014-03-06 06:05:17 +0000
1631+++ playground/demo-inprocess-surface-client/demo_inprocess_surface_client.cpp 2014-09-23 17:34:29 +0000
1632@@ -19,7 +19,7 @@
1633 #include "inprocess_egl_client.h"
1634
1635 #include "mir/run_mir.h"
1636-#include "../server_configuration.h"
1637+#include "server_configuration.h"
1638
1639 #include "mir/report_exception.h"
1640
1641
1642=== renamed directory 'examples/demo-shell' => 'playground/demo-shell'
1643=== modified file 'playground/demo-shell/CMakeLists.txt'
1644--- examples/demo-shell/CMakeLists.txt 2014-08-26 14:39:46 +0000
1645+++ playground/demo-shell/CMakeLists.txt 2014-09-23 17:34:29 +0000
1646@@ -3,7 +3,10 @@
1647 demo_renderer.cpp
1648 fullscreen_placement_strategy.cpp
1649 window_manager.cpp
1650- ../server_configuration.cpp
1651+)
1652+
1653+add_executable(mir_demo_server_shell
1654+ demo_shell.cpp
1655 )
1656
1657 add_executable(mir_demo_server_shell
1658@@ -13,6 +16,7 @@
1659 target_link_libraries(mir_demo_server_shell
1660 demo-shell
1661 mirserver
1662+ exampleserverconfig
1663 )
1664
1665 install(TARGETS mir_demo_server_shell RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1666
1667=== modified file 'playground/demo-shell/demo_compositor.cpp'
1668--- examples/demo-shell/demo_compositor.cpp 2014-08-29 13:16:11 +0000
1669+++ playground/demo-shell/demo_compositor.cpp 2014-09-23 17:34:29 +0000
1670@@ -1,3 +1,4 @@
1671+<<<<<<< TREE
1672 /*
1673 * Copyright © 2014 Canonical Ltd.
1674 *
1675@@ -103,3 +104,115 @@
1676 report->finished_frame(false, this);
1677 }
1678 }
1679+=======
1680+/*
1681+ * Copyright © 2014 Canonical Ltd.
1682+ *
1683+ * This program is free software: you can redistribute it and/or modify
1684+ * it under the terms of the GNU General Public License version 3 as
1685+ * published by the Free Software Foundation.
1686+ *
1687+ * This program is distributed in the hope that it will be useful,
1688+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1689+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1690+ * GNU General Public License for more details.
1691+ *
1692+ * You should have received a copy of the GNU General Public License
1693+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1694+ *
1695+ * Authored by: Kevin DuBois <kevin.dubois@canonical.com>
1696+ */
1697+
1698+#include "mir/graphics/display_buffer.h"
1699+#include "mir/compositor/compositor_report.h"
1700+#include "mir/compositor/scene.h"
1701+#include "mir/compositor/scene_element.h"
1702+#include "mir/compositor/destination_alpha.h"
1703+#include "demo_compositor.h"
1704+
1705+namespace me = mir::examples;
1706+namespace mg = mir::graphics;
1707+namespace mc = mir::compositor;
1708+namespace geom = mir::geometry;
1709+
1710+namespace
1711+{
1712+mc::DestinationAlpha destination_alpha(mg::DisplayBuffer const& db)
1713+{
1714+ return db.uses_alpha() ? mc::DestinationAlpha::generate_from_source : mc::DestinationAlpha::opaque;
1715+}
1716+}
1717+
1718+me::DemoCompositor::DemoCompositor(
1719+ mg::DisplayBuffer& display_buffer,
1720+ std::shared_ptr<mc::Scene> const& scene,
1721+ mg::GLProgramFactory const& factory,
1722+ std::shared_ptr<mc::CompositorReport> const& report) :
1723+ display_buffer(display_buffer),
1724+ scene(scene),
1725+ report(report),
1726+ renderer(
1727+ factory,
1728+ display_buffer.view_area(),
1729+ destination_alpha(display_buffer),
1730+ 30.0f, //titlebar_height
1731+ 80.0f) //shadow_radius
1732+{
1733+ scene->register_compositor(this);
1734+}
1735+
1736+me::DemoCompositor::~DemoCompositor()
1737+{
1738+ scene->unregister_compositor(this);
1739+}
1740+
1741+void me::DemoCompositor::composite()
1742+{
1743+ report->began_frame(this);
1744+ //a simple filtering out of renderables that shouldn't be drawn
1745+ //the elements should be notified if they are rendered or not
1746+ bool nonrenderlist_elements{false};
1747+ mg::RenderableList renderable_list;
1748+ std::unordered_set<mg::Renderable::ID> decoration_skip_list;
1749+
1750+ auto elements = scene->scene_elements_for(this);
1751+ for(auto const& it : elements)
1752+ {
1753+ auto const& renderable = it->renderable();
1754+ auto const& view_area = display_buffer.view_area();
1755+ auto embellished = renderer.would_embellish(*renderable, view_area);
1756+ auto any_part_drawn = (view_area.overlaps(renderable->screen_position()) || embellished);
1757+
1758+ if (!it->is_a_surface())
1759+ decoration_skip_list.insert(renderable->id());
1760+ if (renderable->visible() && any_part_drawn)
1761+ {
1762+ renderable_list.push_back(renderable);
1763+ it->rendered_in(this);
1764+ }
1765+ else
1766+ {
1767+ it->occluded_in(this);
1768+ }
1769+ nonrenderlist_elements |= embellished;
1770+ }
1771+
1772+ if (!nonrenderlist_elements &&
1773+ display_buffer.post_renderables_if_optimizable(renderable_list))
1774+ {
1775+ renderer.suspend();
1776+ report->finished_frame(true, this);
1777+ }
1778+ else
1779+ {
1780+ display_buffer.make_current();
1781+
1782+ renderer.set_rotation(display_buffer.orientation());
1783+ renderer.begin(std::move(decoration_skip_list));
1784+ renderer.render(renderable_list);
1785+ display_buffer.post_update();
1786+ renderer.end();
1787+ report->finished_frame(false, this);
1788+ }
1789+}
1790+>>>>>>> MERGE-SOURCE
1791
1792=== modified file 'playground/demo-shell/demo_renderer.cpp'
1793--- examples/demo-shell/demo_renderer.cpp 2014-08-26 14:48:55 +0000
1794+++ playground/demo-shell/demo_renderer.cpp 2014-09-23 17:34:29 +0000
1795@@ -171,7 +171,7 @@
1796 glDeleteTextures(1, &titlebar_corner_tex);
1797 }
1798
1799-void DemoRenderer::begin() const
1800+void DemoRenderer::begin(std::unordered_set<graphics::Renderable::ID> decoration_skip_list_) const
1801 {
1802 bool const opaque = destination_alpha() == compositor::DestinationAlpha::opaque;
1803 if (opaque)
1804@@ -184,14 +184,24 @@
1805
1806 if (opaque)
1807 glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
1808+
1809+ decoration_skip_list = decoration_skip_list_;
1810 }
1811
1812 void DemoRenderer::tessellate(std::vector<graphics::GLPrimitive>& primitives,
1813 graphics::Renderable const& renderable) const
1814 {
1815 GLRenderer::tessellate(primitives, renderable);
1816+<<<<<<< TREE
1817 tessellate_shadow(primitives, renderable, shadow_radius);
1818 tessellate_frame(primitives, renderable, titlebar_height);
1819+=======
1820+ if (decoration_skip_list.find(renderable.id()) == decoration_skip_list.end())
1821+ {
1822+ tessellate_shadow(primitives, renderable, shadow_radius);
1823+ tessellate_frame(primitives, renderable, titlebar_height);
1824+ }
1825+>>>>>>> MERGE-SOURCE
1826 }
1827
1828 void DemoRenderer::tessellate_shadow(std::vector<graphics::GLPrimitive>& primitives,
1829
1830=== modified file 'playground/demo-shell/demo_renderer.h'
1831--- examples/demo-shell/demo_renderer.h 2014-08-26 14:39:46 +0000
1832+++ playground/demo-shell/demo_renderer.h 2014-09-23 17:34:29 +0000
1833@@ -21,6 +21,8 @@
1834
1835 #include "mir/compositor/gl_renderer.h"
1836
1837+#include <unordered_set>
1838+
1839 namespace mir
1840 {
1841 namespace examples
1842@@ -37,6 +39,7 @@
1843 float const shadow_radius);
1844 ~DemoRenderer();
1845
1846+<<<<<<< TREE
1847 void begin() const override;
1848 void tessellate(
1849 std::vector<graphics::GLPrimitive>& primitives,
1850@@ -52,6 +55,25 @@
1851 bool would_embellish(
1852 graphics::Renderable const& renderable,
1853 geometry::Rectangle const&) const;
1854+=======
1855+ void begin() const override { GLRenderer::begin(); }
1856+ void begin(std::unordered_set<graphics::Renderable::ID> renderables_not_to_decorate) const;
1857+
1858+ void tessellate(
1859+ std::vector<graphics::GLPrimitive>& primitives,
1860+ graphics::Renderable const& renderable) const override;
1861+ void tessellate_shadow(
1862+ std::vector<graphics::GLPrimitive>& primitives,
1863+ graphics::Renderable const& renderable,
1864+ float radius) const;
1865+ void tessellate_frame(
1866+ std::vector<graphics::GLPrimitive>& primitives,
1867+ graphics::Renderable const& renderable,
1868+ float titlebar_height) const;
1869+ bool would_embellish(
1870+ graphics::Renderable const& renderable,
1871+ geometry::Rectangle const&) const;
1872+>>>>>>> MERGE-SOURCE
1873
1874 private:
1875 float const titlebar_height;
1876@@ -59,6 +81,8 @@
1877 float const corner_radius;
1878 GLuint shadow_corner_tex;
1879 GLuint titlebar_corner_tex;
1880+
1881+ mutable std::unordered_set<graphics::Renderable::ID> decoration_skip_list;
1882 };
1883
1884 } // namespace examples
1885
1886=== modified file 'playground/demo-shell/demo_shell.cpp'
1887--- examples/demo-shell/demo_shell.cpp 2014-07-23 20:59:29 +0000
1888+++ playground/demo-shell/demo_shell.cpp 2014-09-23 17:34:29 +0000
1889@@ -21,7 +21,7 @@
1890 #include "demo_compositor.h"
1891 #include "window_manager.h"
1892 #include "fullscreen_placement_strategy.h"
1893-#include "../server_configuration.h"
1894+#include "server_configuration.h"
1895
1896 #include "mir/options/default_configuration.h"
1897 #include "mir/run_mir.h"
1898
1899=== modified file 'playground/demo-shell/window_manager.cpp'
1900--- examples/demo-shell/window_manager.cpp 2014-07-21 03:35:31 +0000
1901+++ playground/demo-shell/window_manager.cpp 2014-09-23 17:34:29 +0000
1902@@ -27,7 +27,6 @@
1903 #include "mir/compositor/compositor.h"
1904
1905 #include <linux/input.h>
1906-#include <android/keycodes.h> // TODO remove this dependency
1907
1908 #include <cassert>
1909 #include <cstdlib>
1910@@ -124,6 +123,7 @@
1911 assert(compositor);
1912
1913 bool handled = false;
1914+ static int const ANDROID_KEYCODE_POWER = 26;
1915
1916 if (event.key.type == mir_event_type_key &&
1917 event.key.action == mir_key_action_down)
1918@@ -136,7 +136,7 @@
1919 }
1920 else if ((event.key.modifiers & mir_key_modifier_alt &&
1921 event.key.scan_code == KEY_P) ||
1922- (event.key.key_code == AKEYCODE_POWER))
1923+ (event.key.key_code == ANDROID_KEYCODE_POWER))
1924 {
1925 compositor->stop();
1926 auto conf = display->configuration();
1927
1928=== renamed file 'examples/image_renderer.cpp' => 'playground/image_renderer.cpp'
1929=== renamed file 'examples/image_renderer.h' => 'playground/image_renderer.h'
1930=== renamed file 'examples/render_overlays.cpp' => 'playground/render_overlays.cpp'
1931=== renamed file 'examples/render_surfaces.cpp' => 'playground/render_surfaces.cpp'
1932=== renamed directory 'examples/testdraw' => 'playground/testdraw'
1933=== modified file 'playground/testdraw/mesa_graphics_region_factory.cpp'
1934--- examples/testdraw/mesa_graphics_region_factory.cpp 2014-07-22 13:42:01 +0000
1935+++ playground/testdraw/mesa_graphics_region_factory.cpp 2014-09-23 17:34:29 +0000
1936@@ -16,7 +16,7 @@
1937 * Authored by: Kevin DuBois <kevin.dubois@canonical.com>
1938 */
1939
1940-#include "examples/testdraw/graphics_region_factory.h"
1941+#include "graphics_region_factory.h"
1942 #include <boost/throw_exception.hpp>
1943 #include <stdexcept>
1944
1945
1946=== modified file 'server-ABI-sha1sums'
1947--- server-ABI-sha1sums 2014-08-27 19:35:36 +0000
1948+++ server-ABI-sha1sums 2014-09-23 17:34:29 +0000
1949@@ -1,3 +1,4 @@
1950+<<<<<<< TREE
1951 871e609c0fed0d566ddbaaa8ac2d7cd5c06dd09a include/platform/mir/abnormal_exit.h
1952 498d728ea1052cb6cadb9de7828ae48eb5a201df include/platform/mir/emergency_cleanup_registry.h
1953 8f47feb6d983aa5c9ebd58e9d1524361c9f5e651 include/platform/mir/fatal.h
1954@@ -70,20 +71,78 @@
1955 d21356fe32066c1d6146730c198683d1ad5786bd include/server/mir/frontend/connector_report.h
1956 938de641cb0e01e1098b007b39b151a7dfe4adc1 include/server/mir/frontend/display_changer.h
1957 46b9a4c7794c29b4bd7822671f9626fc8fc33333 include/server/mir/frontend/event_sink.h
1958+=======
1959+3329ada91412ded2f127aee9a92f065e57b81cb2 include/common/mir/cached_ptr.h
1960+82ff9499ef62739379616e02164dc98f9914c329 include/common/mir/fd.h
1961+b399dc08514751c86e23824612a52378dd9b1e23 include/common/mir/geometry/dimensions.h
1962+d954464ef2d20c2876db68c94512a443186da09b include/common/mir/geometry/point.h
1963+dc7c62d3916eec025e8e7deaf57e06077ce38928 include/common/mir/geometry/rectangle.h
1964+5161774957e3ca4f5fa4e7db025d0978d2bbef06 include/common/mir/geometry/rectangles.h
1965+42646c2367b9821e3aa71feff6e31cf50526acaa include/common/mir/geometry/size.h
1966+e1be9faee8b844ca2ce617f8fd82c9ee08d56bed include/common/mir/graphics/native_buffer.h
1967+dcf8b8982f138bdde39a241825c610e955cd5e33 include/common/mir/input/input_platform.h
1968+208cd6aed5ef5f8f39b3eb86604e4133cb840485 include/common/mir/input/input_receiver_thread.h
1969+be7d58c9fde2ce91cc66dd6144b76e08b536266b include/common/mir/int_wrapper.h
1970+48015c67ddc4998ed5a2e8bb04ff3a4bfdd6a613 include/common/mir/time/clock.h
1971+9907751d046e4aea81881cf19e5df52c7a6a813e include/common/mir_toolkit/client_types.h
1972+183d9e5e6cfe48b3d9145a28541dd4202ff6137b include/common/mir_toolkit/common.h
1973+fce4c1a9e0d037244f7e9e96ea2d8eaab4fc404c include/common/mir_toolkit/cursors.h
1974+bdaceadd56e41d2cb708f7c4da97acf84dfc75b7 include/common/mir_toolkit/event.h
1975+99ef5f3bf548508fae24c60f74be1dea018a6e8c include/common/mir_toolkit/mesa/native_display.h
1976+101017c17714a57db57d79b7b5e7df40a3568236 include/common/mir_toolkit/mir_native_buffer.h
1977+871e609c0fed0d566ddbaaa8ac2d7cd5c06dd09a include/platform/mir/abnormal_exit.h
1978+e9e97ba2db4c6aeb269630547bf5a558da17d896 include/platform/mir/graphics/basic_platform.h
1979+54328767ca330ba166160a486bd0688406ab0222 include/platform/mir/graphics/buffer.h
1980+5875f13f5b029a4b5291e9baec3ae434b72be27c include/platform/mir/graphics/buffer_id.h
1981+748f5c2aab11189aa02c4a89ab900561548e7304 include/platform/mir/graphics/buffer_properties.h
1982+986f5d0d8ea2c6a42cc320f468e682f81fec46ae include/platform/mir/graphics/display_buffer.h
1983+f53a0020b8f1bd4a941a201eb26271cffee0a7dd include/platform/mir/graphics/display_configuration.h
1984+6fe08da318c920b0d20ea8b8f560f5ac7ed389fe include/platform/mir/graphics/display_configuration_policy.h
1985+41ea906d208b761e3d5d5056095de9de2d4ffa17 include/platform/mir/graphics/display.h
1986+815405c5aee8000bc18c1c9480bac620a451b416 include/platform/mir/graphics/event_handler_register.h
1987+5dc095474ef3e294c0aa4008e9ed997bdb21d34c include/platform/mir/graphics/gl_config.h
1988+d0442a5d5d88a4be6e3e1f99e433c1c43a86bfce include/platform/mir/graphics/gl_context.h
1989+979d2c1ac723ccef538d9a378228a02b0f173bd7 include/platform/mir/graphics/graphic_buffer_allocator.h
1990+f90a35371e236a6cfec8e9a8474dbb3305c7621e include/platform/mir/graphics/internal_client.h
1991+c9730cac4a3a101f9706ec6f444958abe047fd88 include/platform/mir/graphics/internal_surface.h
1992+c775727ea15fd8affa5b4dc9cd226d782e436001 include/platform/mir/graphics/platform.h
1993+15f201741a465de33e55ffc1ea775b507a5be950 include/platform/mir/graphics/renderable.h
1994+f5746dab3336266cfd410ce4e4d01333df6e5b99 include/platform/mir/options/configuration.h
1995+47007c783c174f8e94d332c4b13c6b01358b48fb include/platform/mir/options/default_configuration.h
1996+b45f14082c4f8b29efaa1b13de795dcb29deb738 include/platform/mir/options/option.h
1997+3c37cc31e8b290b89c311d82f02e07d342766451 include/platform/mir/options/program_option.h
1998+f4030e400baf8baa9c38e7c6ec6b4a5ad7134aeb include/server/mir/compositor/compositor.h
1999+ef0b6f26fb40a72e4a4744e4d9c4bd044142de47 include/server/mir/default_server_configuration.h
2000+af1ff0714be973ac76d56006a2e5991f68cd1dec include/server/mir/display_server.h
2001+65db331f1c0e956eced5c9fc73a2b2122dbc8dc7 include/server/mir/frontend/connection_creator.h
2002+e6e92642301fc9bb85e1d38087a5dd84e5d30fd7 include/server/mir/frontend/connections.h
2003+>>>>>>> MERGE-SOURCE
2004 bdb89184f400bb04625db5835d38576f99f52684 include/server/mir/frontend/fd_sets.h
2005+<<<<<<< TREE
2006 4f1303065e300d26acb148c3dd9f7183dc3c4443 include/server/mir/frontend/message_processor.h
2007 e43a044d70ad48fd41d74a176223e3e75b9b53b8 include/server/mir/frontend/message_processor_report.h
2008+=======
2009+4f1303065e300d26acb148c3dd9f7183dc3c4443 include/server/mir/frontend/message_processor.h
2010+>>>>>>> MERGE-SOURCE
2011 59d6703def2a0ff840e5eb75390a5af76fd93f58 include/server/mir/frontend/prompt_session.h
2012 cb1f73934d150f21e60d4d8de3f15918d993dd98 include/server/mir/frontend/protobuf_connection_creator.h
2013 7fc88a2e39f6b87ecbd89a264612138e8fcfb10a include/server/mir/frontend/protobuf_message_sender.h
2014 fae0008af826abbc4b4324d49e9c03d43b08765a include/server/mir/frontend/screencast.h
2015 b729a7710c37d9f1fba56a6f8e8eae1c2559f57a include/server/mir/frontend/session_authorizer.h
2016+<<<<<<< TREE
2017 34ce482df448fd2fc5f0c4ae5ac8b7fecbd228c9 include/server/mir/frontend/session_credentials.h
2018 e5ea465ed7e05f0e1d6a837d0d6b3a04c2d7fc19 include/server/mir/frontend/session.h
2019 0452fd9e7ccf081baf7635d8f699de47c52372ea include/server/mir/frontend/session_mediator_report.h
2020 68468aa2298c4e2cdc1bbb7cb5f250a914ae16c9 include/server/mir/frontend/shell.h
2021 f67b9788943a4b9121b3891dfbe979d57922ea78 include/server/mir/frontend/surface.h
2022+=======
2023+34ce482df448fd2fc5f0c4ae5ac8b7fecbd228c9 include/server/mir/frontend/session_credentials.h
2024+e5ea465ed7e05f0e1d6a837d0d6b3a04c2d7fc19 include/server/mir/frontend/session.h
2025+68468aa2298c4e2cdc1bbb7cb5f250a914ae16c9 include/server/mir/frontend/shell.h
2026+f67b9788943a4b9121b3891dfbe979d57922ea78 include/server/mir/frontend/surface.h
2027+>>>>>>> MERGE-SOURCE
2028 618b43a84cce0ad671ed68fe2ba796fbc7b79e31 include/server/mir/frontend/surface_id.h
2029+<<<<<<< TREE
2030 5aa4c4db5468d9b9fe8e98a64444538aadd6e17b include/server/mir/frontend/template_protobuf_message_processor.h
2031 ba79552edce545fafc9a4f401411c44d0cb3b2cf include/server/mir/graphics/gl_extensions_base.h
2032 2489a0e7922b6c7abe383726a30e17edbee51048 include/server/mir/graphics/surfaceless_egl_context.h
2033@@ -196,3 +255,45 @@
2034 101017c17714a57db57d79b7b5e7df40a3568236 include/shared/mir_toolkit/mir_native_buffer.h
2035 9f646fa12eaca5fc3b7a8fde6208673c071c8ef3 include/shared/mir/udev/wrapper.h
2036 9fd77ab693cc4c9a200e44804f5493733528a674 include/shared/mir/variable_length_array.h
2037+=======
2038+5aa4c4db5468d9b9fe8e98a64444538aadd6e17b include/server/mir/frontend/template_protobuf_message_processor.h
2039+f95c2bddf13d15993ef5d6a0ad7b9106ae550b87 include/server/mir/input/composite_event_filter.h
2040+cef18b7215fbe00550d18c0aa0f79b641cff494e include/server/mir/input/cursor_listener.h
2041+2331fc402686e862809bf24714a8746cdde97cb1 include/server/mir/input/event_filter.h
2042+78862dda41d56c6b937a1ed197982e5fa37f50df include/server/mir/input/input_channel.h
2043+6f1d9cf83bbb1256f0b4d1ba1d94d95af98c52f0 include/server/mir/input/input_dispatcher.h
2044+b2ec497c6bec1b3a67c991f31cc7b7c51050ecbb include/server/mir/input/input_reception_mode.h
2045+15119bf95b4512c8b91df7c20edf56a3c0734957 include/server/mir/input/surface.h
2046+036f3967757873751fcacaa768ca11a52001c225 include/server/mir/input/touch_visualizer.h
2047+964069b241f1e8211386bb8735ee0f752b666949 include/server/mir/main_loop.h
2048+edd5a0a6be0be57ef64c5af89fc5a65dc558648c include/server/mir/report_exception.h
2049+8192727cf5fa0b2b5798b2211c2c8a4ad65c9f60 include/server/mir/run_mir.h
2050+71d9082681aa39d652c88ad3b54665695b521d24 include/server/mir/scene/depth_id.h
2051+4e4e563ab429a13ddca7eead16f2b6cefb8edff6 include/server/mir/scene/null_surface_observer.h
2052+10db25fbaefcabb3b191177ed70f5972df7f05f0 include/server/mir/scene/placement_strategy.h
2053+74f7f66ffc3e15c428082fb961e748cb4f39dafc include/server/mir/scene/prompt_session_creation_parameters.h
2054+4e8269c822ad2daddd92115cbe5332caaa9ef4cc include/server/mir/scene/prompt_session.h
2055+79adf11e2b1778897ed97d1713ba4c3d34eb1f31 include/server/mir/scene/prompt_session_listener.h
2056+27f614f98ad7c249d9b12dcca30a324220cdd25b include/server/mir/scene/prompt_session_manager.h
2057+5edf446380070f567500069e422d293e88468ee5 include/server/mir/scene/session_coordinator.h
2058+f148a69caa39756d43cfaf7cc868ad681bda9ef6 include/server/mir/scene/session.h
2059+ee94083f10f890e24c0e0bbdb94842e2dd788deb include/server/mir/scene/session_listener.h
2060+7f5f26000fd2312373817d05c488a6a950a47c82 include/server/mir/scene/snapshot.h
2061+5bab4dc0a6488b8b9d47e958c6bab94f1dcf2c57 include/server/mir/scene/surface_buffer_access.h
2062+bbc9e2e2bb71634cd6f1c5c0430093e10e74fa23 include/server/mir/scene/surface_configurator.h
2063+e5e4dd7bcaf186810043fa0f05be42d7e49b0843 include/server/mir/scene/surface_coordinator.h
2064+dd8f054f786b9746d9e513f2656e931234b5283a include/server/mir/scene/surface_creation_parameters.h
2065+791624081fa86523f51f444d2b28d7ab32dde1a4 include/server/mir/scene/surface.h
2066+993e9f458ffc4288d304413f3fa0b1dcc95a093d include/server/mir/scene/surface_observer.h
2067+7ef3e99901168cda296d74d05a979f47bf9c3ff1 include/server/mir/server_action_queue.h
2068+d429c9b200ecc7982f0dcda2b357c01f4794412b include/server/mir/server_configuration.h
2069+86098b500339bfccd07a9bed8298f75a68b18f5c include/server/mir/server_status_listener.h
2070+860c04f32b60e680140148dc9dc2295de145b9c1 include/server/mir/shell/display_layout.h
2071+6a2107b01feae13060d5c305804906e53c52e0be include/server/mir/shell/focus_controller.h
2072+b74342d8ffab489405a4e12fce0c257ac9f8596c include/server/mir/shell/focus_setter.h
2073+4f50c37bb8e36a1aa4918af6aa01b0f032ed0984 include/server/mir/shell/input_targeter.h
2074+82bc93ea53f03399cb143b9ce936bb51d4366be6 include/server/mir/shell/session_coordinator_wrapper.h
2075+18e869c5b87ab8be4bc185d2cd55a93d699cde72 include/server/mir/shell/surface_coordinator_wrapper.h
2076+c3fdfa84a3ae97a0d1057635c5bfcedcf29d007c include/server/mir/time/alarm.h
2077+a134c7b86e9c3b191f1004abe7bbdceed8ac42ee include/server/mir/time/timer.h
2078+>>>>>>> MERGE-SOURCE
2079
2080=== modified file 'src/CMakeLists.txt'
2081--- src/CMakeLists.txt 2014-08-27 19:44:04 +0000
2082+++ src/CMakeLists.txt 2014-09-23 17:34:29 +0000
2083@@ -1,5 +1,5 @@
2084 set(MIR_GENERATED_INCLUDE_DIRECTORIES)
2085-add_subdirectory(shared/)
2086+add_subdirectory(common/)
2087 include_directories(${MIR_GENERATED_INCLUDE_DIRECTORIES})
2088
2089 add_subdirectory(platform/)
2090
2091=== modified file 'src/client/CMakeLists.txt'
2092--- src/client/CMakeLists.txt 2014-08-05 14:03:25 +0000
2093+++ src/client/CMakeLists.txt 2014-09-23 17:34:29 +0000
2094@@ -1,3 +1,10 @@
2095+set(MIRCLIENT_ABI 8)
2096+set(CLIENT_DRIVER client${MIRCLIENT_ABI}driver)
2097+set(MIR_CLIENT_DRIVER mir${CLIENT_DRIVER})
2098+set(MIR_CLIENT_DRIVER_BINARY lib${MIR_CLIENT_DRIVER}.so
2099+ CACHE STRING "File name of Mir client drivers")
2100+add_definitions(-DMIR_CLIENT_DRIVER_BINARY="${MIR_CLIENT_DRIVER_BINARY}")
2101+
2102 set(PREFIX "${CMAKE_INSTALL_PREFIX}")
2103 set(EXEC_PREFIX "${CMAKE_INSTALL_PREFIX}")
2104 set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}")
2105@@ -44,6 +51,7 @@
2106 mir_surface_api.cpp
2107 logging/rpc_report.cpp
2108 logging/input_receiver_report.cpp
2109+ logging/perf_report.cpp
2110 default_connection_configuration.cpp
2111 surface_map.cpp
2112 lifecycle_control.cpp
2113@@ -54,6 +62,7 @@
2114 mir_prompt_session.cpp
2115 mir_prompt_session_api.cpp
2116 mir_event_distributor.cpp
2117+ periodic_perf_report.cpp
2118 )
2119
2120 add_library(
2121@@ -62,7 +71,6 @@
2122 $<TARGET_OBJECTS:mirclientobjects>
2123 )
2124
2125-set(MIRCLIENT_ABI 8)
2126 set(symbol_map ${CMAKE_CURRENT_SOURCE_DIR}/symbols.map)
2127
2128 set_target_properties(
2129
2130=== modified file 'src/client/android/CMakeLists.txt'
2131--- src/client/android/CMakeLists.txt 2014-08-27 19:44:04 +0000
2132+++ src/client/android/CMakeLists.txt 2014-09-23 17:34:29 +0000
2133@@ -23,7 +23,7 @@
2134
2135 set_target_properties(
2136 mirclientplatformandroid PROPERTIES
2137- OUTPUT_NAME mirclientplatform
2138+ OUTPUT_NAME ${MIR_CLIENT_DRIVER}
2139 LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}/android
2140 LINK_FLAGS "-Wl,--exclude-libs=ALL -Wl,--version-script,${symbol_map}"
2141 )
2142@@ -35,19 +35,19 @@
2143 ${LIBHARDWARE_LIBRARIES}
2144 )
2145
2146-install(TARGETS mirclientplatformandroid LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/mir/clientplatform/android)
2147+install(TARGETS mirclientplatformandroid LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/mir/${CLIENT_DRIVER}/android)
2148
2149 if (MIR_TEST_PLATFORM STREQUAL "android")
2150 add_custom_command(TARGET mirclientplatformandroid
2151 POST_BUILD
2152- COMMAND ${CMAKE_COMMAND} -E remove libmirclientplatform.so
2153- COMMAND ${CMAKE_COMMAND} -E create_symlink android/$<TARGET_FILE_NAME:mirclientplatformandroid> libmirclientplatform.so
2154+ COMMAND ${CMAKE_COMMAND} -E remove ${MIR_CLIENT_DRIVER_BINARY}
2155+ COMMAND ${CMAKE_COMMAND} -E create_symlink android/$<TARGET_FILE_NAME:mirclientplatformandroid> ${MIR_CLIENT_DRIVER_BINARY}
2156 WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}
2157 )
2158
2159 install(CODE
2160 "execute_process(
2161- COMMAND ln -sf mir/clientplatform/android/libmirclientplatform.so
2162+ COMMAND ln -sf mir/${CLIENT_DRIVER}/android/${MIR_CLIENT_DRIVER_BINARY}
2163 WORKING_DIRECTORY \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
2164 )"
2165 )
2166
2167=== modified file 'src/client/default_connection_configuration.cpp'
2168--- src/client/default_connection_configuration.cpp 2014-09-12 07:56:37 +0000
2169+++ src/client/default_connection_configuration.cpp 2014-09-23 17:34:29 +0000
2170@@ -26,13 +26,19 @@
2171 #include "mir/input/null_input_receiver_report.h"
2172 #include "logging/rpc_report.h"
2173 #include "logging/input_receiver_report.h"
2174+#include "mir/logging/shared_library_prober_report.h"
2175+#include "mir/logging/null_shared_library_prober_report.h"
2176 #include "lttng/rpc_report.h"
2177 #include "lttng/input_receiver_report.h"
2178+#include "lttng/shared_library_prober_report.h"
2179 #include "connection_surface_map.h"
2180 #include "lifecycle_control.h"
2181 #include "mir/shared_library.h"
2182 #include "client_platform_factory.h"
2183 #include "mir_event_distributor.h"
2184+#include "mir/shared_library_prober.h"
2185+
2186+#include <dlfcn.h>
2187
2188 #include <dlfcn.h>
2189
2190@@ -43,7 +49,7 @@
2191 std::string const off_opt_val{"off"};
2192 std::string const log_opt_val{"log"};
2193 std::string const lttng_opt_val{"lttng"};
2194-std::string const default_platform_lib{"libmirclientplatform.so"};
2195+std::string const default_platform_lib{MIR_CLIENT_DRIVER_BINARY};
2196
2197 // Hack around the way Qt loads mir:
2198 // qtmir and therefore Mir are loaded via dlopen(..., RTLD_LOCAL).
2199@@ -199,16 +205,47 @@
2200 return std::make_shared<MirEventDistributor>();
2201 });
2202 }
2203-
2204-std::shared_ptr<mir::SharedLibrary> mcl::DefaultConnectionConfiguration::the_platform_library()
2205-{
2206- if (!platform_library)
2207- {
2208- ensure_loaded_with_rtld_global();
2209- auto const val_raw = getenv("MIR_CLIENT_PLATFORM_LIB");
2210- std::string const libname{val_raw ? val_raw : default_platform_lib};
2211- platform_library = std::make_shared<mir::SharedLibrary>(libname);
2212- }
2213-
2214- return platform_library;
2215-}
2216+<<<<<<< TREE
2217+
2218+std::shared_ptr<mir::SharedLibrary> mcl::DefaultConnectionConfiguration::the_platform_library()
2219+{
2220+ if (!platform_library)
2221+ {
2222+ ensure_loaded_with_rtld_global();
2223+ auto const val_raw = getenv("MIR_CLIENT_PLATFORM_LIB");
2224+ std::string const libname{val_raw ? val_raw : default_platform_lib};
2225+ platform_library = std::make_shared<mir::SharedLibrary>(libname);
2226+ }
2227+
2228+ return platform_library;
2229+}
2230+=======
2231+
2232+std::shared_ptr<mir::SharedLibraryProberReport> mir::client::DefaultConnectionConfiguration::the_shared_library_prober_report()
2233+{
2234+ return shared_library_prober_report(
2235+ [this] () -> std::shared_ptr<mir::SharedLibraryProberReport>
2236+ {
2237+ auto val_raw = getenv("MIR_CLIENT_SHARED_LIBRARY_PROBER_REPORT");
2238+ std::string const val{val_raw ? val_raw : off_opt_val};
2239+ if (val == log_opt_val)
2240+ return std::make_shared<mir::logging::SharedLibraryProberReport>(the_logger());
2241+ else if (val == lttng_opt_val)
2242+ return std::make_shared<mcl::lttng::SharedLibraryProberReport>();
2243+ else
2244+ return std::make_shared<mir::logging::NullSharedLibraryProberReport>();
2245+ });
2246+}
2247+
2248+std::shared_ptr<mir::SharedLibrary> mcl::DefaultConnectionConfiguration::the_platform_library()
2249+{
2250+ if (!platform_library)
2251+ {
2252+ ensure_loaded_with_rtld_global();
2253+ auto const val_raw = getenv("MIR_CLIENT_PLATFORM_LIB");
2254+ std::string const libname{val_raw ? val_raw : default_platform_lib};
2255+ platform_library = std::make_shared<mir::SharedLibrary>(libname);
2256+ }
2257+ return platform_library;
2258+}
2259+>>>>>>> MERGE-SOURCE
2260
2261=== modified file 'src/client/default_connection_configuration.h'
2262--- src/client/default_connection_configuration.h 2014-08-29 13:12:16 +0000
2263+++ src/client/default_connection_configuration.h 2014-09-23 17:34:29 +0000
2264@@ -27,6 +27,8 @@
2265
2266 namespace mir
2267 {
2268+class SharedLibraryProberReport;
2269+
2270 namespace input
2271 {
2272 namespace receiver
2273@@ -57,7 +59,12 @@
2274 std::shared_ptr<LifecycleControl> the_lifecycle_control();
2275 std::shared_ptr<EventSink> the_event_sink();
2276 std::shared_ptr<EventHandlerRegister> the_event_handler_register();
2277- std::shared_ptr<SharedLibrary> the_platform_library() override;
2278+<<<<<<< TREE
2279+ std::shared_ptr<SharedLibrary> the_platform_library() override;
2280+=======
2281+ std::shared_ptr<mir::SharedLibraryProberReport> the_shared_library_prober_report();
2282+ std::shared_ptr<SharedLibrary> the_platform_library() override;
2283+>>>>>>> MERGE-SOURCE
2284
2285 virtual std::string the_socket_file();
2286 virtual std::shared_ptr<rpc::RpcReport> the_rpc_report();
2287@@ -78,6 +85,7 @@
2288
2289 CachedPtr<rpc::RpcReport> rpc_report;
2290 CachedPtr<input::receiver::InputReceiverReport> input_receiver_report;
2291+ CachedPtr<mir::SharedLibraryProberReport> shared_library_prober_report;
2292
2293 private:
2294 std::string const socket_file;
2295
2296=== added file 'src/client/logging/perf_report.cpp'
2297--- src/client/logging/perf_report.cpp 1970-01-01 00:00:00 +0000
2298+++ src/client/logging/perf_report.cpp 2014-09-23 17:34:29 +0000
2299@@ -0,0 +1,53 @@
2300+/*
2301+ * Copyright © 2014 Canonical Ltd.
2302+ *
2303+ * This program is free software: you can redistribute it and/or modify it
2304+ * under the terms of the GNU Lesser General Public License version 3,
2305+ * as published by the Free Software Foundation.
2306+ *
2307+ * This program is distributed in the hope that it will be useful,
2308+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2309+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2310+ * GNU Lesser General Public License for more details.
2311+ *
2312+ * You should have received a copy of the GNU Lesser General Public License
2313+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2314+ *
2315+ * Authored by: Daniel van Vugt <daniel.van.vugt@canonical.com>
2316+ */
2317+
2318+#include "perf_report.h"
2319+#include "mir/logging/logger.h"
2320+#include "mir/time/high_resolution_clock.h"
2321+
2322+using namespace mir::client;
2323+
2324+namespace
2325+{
2326+const char * const component = "perf"; // Note context is already within client
2327+} // namespace
2328+
2329+logging::PerfReport::PerfReport(
2330+ std::shared_ptr<mir::logging::Logger> const& logger)
2331+ : PeriodicPerfReport(std::chrono::seconds(1),
2332+ std::make_shared<mir::time::HighResolutionClock>())
2333+ , logger(logger)
2334+{
2335+}
2336+
2337+void logging::PerfReport::display(const char *name, long fps100,
2338+ long rendertime_usec, long lag_usec,
2339+ int nbuffers) const
2340+{
2341+ char msg[256];
2342+ snprintf(msg, sizeof msg,
2343+ "%s: %2ld.%02ld FPS, render time %ld.%02ldms, buffer lag %ld.%02ldms (%d buffers)",
2344+ name,
2345+ fps100 / 100, fps100 % 100,
2346+ rendertime_usec / 1000, (rendertime_usec / 10) % 100,
2347+ lag_usec / 1000, (lag_usec / 10) % 100,
2348+ nbuffers
2349+ );
2350+
2351+ logger->log(mir::logging::Logger::informational, msg, component);
2352+}
2353
2354=== added file 'src/client/logging/perf_report.h'
2355--- src/client/logging/perf_report.h 1970-01-01 00:00:00 +0000
2356+++ src/client/logging/perf_report.h 2014-09-23 17:34:29 +0000
2357@@ -0,0 +1,48 @@
2358+/*
2359+ * Copyright © 2014 Canonical Ltd.
2360+ *
2361+ * This program is free software: you can redistribute it and/or modify it
2362+ * under the terms of the GNU Lesser General Public License version 3,
2363+ * as published by the Free Software Foundation.
2364+ *
2365+ * This program is distributed in the hope that it will be useful,
2366+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2367+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2368+ * GNU Lesser General Public License for more details.
2369+ *
2370+ * You should have received a copy of the GNU Lesser General Public License
2371+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2372+ *
2373+ * Authored by: Daniel van Vugt <daniel.van.vugt@canonical.com>
2374+ */
2375+
2376+#ifndef MIR_CLIENT_LOGGING_PERF_REPORT_H_
2377+#define MIR_CLIENT_LOGGING_PERF_REPORT_H_
2378+
2379+#include "../periodic_perf_report.h"
2380+#include <memory>
2381+
2382+namespace mir
2383+{
2384+namespace logging { class Logger; }
2385+
2386+namespace client
2387+{
2388+namespace logging
2389+{
2390+
2391+class PerfReport : public PeriodicPerfReport
2392+{
2393+public:
2394+ PerfReport(std::shared_ptr<mir::logging::Logger> const& logger);
2395+ void display(const char *name, long fps100, long rendertime_usec,
2396+ long lag_usec, int nbuffers) const override;
2397+private:
2398+ std::shared_ptr<mir::logging::Logger> const logger;
2399+};
2400+
2401+} // namespace logging
2402+} // namespace client
2403+} // namespace mir
2404+
2405+#endif // MIR_CLIENT_LOGGING_PERF_REPORT_H_
2406
2407=== modified file 'src/client/lttng/CMakeLists.txt'
2408--- src/client/lttng/CMakeLists.txt 2014-08-26 14:56:48 +0000
2409+++ src/client/lttng/CMakeLists.txt 2014-09-23 17:34:29 +0000
2410@@ -6,6 +6,7 @@
2411 client_tracepoint_provider.cpp
2412 rpc_report.cpp
2413 input_receiver_report.cpp
2414+ shared_library_prober_report.cpp
2415 )
2416
2417 add_library(mirclientlttng SHARED tracepoints.c)
2418
2419=== modified file 'src/client/lttng/input_receiver_report_tp.h'
2420--- src/client/lttng/input_receiver_report_tp.h 2014-03-26 05:48:59 +0000
2421+++ src/client/lttng/input_receiver_report_tp.h 2014-09-23 17:34:29 +0000
2422@@ -28,16 +28,6 @@
2423 #include <lttng/tracepoint.h>
2424 #include <stdint.h>
2425
2426-#ifdef __clang__
2427-/*
2428- * TRACEPOINT_EVENT defines functions; since we disable tracepoints under clang
2429- * these functions are unused and so generate fatal warnings.
2430- * (see mir_tracepoint.h and http://sourceware.org/bugzilla/show_bug.cgi?id=13974)
2431- */
2432-#pragma clang diagnostic push
2433-#pragma clang diagnostic warning "-Wunused-function"
2434-#endif
2435-
2436 TRACEPOINT_EVENT(
2437 mir_client_input_receiver,
2438 key_event,
2439@@ -88,10 +78,6 @@
2440 )
2441 )
2442
2443-#ifdef __clang__
2444-#pragma clang diagnostic pop
2445-#endif
2446-
2447 #endif /* MIR_CLIENT_LTTNG_INPUT_RECEIVER_REPORT_TP_H_ */
2448
2449 #include <lttng/tracepoint-event.h>
2450
2451=== modified file 'src/client/lttng/rpc_report_tp.h'
2452--- src/client/lttng/rpc_report_tp.h 2014-03-26 05:48:59 +0000
2453+++ src/client/lttng/rpc_report_tp.h 2014-09-23 17:34:29 +0000
2454@@ -28,16 +28,6 @@
2455 #include <lttng/tracepoint.h>
2456 #include <stdint.h>
2457
2458-#ifdef __clang__
2459-/*
2460- * TRACEPOINT_EVENT defines functions; since we disable tracepoints under clang
2461- * these functions are unused and so generate fatal warnings.
2462- * (see mir_tracepoint.h and http://sourceware.org/bugzilla/show_bug.cgi?id=13974)
2463- */
2464-#pragma clang diagnostic push
2465-#pragma clang diagnostic warning "-Wunused-function"
2466-#endif
2467-
2468 TRACEPOINT_EVENT(
2469 mir_client_rpc,
2470 invocation_requested,
2471@@ -94,10 +84,6 @@
2472 )
2473 )
2474
2475-#ifdef __clang__
2476-#pragma clang diagnostic pop
2477-#endif
2478-
2479 #endif /* MIR_CLIENT_LTTNG_RPC_REPORT_TP_H_ */
2480
2481 #include <lttng/tracepoint-event.h>
2482
2483=== added file 'src/client/lttng/shared_library_prober_report.cpp'
2484--- src/client/lttng/shared_library_prober_report.cpp 1970-01-01 00:00:00 +0000
2485+++ src/client/lttng/shared_library_prober_report.cpp 2014-09-23 17:34:29 +0000
2486@@ -0,0 +1,50 @@
2487+/*
2488+ * Copyright © 2014 Canonical Ltd.
2489+ *
2490+ * This program is free software: you can redistribute it and/or modify
2491+ * it under the terms of the GNU Lesser General Public License version 3 as
2492+ * published by the Free Software Foundation.
2493+ *
2494+ * This program is distributed in the hope that it will be useful,
2495+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2496+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2497+ * GNU Lesser General Public License for more details.
2498+ *
2499+ * You should have received a copy of the GNU Lesser General Public License
2500+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2501+ *
2502+ * Authored by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
2503+ */
2504+
2505+#include "shared_library_prober_report.h"
2506+#include "mir/report/lttng/mir_tracepoint.h"
2507+
2508+#define TRACEPOINT_DEFINE
2509+#define TRACEPOINT_PROBE_DYNAMIC_LINKAGE
2510+#include "shared_library_prober_report_tp.h"
2511+
2512+namespace mcl = mir::client;
2513+
2514+void mcl::lttng::SharedLibraryProberReport::probing_path(boost::filesystem::path const& path)
2515+{
2516+ mir_tracepoint(mir_client_shared_library_prober, probing_path,
2517+ path.string().c_str());
2518+}
2519+
2520+void mcl::lttng::SharedLibraryProberReport::probing_failed(boost::filesystem::path const& path, std::exception const& error)
2521+{
2522+ mir_tracepoint(mir_client_shared_library_prober, probing_failed,
2523+ path.string().c_str(), error.what());
2524+}
2525+
2526+void mcl::lttng::SharedLibraryProberReport::loading_library(boost::filesystem::path const& filename)
2527+{
2528+ mir_tracepoint(mir_client_shared_library_prober, loading_library,
2529+ filename.string().c_str());
2530+}
2531+
2532+void mcl::lttng::SharedLibraryProberReport::loading_failed(boost::filesystem::path const& filename, std::exception const& error)
2533+{
2534+ mir_tracepoint(mir_client_shared_library_prober, loading_failed,
2535+ filename.string().c_str(), error.what());
2536+}
2537
2538=== added file 'src/client/lttng/shared_library_prober_report.h'
2539--- src/client/lttng/shared_library_prober_report.h 1970-01-01 00:00:00 +0000
2540+++ src/client/lttng/shared_library_prober_report.h 2014-09-23 17:34:29 +0000
2541@@ -0,0 +1,55 @@
2542+/*
2543+ * Copyright © 2014 Canonical Ltd.
2544+ *
2545+ * This program is free software: you can redistribute it and/or modify
2546+ * it under the terms of the GNU Lesser General Public License version 3 as
2547+ * published by the Free Software Foundation.
2548+ *
2549+ * This program is distributed in the hope that it will be useful,
2550+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2551+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2552+ * GNU Lesser General Public License for more details.
2553+ *
2554+ * You should have received a copy of the GNU Lesser General Public License
2555+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2556+ *
2557+ * Authored by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
2558+ */
2559+
2560+#ifndef MIR_CLIENT_LTTNG_SHARED_LIBRARY_PROBER_REPORT_H_
2561+#define MIR_CLIENT_LTTNG_SHARED_LIBRARY_PROBER_REPORT_H_
2562+
2563+#include "mir/shared_library_prober_report.h"
2564+#include "client_tracepoint_provider.h"
2565+
2566+namespace mir
2567+{
2568+namespace client
2569+{
2570+namespace lttng
2571+{
2572+
2573+class SharedLibraryProberReport : public mir::SharedLibraryProberReport
2574+{
2575+public:
2576+ void probing_path(boost::filesystem::path const& path) override;
2577+ void probing_failed(boost::filesystem::path const& path, std::exception const& error) override;
2578+ void loading_library(boost::filesystem::path const& filename) override;
2579+ void loading_failed(boost::filesystem::path const& filename, std::exception const& error) override;
2580+
2581+private:
2582+ ClientTracepointProvider tp_provider;
2583+};
2584+
2585+}
2586+}
2587+}
2588+
2589+#endif /* MIR_CLIENT_LTTNG_SHARED_LIBRARY_PROBER_REPORT_H_ */
2590+
2591+
2592+#ifndef SHARED_LIBRARY_PROBER_REPORT_H
2593+#define SHARED_LIBRARY_PROBER_REPORT_H
2594+
2595+
2596+#endif // SHARED_LIBRARY_PROBER_REPORT_H
2597
2598=== added file 'src/client/lttng/shared_library_prober_report_tp.h'
2599--- src/client/lttng/shared_library_prober_report_tp.h 1970-01-01 00:00:00 +0000
2600+++ src/client/lttng/shared_library_prober_report_tp.h 2014-09-23 17:34:29 +0000
2601@@ -0,0 +1,85 @@
2602+/*
2603+ * Copyright © 2014 Canonical Ltd.
2604+ *
2605+ * This program is free software: you can redistribute it and/or modify
2606+ * it under the terms of the GNU Lesser General Public License version 3 as
2607+ * published by the Free Software Foundation.
2608+ *
2609+ * This program is distributed in the hope that it will be useful,
2610+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2611+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2612+ * GNU Lesser General Public License for more details.
2613+ *
2614+ * You should have received a copy of the GNU Lesser General Public License
2615+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2616+ *
2617+ * Authored by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
2618+ */
2619+
2620+#undef TRACEPOINT_PROVIDER
2621+#define TRACEPOINT_PROVIDER mir_client_shared_library_prober
2622+
2623+#undef TRACEPOINT_INCLUDE
2624+#define TRACEPOINT_INCLUDE "./shared_library_prober_report_tp.h"
2625+
2626+#if !defined(MIR_CLIENT_LTTNG_SHARED_LIBRARY_PROBER_REPORT_TP_H_) || defined(TRACEPOINT_HEADER_MULTI_READ)
2627+#define MIR_CLIENT_LTTNG_SHARED_LIBRARY_PROBER_REPORT_TP_H_
2628+
2629+#include <lttng/tracepoint.h>
2630+#include <stdint.h>
2631+
2632+#ifdef __clang__
2633+/*
2634+ * TRACEPOINT_EVENT defines functions; since we disable tracepoints under clang
2635+ * these functions are unused and so generate fatal warnings.
2636+ * (see mir_tracepoint.h and http://sourceware.org/bugzilla/show_bug.cgi?id=13974)
2637+ */
2638+#pragma clang diagnostic push
2639+#pragma clang diagnostic warning "-Wunused-function"
2640+#endif
2641+
2642+TRACEPOINT_EVENT(
2643+ mir_client_shared_library_prober,
2644+ probing_path,
2645+ TP_ARGS(const char*, path),
2646+ TP_FIELDS(
2647+ ctf_string(path, path)
2648+ )
2649+)
2650+
2651+TRACEPOINT_EVENT(
2652+ mir_client_shared_library_prober,
2653+ probing_failed,
2654+ TP_ARGS(const char*, path, const char*, message),
2655+ TP_FIELDS(
2656+ ctf_string(path, path)
2657+ ctf_string(message, message)
2658+ )
2659+)
2660+
2661+TRACEPOINT_EVENT(
2662+ mir_client_shared_library_prober,
2663+ loading_library,
2664+ TP_ARGS(const char*, path),
2665+ TP_FIELDS(
2666+ ctf_string(path, path)
2667+ )
2668+)
2669+
2670+TRACEPOINT_EVENT(
2671+ mir_client_shared_library_prober,
2672+ loading_failed,
2673+ TP_ARGS(const char*, path, const char*, message),
2674+ TP_FIELDS(
2675+ ctf_string(path, path)
2676+ ctf_string(message, message)
2677+ )
2678+)
2679+
2680+#ifdef __clang__
2681+#pragma clang diagnostic pop
2682+#endif
2683+
2684+#endif /* MIR_CLIENT_LTTNG_SHARED_LIBRARY_PROBER_REPORT_TP_H_ */
2685+
2686+#include <lttng/tracepoint-event.h>
2687
2688=== modified file 'src/client/mesa/CMakeLists.txt'
2689--- src/client/mesa/CMakeLists.txt 2014-08-27 19:44:04 +0000
2690+++ src/client/mesa/CMakeLists.txt 2014-09-23 17:34:29 +0000
2691@@ -25,7 +25,7 @@
2692
2693 set_target_properties(
2694 mirclientplatformmesa PROPERTIES
2695- OUTPUT_NAME mirclientplatform
2696+ OUTPUT_NAME ${MIR_CLIENT_DRIVER}
2697 LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}/mesa
2698 LINK_FLAGS "-Wl,--exclude-libs=ALL -Wl,--version-script,${symbol_map}"
2699 )
2700@@ -36,19 +36,19 @@
2701 ${DRM_LDFLAGS} ${DRM_LIBRARIES}
2702 )
2703
2704-install(TARGETS mirclientplatformmesa LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/mir/clientplatform/mesa)
2705+install(TARGETS mirclientplatformmesa LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/mir/${CLIENT_DRIVER}/mesa)
2706
2707 if (MIR_TEST_PLATFORM STREQUAL "mesa")
2708 add_custom_command(TARGET mirclientplatformmesa
2709 POST_BUILD
2710- COMMAND ${CMAKE_COMMAND} -E remove libmirclientplatform.so
2711- COMMAND ${CMAKE_COMMAND} -E create_symlink mesa/$<TARGET_FILE_NAME:mirclientplatformmesa> libmirclientplatform.so
2712+ COMMAND ${CMAKE_COMMAND} -E remove ${MIR_CLIENT_DRIVER_BINARY}
2713+ COMMAND ${CMAKE_COMMAND} -E create_symlink mesa/$<TARGET_FILE_NAME:mirclientplatformmesa> ${MIR_CLIENT_DRIVER_BINARY}
2714 WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}
2715 )
2716
2717 install(CODE
2718 "execute_process(
2719- COMMAND ln -sf mir/clientplatform/mesa/libmirclientplatform.so
2720+ COMMAND ln -sf mir/${CLIENT_DRIVER}/mesa/${MIR_CLIENT_DRIVER_BINARY}
2721 WORKING_DIRECTORY \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
2722 )"
2723 )
2724
2725=== modified file 'src/client/mir_connection.cpp'
2726--- src/client/mir_connection.cpp 2014-08-29 13:12:16 +0000
2727+++ src/client/mir_connection.cpp 2014-09-23 17:34:29 +0000
2728@@ -222,12 +222,21 @@
2729 {
2730 if (transition == mir_lifecycle_connection_lost)
2731 {
2732+<<<<<<< TREE
2733 /*
2734 * We need to use kill() instead of raise() to ensure the signal
2735 * is dispatched to the process even if it's blocked in the current
2736 * thread.
2737 */
2738 kill(getpid(), SIGTERM);
2739+=======
2740+ /*
2741+ * We need to use kill() instead of raise() to ensure the signal
2742+ * is dispatched to the process even if it's blocked in the current
2743+ * thread.
2744+ */
2745+ kill(getpid(), SIGHUP);
2746+>>>>>>> MERGE-SOURCE
2747 }
2748 }
2749 }
2750@@ -527,3 +536,8 @@
2751 {
2752 return server;
2753 }
2754+
2755+std::shared_ptr<mir::logging::Logger> const& MirConnection::the_logger() const
2756+{
2757+ return logger;
2758+}
2759
2760=== modified file 'src/client/mir_connection.h'
2761--- src/client/mir_connection.h 2014-08-29 13:12:16 +0000
2762+++ src/client/mir_connection.h 2014-09-23 17:34:29 +0000
2763@@ -134,6 +134,7 @@
2764 }
2765
2766 mir::protobuf::DisplayServer& display_server();
2767+ std::shared_ptr<mir::logging::Logger> const& the_logger() const;
2768
2769 private:
2770 // MUST be first data member so it is destroyed last.
2771
2772=== modified file 'src/client/mir_surface.cpp'
2773--- src/client/mir_surface.cpp 2014-08-04 16:58:57 +0000
2774+++ src/client/mir_surface.cpp 2014-09-23 17:34:29 +0000
2775@@ -24,6 +24,8 @@
2776 #include "mir_connection.h"
2777 #include "mir/input/input_receiver_thread.h"
2778 #include "mir/input/input_platform.h"
2779+#include "perf_report.h"
2780+#include "logging/perf_report.h"
2781
2782 #include <cassert>
2783 #include <unistd.h>
2784@@ -54,6 +56,18 @@
2785 buffer_depository(std::make_shared<mcl::ClientBufferDepository>(factory, mir::frontend::client_buffer_cache_size)),
2786 input_platform(input_platform)
2787 {
2788+ const char* report_target = getenv("MIR_CLIENT_PERF_REPORT");
2789+ if (report_target && !strcmp(report_target, "log"))
2790+ {
2791+ auto& logger = connection->the_logger();
2792+ perf_report = std::make_shared<mir::client::logging::PerfReport>(logger);
2793+ }
2794+ else
2795+ {
2796+ perf_report = std::make_shared<mir::client::NullPerfReport>();
2797+ }
2798+ perf_report->name_surface(params.name);
2799+
2800 for (int i = 0; i < mir_surface_attribs; i++)
2801 attrib_cache[i] = -1;
2802
2803@@ -159,6 +173,7 @@
2804 release_cpu_region();
2805 auto const id = &surface.id();
2806 auto const mutable_buffer = surface.mutable_buffer();
2807+ perf_report->end_frame(mutable_buffer->buffer_id());
2808 lock.unlock();
2809
2810 next_buffer_wait_handle.expect_result();
2811@@ -209,6 +224,7 @@
2812 buffer_depository->deposit_package(std::move(ipc_package),
2813 buffer.buffer_id(),
2814 surface_size, surface_pf);
2815+ perf_report->begin_frame(buffer.buffer_id());
2816 }
2817 catch (const std::runtime_error& err)
2818 {
2819
2820=== modified file 'src/client/mir_surface.h'
2821--- src/client/mir_surface.h 2014-07-21 03:35:31 +0000
2822+++ src/client/mir_surface.h 2014-09-23 17:34:29 +0000
2823@@ -47,6 +47,7 @@
2824 namespace client
2825 {
2826 class ClientBuffer;
2827+class PerfReport;
2828
2829 struct MemoryRegion;
2830 }
2831@@ -139,6 +140,7 @@
2832
2833 std::function<void(MirEvent const*)> handle_event_callback;
2834 std::shared_ptr<mir::input::receiver::InputReceiverThread> input_thread;
2835+ std::shared_ptr<mir::client::PerfReport> perf_report;
2836 };
2837
2838 #endif /* MIR_CLIENT_PRIVATE_MIR_WAIT_HANDLE_H_ */
2839
2840=== added file 'src/client/perf_report.h'
2841--- src/client/perf_report.h 1970-01-01 00:00:00 +0000
2842+++ src/client/perf_report.h 2014-09-23 17:34:29 +0000
2843@@ -0,0 +1,47 @@
2844+/*
2845+ * Copyright © 2014 Canonical Ltd.
2846+ *
2847+ * This program is free software: you can redistribute it and/or modify it
2848+ * under the terms of the GNU Lesser General Public License version 3,
2849+ * as published by the Free Software Foundation.
2850+ *
2851+ * This program is distributed in the hope that it will be useful,
2852+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2853+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2854+ * GNU Lesser General Public License for more details.
2855+ *
2856+ * You should have received a copy of the GNU Lesser General Public License
2857+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2858+ *
2859+ * Authored by: Daniel van Vugt <daniel.van.vugt@canonical.com>
2860+ */
2861+
2862+#ifndef MIR_CLIENT_PERF_REPORT_H_
2863+#define MIR_CLIENT_PERF_REPORT_H_
2864+
2865+namespace mir
2866+{
2867+namespace client
2868+{
2869+
2870+class PerfReport
2871+{
2872+public:
2873+ virtual ~PerfReport() = default;
2874+ virtual void name_surface(char const*) = 0;
2875+ virtual void begin_frame(int buffer_id) = 0;
2876+ virtual void end_frame(int buffer_id) = 0;
2877+};
2878+
2879+class NullPerfReport : public PerfReport
2880+{
2881+public:
2882+ virtual void name_surface(char const*) {}
2883+ void begin_frame(int) override {}
2884+ void end_frame(int) override {}
2885+};
2886+
2887+} // namespace client
2888+} // namespace mir
2889+
2890+#endif // MIR_CLIENT_PERF_REPORT_H_
2891
2892=== added file 'src/client/periodic_perf_report.cpp'
2893--- src/client/periodic_perf_report.cpp 1970-01-01 00:00:00 +0000
2894+++ src/client/periodic_perf_report.cpp 2014-09-23 17:34:29 +0000
2895@@ -0,0 +1,98 @@
2896+/*
2897+ * Copyright © 2014 Canonical Ltd.
2898+ *
2899+ * This program is free software: you can redistribute it and/or modify it
2900+ * under the terms of the GNU Lesser General Public License version 3,
2901+ * as published by the Free Software Foundation.
2902+ *
2903+ * This program is distributed in the hope that it will be useful,
2904+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2905+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2906+ * GNU Lesser General Public License for more details.
2907+ *
2908+ * You should have received a copy of the GNU Lesser General Public License
2909+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2910+ *
2911+ * Authored by: Daniel van Vugt <daniel.van.vugt@canonical.com>
2912+ */
2913+
2914+#include "periodic_perf_report.h"
2915+
2916+using namespace mir::client;
2917+
2918+PeriodicPerfReport::PeriodicPerfReport(mir::time::Duration period,
2919+ std::shared_ptr<mir::time::Clock> const& clock)
2920+ : clock(clock)
2921+ , report_interval(period)
2922+ , last_report_time(current_time())
2923+{
2924+}
2925+
2926+PeriodicPerfReport::Timestamp PeriodicPerfReport::current_time() const
2927+{
2928+ return clock->sample();
2929+}
2930+
2931+void PeriodicPerfReport::name_surface(char const* s)
2932+{
2933+ name = s ? s : "?";
2934+}
2935+
2936+void PeriodicPerfReport::begin_frame(int buffer_id)
2937+{
2938+ frame_begin_time = current_time();
2939+
2940+ if (buffer_end_time.find(buffer_id) != buffer_end_time.end())
2941+ {
2942+ // Estimate page flip (composition finished) time as the time we
2943+ // eventually get the same buffer back.
2944+ auto estimated_page_flip_time = frame_begin_time;
2945+ auto buffer_queue_latency = estimated_page_flip_time -
2946+ buffer_end_time[buffer_id];
2947+ buffer_queue_latency_sum += buffer_queue_latency;
2948+ }
2949+}
2950+
2951+void PeriodicPerfReport::end_frame(int buffer_id)
2952+{
2953+ auto now = buffer_end_time[buffer_id] = current_time();
2954+ auto render_time = now - frame_begin_time;
2955+ render_time_sum += render_time;
2956+ ++frame_count;
2957+
2958+ auto interval = now - last_report_time;
2959+
2960+ if (interval >= report_interval)
2961+ { // Precision matters. Don't use floats.
2962+ using namespace std::chrono;
2963+
2964+ // FPS x 100, remembering to keep millisecond accuracy.
2965+ long fps_100 = frame_count * 100000L /
2966+ duration_cast<milliseconds>(interval).count();
2967+
2968+ auto render_time_avg = render_time_sum / frame_count;
2969+ auto queue_lag_avg = buffer_queue_latency_sum / frame_count;
2970+
2971+ // Remove history of old buffer ids
2972+ auto i = buffer_end_time.begin();
2973+ while (i != buffer_end_time.end())
2974+ {
2975+ if ((now - i->second) >= report_interval)
2976+ i = buffer_end_time.erase(i);
2977+ else
2978+ ++i;
2979+ }
2980+ int nbuffers = buffer_end_time.size();
2981+
2982+ display(name.c_str(), fps_100,
2983+ duration_cast<microseconds>(render_time_avg).count(),
2984+ duration_cast<microseconds>(queue_lag_avg).count(),
2985+ nbuffers);
2986+
2987+ last_report_time = now;
2988+ frame_count = 0;
2989+ render_time_sum = render_time_sum.zero();
2990+ buffer_queue_latency_sum = buffer_queue_latency_sum.zero();
2991+ }
2992+}
2993+
2994
2995=== added file 'src/client/periodic_perf_report.h'
2996--- src/client/periodic_perf_report.h 1970-01-01 00:00:00 +0000
2997+++ src/client/periodic_perf_report.h 2014-09-23 17:34:29 +0000
2998@@ -0,0 +1,64 @@
2999+/*
3000+ * Copyright © 2014 Canonical Ltd.
3001+ *
3002+ * This program is free software: you can redistribute it and/or modify it
3003+ * under the terms of the GNU Lesser General Public License version 3,
3004+ * as published by the Free Software Foundation.
3005+ *
3006+ * This program is distributed in the hope that it will be useful,
3007+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3008+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3009+ * GNU Lesser General Public License for more details.
3010+ *
3011+ * You should have received a copy of the GNU Lesser General Public License
3012+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
3013+ *
3014+ * Authored by: Daniel van Vugt <daniel.van.vugt@canonical.com>
3015+ */
3016+
3017+#ifndef MIR_CLIENT_PERIODIC_PERF_REPORT_H_
3018+#define MIR_CLIENT_PERIODIC_PERF_REPORT_H_
3019+
3020+#include "perf_report.h"
3021+#include "mir/time/clock.h"
3022+#include <chrono>
3023+#include <memory>
3024+#include <string>
3025+#include <unordered_map>
3026+
3027+namespace mir
3028+{
3029+namespace client
3030+{
3031+
3032+class PeriodicPerfReport : public PerfReport
3033+{
3034+public:
3035+ PeriodicPerfReport(mir::time::Duration period,
3036+ std::shared_ptr<mir::time::Clock> const& clock);
3037+ void name_surface(char const*) override;
3038+ void begin_frame(int buffer_id) override;
3039+ void end_frame(int buffer_id) override;
3040+ virtual void display(const char *name, long fps100,
3041+ long rendertime_usec, long lag_usec,
3042+ int nbuffers) const = 0;
3043+private:
3044+ typedef mir::time::Duration Duration;
3045+ typedef mir::time::Timestamp Timestamp;
3046+ Timestamp current_time() const;
3047+ std::shared_ptr<mir::time::Clock> const clock;
3048+ Duration const report_interval;
3049+ std::string name;
3050+ Timestamp last_report_time;
3051+ Timestamp frame_begin_time;
3052+ Timestamp frame_end_time;
3053+ Duration render_time_sum = Duration::zero();
3054+ Duration buffer_queue_latency_sum = Duration::zero();
3055+ int frame_count = 0;
3056+ std::unordered_map<int,Timestamp> buffer_end_time;
3057+};
3058+
3059+} // namespace client
3060+} // namespace mir
3061+
3062+#endif // MIR_CLIENT_PERIODIC_PERF_REPORT_H_
3063
3064=== renamed directory 'src/shared' => 'src/common'
3065=== modified file 'src/common/CMakeLists.txt'
3066--- src/shared/CMakeLists.txt 2014-08-27 19:44:04 +0000
3067+++ src/common/CMakeLists.txt 2014-09-23 17:34:29 +0000
3068@@ -15,6 +15,8 @@
3069 add_subdirectory(env)
3070 add_subdirectory(sharedlibrary)
3071 add_subdirectory(thread)
3072+add_subdirectory(time)
3073+list(APPEND MIR_COMMON_SOURCES $<TARGET_OBJECTS:mirtime>)
3074
3075 set(PREFIX "${CMAKE_INSTALL_PREFIX}")
3076 set(EXEC_PREFIX "${CMAKE_INSTALL_PREFIX}")
3077@@ -40,8 +42,13 @@
3078 )
3079
3080 # TODO we need a place to manage ABI and related versioning but use this as placeholder
3081+<<<<<<< TREE
3082 set(MIRCOMMON_ABI 1)
3083 set(symbol_map ${CMAKE_CURRENT_SOURCE_DIR}/symbols.map)
3084+=======
3085+set(MIRCOMMON_ABI 2)
3086+set(symbol_map ${CMAKE_CURRENT_SOURCE_DIR}/symbols.map)
3087+>>>>>>> MERGE-SOURCE
3088
3089 set_target_properties(mircommon
3090
3091@@ -53,7 +60,7 @@
3092 install(TARGETS mircommon LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
3093
3094 install(
3095- DIRECTORY ${CMAKE_SOURCE_DIR}/include/shared/mir ${CMAKE_SOURCE_DIR}/include/shared/mir_toolkit
3096+ DIRECTORY ${CMAKE_SOURCE_DIR}/include/common/mir ${CMAKE_SOURCE_DIR}/include/common/mir_toolkit
3097 DESTINATION "include/mircommon"
3098 )
3099
3100
3101=== modified file 'src/common/fd/CMakeLists.txt'
3102--- src/shared/fd/CMakeLists.txt 2014-07-24 11:41:11 +0000
3103+++ src/common/fd/CMakeLists.txt 2014-09-23 17:34:29 +0000
3104@@ -16,10 +16,11 @@
3105
3106 add_library(mirsharedfd OBJECT
3107 fd.cpp
3108+ fd_socket_transmission.cpp
3109 )
3110
3111 list(APPEND MIR_COMMON_SOURCES
3112 $<TARGET_OBJECTS:mirsharedfd>
3113 )
3114
3115-set(MIR_COMMON_SOURCES ${MIR_COMMON_SOURCES} PARENT_SCOPE)
3116\ No newline at end of file
3117+set(MIR_COMMON_SOURCES ${MIR_COMMON_SOURCES} PARENT_SCOPE)
3118
3119=== added file 'src/common/fd/fd_socket_transmission.cpp'
3120--- src/common/fd/fd_socket_transmission.cpp 1970-01-01 00:00:00 +0000
3121+++ src/common/fd/fd_socket_transmission.cpp 2014-09-23 17:34:29 +0000
3122@@ -0,0 +1,72 @@
3123+/*
3124+ * Copyright © 2014 Canonical Ltd.
3125+ *
3126+ * This program is free software: you can redistribute it and/or modify it
3127+ * under the terms of the GNU Lesser General Public License version 3,
3128+ * as published by the Free Software Foundation.
3129+ *
3130+ * This program is distributed in the hope that it will be useful,
3131+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3132+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3133+ * GNU Lesser General Public License for more details.
3134+ *
3135+ * You should have received a copy of the GNU Lesser General Public License
3136+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
3137+ *
3138+ * Authored by: Kevin DuBois <kevin.dubois@canonical.com>
3139+ */
3140+
3141+#include "mir/fd_socket_transmission.h"
3142+#include "mir/variable_length_array.h"
3143+#include <sys/types.h>
3144+#include <sys/socket.h>
3145+#include <string.h>
3146+#include <boost/throw_exception.hpp>
3147+#include <stdexcept>
3148+
3149+void mir::send_fds(
3150+ mir::Fd const& socket,
3151+ std::vector<mir::Fd> const& fds)
3152+{
3153+ if (fds.size() > 0)
3154+ {
3155+ // We send dummy data
3156+ struct iovec iov;
3157+ char dummy_iov_data = 'M';
3158+ iov.iov_base = &dummy_iov_data;
3159+ iov.iov_len = 1;
3160+
3161+ // Allocate space for control message
3162+ static auto const builtin_n_fds = 5;
3163+ static auto const builtin_cmsg_space = CMSG_SPACE(builtin_n_fds * sizeof(int));
3164+ auto const fds_bytes = fds.size() * sizeof(int);
3165+ mir::VariableLengthArray<builtin_cmsg_space> control{CMSG_SPACE(fds_bytes)};
3166+ // Silence valgrind uninitialized memory complaint
3167+ memset(control.data(), 0, control.size());
3168+
3169+ // Message to send
3170+ struct msghdr header;
3171+ header.msg_name = NULL;
3172+ header.msg_namelen = 0;
3173+ header.msg_iov = &iov;
3174+ header.msg_iovlen = 1;
3175+ header.msg_controllen = control.size();
3176+ header.msg_control = control.data();
3177+ header.msg_flags = 0;
3178+
3179+ // Control message contains file descriptors
3180+ struct cmsghdr *message = CMSG_FIRSTHDR(&header);
3181+ message->cmsg_len = CMSG_LEN(fds_bytes);
3182+ message->cmsg_level = SOL_SOCKET;
3183+ message->cmsg_type = SCM_RIGHTS;
3184+
3185+ int* const data = reinterpret_cast<int*>(CMSG_DATA(message));
3186+ int i = 0;
3187+ for (auto& fd : fds)
3188+ data[i++] = fd;
3189+
3190+ auto const sent = sendmsg(socket, &header, 0);
3191+ if (sent < 0)
3192+ BOOST_THROW_EXCEPTION(std::runtime_error("Failed to send fds: " + std::string(strerror(errno))));
3193+ }
3194+}
3195
3196=== modified file 'src/common/logging/CMakeLists.txt'
3197--- src/shared/logging/CMakeLists.txt 2014-07-24 11:30:35 +0000
3198+++ src/common/logging/CMakeLists.txt 2014-09-23 17:34:29 +0000
3199@@ -17,6 +17,7 @@
3200 add_library(mirsharedlogging OBJECT
3201 dumb_console_logger.cpp
3202 input_timestamp.cpp
3203+ shared_library_prober_report.cpp
3204 )
3205
3206 list(APPEND MIR_COMMON_SOURCES
3207
3208=== added file 'src/common/logging/shared_library_prober_report.cpp'
3209--- src/common/logging/shared_library_prober_report.cpp 1970-01-01 00:00:00 +0000
3210+++ src/common/logging/shared_library_prober_report.cpp 2014-09-23 17:34:29 +0000
3211@@ -0,0 +1,58 @@
3212+
3213+/*
3214+ * Copyright © 2014 Canonical Ltd.
3215+ *
3216+ * This program is free software: you can redistribute it and/or modify
3217+ * it under the terms of the GNU Lesser General Public License version 3 as
3218+ * published by the Free Software Foundation.
3219+ *
3220+ * This program is distributed in the hope that it will be useful,
3221+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3222+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3223+ * GNU Lesser General Public License for more details.
3224+ *
3225+ * You should have received a copy of the GNU Lesser General Public License
3226+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
3227+ *
3228+ * Authored by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
3229+ */
3230+
3231+#include "mir/logging/shared_library_prober_report.h"
3232+#include "mir/logging/logger.h"
3233+
3234+namespace ml = mir::logging;
3235+
3236+ml::SharedLibraryProberReport::SharedLibraryProberReport(std::shared_ptr<Logger> const& logger)
3237+ : logger{logger}
3238+{
3239+}
3240+
3241+void ml::SharedLibraryProberReport::probing_path(boost::filesystem::path const& path)
3242+{
3243+ logger->log(ml::Logger::Severity::informational,
3244+ std::string("Loading modules from: ") + path.string(),
3245+ "Loader");
3246+}
3247+
3248+void ml::SharedLibraryProberReport::probing_failed(boost::filesystem::path const& path, std::exception const& error)
3249+{
3250+ logger->log(ml::Logger::Severity::error,
3251+ std::string("Failed to load libraries from path: ") + path.string() +
3252+ " (error was:" + error.what() + ")",
3253+ "Loader");
3254+}
3255+
3256+void ml::SharedLibraryProberReport::loading_library(boost::filesystem::path const& filename)
3257+{
3258+ logger->log(ml::Logger::Severity::informational,
3259+ std::string("Loading module: ") + filename.string(),
3260+ "Loader");
3261+}
3262+
3263+void ml::SharedLibraryProberReport::loading_failed(boost::filesystem::path const& filename, std::exception const& error)
3264+{
3265+ logger->log(ml::Logger::Severity::warning,
3266+ std::string("Failed to load module: ") + filename.string() +
3267+ " (error was:" + error.what() + ")",
3268+ "Loader");
3269+}
3270
3271=== modified file 'src/common/protobuf/mir_protobuf.proto'
3272--- src/shared/protobuf/mir_protobuf.proto 2014-07-21 03:35:31 +0000
3273+++ src/common/protobuf/mir_protobuf.proto 2014-09-23 17:34:29 +0000
3274@@ -25,6 +25,11 @@
3275 required int32 value = 1;
3276 };
3277
3278+message BufferRequest {
3279+ optional SurfaceId id = 1;
3280+ optional Buffer buffer = 2;
3281+};
3282+
3283 message Buffer {
3284 optional int32 buffer_id = 1;
3285 repeated sint32 fd = 2;
3286@@ -221,4 +226,5 @@
3287
3288 rpc start_prompt_session(PromptSessionParameters) returns (Void);
3289 rpc stop_prompt_session(Void) returns (Void);
3290+ rpc exchange_buffer(BufferRequest) returns (Buffer);
3291 }
3292
3293=== modified file 'src/common/sharedlibrary/CMakeLists.txt'
3294--- src/shared/sharedlibrary/CMakeLists.txt 2014-07-24 11:30:35 +0000
3295+++ src/common/sharedlibrary/CMakeLists.txt 2014-09-23 17:34:29 +0000
3296@@ -16,6 +16,7 @@
3297
3298 add_library(mirsharedsharedlibrary OBJECT
3299 shared_library.cpp
3300+ shared_library_prober.cpp
3301 )
3302
3303 list(APPEND MIR_COMMON_SOURCES
3304
3305=== modified file 'src/common/sharedlibrary/shared_library.cpp'
3306--- src/shared/sharedlibrary/shared_library.cpp 2014-03-06 06:05:17 +0000
3307+++ src/common/sharedlibrary/shared_library.cpp 2014-09-23 17:34:29 +0000
3308@@ -53,3 +53,15 @@
3309 BOOST_THROW_EXCEPTION(std::runtime_error(dlerror()));
3310 }
3311 }
3312+
3313+void* mir::SharedLibrary::load_symbol(char const* function_name, char const* version) const
3314+{
3315+ if (void* result = dlvsym(so, function_name, version))
3316+ {
3317+ return result;
3318+ }
3319+ else
3320+ {
3321+ BOOST_THROW_EXCEPTION(std::runtime_error(dlerror()));
3322+ }
3323+}
3324
3325=== added file 'src/common/sharedlibrary/shared_library_prober.cpp'
3326--- src/common/sharedlibrary/shared_library_prober.cpp 1970-01-01 00:00:00 +0000
3327+++ src/common/sharedlibrary/shared_library_prober.cpp 2014-09-23 17:34:29 +0000
3328@@ -0,0 +1,74 @@
3329+/*
3330+ * Copyright © 2014 Canonical Ltd.
3331+ *
3332+ * This program is free software: you can redistribute it and/or modify it
3333+ * under the terms of the GNU Lesser General Public License version 3,
3334+ * as published by the Free Software Foundation.
3335+ *
3336+ * This program is distributed in the hope that it will be useful,
3337+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3338+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3339+ * GNU Lesser General Public License for more details.
3340+ *
3341+ * You should have received a copy of the GNU Lesser General Public License
3342+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
3343+ *
3344+ * Authored by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
3345+ */
3346+
3347+#include "mir/shared_library_prober.h"
3348+#include "mir/shared_library.h"
3349+
3350+#include <system_error>
3351+#include <boost/filesystem.hpp>
3352+
3353+namespace
3354+{
3355+std::error_code boost_to_std_error(boost::system::error_code const& ec)
3356+{
3357+ if (ec)
3358+ {
3359+ if (ec.category() != boost::system::system_category())
3360+ {
3361+ throw std::logic_error{"Boost error from unexpected category: " +
3362+ ec.message()};
3363+ }
3364+ return std::error_code{ec.value(), std::system_category()};
3365+ }
3366+ return std::error_code{};
3367+}
3368+}
3369+
3370+std::vector<std::shared_ptr<mir::SharedLibrary>>
3371+mir::libraries_for_path(std::string const& path, mir::SharedLibraryProberReport& report)
3372+{
3373+ report.probing_path(path);
3374+ // We use the error_code overload because we want to throw a std::system_error
3375+ boost::system::error_code ec;
3376+
3377+ boost::filesystem::directory_iterator iterator{path, ec};
3378+ if (ec)
3379+ {
3380+ std::system_error error{boost_to_std_error(ec)};
3381+ report.probing_failed(path, error);
3382+ throw error;
3383+ }
3384+
3385+ std::vector<std::shared_ptr<mir::SharedLibrary>> libraries;
3386+ for (; iterator != boost::filesystem::directory_iterator() ; ++iterator)
3387+ {
3388+ if (iterator->path().extension().string() == ".so")
3389+ {
3390+ try
3391+ {
3392+ report.loading_library(iterator->path());
3393+ libraries.emplace_back(std::make_shared<mir::SharedLibrary>(iterator->path().string()));
3394+ }
3395+ catch (std::runtime_error const& err)
3396+ {
3397+ report.loading_failed(iterator->path(), err);
3398+ }
3399+ }
3400+ }
3401+ return libraries;
3402+}
3403
3404=== modified file 'src/common/symbols.map'
3405--- src/shared/symbols.map 2014-08-26 15:02:57 +0000
3406+++ src/common/symbols.map 2014-09-23 17:34:29 +0000
3407@@ -1,3 +1,4 @@
3408+<<<<<<< TREE
3409 MIR_COMMON_1 {
3410 global:
3411 extern "C++" {
3412@@ -957,3 +958,1012 @@
3413 };
3414 local: *;
3415 };
3416+=======
3417+MIR_COMMON_2 {
3418+ global:
3419+ extern "C++" {
3420+# The following symbols come from running a script over the generated docs. Vis:
3421+# ../tools/process_doxygen_xml.py doc/xml/*.xml | grep "^mircommon public" | sed "s/mircommon public: / /" | sort
3422+ mir_arrow_cursor_name*;
3423+ mir_busy_cursor_name*;
3424+ mir_caret_cursor_name*;
3425+ mir_closed_hand_cursor_name*;
3426+ mir_default_cursor_name*;
3427+ mir::default_server_socket*;
3428+ mir_diagonal_resize_bottom_to_top_cursor_name*;
3429+ mir_diagonal_resize_top_to_bottom_cursor_name*;
3430+ mir_disabled_cursor_name*;
3431+ mir::Fd::Fd*;
3432+ mir::Fd::invalid*;
3433+ mir::Fd::operator*;
3434+ mir::frontend::client_buffer_cache_size*;
3435+ mir::frontend::serialization_buffer_size*;
3436+ mir::geometry::Displacement::Displacement*;
3437+ mir::geometry::Displacement::operator*;
3438+ mir::geometry::Length::Length*;
3439+ mir::geometry::Length::operator*;
3440+ mir::geometry::operator*;
3441+ mir::geometry::Point::operator*;
3442+ mir::geometry::Point::Point*;
3443+ mir::geometry::Rectangle::bottom_left*;
3444+ mir::geometry::Rectangle::bottom_right*;
3445+ mir::geometry::Rectangle::contains*;
3446+ mir::geometry::Rectangle::intersection_with*;
3447+ mir::geometry::Rectangle::overlaps*;
3448+ mir::geometry::Rectangle::Rectangle*;
3449+ mir::geometry::Rectangles::add*;
3450+ mir::geometry::Rectangles::begin*;
3451+ mir::geometry::Rectangles::bounding_rectangle*;
3452+ mir::geometry::Rectangles::clear*;
3453+ mir::geometry::Rectangles::confine*;
3454+ mir::geometry::Rectangles::end*;
3455+ mir::geometry::Rectangles::operator*;
3456+ mir::geometry::Rectangles::Rectangles*;
3457+ mir::geometry::Rectangles::size*;
3458+ mir::geometry::Rectangle::top_right*;
3459+ mir::geometry::Size::operator*;
3460+ mir::geometry::Size::Size*;
3461+ mir::graphics::android::AndroidDriverInterpreter::AndroidDriverInterpreter*;
3462+ mir::graphics::android::AndroidDriverInterpreter::dispatch_driver_request_format*;
3463+ mir::graphics::android::AndroidDriverInterpreter::driver_requests_buffer*;
3464+ mir::graphics::android::AndroidDriverInterpreter::driver_requests_info*;
3465+ mir::graphics::android::AndroidDriverInterpreter::driver_returns_buffer*;
3466+ mir::graphics::android::AndroidDriverInterpreter::operator*;
3467+ mir::graphics::android::AndroidDriverInterpreter::sync_to_display*;
3468+ mir::graphics::android::AndroidNativeBuffer::AndroidNativeBuffer*;
3469+ mir::graphics::android::AndroidNativeBuffer::anwb*;
3470+ mir::graphics::android::AndroidNativeBuffer::copy_fence*;
3471+ mir::graphics::android::AndroidNativeBuffer::ensure_available_for*;
3472+ mir::graphics::android::AndroidNativeBuffer::handle*;
3473+ mir::graphics::android::AndroidNativeBuffer::update_usage*;
3474+ mir::graphics::android::Fence::copy_native_handle*;
3475+ mir::graphics::android::Fence::?Fence*;
3476+ mir::graphics::android::Fence::Fence*;
3477+ mir::graphics::android::Fence::merge_with*;
3478+ mir::graphics::android::Fence::operator*;
3479+ mir::graphics::android::Fence::wait*;
3480+ mir::graphics::android::MirNativeWindow::cancelBuffer*;
3481+ mir::graphics::android::MirNativeWindow::dequeueBuffer*;
3482+ mir::graphics::android::MirNativeWindow::dequeueBufferAndWait*;
3483+ mir::graphics::android::MirNativeWindow::MirNativeWindow*;
3484+ mir::graphics::android::MirNativeWindow::perform*;
3485+ mir::graphics::android::MirNativeWindow::query*;
3486+ mir::graphics::android::MirNativeWindow::queueBuffer*;
3487+ mir::graphics::android::MirNativeWindow::setSwapInterval*;
3488+ mir::graphics::android::RealSyncFileOps::close*;
3489+ mir::graphics::android::RealSyncFileOps::dup*;
3490+ mir::graphics::android::RealSyncFileOps::ioctl*;
3491+ mir::graphics::android::RefCountedNativeBuffer::driver_dereference*;
3492+ mir::graphics::android::RefCountedNativeBuffer::driver_reference*;
3493+ mir::graphics::android::RefCountedNativeBuffer::mir_dereference*;
3494+ mir::graphics::android::RefCountedNativeBuffer::RefCountedNativeBuffer*;
3495+ mir::graphics::android::SyncFence::copy_native_handle*;
3496+ mir::graphics::android::SyncFence::merge_with*;
3497+ mir::graphics::android::SyncFence::SyncFence*;
3498+ mir::graphics::android::SyncFence::wait*;
3499+ mir::graphics::android::SyncFileOps::close*;
3500+ mir::graphics::android::SyncFileOps::dup*;
3501+ mir::graphics::android::SyncFileOps::ioctl*;
3502+ mir::graphics::android::SyncFileOps::?SyncFileOps*;
3503+ mir::graphics::NativeBuffer::anwb*;
3504+ mir::graphics::NativeBuffer::copy_fence*;
3505+ mir::graphics::NativeBuffer::ensure_available_for*;
3506+ mir::graphics::NativeBuffer::handle*;
3507+ mir::graphics::NativeBuffer::?NativeBuffer*;
3508+ mir::graphics::NativeBuffer::NativeBuffer*;
3509+ mir::graphics::NativeBuffer::operator*;
3510+ mir::graphics::NativeBuffer::update_usage*;
3511+ mir_horizontal_resize_cursor_name*;
3512+ mir_hsplit_resize_cursor_name*;
3513+ mir::input::android::Lexicon::translate*;
3514+ mir::input::receiver::android::AndroidInputPlatform::?AndroidInputPlatform*;
3515+ mir::input::receiver::android::AndroidInputPlatform::AndroidInputPlatform*;
3516+ mir::input::receiver::android::AndroidInputPlatform::create_input_thread*;
3517+ mir::input::receiver::android::AndroidInputPlatform::operator*;
3518+ mir::input::receiver::android::InputReceiver::fd*;
3519+ mir::input::receiver::android::InputReceiver::?InputReceiver*;
3520+ mir::input::receiver::android::InputReceiver::InputReceiver*;
3521+ mir::input::receiver::android::InputReceiver::next_event*;
3522+ mir::input::receiver::android::InputReceiver::operator*;
3523+ mir::input::receiver::android::InputReceiverThread::?InputReceiverThread*;
3524+ mir::input::receiver::android::InputReceiverThread::InputReceiverThread*;
3525+ mir::input::receiver::android::InputReceiverThread::join*;
3526+ mir::input::receiver::android::InputReceiverThread::operator*;
3527+ mir::input::receiver::android::InputReceiverThread::start*;
3528+ mir::input::receiver::android::InputReceiverThread::stop*;
3529+ mir::input::receiver::android::InputReceiver::wake*;
3530+ mir::input::receiver::InputPlatform::create*;
3531+ mir::input::receiver::InputPlatform::create_input_thread*;
3532+ mir::input::receiver::InputPlatform::InputPlatform*;
3533+ mir::input::receiver::InputPlatform::operator*;
3534+ mir::input::receiver::InputReceiverReport::?InputReceiverReport*;
3535+ mir::input::receiver::InputReceiverReport::InputReceiverReport*;
3536+ mir::input::receiver::InputReceiverReport::operator*;
3537+ mir::input::receiver::InputReceiverReport::received_event*;
3538+ mir::input::receiver::InputReceiverThread::InputReceiverThread*;
3539+ mir::input::receiver::InputReceiverThread::join*;
3540+ mir::input::receiver::InputReceiverThread::operator*;
3541+ mir::input::receiver::InputReceiverThread::start*;
3542+ mir::input::receiver::InputReceiverThread::stop*;
3543+ mir::input::receiver::NullInputReceiverReport::?NullInputReceiverReport*;
3544+ mir::input::receiver::NullInputReceiverReport::NullInputReceiverReport*;
3545+ mir::input::receiver::XKBMapper::operator*;
3546+ mir::input::receiver::XKBMapper::update_state_and_map_event*;
3547+ mir::input::receiver::XKBMapper::?XKBMapper*;
3548+ mir::input::receiver::XKBMapper::XKBMapper*;
3549+ mir::libraries_for_path*;
3550+ mir::logging::DumbConsoleLogger::log*;
3551+ mir::logging::input_timestamp*;
3552+ mir::logging::Logger::log*;
3553+ mir::logging::Logger::?Logger*;
3554+ mir::logging::Logger::Logger*;
3555+ mir::logging::Logger::operator*;
3556+ mir::logging::SharedLibraryProberReport::?SharedLibraryProberReport*;
3557+ mir::logging::SharedLibraryProberReport::SharedLibraryProberReport*;
3558+ mir::logging::SharedLibraryProberReport::probing_path*;
3559+ mir::logging::SharedLibraryProberReport::probing_failed*;
3560+ mir::logging::SharedLibraryProberReport::loading_library*;
3561+ mir::logging::SharedLibraryProberReport::loading_failed*;
3562+ mir_omnidirectional_resize_cursor_name*;
3563+ mir_open_hand_cursor_name*;
3564+ mir_pointing_hand_cursor_name*;
3565+ mir::protobuf::Buffer::?Buffer*;
3566+ mir::protobuf::Buffer::Buffer*;
3567+ mir::protobuf::Buffer::ByteSize*;
3568+ mir::protobuf::Buffer::Clear*;
3569+ mir::protobuf::Buffer::CopyFrom*;
3570+ mir::protobuf::Buffer::default_instance*;
3571+ mir::protobuf::Buffer::descriptor*;
3572+ mir::protobuf::Buffer::GetMetadata*;
3573+ mir::protobuf::Buffer::IsInitialized*;
3574+ mir::protobuf::Buffer::kBufferIdFieldNumber*;
3575+ mir::protobuf::Buffer::kDataFieldNumber*;
3576+ mir::protobuf::Buffer::kErrorFieldNumber*;
3577+ mir::protobuf::Buffer::kFdFieldNumber*;
3578+ mir::protobuf::Buffer::kFdsOnSideChannelFieldNumber*;
3579+ mir::protobuf::Buffer::kFlagsFieldNumber*;
3580+ mir::protobuf::Buffer::kHeightFieldNumber*;
3581+ mir::protobuf::Buffer::kStrideFieldNumber*;
3582+ mir::protobuf::Buffer::kWidthFieldNumber*;
3583+ mir::protobuf::Buffer::MergeFrom*;
3584+ mir::protobuf::Buffer::MergePartialFromCodedStream*;
3585+ mir::protobuf::Buffer::New*;
3586+ mir::protobuf::BufferRequest::?BufferRequest*;
3587+ mir::protobuf::BufferRequest::BufferRequest*;
3588+ mir::protobuf::BufferRequest::ByteSize*;
3589+ mir::protobuf::BufferRequest::Clear*;
3590+ mir::protobuf::BufferRequest::CopyFrom*;
3591+ mir::protobuf::BufferRequest::default_instance*;
3592+ mir::protobuf::BufferRequest::descriptor*;
3593+ mir::protobuf::BufferRequest::GetMetadata*;
3594+ mir::protobuf::BufferRequest::IsInitialized*;
3595+ mir::protobuf::BufferRequest::kBufferFieldNumber*;
3596+ mir::protobuf::BufferRequest::kIdFieldNumber*;
3597+ mir::protobuf::BufferRequest::MergeFrom*;
3598+ mir::protobuf::BufferRequest::MergePartialFromCodedStream*;
3599+ mir::protobuf::BufferRequest::New*;
3600+ mir::protobuf::BufferRequest::SerializeWithCachedSizes*;
3601+ mir::protobuf::BufferRequest::SerializeWithCachedSizesToArray*;
3602+ mir::protobuf::BufferRequest::Swap*;
3603+ mir::protobuf::Buffer::SerializeWithCachedSizes*;
3604+ mir::protobuf::Buffer::SerializeWithCachedSizesToArray*;
3605+ mir::protobuf::Buffer::Swap*;
3606+ mir::protobuf::Connection::ByteSize*;
3607+ mir::protobuf::Connection::Clear*;
3608+ mir::protobuf::Connection::?Connection*;
3609+ mir::protobuf::Connection::Connection*;
3610+ mir::protobuf::Connection::CopyFrom*;
3611+ mir::protobuf::Connection::default_instance*;
3612+ mir::protobuf::Connection::descriptor*;
3613+ mir::protobuf::Connection::GetMetadata*;
3614+ mir::protobuf::Connection::IsInitialized*;
3615+ mir::protobuf::Connection::kDisplayConfigurationFieldNumber*;
3616+ mir::protobuf::Connection::kDisplayInfoFieldNumber*;
3617+ mir::protobuf::Connection::kDisplayOutputFieldNumber*;
3618+ mir::protobuf::Connection::kErrorFieldNumber*;
3619+ mir::protobuf::Connection::kPlatformFieldNumber*;
3620+ mir::protobuf::Connection::kSurfacePixelFormatFieldNumber*;
3621+ mir::protobuf::Connection::MergeFrom*;
3622+ mir::protobuf::Connection::MergePartialFromCodedStream*;
3623+ mir::protobuf::Connection::New*;
3624+ mir::protobuf::Connection::SerializeWithCachedSizes*;
3625+ mir::protobuf::Connection::SerializeWithCachedSizesToArray*;
3626+ mir::protobuf::Connection::Swap*;
3627+ mir::protobuf::ConnectParameters::ByteSize*;
3628+ mir::protobuf::ConnectParameters::Clear*;
3629+ mir::protobuf::ConnectParameters::?ConnectParameters*;
3630+ mir::protobuf::ConnectParameters::ConnectParameters*;
3631+ mir::protobuf::ConnectParameters::CopyFrom*;
3632+ mir::protobuf::ConnectParameters::default_instance*;
3633+ mir::protobuf::ConnectParameters::descriptor*;
3634+ mir::protobuf::ConnectParameters::GetMetadata*;
3635+ mir::protobuf::ConnectParameters::IsInitialized*;
3636+ mir::protobuf::ConnectParameters::kApplicationNameFieldNumber*;
3637+ mir::protobuf::ConnectParameters::MergeFrom*;
3638+ mir::protobuf::ConnectParameters::MergePartialFromCodedStream*;
3639+ mir::protobuf::ConnectParameters::New*;
3640+ mir::protobuf::ConnectParameters::SerializeWithCachedSizes*;
3641+ mir::protobuf::ConnectParameters::SerializeWithCachedSizesToArray*;
3642+ mir::protobuf::ConnectParameters::Swap*;
3643+ mir::protobuf::CursorSetting::ByteSize*;
3644+ mir::protobuf::CursorSetting::Clear*;
3645+ mir::protobuf::CursorSetting::CopyFrom*;
3646+ mir::protobuf::CursorSetting::?CursorSetting*;
3647+ mir::protobuf::CursorSetting::CursorSetting*;
3648+ mir::protobuf::CursorSetting::default_instance*;
3649+ mir::protobuf::CursorSetting::descriptor*;
3650+ mir::protobuf::CursorSetting::GetMetadata*;
3651+ mir::protobuf::CursorSetting::IsInitialized*;
3652+ mir::protobuf::CursorSetting::kNameFieldNumber*;
3653+ mir::protobuf::CursorSetting::kSurfaceidFieldNumber*;
3654+ mir::protobuf::CursorSetting::MergeFrom*;
3655+ mir::protobuf::CursorSetting::MergePartialFromCodedStream*;
3656+ mir::protobuf::CursorSetting::New*;
3657+ mir::protobuf::CursorSetting::SerializeWithCachedSizes*;
3658+ mir::protobuf::CursorSetting::SerializeWithCachedSizesToArray*;
3659+ mir::protobuf::CursorSetting::Swap*;
3660+ mir::protobuf::DisplayCard::ByteSize*;
3661+ mir::protobuf::DisplayCard::Clear*;
3662+ mir::protobuf::DisplayCard::CopyFrom*;
3663+ mir::protobuf::DisplayCard::default_instance*;
3664+ mir::protobuf::DisplayCard::descriptor*;
3665+ mir::protobuf::DisplayCard::?DisplayCard*;
3666+ mir::protobuf::DisplayCard::DisplayCard*;
3667+ mir::protobuf::DisplayCard::GetMetadata*;
3668+ mir::protobuf::DisplayCard::IsInitialized*;
3669+ mir::protobuf::DisplayCard::kCardIdFieldNumber*;
3670+ mir::protobuf::DisplayCard::kMaxSimultaneousOutputsFieldNumber*;
3671+ mir::protobuf::DisplayCard::MergeFrom*;
3672+ mir::protobuf::DisplayCard::MergePartialFromCodedStream*;
3673+ mir::protobuf::DisplayCard::New*;
3674+ mir::protobuf::DisplayCard::SerializeWithCachedSizes*;
3675+ mir::protobuf::DisplayCard::SerializeWithCachedSizesToArray*;
3676+ mir::protobuf::DisplayCard::Swap*;
3677+ mir::protobuf::DisplayConfiguration::ByteSize*;
3678+ mir::protobuf::DisplayConfiguration::Clear*;
3679+ mir::protobuf::DisplayConfiguration::CopyFrom*;
3680+ mir::protobuf::DisplayConfiguration::default_instance*;
3681+ mir::protobuf::DisplayConfiguration::descriptor*;
3682+ mir::protobuf::DisplayConfiguration::?DisplayConfiguration*;
3683+ mir::protobuf::DisplayConfiguration::DisplayConfiguration*;
3684+ mir::protobuf::DisplayConfiguration::GetMetadata*;
3685+ mir::protobuf::DisplayConfiguration::IsInitialized*;
3686+ mir::protobuf::DisplayConfiguration::kDisplayCardFieldNumber*;
3687+ mir::protobuf::DisplayConfiguration::kDisplayOutputFieldNumber*;
3688+ mir::protobuf::DisplayConfiguration::kErrorFieldNumber*;
3689+ mir::protobuf::DisplayConfiguration::MergeFrom*;
3690+ mir::protobuf::DisplayConfiguration::MergePartialFromCodedStream*;
3691+ mir::protobuf::DisplayConfiguration::New*;
3692+ mir::protobuf::DisplayConfiguration::SerializeWithCachedSizes*;
3693+ mir::protobuf::DisplayConfiguration::SerializeWithCachedSizesToArray*;
3694+ mir::protobuf::DisplayConfiguration::Swap*;
3695+ mir::protobuf::DisplayInfo::ByteSize*;
3696+ mir::protobuf::DisplayInfo::Clear*;
3697+ mir::protobuf::DisplayInfo::CopyFrom*;
3698+ mir::protobuf::DisplayInfo::default_instance*;
3699+ mir::protobuf::DisplayInfo::descriptor*;
3700+ mir::protobuf::DisplayInfo::?DisplayInfo*;
3701+ mir::protobuf::DisplayInfo::DisplayInfo*;
3702+ mir::protobuf::DisplayInfo::GetMetadata*;
3703+ mir::protobuf::DisplayInfo::IsInitialized*;
3704+ mir::protobuf::DisplayInfo::kHeightFieldNumber*;
3705+ mir::protobuf::DisplayInfo::kSupportedPixelFormatFieldNumber*;
3706+ mir::protobuf::DisplayInfo::kWidthFieldNumber*;
3707+ mir::protobuf::DisplayInfo::MergeFrom*;
3708+ mir::protobuf::DisplayInfo::MergePartialFromCodedStream*;
3709+ mir::protobuf::DisplayInfo::New*;
3710+ mir::protobuf::DisplayInfo::SerializeWithCachedSizes*;
3711+ mir::protobuf::DisplayInfo::SerializeWithCachedSizesToArray*;
3712+ mir::protobuf::DisplayInfo::Swap*;
3713+ mir::protobuf::DisplayMode::ByteSize*;
3714+ mir::protobuf::DisplayMode::Clear*;
3715+ mir::protobuf::DisplayMode::CopyFrom*;
3716+ mir::protobuf::DisplayMode::default_instance*;
3717+ mir::protobuf::DisplayMode::descriptor*;
3718+ mir::protobuf::DisplayMode::?DisplayMode*;
3719+ mir::protobuf::DisplayMode::DisplayMode*;
3720+ mir::protobuf::DisplayMode::GetMetadata*;
3721+ mir::protobuf::DisplayMode::IsInitialized*;
3722+ mir::protobuf::DisplayMode::kHorizontalResolutionFieldNumber*;
3723+ mir::protobuf::DisplayMode::kRefreshRateFieldNumber*;
3724+ mir::protobuf::DisplayMode::kVerticalResolutionFieldNumber*;
3725+ mir::protobuf::DisplayMode::MergeFrom*;
3726+ mir::protobuf::DisplayMode::MergePartialFromCodedStream*;
3727+ mir::protobuf::DisplayMode::New*;
3728+ mir::protobuf::DisplayMode::SerializeWithCachedSizes*;
3729+ mir::protobuf::DisplayMode::SerializeWithCachedSizesToArray*;
3730+ mir::protobuf::DisplayMode::Swap*;
3731+ mir::protobuf::DisplayOutput::ByteSize*;
3732+ mir::protobuf::DisplayOutput::Clear*;
3733+ mir::protobuf::DisplayOutput::CopyFrom*;
3734+ mir::protobuf::DisplayOutput::default_instance*;
3735+ mir::protobuf::DisplayOutput::descriptor*;
3736+ mir::protobuf::DisplayOutput::?DisplayOutput*;
3737+ mir::protobuf::DisplayOutput::DisplayOutput*;
3738+ mir::protobuf::DisplayOutput::GetMetadata*;
3739+ mir::protobuf::DisplayOutput::IsInitialized*;
3740+ mir::protobuf::DisplayOutput::kCardIdFieldNumber*;
3741+ mir::protobuf::DisplayOutput::kConnectedFieldNumber*;
3742+ mir::protobuf::DisplayOutput::kCurrentFormatFieldNumber*;
3743+ mir::protobuf::DisplayOutput::kCurrentModeFieldNumber*;
3744+ mir::protobuf::DisplayOutput::kModeFieldNumber*;
3745+ mir::protobuf::DisplayOutput::kOrientationFieldNumber*;
3746+ mir::protobuf::DisplayOutput::kOutputIdFieldNumber*;
3747+ mir::protobuf::DisplayOutput::kPhysicalHeightMmFieldNumber*;
3748+ mir::protobuf::DisplayOutput::kPhysicalWidthMmFieldNumber*;
3749+ mir::protobuf::DisplayOutput::kPixelFormatFieldNumber*;
3750+ mir::protobuf::DisplayOutput::kPositionXFieldNumber*;
3751+ mir::protobuf::DisplayOutput::kPositionYFieldNumber*;
3752+ mir::protobuf::DisplayOutput::kPowerModeFieldNumber*;
3753+ mir::protobuf::DisplayOutput::kPreferredModeFieldNumber*;
3754+ mir::protobuf::DisplayOutput::kTypeFieldNumber*;
3755+ mir::protobuf::DisplayOutput::kUsedFieldNumber*;
3756+ mir::protobuf::DisplayOutput::MergeFrom*;
3757+ mir::protobuf::DisplayOutput::MergePartialFromCodedStream*;
3758+ mir::protobuf::DisplayOutput::New*;
3759+ mir::protobuf::DisplayOutput::SerializeWithCachedSizes*;
3760+ mir::protobuf::DisplayOutput::SerializeWithCachedSizesToArray*;
3761+ mir::protobuf::DisplayOutput::Swap*;
3762+ mir::protobuf::DisplayServer::CallMethod*;
3763+ mir::protobuf::DisplayServer::configure_cursor*;
3764+ mir::protobuf::DisplayServer::configure_display*;
3765+ mir::protobuf::DisplayServer::configure_surface*;
3766+ mir::protobuf::DisplayServer::connect*;
3767+ mir::protobuf::DisplayServer::create_screencast*;
3768+ mir::protobuf::DisplayServer::create_surface*;
3769+ mir::protobuf::DisplayServer::descriptor*;
3770+ mir::protobuf::DisplayServer::disconnect*;
3771+ mir::protobuf::DisplayServer::?DisplayServer*;
3772+ mir::protobuf::DisplayServer::drm_auth_magic*;
3773+ mir::protobuf::DisplayServer::exchange_buffer*;
3774+ mir::protobuf::DisplayServer::GetDescriptor*;
3775+ mir::protobuf::DisplayServer::GetRequestPrototype*;
3776+ mir::protobuf::DisplayServer::GetResponsePrototype*;
3777+ mir::protobuf::DisplayServer::new_fds_for_prompt_providers*;
3778+ mir::protobuf::DisplayServer::next_buffer*;
3779+ mir::protobuf::DisplayServer::release_screencast*;
3780+ mir::protobuf::DisplayServer::release_surface*;
3781+ mir::protobuf::DisplayServer::screencast_buffer*;
3782+ mir::protobuf::DisplayServer::start_prompt_session*;
3783+ mir::protobuf::DisplayServer::stop_prompt_session*;
3784+ mir::protobuf::DisplayServer_Stub::configure_cursor*;
3785+ mir::protobuf::DisplayServer_Stub::configure_display*;
3786+ mir::protobuf::DisplayServer_Stub::configure_surface*;
3787+ mir::protobuf::DisplayServer_Stub::connect*;
3788+ mir::protobuf::DisplayServer_Stub::create_screencast*;
3789+ mir::protobuf::DisplayServer_Stub::create_surface*;
3790+ mir::protobuf::DisplayServer_Stub::disconnect*;
3791+ mir::protobuf::DisplayServer_Stub::?DisplayServer_Stub*;
3792+ mir::protobuf::DisplayServer_Stub::DisplayServer_Stub*;
3793+ mir::protobuf::DisplayServer_Stub::drm_auth_magic*;
3794+ mir::protobuf::DisplayServer_Stub::exchange_buffer*;
3795+ mir::protobuf::DisplayServer_Stub::new_fds_for_prompt_providers*;
3796+ mir::protobuf::DisplayServer_Stub::next_buffer*;
3797+ mir::protobuf::DisplayServer_Stub::release_screencast*;
3798+ mir::protobuf::DisplayServer_Stub::release_surface*;
3799+ mir::protobuf::DisplayServer_Stub::screencast_buffer*;
3800+ mir::protobuf::DisplayServer_Stub::start_prompt_session*;
3801+ mir::protobuf::DisplayServer_Stub::stop_prompt_session*;
3802+ mir::protobuf::DRMAuthMagicStatus::ByteSize*;
3803+ mir::protobuf::DRMAuthMagicStatus::Clear*;
3804+ mir::protobuf::DRMAuthMagicStatus::CopyFrom*;
3805+ mir::protobuf::DRMAuthMagicStatus::default_instance*;
3806+ mir::protobuf::DRMAuthMagicStatus::descriptor*;
3807+ mir::protobuf::DRMAuthMagicStatus::?DRMAuthMagicStatus*;
3808+ mir::protobuf::DRMAuthMagicStatus::DRMAuthMagicStatus*;
3809+ mir::protobuf::DRMAuthMagicStatus::GetMetadata*;
3810+ mir::protobuf::DRMAuthMagicStatus::IsInitialized*;
3811+ mir::protobuf::DRMAuthMagicStatus::kErrorFieldNumber*;
3812+ mir::protobuf::DRMAuthMagicStatus::kStatusCodeFieldNumber*;
3813+ mir::protobuf::DRMAuthMagicStatus::MergeFrom*;
3814+ mir::protobuf::DRMAuthMagicStatus::MergePartialFromCodedStream*;
3815+ mir::protobuf::DRMAuthMagicStatus::New*;
3816+ mir::protobuf::DRMAuthMagicStatus::SerializeWithCachedSizes*;
3817+ mir::protobuf::DRMAuthMagicStatus::SerializeWithCachedSizesToArray*;
3818+ mir::protobuf::DRMAuthMagicStatus::Swap*;
3819+ mir::protobuf::DRMMagic::ByteSize*;
3820+ mir::protobuf::DRMMagic::Clear*;
3821+ mir::protobuf::DRMMagic::CopyFrom*;
3822+ mir::protobuf::DRMMagic::default_instance*;
3823+ mir::protobuf::DRMMagic::descriptor*;
3824+ mir::protobuf::DRMMagic::?DRMMagic*;
3825+ mir::protobuf::DRMMagic::DRMMagic*;
3826+ mir::protobuf::DRMMagic::GetMetadata*;
3827+ mir::protobuf::DRMMagic::IsInitialized*;
3828+ mir::protobuf::DRMMagic::kErrorFieldNumber*;
3829+ mir::protobuf::DRMMagic::kMagicFieldNumber*;
3830+ mir::protobuf::DRMMagic::MergeFrom*;
3831+ mir::protobuf::DRMMagic::MergePartialFromCodedStream*;
3832+ mir::protobuf::DRMMagic::New*;
3833+ mir::protobuf::DRMMagic::SerializeWithCachedSizes*;
3834+ mir::protobuf::DRMMagic::SerializeWithCachedSizesToArray*;
3835+ mir::protobuf::DRMMagic::Swap*;
3836+ mir::protobuf::Event::ByteSize*;
3837+ mir::protobuf::Event::Clear*;
3838+ mir::protobuf::Event::CopyFrom*;
3839+ mir::protobuf::Event::default_instance*;
3840+ mir::protobuf::Event::descriptor*;
3841+ mir::protobuf::Event::?Event*;
3842+ mir::protobuf::Event::Event*;
3843+ mir::protobuf::Event::GetMetadata*;
3844+ mir::protobuf::Event::IsInitialized*;
3845+ mir::protobuf::Event::kRawFieldNumber*;
3846+ mir::protobuf::Event::MergeFrom*;
3847+ mir::protobuf::Event::MergePartialFromCodedStream*;
3848+ mir::protobuf::Event::New*;
3849+ mir::protobuf::EventSequence::ByteSize*;
3850+ mir::protobuf::EventSequence::Clear*;
3851+ mir::protobuf::EventSequence::CopyFrom*;
3852+ mir::protobuf::EventSequence::default_instance*;
3853+ mir::protobuf::EventSequence::descriptor*;
3854+ mir::protobuf::EventSequence::?EventSequence*;
3855+ mir::protobuf::EventSequence::EventSequence*;
3856+ mir::protobuf::EventSequence::GetMetadata*;
3857+ mir::protobuf::EventSequence::IsInitialized*;
3858+ mir::protobuf::EventSequence::kDisplayConfigurationFieldNumber*;
3859+ mir::protobuf::EventSequence::kErrorFieldNumber*;
3860+ mir::protobuf::EventSequence::kEventFieldNumber*;
3861+ mir::protobuf::EventSequence::kLifecycleEventFieldNumber*;
3862+ mir::protobuf::EventSequence::MergeFrom*;
3863+ mir::protobuf::EventSequence::MergePartialFromCodedStream*;
3864+ mir::protobuf::EventSequence::New*;
3865+ mir::protobuf::EventSequence::SerializeWithCachedSizes*;
3866+ mir::protobuf::EventSequence::SerializeWithCachedSizesToArray*;
3867+ mir::protobuf::EventSequence::Swap*;
3868+ mir::protobuf::Event::SerializeWithCachedSizes*;
3869+ mir::protobuf::Event::SerializeWithCachedSizesToArray*;
3870+ mir::protobuf::Event::Swap*;
3871+ mir::protobuf::google_protobuf_guard*;
3872+ mir::protobuf::LifecycleEvent::ByteSize*;
3873+ mir::protobuf::LifecycleEvent::Clear*;
3874+ mir::protobuf::LifecycleEvent::CopyFrom*;
3875+ mir::protobuf::LifecycleEvent::default_instance*;
3876+ mir::protobuf::LifecycleEvent::descriptor*;
3877+ mir::protobuf::LifecycleEvent::GetMetadata*;
3878+ mir::protobuf::LifecycleEvent::IsInitialized*;
3879+ mir::protobuf::LifecycleEvent::kErrorFieldNumber*;
3880+ mir::protobuf::LifecycleEvent::kNewStateFieldNumber*;
3881+ mir::protobuf::LifecycleEvent::?LifecycleEvent*;
3882+ mir::protobuf::LifecycleEvent::LifecycleEvent*;
3883+ mir::protobuf::LifecycleEvent::MergeFrom*;
3884+ mir::protobuf::LifecycleEvent::MergePartialFromCodedStream*;
3885+ mir::protobuf::LifecycleEvent::New*;
3886+ mir::protobuf::LifecycleEvent::SerializeWithCachedSizes*;
3887+ mir::protobuf::LifecycleEvent::SerializeWithCachedSizesToArray*;
3888+ mir::protobuf::LifecycleEvent::Swap*;
3889+ mir::protobuf::Platform::ByteSize*;
3890+ mir::protobuf::Platform::Clear*;
3891+ mir::protobuf::Platform::CopyFrom*;
3892+ mir::protobuf::Platform::default_instance*;
3893+ mir::protobuf::Platform::descriptor*;
3894+ mir::protobuf::Platform::GetMetadata*;
3895+ mir::protobuf::Platform::IsInitialized*;
3896+ mir::protobuf::Platform::kDataFieldNumber*;
3897+ mir::protobuf::Platform::kErrorFieldNumber*;
3898+ mir::protobuf::Platform::kFdFieldNumber*;
3899+ mir::protobuf::Platform::kFdsOnSideChannelFieldNumber*;
3900+ mir::protobuf::Platform::MergeFrom*;
3901+ mir::protobuf::Platform::MergePartialFromCodedStream*;
3902+ mir::protobuf::Platform::New*;
3903+ mir::protobuf::Platform::?Platform*;
3904+ mir::protobuf::Platform::Platform*;
3905+ mir::protobuf::Platform::SerializeWithCachedSizes*;
3906+ mir::protobuf::Platform::SerializeWithCachedSizesToArray*;
3907+ mir::protobuf::Platform::Swap*;
3908+ mir::protobuf::PromptSessionParameters::ByteSize*;
3909+ mir::protobuf::PromptSessionParameters::Clear*;
3910+ mir::protobuf::PromptSessionParameters::CopyFrom*;
3911+ mir::protobuf::PromptSessionParameters::default_instance*;
3912+ mir::protobuf::PromptSessionParameters::descriptor*;
3913+ mir::protobuf::PromptSessionParameters::GetMetadata*;
3914+ mir::protobuf::PromptSessionParameters::IsInitialized*;
3915+ mir::protobuf::PromptSessionParameters::kApplicationPidFieldNumber*;
3916+ mir::protobuf::PromptSessionParameters::MergeFrom*;
3917+ mir::protobuf::PromptSessionParameters::MergePartialFromCodedStream*;
3918+ mir::protobuf::PromptSessionParameters::New*;
3919+ mir::protobuf::PromptSessionParameters::?PromptSessionParameters*;
3920+ mir::protobuf::PromptSessionParameters::PromptSessionParameters*;
3921+ mir::protobuf::PromptSessionParameters::SerializeWithCachedSizes*;
3922+ mir::protobuf::PromptSessionParameters::SerializeWithCachedSizesToArray*;
3923+ mir::protobuf::PromptSessionParameters::Swap*;
3924+ mir::protobuf::protobuf_AddDesc_mir_5fprotobuf_2eproto*;
3925+ mir::protobuf::protobuf_AssignDesc_mir_5fprotobuf_2eproto*;
3926+ mir::protobuf::protobuf_ShutdownFile_mir_5fprotobuf_2eproto*;
3927+ mir::protobuf::Rectangle::ByteSize*;
3928+ mir::protobuf::Rectangle::Clear*;
3929+ mir::protobuf::Rectangle::CopyFrom*;
3930+ mir::protobuf::Rectangle::default_instance*;
3931+ mir::protobuf::Rectangle::descriptor*;
3932+ mir::protobuf::Rectangle::GetMetadata*;
3933+ mir::protobuf::Rectangle::IsInitialized*;
3934+ mir::protobuf::Rectangle::kHeightFieldNumber*;
3935+ mir::protobuf::Rectangle::kLeftFieldNumber*;
3936+ mir::protobuf::Rectangle::kTopFieldNumber*;
3937+ mir::protobuf::Rectangle::kWidthFieldNumber*;
3938+ mir::protobuf::Rectangle::MergeFrom*;
3939+ mir::protobuf::Rectangle::MergePartialFromCodedStream*;
3940+ mir::protobuf::Rectangle::New*;
3941+ mir::protobuf::Rectangle::?Rectangle*;
3942+ mir::protobuf::Rectangle::Rectangle*;
3943+ mir::protobuf::Rectangle::SerializeWithCachedSizes*;
3944+ mir::protobuf::Rectangle::SerializeWithCachedSizesToArray*;
3945+ mir::protobuf::Rectangle::Swap*;
3946+ mir::protobuf::Screencast::ByteSize*;
3947+ mir::protobuf::Screencast::Clear*;
3948+ mir::protobuf::Screencast::CopyFrom*;
3949+ mir::protobuf::Screencast::default_instance*;
3950+ mir::protobuf::Screencast::descriptor*;
3951+ mir::protobuf::Screencast::GetMetadata*;
3952+ mir::protobuf::ScreencastId::ByteSize*;
3953+ mir::protobuf::ScreencastId::Clear*;
3954+ mir::protobuf::ScreencastId::CopyFrom*;
3955+ mir::protobuf::ScreencastId::default_instance*;
3956+ mir::protobuf::ScreencastId::descriptor*;
3957+ mir::protobuf::ScreencastId::GetMetadata*;
3958+ mir::protobuf::ScreencastId::IsInitialized*;
3959+ mir::protobuf::ScreencastId::kValueFieldNumber*;
3960+ mir::protobuf::ScreencastId::MergeFrom*;
3961+ mir::protobuf::ScreencastId::MergePartialFromCodedStream*;
3962+ mir::protobuf::ScreencastId::New*;
3963+ mir::protobuf::ScreencastId::?ScreencastId*;
3964+ mir::protobuf::ScreencastId::ScreencastId*;
3965+ mir::protobuf::ScreencastId::SerializeWithCachedSizes*;
3966+ mir::protobuf::ScreencastId::SerializeWithCachedSizesToArray*;
3967+ mir::protobuf::ScreencastId::Swap*;
3968+ mir::protobuf::Screencast::IsInitialized*;
3969+ mir::protobuf::Screencast::kBufferFieldNumber*;
3970+ mir::protobuf::Screencast::kErrorFieldNumber*;
3971+ mir::protobuf::Screencast::kScreencastIdFieldNumber*;
3972+ mir::protobuf::Screencast::MergeFrom*;
3973+ mir::protobuf::Screencast::MergePartialFromCodedStream*;
3974+ mir::protobuf::Screencast::New*;
3975+ mir::protobuf::ScreencastParameters::ByteSize*;
3976+ mir::protobuf::ScreencastParameters::Clear*;
3977+ mir::protobuf::ScreencastParameters::CopyFrom*;
3978+ mir::protobuf::ScreencastParameters::default_instance*;
3979+ mir::protobuf::ScreencastParameters::descriptor*;
3980+ mir::protobuf::ScreencastParameters::GetMetadata*;
3981+ mir::protobuf::ScreencastParameters::IsInitialized*;
3982+ mir::protobuf::ScreencastParameters::kHeightFieldNumber*;
3983+ mir::protobuf::ScreencastParameters::kPixelFormatFieldNumber*;
3984+ mir::protobuf::ScreencastParameters::kRegionFieldNumber*;
3985+ mir::protobuf::ScreencastParameters::kWidthFieldNumber*;
3986+ mir::protobuf::ScreencastParameters::MergeFrom*;
3987+ mir::protobuf::ScreencastParameters::MergePartialFromCodedStream*;
3988+ mir::protobuf::ScreencastParameters::New*;
3989+ mir::protobuf::ScreencastParameters::?ScreencastParameters*;
3990+ mir::protobuf::ScreencastParameters::ScreencastParameters*;
3991+ mir::protobuf::ScreencastParameters::SerializeWithCachedSizes*;
3992+ mir::protobuf::ScreencastParameters::SerializeWithCachedSizesToArray*;
3993+ mir::protobuf::ScreencastParameters::Swap*;
3994+ mir::protobuf::Screencast::?Screencast*;
3995+ mir::protobuf::Screencast::Screencast*;
3996+ mir::protobuf::Screencast::SerializeWithCachedSizes*;
3997+ mir::protobuf::Screencast::SerializeWithCachedSizesToArray*;
3998+ mir::protobuf::Screencast::Swap*;
3999+ mir::protobuf::SocketFD::ByteSize*;
4000+ mir::protobuf::SocketFD::Clear*;
4001+ mir::protobuf::SocketFD::CopyFrom*;
4002+ mir::protobuf::SocketFD::default_instance*;
4003+ mir::protobuf::SocketFD::descriptor*;
4004+ mir::protobuf::SocketFD::GetMetadata*;
4005+ mir::protobuf::SocketFD::IsInitialized*;
4006+ mir::protobuf::SocketFD::kErrorFieldNumber*;
4007+ mir::protobuf::SocketFD::kFdFieldNumber*;
4008+ mir::protobuf::SocketFD::kFdsOnSideChannelFieldNumber*;
4009+ mir::protobuf::SocketFD::MergeFrom*;
4010+ mir::protobuf::SocketFD::MergePartialFromCodedStream*;
4011+ mir::protobuf::SocketFD::New*;
4012+ mir::protobuf::SocketFDRequest::ByteSize*;
4013+ mir::protobuf::SocketFDRequest::Clear*;
4014+ mir::protobuf::SocketFDRequest::CopyFrom*;
4015+ mir::protobuf::SocketFDRequest::default_instance*;
4016+ mir::protobuf::SocketFDRequest::descriptor*;
4017+ mir::protobuf::SocketFDRequest::GetMetadata*;
4018+ mir::protobuf::SocketFDRequest::IsInitialized*;
4019+ mir::protobuf::SocketFDRequest::kNumberFieldNumber*;
4020+ mir::protobuf::SocketFDRequest::MergeFrom*;
4021+ mir::protobuf::SocketFDRequest::MergePartialFromCodedStream*;
4022+ mir::protobuf::SocketFDRequest::New*;
4023+ mir::protobuf::SocketFDRequest::SerializeWithCachedSizes*;
4024+ mir::protobuf::SocketFDRequest::SerializeWithCachedSizesToArray*;
4025+ mir::protobuf::SocketFDRequest::?SocketFDRequest*;
4026+ mir::protobuf::SocketFDRequest::SocketFDRequest*;
4027+ mir::protobuf::SocketFDRequest::Swap*;
4028+ mir::protobuf::SocketFD::SerializeWithCachedSizes*;
4029+ mir::protobuf::SocketFD::SerializeWithCachedSizesToArray*;
4030+ mir::protobuf::SocketFD::?SocketFD*;
4031+ mir::protobuf::SocketFD::SocketFD*;
4032+ mir::protobuf::SocketFD::Swap*;
4033+ mir::protobuf::static_descriptor_initializer_mir_5fprotobuf_2eproto_*;
4034+ mir::protobuf::Surface::ByteSize*;
4035+ mir::protobuf::Surface::Clear*;
4036+ mir::protobuf::Surface::CopyFrom*;
4037+ mir::protobuf::Surface::default_instance*;
4038+ mir::protobuf::Surface::descriptor*;
4039+ mir::protobuf::Surface::GetMetadata*;
4040+ mir::protobuf::SurfaceId::ByteSize*;
4041+ mir::protobuf::SurfaceId::Clear*;
4042+ mir::protobuf::SurfaceId::CopyFrom*;
4043+ mir::protobuf::SurfaceId::default_instance*;
4044+ mir::protobuf::SurfaceId::descriptor*;
4045+ mir::protobuf::SurfaceId::GetMetadata*;
4046+ mir::protobuf::SurfaceId::IsInitialized*;
4047+ mir::protobuf::SurfaceId::kValueFieldNumber*;
4048+ mir::protobuf::SurfaceId::MergeFrom*;
4049+ mir::protobuf::SurfaceId::MergePartialFromCodedStream*;
4050+ mir::protobuf::SurfaceId::New*;
4051+ mir::protobuf::SurfaceId::SerializeWithCachedSizes*;
4052+ mir::protobuf::SurfaceId::SerializeWithCachedSizesToArray*;
4053+ mir::protobuf::SurfaceId::?SurfaceId*;
4054+ mir::protobuf::SurfaceId::SurfaceId*;
4055+ mir::protobuf::SurfaceId::Swap*;
4056+ mir::protobuf::Surface::IsInitialized*;
4057+ mir::protobuf::Surface::kAttributesFieldNumber*;
4058+ mir::protobuf::Surface::kBufferFieldNumber*;
4059+ mir::protobuf::Surface::kBufferUsageFieldNumber*;
4060+ mir::protobuf::Surface::kErrorFieldNumber*;
4061+ mir::protobuf::Surface::kFdFieldNumber*;
4062+ mir::protobuf::Surface::kFdsOnSideChannelFieldNumber*;
4063+ mir::protobuf::Surface::kHeightFieldNumber*;
4064+ mir::protobuf::Surface::kIdFieldNumber*;
4065+ mir::protobuf::Surface::kPixelFormatFieldNumber*;
4066+ mir::protobuf::Surface::kWidthFieldNumber*;
4067+ mir::protobuf::Surface::MergeFrom*;
4068+ mir::protobuf::Surface::MergePartialFromCodedStream*;
4069+ mir::protobuf::Surface::New*;
4070+ mir::protobuf::SurfaceParameters::ByteSize*;
4071+ mir::protobuf::SurfaceParameters::Clear*;
4072+ mir::protobuf::SurfaceParameters::CopyFrom*;
4073+ mir::protobuf::SurfaceParameters::default_instance*;
4074+ mir::protobuf::SurfaceParameters::descriptor*;
4075+ mir::protobuf::SurfaceParameters::GetMetadata*;
4076+ mir::protobuf::SurfaceParameters::IsInitialized*;
4077+ mir::protobuf::SurfaceParameters::kBufferUsageFieldNumber*;
4078+ mir::protobuf::SurfaceParameters::kHeightFieldNumber*;
4079+ mir::protobuf::SurfaceParameters::kOutputIdFieldNumber*;
4080+ mir::protobuf::SurfaceParameters::kPixelFormatFieldNumber*;
4081+ mir::protobuf::SurfaceParameters::kSurfaceNameFieldNumber*;
4082+ mir::protobuf::SurfaceParameters::kWidthFieldNumber*;
4083+ mir::protobuf::SurfaceParameters::MergeFrom*;
4084+ mir::protobuf::SurfaceParameters::MergePartialFromCodedStream*;
4085+ mir::protobuf::SurfaceParameters::New*;
4086+ mir::protobuf::SurfaceParameters::SerializeWithCachedSizes*;
4087+ mir::protobuf::SurfaceParameters::SerializeWithCachedSizesToArray*;
4088+ mir::protobuf::SurfaceParameters::?SurfaceParameters*;
4089+ mir::protobuf::SurfaceParameters::SurfaceParameters*;
4090+ mir::protobuf::SurfaceParameters::Swap*;
4091+ mir::protobuf::Surface::SerializeWithCachedSizes*;
4092+ mir::protobuf::Surface::SerializeWithCachedSizesToArray*;
4093+ mir::protobuf::SurfaceSetting::ByteSize*;
4094+ mir::protobuf::SurfaceSetting::Clear*;
4095+ mir::protobuf::SurfaceSetting::CopyFrom*;
4096+ mir::protobuf::SurfaceSetting::default_instance*;
4097+ mir::protobuf::SurfaceSetting::descriptor*;
4098+ mir::protobuf::SurfaceSetting::GetMetadata*;
4099+ mir::protobuf::SurfaceSetting::IsInitialized*;
4100+ mir::protobuf::SurfaceSetting::kAttribFieldNumber*;
4101+ mir::protobuf::SurfaceSetting::kErrorFieldNumber*;
4102+ mir::protobuf::SurfaceSetting::kIvalueFieldNumber*;
4103+ mir::protobuf::SurfaceSetting::kSurfaceidFieldNumber*;
4104+ mir::protobuf::SurfaceSetting::MergeFrom*;
4105+ mir::protobuf::SurfaceSetting::MergePartialFromCodedStream*;
4106+ mir::protobuf::SurfaceSetting::New*;
4107+ mir::protobuf::SurfaceSetting::SerializeWithCachedSizes*;
4108+ mir::protobuf::SurfaceSetting::SerializeWithCachedSizesToArray*;
4109+ mir::protobuf::SurfaceSetting::?SurfaceSetting*;
4110+ mir::protobuf::SurfaceSetting::SurfaceSetting*;
4111+ mir::protobuf::SurfaceSetting::Swap*;
4112+ mir::protobuf::Surface::?Surface*;
4113+ mir::protobuf::Surface::Surface*;
4114+ mir::protobuf::Surface::Swap*;
4115+ mir::protobuf::Void::ByteSize*;
4116+ mir::protobuf::Void::Clear*;
4117+ mir::protobuf::Void::CopyFrom*;
4118+ mir::protobuf::Void::default_instance*;
4119+ mir::protobuf::Void::descriptor*;
4120+ mir::protobuf::Void::GetMetadata*;
4121+ mir::protobuf::Void::IsInitialized*;
4122+ mir::protobuf::Void::kErrorFieldNumber*;
4123+ mir::protobuf::Void::MergeFrom*;
4124+ mir::protobuf::Void::MergePartialFromCodedStream*;
4125+ mir::protobuf::Void::New*;
4126+ mir::protobuf::Void::SerializeWithCachedSizes*;
4127+ mir::protobuf::Void::SerializeWithCachedSizesToArray*;
4128+ mir::protobuf::Void::Swap*;
4129+ mir::protobuf::Void::?Void*;
4130+ mir::protobuf::Void::Void*;
4131+ mir::protobuf::wire::Invocation::ByteSize*;
4132+ mir::protobuf::wire::Invocation::Clear*;
4133+ mir::protobuf::wire::Invocation::CopyFrom*;
4134+ mir::protobuf::wire::Invocation::default_instance*;
4135+ mir::protobuf::wire::Invocation::descriptor*;
4136+ mir::protobuf::wire::Invocation::GetMetadata*;
4137+ mir::protobuf::wire::Invocation::?Invocation*;
4138+ mir::protobuf::wire::Invocation::Invocation*;
4139+ mir::protobuf::wire::Invocation::IsInitialized*;
4140+ mir::protobuf::wire::Invocation::kIdFieldNumber*;
4141+ mir::protobuf::wire::Invocation::kMethodNameFieldNumber*;
4142+ mir::protobuf::wire::Invocation::kParametersFieldNumber*;
4143+ mir::protobuf::wire::Invocation::kProtocolVersionFieldNumber*;
4144+ mir::protobuf::wire::Invocation::MergeFrom*;
4145+ mir::protobuf::wire::Invocation::MergePartialFromCodedStream*;
4146+ mir::protobuf::wire::Invocation::New*;
4147+ mir::protobuf::wire::Invocation::SerializeWithCachedSizes*;
4148+ mir::protobuf::wire::Invocation::SerializeWithCachedSizesToArray*;
4149+ mir::protobuf::wire::Invocation::Swap*;
4150+ mir::protobuf::wire::protobuf_AddDesc_mir_5fprotobuf_5fwire_2eproto*;
4151+ mir::protobuf::wire::protobuf_AssignDesc_mir_5fprotobuf_5fwire_2eproto*;
4152+ mir::protobuf::wire::protobuf_ShutdownFile_mir_5fprotobuf_5fwire_2eproto*;
4153+ mir::protobuf::wire::Result::ByteSize*;
4154+ mir::protobuf::wire::Result::Clear*;
4155+ mir::protobuf::wire::Result::CopyFrom*;
4156+ mir::protobuf::wire::Result::default_instance*;
4157+ mir::protobuf::wire::Result::descriptor*;
4158+ mir::protobuf::wire::Result::GetMetadata*;
4159+ mir::protobuf::wire::Result::IsInitialized*;
4160+ mir::protobuf::wire::Result::kEventsFieldNumber*;
4161+ mir::protobuf::wire::Result::kIdFieldNumber*;
4162+ mir::protobuf::wire::Result::kResponseFieldNumber*;
4163+ mir::protobuf::wire::Result::MergeFrom*;
4164+ mir::protobuf::wire::Result::MergePartialFromCodedStream*;
4165+ mir::protobuf::wire::Result::New*;
4166+ mir::protobuf::wire::Result::?Result*;
4167+ mir::protobuf::wire::Result::Result*;
4168+ mir::protobuf::wire::Result::SerializeWithCachedSizes*;
4169+ mir::protobuf::wire::Result::SerializeWithCachedSizesToArray*;
4170+ mir::protobuf::wire::Result::Swap*;
4171+ mir::protobuf::wire::static_descriptor_initializer_mir_5fprotobuf_5fwire_2eproto_*;
4172+ mir::RecursiveReadWriteMutex::read_lock*;
4173+ mir::RecursiveReadWriteMutex::read_unlock*;
4174+ mir::RecursiveReadWriteMutex::write_lock*;
4175+ mir::RecursiveReadWriteMutex::write_unlock*;
4176+ mir::report::lttng::TracepointProvider::?TracepointProvider*;
4177+ mir::report::lttng::TracepointProvider::TracepointProvider*;
4178+ mir::set_thread_name*;
4179+ mir::SharedLibrary::load_symbol*;
4180+ mir::SharedLibrary::?SharedLibrary*;
4181+ mir::SharedLibrary::SharedLibrary*;
4182+ mir::udev::Context::?Context*;
4183+ mir::udev::Context::Context*;
4184+ mir::udev::Context::ctx*;
4185+ mir::udev::Context::device_from_syspath*;
4186+ mir::udev::Context::operator*;
4187+ mir::udev::Device::?Device*;
4188+ mir::udev::Device::Device*;
4189+ mir::udev::Device::devnode*;
4190+ mir::udev::Device::devpath*;
4191+ mir::udev::Device::devtype*;
4192+ mir::udev::Device::operator*;
4193+ mir::udev::Device::subsystem*;
4194+ mir::udev::Enumerator::begin*;
4195+ mir::udev::Enumerator::end*;
4196+ mir::udev::Enumerator::?Enumerator*;
4197+ mir::udev::Enumerator::Enumerator*;
4198+ mir::udev::Enumerator::iterator::operator*;
4199+ mir::udev::Enumerator::match_parent*;
4200+ mir::udev::Enumerator::match_subsystem*;
4201+ mir::udev::Enumerator::match_sysname*;
4202+ mir::udev::Enumerator::operator*;
4203+ mir::udev::Enumerator::scan_devices*;
4204+ mir::udev::Monitor::enable*;
4205+ mir::udev::Monitor::fd*;
4206+ mir::udev::Monitor::filter_by_subsystem*;
4207+ mir::udev::Monitor::filter_by_subsystem_and_type*;
4208+ mir::udev::Monitor::?Monitor*;
4209+ mir::udev::Monitor::Monitor*;
4210+ mir::udev::Monitor::operator*;
4211+ mir::udev::Monitor::process_events*;
4212+ mir::udev::operator*;
4213+ mir_vertical_resize_cursor_name*;
4214+ mir_vsplit_resize_cursor_name*;
4215+ typeinfo?for?MirBufferPackage;
4216+ typeinfo?for?MirDisplayCard;
4217+ typeinfo?for?MirDisplayConfiguration;
4218+ typeinfo?for?MirDisplayInfo;
4219+ typeinfo?for?MirDisplayMode;
4220+ typeinfo?for?MirDisplayOutput;
4221+ typeinfo?for?MirEventDelegate;
4222+ typeinfo?for?mir::Fd;
4223+ typeinfo?for?mir::geometry::Displacement;
4224+ typeinfo?for?mir::geometry::Length;
4225+ typeinfo?for?mir::geometry::Point;
4226+ typeinfo?for?mir::geometry::Rectangle;
4227+ typeinfo?for?mir::geometry::Rectangles;
4228+ typeinfo?for?mir::geometry::Size;
4229+ typeinfo?for?mir::graphics::android::AndroidDriverInterpreter;
4230+ typeinfo?for?mir::graphics::android::AndroidNativeBuffer;
4231+ typeinfo?for?mir::graphics::android::Fence;
4232+ typeinfo?for?mir::graphics::android::MirNativeWindow;
4233+ typeinfo?for?mir::graphics::android::RealSyncFileOps;
4234+ typeinfo?for?mir::graphics::android::RefCountedNativeBuffer;
4235+ typeinfo?for?mir::graphics::android::SyncFence;
4236+ typeinfo?for?mir::graphics::android::SyncFileOps;
4237+ typeinfo?for?mir::graphics::NativeBuffer;
4238+ typeinfo?for?MirGraphicsRegion;
4239+ typeinfo?for?mir::input::android::Lexicon;
4240+ typeinfo?for?mir::input::receiver::android::AndroidInputPlatform;
4241+ typeinfo?for?mir::input::receiver::android::InputReceiver;
4242+ typeinfo?for?mir::input::receiver::android::InputReceiverThread;
4243+ typeinfo?for?mir::input::receiver::InputPlatform;
4244+ typeinfo?for?mir::input::receiver::InputReceiverReport;
4245+ typeinfo?for?mir::input::receiver::InputReceiverThread;
4246+ typeinfo?for?mir::input::receiver::NullInputReceiverReport;
4247+ typeinfo?for?mir::input::receiver::XKBMapper;
4248+ typeinfo?for?mir::IntOwnedFd;
4249+ typeinfo?for?MirKeyEvent;
4250+ typeinfo?for?mir::logging::DumbConsoleLogger;
4251+ typeinfo?for?mir::logging::Logger;
4252+ typeinfo?for?mir::logging::SharedLibraryProberReport;
4253+ typeinfo?for?MirMesaEGLNativeDisplay;
4254+ typeinfo?for?MirMesaEGLNativeSurface;
4255+ typeinfo?for?MirMotionEvent;
4256+ typeinfo?for?MirMotionPointer;
4257+ typeinfo?for?MirOrientationEvent;
4258+ typeinfo?for?MirPlatformPackage;
4259+ typeinfo?for?MirPromptSessionEvent;
4260+ typeinfo?for?mir::protobuf::Buffer;
4261+ typeinfo?for?mir::protobuf::Connection;
4262+ typeinfo?for?mir::protobuf::ConnectParameters;
4263+ typeinfo?for?mir::protobuf::CursorSetting;
4264+ typeinfo?for?mir::protobuf::DisplayCard;
4265+ typeinfo?for?mir::protobuf::DisplayConfiguration;
4266+ typeinfo?for?mir::protobuf::DisplayInfo;
4267+ typeinfo?for?mir::protobuf::DisplayMode;
4268+ typeinfo?for?mir::protobuf::DisplayOutput;
4269+ typeinfo?for?mir::protobuf::DisplayServer;
4270+ typeinfo?for?mir::protobuf::DisplayServer_Stub;
4271+ typeinfo?for?mir::protobuf::DRMAuthMagicStatus;
4272+ typeinfo?for?mir::protobuf::DRMMagic;
4273+ typeinfo?for?mir::protobuf::Event;
4274+ typeinfo?for?mir::protobuf::EventSequence;
4275+ typeinfo?for?mir::protobuf::LifecycleEvent;
4276+ typeinfo?for?mir::protobuf::Platform;
4277+ typeinfo?for?mir::protobuf::PromptSessionParameters;
4278+ typeinfo?for?mir::protobuf::Rectangle;
4279+ typeinfo?for?mir::protobuf::Screencast;
4280+ typeinfo?for?mir::protobuf::ScreencastId;
4281+ typeinfo?for?mir::protobuf::ScreencastParameters;
4282+ typeinfo?for?mir::protobuf::SocketFD;
4283+ typeinfo?for?mir::protobuf::SocketFDRequest;
4284+ typeinfo?for?mir::protobuf::StaticDescriptorInitializer_mir_5fprotobuf_2eproto;
4285+ typeinfo?for?mir::protobuf::Surface;
4286+ typeinfo?for?mir::protobuf::SurfaceId;
4287+ typeinfo?for?mir::protobuf::SurfaceParameters;
4288+ typeinfo?for?mir::protobuf::SurfaceSetting;
4289+ typeinfo?for?mir::protobuf::Void;
4290+ typeinfo?for?mir::protobuf::wire::Invocation;
4291+ typeinfo?for?mir::protobuf::wire::Result;
4292+ typeinfo?for?mir::protobuf::wire::StaticDescriptorInitializer_mir_5fprotobuf_5fwire_2eproto;
4293+ typeinfo?for?MirRectangle;
4294+ typeinfo?for?mir::RecursiveReadLock;
4295+ typeinfo?for?mir::RecursiveReadWriteMutex;
4296+ typeinfo?for?mir::RecursiveWriteLock;
4297+ typeinfo?for?mir::report::lttng::TracepointProvider;
4298+ typeinfo?for?MirResizeEvent;
4299+ typeinfo?for?MirScreencastParameters;
4300+ typeinfo?for?mir::SharedLibrary;
4301+ typeinfo?for?MirSurfaceEvent;
4302+ typeinfo?for?MirSurfaceParameters;
4303+ typeinfo?for?mir::udev::Context;
4304+ typeinfo?for?mir::udev::Device;
4305+ typeinfo?for?mir::udev::Enumerator;
4306+ typeinfo?for?mir::udev::Enumerator::iterator;
4307+ typeinfo?for?mir::udev::Monitor;
4308+ vtable?for?MirBufferPackage;
4309+ vtable?for?MirDisplayCard;
4310+ vtable?for?MirDisplayConfiguration;
4311+ vtable?for?MirDisplayInfo;
4312+ vtable?for?MirDisplayMode;
4313+ vtable?for?MirDisplayOutput;
4314+ vtable?for?MirEventDelegate;
4315+ vtable?for?mir::Fd;
4316+ vtable?for?mir::geometry::Displacement;
4317+ vtable?for?mir::geometry::Length;
4318+ vtable?for?mir::geometry::Point;
4319+ vtable?for?mir::geometry::Rectangle;
4320+ vtable?for?mir::geometry::Rectangles;
4321+ vtable?for?mir::geometry::Size;
4322+ vtable?for?mir::graphics::android::AndroidDriverInterpreter;
4323+ vtable?for?mir::graphics::android::AndroidNativeBuffer;
4324+ vtable?for?mir::graphics::android::Fence;
4325+ vtable?for?mir::graphics::android::MirNativeWindow;
4326+ vtable?for?mir::graphics::android::RealSyncFileOps;
4327+ vtable?for?mir::graphics::android::RefCountedNativeBuffer;
4328+ vtable?for?mir::graphics::android::SyncFence;
4329+ vtable?for?mir::graphics::android::SyncFileOps;
4330+ vtable?for?mir::graphics::NativeBuffer;
4331+ vtable?for?MirGraphicsRegion;
4332+ vtable?for?mir::input::android::Lexicon;
4333+ vtable?for?mir::input::receiver::android::AndroidInputPlatform;
4334+ vtable?for?mir::input::receiver::android::InputReceiver;
4335+ vtable?for?mir::input::receiver::android::InputReceiverThread;
4336+ vtable?for?mir::input::receiver::InputPlatform;
4337+ vtable?for?mir::input::receiver::InputReceiverReport;
4338+ vtable?for?mir::input::receiver::InputReceiverThread;
4339+ vtable?for?mir::input::receiver::NullInputReceiverReport;
4340+ vtable?for?mir::input::receiver::XKBMapper;
4341+ vtable?for?mir::IntOwnedFd;
4342+ vtable?for?MirKeyEvent;
4343+ vtable?for?mir::logging::DumbConsoleLogger;
4344+ vtable?for?mir::logging::Logger;
4345+ vtable?for?mir::logging::SharedLibraryProberReport;
4346+ vtable?for?MirMesaEGLNativeDisplay;
4347+ vtable?for?MirMesaEGLNativeSurface;
4348+ vtable?for?MirMotionEvent;
4349+ vtable?for?MirMotionPointer;
4350+ vtable?for?MirOrientationEvent;
4351+ vtable?for?MirPlatformPackage;
4352+ vtable?for?MirPromptSessionEvent;
4353+ vtable?for?mir::protobuf::Buffer;
4354+ vtable?for?mir::protobuf::Connection;
4355+ vtable?for?mir::protobuf::ConnectParameters;
4356+ vtable?for?mir::protobuf::CursorSetting;
4357+ vtable?for?mir::protobuf::DisplayCard;
4358+ vtable?for?mir::protobuf::DisplayConfiguration;
4359+ vtable?for?mir::protobuf::DisplayInfo;
4360+ vtable?for?mir::protobuf::DisplayMode;
4361+ vtable?for?mir::protobuf::DisplayOutput;
4362+ vtable?for?mir::protobuf::DisplayServer;
4363+ vtable?for?mir::protobuf::DisplayServer_Stub;
4364+ vtable?for?mir::protobuf::DRMAuthMagicStatus;
4365+ vtable?for?mir::protobuf::DRMMagic;
4366+ vtable?for?mir::protobuf::Event;
4367+ vtable?for?mir::protobuf::EventSequence;
4368+ vtable?for?mir::protobuf::LifecycleEvent;
4369+ vtable?for?mir::protobuf::Platform;
4370+ vtable?for?mir::protobuf::PromptSessionParameters;
4371+ vtable?for?mir::protobuf::Rectangle;
4372+ vtable?for?mir::protobuf::Screencast;
4373+ vtable?for?mir::protobuf::ScreencastId;
4374+ vtable?for?mir::protobuf::ScreencastParameters;
4375+ vtable?for?mir::protobuf::SocketFD;
4376+ vtable?for?mir::protobuf::SocketFDRequest;
4377+ vtable?for?mir::protobuf::StaticDescriptorInitializer_mir_5fprotobuf_2eproto;
4378+ vtable?for?mir::protobuf::Surface;
4379+ vtable?for?mir::protobuf::SurfaceId;
4380+ vtable?for?mir::protobuf::SurfaceParameters;
4381+ vtable?for?mir::protobuf::SurfaceSetting;
4382+ vtable?for?mir::protobuf::Void;
4383+ vtable?for?mir::protobuf::wire::Invocation;
4384+ vtable?for?mir::protobuf::wire::Result;
4385+ vtable?for?mir::protobuf::wire::StaticDescriptorInitializer_mir_5fprotobuf_5fwire_2eproto;
4386+ vtable?for?MirRectangle;
4387+ vtable?for?mir::RecursiveReadLock;
4388+ vtable?for?mir::RecursiveReadWriteMutex;
4389+ vtable?for?mir::RecursiveWriteLock;
4390+ vtable?for?mir::report::lttng::TracepointProvider;
4391+ vtable?for?MirResizeEvent;
4392+ vtable?for?MirScreencastParameters;
4393+ vtable?for?mir::SharedLibrary;
4394+ vtable?for?MirSurfaceEvent;
4395+ vtable?for?MirSurfaceParameters;
4396+ vtable?for?mir::udev::Context;
4397+ vtable?for?mir::udev::Device;
4398+ vtable?for?mir::udev::Enumerator;
4399+ vtable?for?mir::udev::Enumerator::iterator;
4400+ vtable?for?mir::udev::Monitor;
4401+
4402+ mir::time::Clock::?Clock*;
4403+ mir::time::Clock::Clock*;
4404+ mir::time::Clock::sample*;
4405+ non-virtual?thunk?to?mir::time::Clock::?Clock*;
4406+ typeinfo?for?mir::time::Clock;
4407+ vtable?for?mir::time::Clock;
4408+
4409+ mir::time::HighResolutionClock::sample*;
4410+ non-virtual?thunk?to?mir::time::HighResolutionClock::sample*;
4411+ typeinfo?for?mir::time::HighResolutionClock;
4412+ vtable?for?mir::time::HighResolutionClock;
4413+ };
4414+ local: *;
4415+};
4416+
4417+MIR_COMMON_2.1 {
4418+ global:
4419+ extern "C++" {
4420+ mir::send_fds*;
4421+ };
4422+ local: *;
4423+};
4424+>>>>>>> MERGE-SOURCE
4425
4426=== renamed directory 'src/server/time' => 'src/common/time'
4427=== modified file 'src/common/time/high_resolution_clock.cpp'
4428--- src/server/time/high_resolution_clock.cpp 2013-04-24 05:22:20 +0000
4429+++ src/common/time/high_resolution_clock.cpp 2014-09-23 17:34:29 +0000
4430@@ -2,15 +2,15 @@
4431 * Copyright © 2013 Canonical Ltd.
4432 *
4433 * This program is free software: you can redistribute it and/or modify it
4434- * under the terms of the GNU General Public License version 3,
4435+ * under the terms of the GNU Lesser General Public License version 3,
4436 * as published by the Free Software Foundation.
4437 *
4438 * This program is distributed in the hope that it will be useful,
4439 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4440 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4441- * GNU General Public License for more details.
4442+ * GNU Lesser General Public License for more details.
4443 *
4444- * You should have received a copy of the GNU General Public License
4445+ * You should have received a copy of the GNU Lesser General Public License
4446 * along with this program. If not, see <http://www.gnu.org/licenses/>.
4447 *
4448 * Authored by: Alan Griffiths <alan@octopull.co.uk>
4449
4450=== added directory 'src/include'
4451=== added directory 'src/include/common'
4452=== added directory 'src/include/common/mir'
4453=== renamed file 'include/shared/mir/basic_observers.h' => 'src/include/common/mir/basic_observers.h'
4454=== renamed file 'include/shared/mir/default_configuration.h' => 'src/include/common/mir/default_configuration.h'
4455=== added file 'src/include/common/mir/fd_socket_transmission.h'
4456--- src/include/common/mir/fd_socket_transmission.h 1970-01-01 00:00:00 +0000
4457+++ src/include/common/mir/fd_socket_transmission.h 2014-09-23 17:34:29 +0000
4458@@ -0,0 +1,28 @@
4459+/*
4460+ * Copyright © 2014 Canonical Ltd.
4461+ *
4462+ * This program is free software: you can redistribute it and/or modify it
4463+ * under the terms of the GNU Lesser General Public License version 3,
4464+ * as published by the Free Software Foundation.
4465+ *
4466+ * This program is distributed in the hope that it will be useful,
4467+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4468+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4469+ * GNU Lesser General Public License for more details.
4470+ *
4471+ * You should have received a copy of the GNU Lesser General Public License
4472+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4473+ *
4474+ * Authored by: Kevin DuBois <kevin.dubois@canonical.com>
4475+ */
4476+
4477+#ifndef MIR_FD_SOCKET_TRANSMISSION_H_
4478+#define MIR_FD_SOCKET_TRANSMISSION_H_
4479+#include "mir/fd.h"
4480+#include <vector>
4481+
4482+namespace mir
4483+{
4484+void send_fds(mir::Fd const& socket, std::vector<mir::Fd> const& fd);
4485+}
4486+#endif /* MIR_FD_SOCKET_TRANSMISSION_H_ */
4487
4488=== added directory 'src/include/common/mir/frontend'
4489=== renamed file 'include/shared/mir/frontend/client_constants.h' => 'src/include/common/mir/frontend/client_constants.h'
4490=== added directory 'src/include/common/mir/geometry'
4491=== renamed file 'include/shared/mir/geometry/displacement.h' => 'src/include/common/mir/geometry/displacement.h'
4492--- include/shared/mir/geometry/displacement.h 2014-03-06 06:05:17 +0000
4493+++ src/include/common/mir/geometry/displacement.h 2014-09-23 17:34:29 +0000
4494@@ -19,8 +19,8 @@
4495 #ifndef MIR_GEOMETRY_DISPLACEMENT_H_
4496 #define MIR_GEOMETRY_DISPLACEMENT_H_
4497
4498-#include "dimensions.h"
4499-#include "point.h"
4500+#include "mir/geometry/dimensions.h"
4501+#include "mir/geometry/point.h"
4502
4503 #include <iosfwd>
4504
4505
4506=== renamed file 'include/shared/mir/geometry/forward.h' => 'src/include/common/mir/geometry/forward.h'
4507=== renamed file 'include/shared/mir/geometry/length.h' => 'src/include/common/mir/geometry/length.h'
4508=== added directory 'src/include/common/mir/graphics'
4509=== added directory 'src/include/common/mir/graphics/android'
4510=== renamed file 'include/shared/mir/graphics/android/android_driver_interpreter.h' => 'src/include/common/mir/graphics/android/android_driver_interpreter.h'
4511=== renamed file 'include/shared/mir/graphics/android/android_native_buffer.h' => 'src/include/common/mir/graphics/android/android_native_buffer.h'
4512=== renamed file 'include/shared/mir/graphics/android/fence.h' => 'src/include/common/mir/graphics/android/fence.h'
4513=== renamed file 'include/shared/mir/graphics/android/mir_native_window.h' => 'src/include/common/mir/graphics/android/mir_native_window.h'
4514=== renamed file 'include/shared/mir/graphics/android/native_buffer.h' => 'src/include/common/mir/graphics/android/native_buffer.h'
4515=== renamed file 'include/shared/mir/graphics/android/sync_fence.h' => 'src/include/common/mir/graphics/android/sync_fence.h'
4516=== added directory 'src/include/common/mir/input'
4517=== added directory 'src/include/common/mir/input/android'
4518=== renamed file 'include/shared/mir/input/android/android_input_lexicon.h' => 'src/include/common/mir/input/android/android_input_lexicon.h'
4519=== renamed file 'include/shared/mir/input/input_receiver_report.h' => 'src/include/common/mir/input/input_receiver_report.h'
4520=== renamed file 'include/shared/mir/input/null_input_receiver_report.h' => 'src/include/common/mir/input/null_input_receiver_report.h'
4521=== renamed file 'include/shared/mir/input/xkb_mapper.h' => 'src/include/common/mir/input/xkb_mapper.h'
4522=== added directory 'src/include/common/mir/logging'
4523=== renamed file 'include/shared/mir/logging/dumb_console_logger.h' => 'src/include/common/mir/logging/dumb_console_logger.h'
4524=== renamed file 'include/shared/mir/logging/input_timestamp.h' => 'src/include/common/mir/logging/input_timestamp.h'
4525=== renamed file 'include/shared/mir/logging/logger.h' => 'src/include/common/mir/logging/logger.h'
4526=== added file 'src/include/common/mir/logging/null_shared_library_prober_report.h'
4527--- src/include/common/mir/logging/null_shared_library_prober_report.h 1970-01-01 00:00:00 +0000
4528+++ src/include/common/mir/logging/null_shared_library_prober_report.h 2014-09-23 17:34:29 +0000
4529@@ -0,0 +1,49 @@
4530+/*
4531+ * Copyright © 2014 Canonical Ltd.
4532+ *
4533+ * This program is free software: you can redistribute it and/or modify
4534+ * it under the terms of the GNU Lesser General Public License version 3 as
4535+ * published by the Free Software Foundation.
4536+ *
4537+ * This program is distributed in the hope that it will be useful,
4538+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4539+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4540+ * GNU Lesser General Public License for more details.
4541+ *
4542+ * You should have received a copy of the GNU Lesser General Public License
4543+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4544+ *
4545+ * Authored by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
4546+ */
4547+
4548+#ifndef MIR_LOGGING_NULL_SHARED_LIBRARY_PROBER_REPORT_H_
4549+#define MIR_LOGGING_NULL_SHARED_LIBRARY_PROBER_REPORT_H_
4550+
4551+#include "mir/shared_library_prober_report.h"
4552+
4553+namespace mir
4554+{
4555+namespace logging
4556+{
4557+
4558+class NullSharedLibraryProberReport : public mir::SharedLibraryProberReport
4559+{
4560+public:
4561+ void probing_path(boost::filesystem::path const& /*path*/) override
4562+ {
4563+ }
4564+ void probing_failed(boost::filesystem::path const& /*path*/, std::exception const& /*error*/) override
4565+ {
4566+ }
4567+ void loading_library(boost::filesystem::path const& /*filename*/) override
4568+ {
4569+ }
4570+ void loading_failed(boost::filesystem::path const& /*filename*/, std::exception const& /*error*/) override
4571+ {
4572+ }
4573+};
4574+
4575+}
4576+}
4577+
4578+#endif /* MIR_LOGGING_NULL_SHARED_LIBRARY_PROBER_REPORT_H_ */
4579
4580=== added file 'src/include/common/mir/logging/shared_library_prober_report.h'
4581--- src/include/common/mir/logging/shared_library_prober_report.h 1970-01-01 00:00:00 +0000
4582+++ src/include/common/mir/logging/shared_library_prober_report.h 2014-09-23 17:34:29 +0000
4583@@ -0,0 +1,48 @@
4584+/*
4585+ * Copyright © 2014 Canonical Ltd.
4586+ *
4587+ * This program is free software: you can redistribute it and/or modify
4588+ * it under the terms of the GNU Lesser General Public License version 3 as
4589+ * published by the Free Software Foundation.
4590+ *
4591+ * This program is distributed in the hope that it will be useful,
4592+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4593+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4594+ * GNU Lesser General Public License for more details.
4595+ *
4596+ * You should have received a copy of the GNU Lesser General Public License
4597+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4598+ *
4599+ * Authored by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
4600+ */
4601+
4602+#ifndef MIR_LOGGING_SHARED_LIBRARY_PROBER_REPORT_H_
4603+#define MIR_LOGGING_SHARED_LIBRARY_PROBER_REPORT_H_
4604+
4605+#include "mir/shared_library_prober_report.h"
4606+#include <memory>
4607+
4608+namespace mir
4609+{
4610+namespace logging
4611+{
4612+class Logger;
4613+
4614+class SharedLibraryProberReport : public mir::SharedLibraryProberReport
4615+{
4616+public:
4617+ SharedLibraryProberReport(std::shared_ptr<Logger> const& logger);
4618+
4619+ void probing_path(boost::filesystem::path const& path) override;
4620+ void probing_failed(boost::filesystem::path const& path, std::exception const& error) override;
4621+ void loading_library(boost::filesystem::path const& filename) override;
4622+ void loading_failed(boost::filesystem::path const& filename, std::exception const& error) override;
4623+
4624+private:
4625+ std::shared_ptr<Logger> const logger;
4626+};
4627+
4628+}
4629+}
4630+
4631+#endif /* MIR_LOGGING_SHARED_LIBRARY_PROBER_REPORT_H_ */
4632
4633=== added directory 'src/include/common/mir/protobuf'
4634=== renamed file 'include/shared/mir/protobuf/google_protobuf_guard.h' => 'src/include/common/mir/protobuf/google_protobuf_guard.h'
4635=== renamed file 'include/shared/mir/raii.h' => 'src/include/common/mir/raii.h'
4636=== renamed file 'include/shared/mir/recursive_read_write_mutex.h' => 'src/include/common/mir/recursive_read_write_mutex.h'
4637=== added directory 'src/include/common/mir/report'
4638=== added directory 'src/include/common/mir/report/lttng'
4639=== renamed file 'include/shared/mir/report/lttng/mir_tracepoint.h' => 'src/include/common/mir/report/lttng/mir_tracepoint.h'
4640--- include/shared/mir/report/lttng/mir_tracepoint.h 2014-03-06 06:05:17 +0000
4641+++ src/include/common/mir/report/lttng/mir_tracepoint.h 2014-09-23 17:34:29 +0000
4642@@ -19,23 +19,6 @@
4643 #ifndef MIR_LTTNG_MIR_TRACEPOINT_H_
4644 #define MIR_LTTNG_MIR_TRACEPOINT_H_
4645
4646-/*
4647- * The STAP_PROBEV() macro from sdt.h (SystemTap) used by
4648- * the tracepoint() macro from lttng/tracepoint.h fails to
4649- * build with clang at the moment. Disable tracepoints
4650- * when building with clang until this is resolved.
4651- *
4652- * See: http://sourceware.org/bugzilla/show_bug.cgi?id=13974
4653- */
4654-#ifdef __clang__
4655-namespace mir_systemtap_bug_13974
4656-{
4657-inline void mir_tracepoint_consume_args(int, ...) {}
4658-}
4659-#define mir_tracepoint(c, e, ...) ::mir_systemtap_bug_13974::mir_tracepoint_consume_args(0, __VA_ARGS__)
4660-#pragma message "Building with clang: Disabling LTTng tracepoints."
4661-#else
4662 #define mir_tracepoint(c, ...) tracepoint(c, __VA_ARGS__)
4663-#endif
4664
4665 #endif /* MIR_LTTNG_MIR_TRACEPOINT_H_ */
4666
4667=== renamed file 'include/shared/mir/report/lttng/tracepoint_provider.h' => 'src/include/common/mir/report/lttng/tracepoint_provider.h'
4668=== renamed file 'include/shared/mir/shared_library.h' => 'src/include/common/mir/shared_library.h'
4669--- include/shared/mir/shared_library.h 2014-03-26 05:48:59 +0000
4670+++ src/include/common/mir/shared_library.h 2014-09-23 17:34:29 +0000
4671@@ -43,9 +43,18 @@
4672 {
4673 return load_function<FunctionPtr>(function_name.c_str());
4674 }
4675+
4676+ template<typename FunctionPtr>
4677+ FunctionPtr load_function(std::string const& function_name, std::string const& version) const
4678+ {
4679+ FunctionPtr result{};
4680+ (void*&)result = load_symbol(function_name.c_str(), version.c_str());
4681+ return result;
4682+ }
4683 private:
4684 void* const so;
4685 void* load_symbol(char const* function_name) const;
4686+ void* load_symbol(char const* function_name, char const* version) const;
4687 SharedLibrary(SharedLibrary const&) = delete;
4688 SharedLibrary& operator=(SharedLibrary const&) = delete;
4689 };
4690
4691=== added file 'src/include/common/mir/shared_library_prober.h'
4692--- src/include/common/mir/shared_library_prober.h 1970-01-01 00:00:00 +0000
4693+++ src/include/common/mir/shared_library_prober.h 2014-09-23 17:34:29 +0000
4694@@ -0,0 +1,36 @@
4695+/*
4696+ * Copyright © 2014 Canonical Ltd.
4697+ *
4698+ * This program is free software: you can redistribute it and/or modify it
4699+ * under the terms of the GNU Lesser General Public License version 3,
4700+ * as published by the Free Software Foundation.
4701+ *
4702+ * This program is distributed in the hope that it will be useful,
4703+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4704+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4705+ * GNU Lesser General Public License for more details.
4706+ *
4707+ * You should have received a copy of the GNU Lesser General Public License
4708+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4709+ *
4710+ * Authored by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
4711+ */
4712+
4713+#ifndef MIR_SHARED_LIBRARY_PROBER_H_
4714+#define MIR_SHARED_LIBRARY_PROBER_H_
4715+
4716+#include "shared_library_prober_report.h"
4717+
4718+#include <string>
4719+#include <vector>
4720+#include <memory>
4721+
4722+namespace mir
4723+{
4724+class SharedLibrary;
4725+
4726+std::vector<std::shared_ptr<SharedLibrary>> libraries_for_path(std::string const& path, SharedLibraryProberReport& report);
4727+}
4728+
4729+
4730+#endif /* MIR_SHARED_LIBRARY_PROBER_H_ */
4731
4732=== added file 'src/include/common/mir/shared_library_prober_report.h'
4733--- src/include/common/mir/shared_library_prober_report.h 1970-01-01 00:00:00 +0000
4734+++ src/include/common/mir/shared_library_prober_report.h 2014-09-23 17:34:29 +0000
4735@@ -0,0 +1,44 @@
4736+/*
4737+ * Copyright © 2014 Canonical Ltd.
4738+ *
4739+ * This program is free software: you can redistribute it and/or modify it
4740+ * under the terms of the GNU Lesser General Public License version 3,
4741+ * as published by the Free Software Foundation.
4742+ *
4743+ * This program is distributed in the hope that it will be useful,
4744+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4745+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4746+ * GNU Lesser General Public License for more details.
4747+ *
4748+ * You should have received a copy of the GNU Lesser General Public License
4749+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4750+ *
4751+ * Authored by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
4752+ */
4753+
4754+#ifndef MIR_SHARED_LIBRARY_PROBER_REPORT_H_
4755+#define MIR_SHARED_LIBRARY_PROBER_REPORT_H_
4756+
4757+#include <boost/filesystem.hpp>
4758+
4759+namespace mir
4760+{
4761+class SharedLibraryProberReport
4762+{
4763+public:
4764+ virtual ~SharedLibraryProberReport() = default;
4765+
4766+ virtual void probing_path(boost::filesystem::path const& path) = 0;
4767+ virtual void probing_failed(boost::filesystem::path const& path, std::exception const& error) = 0;
4768+ virtual void loading_library(boost::filesystem::path const& filename) = 0;
4769+ virtual void loading_failed(boost::filesystem::path const& filename, std::exception const& error) = 0;
4770+
4771+protected:
4772+ SharedLibraryProberReport() = default;
4773+ SharedLibraryProberReport(SharedLibraryProberReport const&) = delete;
4774+ SharedLibraryProberReport& operator=(SharedLibraryProberReport const&) = delete;
4775+};
4776+}
4777+
4778+
4779+#endif /* MIR_SHARED_LIBRARY_PROBER_REPORT_H_ */
4780
4781=== renamed file 'include/shared/mir/thread_name.h' => 'src/include/common/mir/thread_name.h'
4782=== added directory 'src/include/common/mir/time'
4783=== renamed file 'include/server/mir/time/high_resolution_clock.h' => 'src/include/common/mir/time/high_resolution_clock.h'
4784--- include/server/mir/time/high_resolution_clock.h 2014-03-06 06:05:17 +0000
4785+++ src/include/common/mir/time/high_resolution_clock.h 2014-09-23 17:34:29 +0000
4786@@ -2,15 +2,15 @@
4787 * Copyright © 2013 Canonical Ltd.
4788 *
4789 * This program is free software: you can redistribute it and/or modify it
4790- * under the terms of the GNU General Public License version 3,
4791+ * under the terms of the GNU Lesser General Public License version 3,
4792 * as published by the Free Software Foundation.
4793 *
4794 * This program is distributed in the hope that it will be useful,
4795 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4796 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4797- * GNU General Public License for more details.
4798+ * GNU Lesser General Public License for more details.
4799 *
4800- * You should have received a copy of the GNU General Public License
4801+ * You should have received a copy of the GNU Lesser General Public License
4802 * along with this program. If not, see <http://www.gnu.org/licenses/>.
4803 *
4804 * Authored by: Alan Griffiths <alan@octopull.co.uk>
4805
4806=== added directory 'src/include/common/mir/udev'
4807=== renamed file 'include/shared/mir/udev/wrapper.h' => 'src/include/common/mir/udev/wrapper.h'
4808=== renamed file 'include/shared/mir/variable_length_array.h' => 'src/include/common/mir/variable_length_array.h'
4809=== added directory 'src/include/platform'
4810=== added directory 'src/include/platform/mir'
4811=== renamed file 'include/platform/mir/emergency_cleanup_registry.h' => 'src/include/platform/mir/emergency_cleanup_registry.h'
4812=== renamed file 'include/platform/mir/fatal.h' => 'src/include/platform/mir/fatal.h'
4813=== added directory 'src/include/platform/mir/graphics'
4814=== renamed file 'include/platform/mir/graphics/buffer_basic.h' => 'src/include/platform/mir/graphics/buffer_basic.h'
4815=== renamed file 'include/platform/mir/graphics/buffer_initializer.h' => 'src/include/platform/mir/graphics/buffer_initializer.h'
4816=== renamed file 'include/platform/mir/graphics/buffer_ipc_packer.h' => 'src/include/platform/mir/graphics/buffer_ipc_packer.h'
4817=== added file 'src/include/platform/mir/graphics/buffer_writer.h'
4818--- src/include/platform/mir/graphics/buffer_writer.h 1970-01-01 00:00:00 +0000
4819+++ src/include/platform/mir/graphics/buffer_writer.h 2014-09-23 17:34:29 +0000
4820@@ -0,0 +1,44 @@
4821+/*
4822+ * Copyright © 2014 Canonical Ltd.
4823+ *
4824+ * This program is free software: you can redistribute it and/or modify it
4825+ * under the terms of the GNU Lesser General Public License version 3,
4826+ * as published by the Free Software Foundation.
4827+ *
4828+ * This program is distributed in the hope that it will be useful,
4829+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4830+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4831+ * GNU Lesser General Public License for more details.
4832+ *
4833+ * You should have received a copy of the GNU Lesser General Public License
4834+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
4835+ *
4836+ * Authored by: Robert Carr <robert.carr@canonical.com>
4837+ */
4838+
4839+#include <cstddef>
4840+
4841+namespace mir
4842+{
4843+namespace graphics
4844+{
4845+class Buffer;
4846+
4847+/// An interface provided by the graphics platform allowing for writing untiled pixel data into buffers.
4848+class BufferWriter
4849+{
4850+public:
4851+ virtual ~BufferWriter() = default;
4852+
4853+ // Expects data to be an unstrided array containing (buffer.width * buffer.height) pixels. Likewise
4854+ // it is expected that buffer and data match in pixel format.
4855+ virtual void write(Buffer& buffer, unsigned char const* data, size_t size) = 0;
4856+
4857+protected:
4858+ BufferWriter() = default;
4859+ BufferWriter(BufferWriter const&) = delete;
4860+ BufferWriter& operator=(BufferWriter const&) = delete;
4861+};
4862+
4863+}
4864+}
4865
4866=== renamed file 'include/platform/mir/graphics/cursor.h' => 'src/include/platform/mir/graphics/cursor.h'
4867=== renamed file 'include/platform/mir/graphics/cursor_image.h' => 'src/include/platform/mir/graphics/cursor_image.h'
4868=== renamed file 'include/platform/mir/graphics/display_report.h' => 'src/include/platform/mir/graphics/display_report.h'
4869=== renamed file 'include/platform/mir/graphics/drm_authenticator.h' => 'src/include/platform/mir/graphics/drm_authenticator.h'
4870=== renamed file 'include/platform/mir/graphics/egl_extensions.h' => 'src/include/platform/mir/graphics/egl_extensions.h'
4871=== renamed file 'include/platform/mir/graphics/egl_resources.h' => 'src/include/platform/mir/graphics/egl_resources.h'
4872=== renamed file 'include/platform/mir/graphics/gl_primitive.h' => 'src/include/platform/mir/graphics/gl_primitive.h'
4873=== renamed file 'include/platform/mir/graphics/gl_program.h' => 'src/include/platform/mir/graphics/gl_program.h'
4874=== renamed file 'include/platform/mir/graphics/gl_program_factory.h' => 'src/include/platform/mir/graphics/gl_program_factory.h'
4875=== renamed file 'include/platform/mir/graphics/gl_texture.h' => 'src/include/platform/mir/graphics/gl_texture.h'
4876=== renamed file 'include/platform/mir/graphics/gl_texture_cache.h' => 'src/include/platform/mir/graphics/gl_texture_cache.h'
4877=== renamed file 'include/platform/mir/graphics/native_platform.h' => 'src/include/platform/mir/graphics/native_platform.h'
4878--- include/platform/mir/graphics/native_platform.h 2014-06-16 23:37:57 +0000
4879+++ src/include/platform/mir/graphics/native_platform.h 2014-09-23 17:34:29 +0000
4880@@ -36,6 +36,7 @@
4881 class InternalClient;
4882 class BufferIPCPacker;
4883 class Buffer;
4884+class BufferWriter;
4885 class DisplayReport;
4886 class NestedContext;
4887
4888@@ -58,6 +59,8 @@
4889 Buffer const* buffer,
4890 BufferIpcMsgType msg_type) const = 0;
4891
4892+ virtual std::shared_ptr<BufferWriter> make_buffer_writer() = 0;
4893+
4894 virtual ~NativePlatform() = default;
4895 NativePlatform(NativePlatform const&) = delete;
4896 NativePlatform& operator=(NativePlatform const&) = delete;
4897
4898=== renamed file 'include/platform/mir/graphics/nested_context.h' => 'src/include/platform/mir/graphics/nested_context.h'
4899=== renamed file 'include/platform/mir/graphics/overlapping_output_grouping.h' => 'src/include/platform/mir/graphics/overlapping_output_grouping.h'
4900=== renamed file 'include/platform/mir/graphics/pixel_format_utils.h' => 'src/include/platform/mir/graphics/pixel_format_utils.h'
4901=== renamed file 'include/platform/mir/graphics/platform_ipc_package.h' => 'src/include/platform/mir/graphics/platform_ipc_package.h'
4902=== renamed file 'include/platform/mir/graphics/tessellation_helpers.h' => 'src/include/platform/mir/graphics/tessellation_helpers.h'
4903=== renamed file 'include/platform/mir/shared_library_loader.h' => 'src/include/platform/mir/shared_library_loader.h'
4904=== added directory 'src/include/server'
4905=== added directory 'src/include/server/mir'
4906=== renamed file 'include/server/mir/asio_main_loop.h' => 'src/include/server/mir/asio_main_loop.h'
4907=== added directory 'src/include/server/mir/compositor'
4908=== renamed file 'include/server/mir/compositor/buffer_stream.h' => 'src/include/server/mir/compositor/buffer_stream.h'
4909=== renamed file 'include/server/mir/compositor/compositor_id.h' => 'src/include/server/mir/compositor/compositor_id.h'
4910=== renamed file 'include/server/mir/compositor/compositor_report.h' => 'src/include/server/mir/compositor/compositor_report.h'
4911=== renamed file 'include/server/mir/compositor/destination_alpha.h' => 'src/include/server/mir/compositor/destination_alpha.h'
4912=== renamed file 'include/server/mir/compositor/display_buffer_compositor.h' => 'src/include/server/mir/compositor/display_buffer_compositor.h'
4913=== renamed file 'include/server/mir/compositor/display_buffer_compositor_factory.h' => 'src/include/server/mir/compositor/display_buffer_compositor_factory.h'
4914=== renamed file 'include/server/mir/compositor/frame_dropping_policy.h' => 'src/include/server/mir/compositor/frame_dropping_policy.h'
4915=== renamed file 'include/server/mir/compositor/frame_dropping_policy_factory.h' => 'src/include/server/mir/compositor/frame_dropping_policy_factory.h'
4916=== renamed file 'include/server/mir/compositor/gl_renderer.h' => 'src/include/server/mir/compositor/gl_renderer.h'
4917=== renamed file 'include/server/mir/compositor/recently_used_cache.h' => 'src/include/server/mir/compositor/recently_used_cache.h'
4918--- include/server/mir/compositor/recently_used_cache.h 2014-05-20 16:24:02 +0000
4919+++ src/include/server/mir/compositor/recently_used_cache.h 2014-09-23 17:34:29 +0000
4920@@ -45,6 +45,7 @@
4921 std::shared_ptr<graphics::GLTexture> texture;
4922 graphics::BufferID last_bound_buffer;
4923 bool used{true};
4924+ bool valid_binding{false};
4925 std::shared_ptr<graphics::Buffer> resource;
4926 };
4927
4928
4929=== renamed file 'include/server/mir/compositor/renderer.h' => 'src/include/server/mir/compositor/renderer.h'
4930=== renamed file 'include/server/mir/compositor/renderer_factory.h' => 'src/include/server/mir/compositor/renderer_factory.h'
4931=== renamed file 'include/server/mir/compositor/scene.h' => 'src/include/server/mir/compositor/scene.h'
4932=== renamed file 'include/server/mir/compositor/scene_element.h' => 'src/include/server/mir/compositor/scene_element.h'
4933--- include/server/mir/compositor/scene_element.h 2014-06-20 17:57:16 +0000
4934+++ src/include/server/mir/compositor/scene_element.h 2014-09-23 17:34:29 +0000
4935@@ -39,6 +39,10 @@
4936 virtual std::shared_ptr<graphics::Renderable> renderable() const = 0;
4937 virtual void rendered_in(CompositorID cid) = 0;
4938 virtual void occluded_in(CompositorID cid) = 0;
4939+
4940+ // Query whether the SceneElement represents a window-surface, which at the discretion of the compositor
4941+ // may be eligible for window decoration.
4942+ virtual bool is_a_surface() const = 0;
4943
4944 protected:
4945 SceneElement() = default;
4946
4947=== renamed file 'include/server/mir/default_server_status_listener.h' => 'src/include/server/mir/default_server_status_listener.h'
4948=== renamed file 'include/server/mir/display_changer.h' => 'src/include/server/mir/display_changer.h'
4949=== renamed file 'include/server/mir/emergency_cleanup.h' => 'src/include/server/mir/emergency_cleanup.h'
4950=== added directory 'src/include/server/mir/frontend'
4951=== renamed file 'include/server/mir/frontend/connection_context.h' => 'src/include/server/mir/frontend/connection_context.h'
4952=== renamed file 'include/server/mir/frontend/connector.h' => 'src/include/server/mir/frontend/connector.h'
4953=== renamed file 'include/server/mir/frontend/connector_report.h' => 'src/include/server/mir/frontend/connector_report.h'
4954=== renamed file 'include/server/mir/frontend/display_changer.h' => 'src/include/server/mir/frontend/display_changer.h'
4955=== renamed file 'include/server/mir/frontend/event_sink.h' => 'src/include/server/mir/frontend/event_sink.h'
4956=== renamed file 'include/server/mir/frontend/message_processor_report.h' => 'src/include/server/mir/frontend/message_processor_report.h'
4957=== renamed file 'include/server/mir/frontend/screencast.h' => 'src/include/server/mir/frontend/screencast.h'
4958=== renamed file 'include/server/mir/frontend/session_mediator_report.h' => 'src/include/server/mir/frontend/session_mediator_report.h'
4959--- include/server/mir/frontend/session_mediator_report.h 2014-07-21 03:35:31 +0000
4960+++ src/include/server/mir/frontend/session_mediator_report.h 2014-09-23 17:34:29 +0000
4961@@ -40,6 +40,8 @@
4962
4963 virtual void session_next_buffer_called(std::string const& app_name) = 0;
4964
4965+ virtual void session_exchange_buffer_called(std::string const& app_name) = 0;
4966+
4967 virtual void session_release_surface_called(std::string const& app_name) = 0;
4968
4969 virtual void session_disconnect_called(std::string const& app_name) = 0;
4970
4971=== added directory 'src/include/server/mir/graphics'
4972=== renamed file 'include/server/mir/graphics/gl_extensions_base.h' => 'src/include/server/mir/graphics/gl_extensions_base.h'
4973=== renamed file 'include/server/mir/graphics/surfaceless_egl_context.h' => 'src/include/server/mir/graphics/surfaceless_egl_context.h'
4974=== added directory 'src/include/server/mir/input'
4975=== added directory 'src/include/server/mir/input/android'
4976=== renamed file 'include/server/mir/input/android/default_android_input_configuration.h' => 'src/include/server/mir/input/android/default_android_input_configuration.h'
4977=== renamed file 'include/server/mir/input/cursor_images.h' => 'src/include/server/mir/input/cursor_images.h'
4978=== renamed file 'include/server/mir/input/input_channel_factory.h' => 'src/include/server/mir/input/input_channel_factory.h'
4979=== renamed file 'include/server/mir/input/input_configuration.h' => 'src/include/server/mir/input/input_configuration.h'
4980=== renamed file 'include/server/mir/input/input_manager.h' => 'src/include/server/mir/input/input_manager.h'
4981=== renamed file 'include/server/mir/input/input_region.h' => 'src/include/server/mir/input/input_region.h'
4982=== renamed file 'include/server/mir/input/input_report.h' => 'src/include/server/mir/input/input_report.h'
4983=== renamed file 'include/server/mir/input/input_send_observer.h' => 'src/include/server/mir/input/input_send_observer.h'
4984=== renamed file 'include/server/mir/input/input_sender.h' => 'src/include/server/mir/input/input_sender.h'
4985=== renamed file 'include/server/mir/input/input_targets.h' => 'src/include/server/mir/input/scene.h'
4986--- include/server/mir/input/input_targets.h 2014-05-13 20:11:37 +0000
4987+++ src/include/server/mir/input/scene.h 2014-09-23 17:34:29 +0000
4988@@ -17,8 +17,8 @@
4989 * Daniel d'Andradra <daniel.dandrada@canonical.com>
4990 */
4991
4992-#ifndef MIR_INPUT_INPUT_TARGETS_H_
4993-#define MIR_INPUT_INPUT_TARGETS_H_
4994+#ifndef MIR_INPUT_INPUT_SCENE_H_
4995+#define MIR_INPUT_INPUT_SCENE_H_
4996
4997 #include "mir/input/input_channel_factory.h"
4998
4999@@ -30,28 +30,43 @@
5000 {
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: