Mir

Merge lp:~alan-griffiths/mir/mive-miral-to-mir-regeneration into lp:mir

Proposed by Alan Griffiths on 2017-08-31
Status: Merged
Approved by: Gerry Boland on 2017-08-31
Approved revision: 4259
Merged at revision: 4237
Proposed branch: lp:~alan-griffiths/mir/mive-miral-to-mir-regeneration
Merge into: lp:mir
Diff against target: 936 lines (+690/-22)
15 files modified
CMakeLists.txt (+1/-1)
doc/Doxyfile.in (+2/-1)
examples/basic.c (+5/-8)
include/client/mir_toolkit/mir_buffer.h (+2/-0)
include/client/mir_toolkit/mir_display_configuration.h (+4/-4)
include/client/mir_toolkit/mir_input_device.h (+3/-3)
include/client/mir_toolkit/mir_window.h (+1/-1)
include/client/mir_toolkit/rs/mir_render_surface.h (+1/-1)
include/miral/miral/command_line_option.h (+5/-0)
include/miral/miral/window_management_policy_addendum3.h (+1/-0)
include/platform/mir/graphics/platform.h (+1/-0)
include/server/mir/graphics/display_configuration_observer.h (+1/-1)
include/test/mir_test_framework/main.h (+2/-2)
src/miral/CMakeLists.txt (+6/-0)
src/miral/process_doxygen_xml.py (+655/-0)
To merge this branch: bzr merge lp:~alan-griffiths/mir/mive-miral-to-mir-regeneration
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration 2017-08-31 Approve on 2017-08-31
Gerry Boland 2017-08-31 Approve on 2017-08-31
Review via email: mp+329987@code.launchpad.net

This proposal supersedes a proposal from 2017-08-25.

Commit message

 Incorporate the utility script for regenerating the libmiral symbols file. Vis:

$ make regenerate-miral-symbols-map

Description of the change

Incorporate miral project into mir source tree

This is a third-cut:

1. There's no attempt to remove code obsoleted by MirAL
2. There's no reworking of the generated docs to include miral

To post a comment you must log in.
Mir CI Bot (mir-ci-bot) wrote : Posted in a previous version of this proposal

PASSED: Continuous integration, rev:4257
https://mir-jenkins.ubuntu.com/job/mir-ci/3585/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4908
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5131
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5120
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5120
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5120
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4947/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4947
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4947/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Gerry Boland (gerboland) wrote : Posted in a previous version of this proposal

+#! /usr/bin/python
Does this need to be python3?

review: Needs Information
Alan Griffiths (alan-griffiths) wrote : Posted in a previous version of this proposal

> +#! /usr/bin/python
> Does this need to be python3?

It could be, it doesn't need to be.

Gerry Boland (gerboland) wrote : Posted in a previous version of this proposal

Seems ok

review: Approve
Mir CI Bot (mir-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Autolanding.
More details in the following jenkins job:
https://mir-jenkins.ubuntu.com/job/mir-autolanding/1399/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4938/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/1529/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5163/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5153/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5153/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5153/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4977/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4977/console

review: Needs Fixing (continuous-integration)
Mir CI Bot (mir-ci-bot) wrote : Posted in a previous version of this proposal

FAILED: Continuous integration, rev:4258
https://mir-jenkins.ubuntu.com/job/mir-ci/3613/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4940/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5165/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5155/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5155/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5155/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4979/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4979/console

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

review: Needs Fixing (continuous-integration)
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4259
https://mir-jenkins.ubuntu.com/job/mir-ci/3617/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4944
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5169
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5159
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5159
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5159
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4983
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4983/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4983
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4983/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4983
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4983/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4983
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4983/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4983
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4983/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4983
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4983/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4983
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4983/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4983
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4983/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Gerry Boland (gerboland) :
review: Approve
Mir CI Bot (mir-ci-bot) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2017-08-22 16:55:23 +0000
3+++ CMakeLists.txt 2017-08-31 07:58:47 +0000
4@@ -53,6 +53,7 @@
5 include (cmake/EnableCoverageReport.cmake)
6 include (cmake/MirCommon.cmake)
7 include (GNUInstallDirs)
8+include (cmake/Doxygen.cmake)
9
10 set(build_types "None;Debug;Release;RelWithDebInfo;MinSizeRel;Coverage;AddressSanitizer;ThreadSanitizer;UBSanitizer")
11 # Change informational string for CMAKE_BUILD_TYPE
12@@ -300,7 +301,6 @@
13 endif ()
14
15 enable_coverage_report(mirserver)
16-include (cmake/Doxygen.cmake)
17 include (cmake/ABICheck.cmake)
18
19 add_custom_target(ptest
20
21=== modified file 'doc/Doxyfile.in'
22--- doc/Doxyfile.in 2017-05-08 03:04:26 +0000
23+++ doc/Doxyfile.in 2017-08-31 07:58:47 +0000
24@@ -875,7 +875,8 @@
25 # Note that the wildcards are matched against the file with absolute path, so to
26 # exclude all test directories for example use the pattern */test/*
27
28-EXCLUDE_PATTERNS = */include/test/*
29+EXCLUDE_PATTERNS = *.capnp.c++ \
30+ */examples/multi_stream.cpp
31
32 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
33 # (namespaces, classes, functions, etc.) that should be excluded from the
34
35=== modified file 'examples/basic.c'
36--- examples/basic.c 2017-07-28 17:00:43 +0000
37+++ examples/basic.c 2017-08-31 07:58:47 +0000
38@@ -41,16 +41,12 @@
39 /// \snippet basic.c surface_release_tag
40 ///\subsection connection_release We release our connection
41 /// \snippet basic.c connection_release_tag
42-///\subsection get the raw, platform-specific buffer handle for the current buffer
43-/// \snippet basic.c get_current_buffer_tag
44+///\subsection get graphics region for the current buffer
45+/// \snippet basic.c get_graphics_region_tag
46 /// \example basic.c A simple mir client
47 ///\section MirDemoState MirDemoState
48 /// The handles needs to be accessible both to callbacks and to the control function.
49 /// \snippet basic.c MirDemoState_tag
50-///\section Callbacks Callbacks
51-/// This program opens a mir connection and creates a surface. The handles
52-/// needs to be accessible both to callbacks and to the control function.
53-/// \snippet basic.c Callback_tag
54
55 ///\internal [MirDemoState_tag]
56 // Utility structure for the state of a single surface session.
57@@ -143,11 +139,12 @@
58 {
59 // We can query the current graphics buffer attributes
60 {
61+ ///\internal [get_graphics_region_tag]
62 MirGraphicsRegion graphics_region;
63 mir_buffer_stream_get_graphics_region(bs, &graphics_region);
64
65- ///\internal [get_current_buffer_tag]
66- // In a real application we'd render into the current buffer
67+ ///\internal [get_graphics_region_tag]
68+ // In a real application we'd render into the graphics_region
69 }
70
71 ///\internal [swap_buffers_tag]
72
73=== modified file 'include/client/mir_toolkit/mir_buffer.h'
74--- include/client/mir_toolkit/mir_buffer.h 2017-07-28 17:00:43 +0000
75+++ include/client/mir_toolkit/mir_buffer.h 2017-08-31 07:58:47 +0000
76@@ -40,6 +40,7 @@
77 * \param [in] connection The connection
78 * \param [in] width Requested buffer width
79 * \param [in] height Requested buffer height
80+ * \param [in] format Requested buffer pixel format
81 * \param [in] available_callback The callback called when the buffer
82 * is available
83 * \param [in] available_context The context for the available_callback
84@@ -55,6 +56,7 @@
85 * \param [in] connection The connection
86 * \param [in] width Requested buffer width
87 * \param [in] height Requested buffer height
88+ * \param [in] format Requested buffer pixel format
89 * \return The buffer
90 **/
91 MirBuffer* mir_connection_allocate_buffer_sync(
92
93=== modified file 'include/client/mir_toolkit/mir_display_configuration.h'
94--- include/client/mir_toolkit/mir_display_configuration.h 2017-07-28 17:00:43 +0000
95+++ include/client/mir_toolkit/mir_display_configuration.h 2017-08-31 07:58:47 +0000
96@@ -539,7 +539,7 @@
97 * \param [in] output The MirOutput to query
98 * \returns true if gamma is supported on the hardware, otherwise not supported
99 */
100-bool mir_output_is_gamma_supported(MirOutput const* client_output);
101+bool mir_output_is_gamma_supported(MirOutput const* output);
102
103 /** Gets the gamma size
104 *
105@@ -547,7 +547,7 @@
106 * \returns The size of the gamma ramp LUT
107 *
108 */
109-uint32_t mir_output_get_gamma_size(MirOutput const* client_output);
110+uint32_t mir_output_get_gamma_size(MirOutput const* output);
111
112 /** Get the gamma ramp of a display
113 *
114@@ -559,7 +559,7 @@
115 * \param [out] blue The blue gamma ramp
116 * \param [in] size The size of the gamma ramp
117 */
118-void mir_output_get_gamma(MirOutput const* client_output,
119+void mir_output_get_gamma(MirOutput const* output,
120 uint16_t* red,
121 uint16_t* green,
122 uint16_t* blue,
123@@ -573,7 +573,7 @@
124 * \param [in] blue The blue gamma ramp
125 * \param [in] size The size of the gamma ramp
126 */
127-void mir_output_set_gamma(MirOutput* client_output,
128+void mir_output_set_gamma(MirOutput* output,
129 uint16_t const* red,
130 uint16_t const* green,
131 uint16_t const* blue,
132
133=== modified file 'include/client/mir_toolkit/mir_input_device.h'
134--- include/client/mir_toolkit/mir_input_device.h 2017-07-28 17:00:43 +0000
135+++ include/client/mir_toolkit/mir_input_device.h 2017-08-31 07:58:47 +0000
136@@ -235,7 +235,7 @@
137 * Set the options of the keymap as a null terminated string.
138 *
139 * \param [in] conf The keyboard config
140- * \param [in] layout The keymap options
141+ * \param [in] options The keymap options
142 */
143 void mir_keyboard_config_set_keymap_options(
144 MirKeyboardConfig* conf, char const* options);
145@@ -244,7 +244,7 @@
146 * Set the variant of the keymap as a null terminated string.
147 *
148 * \param [in] conf The keyboard config
149- * \param [in] layout The keymap variant
150+ * \param [in] variant The keymap variant
151 */
152 void mir_keyboard_config_set_keymap_variant(
153 MirKeyboardConfig* conf, char const* variant);
154@@ -549,7 +549,7 @@
155 * Configure whether middle mouse button emulation should be enabled
156 *
157 * \param [in] conf The touchpad config
158- * \param [in] middle_mouse_button_emulation
159+ * \param [in] middle_emulation
160 */
161 void mir_touchpad_config_set_middle_mouse_button_emulation(
162 MirTouchpadConfig* conf, bool middle_emulation);
163
164=== modified file 'include/client/mir_toolkit/mir_window.h'
165--- include/client/mir_toolkit/mir_window.h 2017-07-28 17:00:43 +0000
166+++ include/client/mir_toolkit/mir_window.h 2017-08-31 07:58:47 +0000
167@@ -506,7 +506,7 @@
168 * \param [in] spec the spec to update
169 * \param [in] rect the destination rectangle to align with
170 * \param [in] rect_gravity the point on \p rect to align with
171- * \param [in] surface_gravity the point on the window to align with
172+ * \param [in] window_gravity the point on the window to align with
173 * \param [in] placement_hints positioning hints to use when limited on space
174 * \param [in] offset_dx horizontal offset to shift w.r.t. \p rect
175 * \param [in] offset_dy vertical offset to shift w.r.t. \p rect
176
177=== modified file 'include/client/mir_toolkit/rs/mir_render_surface.h'
178--- include/client/mir_toolkit/rs/mir_render_surface.h 2017-07-28 17:00:43 +0000
179+++ include/client/mir_toolkit/rs/mir_render_surface.h 2017-08-31 07:58:47 +0000
180@@ -53,7 +53,7 @@
181 * \param [in] connection A valid connection
182 * \param [in] width The width in pixels
183 * \param [in] height The height in pixels
184- * \param [in] MirRenderSurfaceCallback Callback to be invoked when the request completes.
185+ * \param [in] callback Callback to be invoked when the request completes.
186 * The callback is guaranteed to be called and called
187 * with a non-null MirRenderSurface*, but the render
188 * surface may be invalid in case of error.
189
190=== modified file 'include/miral/miral/command_line_option.h'
191--- include/miral/miral/command_line_option.h 2017-08-21 14:18:55 +0000
192+++ include/miral/miral/command_line_option.h 2017-08-31 07:58:47 +0000
193@@ -103,6 +103,11 @@
194 std::shared_ptr<Self> self;
195 };
196
197+/**
198+ * Update the option to be called back *before* Mir initialization starts
199+ *
200+ * \param clo the option
201+ */
202 auto pre_init(CommandLineOption const& clo) -> CommandLineOption;
203 }
204
205
206=== modified file 'include/miral/miral/window_management_policy_addendum3.h'
207--- include/miral/miral/window_management_policy_addendum3.h 2017-08-21 14:18:55 +0000
208+++ include/miral/miral/window_management_policy_addendum3.h 2017-08-31 07:58:47 +0000
209@@ -46,6 +46,7 @@
210 * vertically maximized windows to allow adjustment for decorations.
211 *
212 * @param window_info the window
213+ * @param new_state the new state
214 * @param new_placement the suggested placement
215 *
216 * @return the confirmed placement of the window
217
218=== modified file 'include/platform/mir/graphics/platform.h'
219--- include/platform/mir/graphics/platform.h 2017-07-28 17:00:43 +0000
220+++ include/platform/mir/graphics/platform.h 2017-08-31 07:58:47 +0000
221@@ -210,6 +210,7 @@
222 * \param [in] options options to use for this platform
223 * \param [in] emergency_cleanup_registry object to register emergency shutdown handlers with
224 * \param [in] report the object to use to report interesting events from the display subsystem
225+ * \param [in] logger the object to use to log interesting events from the display subsystem
226 *
227 * This factory function needs to be implemented by each platform.
228 *
229
230=== modified file 'include/server/mir/graphics/display_configuration_observer.h'
231--- include/server/mir/graphics/display_configuration_observer.h 2017-07-28 17:00:43 +0000
232+++ include/server/mir/graphics/display_configuration_observer.h 2017-08-31 07:58:47 +0000
233@@ -57,7 +57,7 @@
234 /**
235 * Notification after updating base display configuration.
236 *
237- * \param [in] config The configuration that has just been updated.
238+ * \param [in] base_config The configuration that has just been updated.
239 */
240 virtual void base_configuration_updated(std::shared_ptr<DisplayConfiguration const> const& base_config) = 0;
241
242
243=== modified file 'include/test/mir_test_framework/main.h'
244--- include/test/mir_test_framework/main.h 2017-07-28 17:00:43 +0000
245+++ include/test/mir_test_framework/main.h 2017-08-31 07:58:47 +0000
246@@ -23,11 +23,11 @@
247 {
248 /**
249 * Initialize and run the mir test framework as follows:
250- *
251+ * \code
252 * ::testing::InitGoogleTest(&argc, argv);
253 * set_commandline(argc, argv);
254 * return RUN_ALL_TESTS();
255- *
256+ * \endcode
257 * \attention If you override main() for your own purposes call this or do
258 * something equivalent to run the tests.
259 */
260
261=== modified file 'src/miral/CMakeLists.txt'
262--- src/miral/CMakeLists.txt 2017-08-29 09:17:03 +0000
263+++ src/miral/CMakeLists.txt 2017-08-31 07:58:47 +0000
264@@ -134,6 +134,12 @@
265 ${miral_include}/miral/version.h
266 )
267
268+if(TARGET doc)
269+ add_custom_target(regenerate-miral-symbols-map
270+ ${CMAKE_CURRENT_SOURCE_DIR}/process_doxygen_xml.py ${CMAKE_BINARY_DIR}/doc/xml/*.xml > ${symbol_map}
271+ DEPENDS doc)
272+endif()
273+
274 install(TARGETS miral LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}")
275 install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/miral DESTINATION "${INCLUDEDIR}")
276 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/miral.pc
277
278=== added file 'src/miral/process_doxygen_xml.py'
279--- src/miral/process_doxygen_xml.py 1970-01-01 00:00:00 +0000
280+++ src/miral/process_doxygen_xml.py 2017-08-31 07:58:47 +0000
281@@ -0,0 +1,655 @@
282+#! /usr/bin/python
283+"""This script processes the XML generated by "make doc" and produces summary information
284+on symbols that libmiral intends to make public.
285+
286+To use: Go to your build folder and run "make regenerate-miral-symbols"""""
287+
288+from xml.dom import minidom
289+from sys import argv
290+
291+HELPTEXT = __doc__
292+DEBUG = False
293+
294+def _get_text(node):
295+ substrings = []
296+ for node in node.childNodes:
297+ if node.nodeType == node.TEXT_NODE:
298+ substrings.append(node.data)
299+ elif node.nodeType == node.ELEMENT_NODE:
300+ substrings.append(_get_text(node))
301+ return ''.join(substrings)
302+
303+def _get_text_for_element(parent, tagname):
304+ substrings = []
305+
306+ for node in parent.getElementsByTagName(tagname):
307+ substrings.append(_get_text(node))
308+
309+ return ''.join(substrings)
310+
311+def _get_file_location(node):
312+ for node in node.childNodes:
313+ if node.nodeType == node.ELEMENT_NODE and node.tagName == 'location':
314+ return node.attributes['file'].value
315+ if DEBUG:
316+ print('no location in:', node)
317+ return None
318+
319+def _has_element(node, tagname):
320+ for node in node.childNodes:
321+ if node.nodeType == node.ELEMENT_NODE and node.tagName in tagname:
322+ return True
323+ return False
324+
325+def _print_attribs(node, attribs):
326+ for attrib in attribs:
327+ print(' ', attrib, '=', node.attributes[attrib].value)
328+
329+def _concat_text_from_tags(parent, tagnames):
330+ substrings = []
331+
332+ for tag in tagnames:
333+ substrings.append(_get_text_for_element(parent, tag))
334+
335+ return ''.join(substrings)
336+
337+def _print_location(node):
338+ print(' ', 'location', '=', _get_file_location(node))
339+
340+def _get_attribs(node):
341+ kind = node.attributes['kind'].value
342+ static = node.attributes['static'].value
343+ prot = node.attributes['prot'].value
344+ return kind, static, prot
345+
346+COMPONENT_MAP = {}
347+SYMBOLS = {'public' : set(), 'private' : set()}
348+
349+def _report(publish, symbol):
350+ symbol = symbol.replace('~', '?')
351+
352+ if publish:
353+ SYMBOLS['public'].add(symbol)
354+ else:
355+ SYMBOLS['private'].add(symbol)
356+
357+ if not DEBUG:
358+ return
359+
360+ if publish:
361+ print(' PUBLISH: {}'.format(symbol))
362+ else:
363+ print('NOPUBLISH: {}'.format(symbol))
364+
365+OLD_STANZAS = '''MIRAL_1.0 {
366+global:
367+ extern "C++" {
368+ miral::ActiveOutputsListener::?ActiveOutputsListener*;
369+ miral::ActiveOutputsListener::ActiveOutputsListener*;
370+ miral::ActiveOutputsListener::advise_output_begin*;
371+ miral::ActiveOutputsListener::advise_output_create*;
372+ miral::ActiveOutputsListener::advise_output_delete*;
373+ miral::ActiveOutputsListener::advise_output_end*;
374+ miral::ActiveOutputsListener::advise_output_update*;
375+ miral::ActiveOutputsListener::operator*;
376+ miral::ActiveOutputsMonitor::?ActiveOutputsMonitor*;
377+ miral::ActiveOutputsMonitor::ActiveOutputsMonitor*;
378+ miral::ActiveOutputsMonitor::add_listener*;
379+ miral::ActiveOutputsMonitor::delete_listener*;
380+ miral::ActiveOutputsMonitor::operator*;
381+ miral::ActiveOutputsMonitor::process_outputs*;
382+ miral::AddInitCallback::?AddInitCallback*;
383+ miral::AddInitCallback::AddInitCallback*;
384+ miral::AddInitCallback::operator*;
385+ miral::AppendEventFilter::AppendEventFilter*;
386+ miral::AppendEventFilter::operator*;
387+ miral::ApplicationAuthorizer::?ApplicationAuthorizer*;
388+ miral::ApplicationAuthorizer::ApplicationAuthorizer*;
389+ miral::ApplicationAuthorizer::operator*;
390+ miral::ApplicationCredentials::ApplicationCredentials*;
391+ miral::ApplicationCredentials::gid*;
392+ miral::ApplicationCredentials::pid*;
393+ miral::ApplicationCredentials::uid*;
394+ miral::ApplicationInfo::?ApplicationInfo*;
395+ miral::ApplicationInfo::ApplicationInfo*;
396+ miral::ApplicationInfo::add_window*;
397+ miral::ApplicationInfo::application*;
398+ miral::ApplicationInfo::name*;
399+ miral::ApplicationInfo::operator*;
400+ miral::ApplicationInfo::remove_window*;
401+ miral::ApplicationInfo::userdata*;
402+ miral::ApplicationInfo::windows*;
403+ miral::BasicSetApplicationAuthorizer::?BasicSetApplicationAuthorizer*;
404+ miral::BasicSetApplicationAuthorizer::BasicSetApplicationAuthorizer*;
405+ miral::BasicSetApplicationAuthorizer::operator*;
406+ miral::BasicSetApplicationAuthorizer::the_application_authorizer*;
407+ miral::CanonicalWindowManagerPolicy::CanonicalWindowManagerPolicy*;
408+ miral::CanonicalWindowManagerPolicy::advise_focus_gained*;
409+ miral::CanonicalWindowManagerPolicy::confirm_inherited_move*;
410+ miral::CanonicalWindowManagerPolicy::handle_modify_window*;
411+ miral::CanonicalWindowManagerPolicy::handle_raise_window*;
412+ miral::CanonicalWindowManagerPolicy::handle_window_ready*;
413+ miral::CanonicalWindowManagerPolicy::place_new_surface*;
414+ miral::CommandLineOption::?CommandLineOption*;
415+ miral::CommandLineOption::CommandLineOption*;
416+ miral::CommandLineOption::operator*;
417+ miral::CursorTheme::?CursorTheme*;
418+ miral::CursorTheme::CursorTheme*;
419+ miral::CursorTheme::operator*;
420+ miral::DebugExtension::DebugExtension*;
421+ miral::DebugExtension::disable*;
422+ miral::DebugExtension::enable*;
423+ miral::DebugExtension::operator*;
424+ miral::InternalClientLauncher::?InternalClientLauncher*;
425+ miral::InternalClientLauncher::InternalClientLauncher*;
426+ miral::InternalClientLauncher::operator*;
427+ miral::Keymap::?Keymap*;
428+ miral::Keymap::Keymap*;
429+ miral::Keymap::operator*;
430+ miral::Keymap::set_keymap*;
431+ miral::MirRunner::?MirRunner*;
432+ miral::MirRunner::MirRunner*;
433+ miral::MirRunner::add_start_callback*;
434+ miral::MirRunner::add_stop_callback*;
435+ miral::MirRunner::run_with*;
436+ miral::MirRunner::set_exception_handler*;
437+ miral::MirRunner::stop*;
438+ miral::Output::?Output*;
439+ miral::Output::Output*;
440+ miral::Output::connected*;
441+ miral::Output::extents*;
442+ miral::Output::form_factor*;
443+ miral::Output::is_same_output*;
444+ miral::Output::operator*;
445+ miral::Output::orientation*;
446+ miral::Output::physical_size_mm*;
447+ miral::Output::pixel_format*;
448+ miral::Output::power_mode*;
449+ miral::Output::refresh_rate*;
450+ miral::Output::scale*;
451+ miral::Output::type*;
452+ miral::Output::used*;
453+ miral::Output::valid*;
454+ miral::SetCommandLineHandler::?SetCommandLineHandler*;
455+ miral::SetCommandLineHandler::SetCommandLineHandler*;
456+ miral::SetCommandLineHandler::operator*;
457+ miral::SetTerminator::?SetTerminator*;
458+ miral::SetTerminator::SetTerminator*;
459+ miral::SetTerminator::operator*;
460+ miral::SetWindowManagmentPolicy::?SetWindowManagmentPolicy*;
461+ miral::SetWindowManagmentPolicy::SetWindowManagmentPolicy*;
462+ miral::SetWindowManagmentPolicy::operator*;
463+ miral::StartupInternalClient::?StartupInternalClient*;
464+ miral::StartupInternalClient::operator*;
465+ miral::Window::?Window*;
466+ miral::Window::Window*;
467+ miral::Window::application*;
468+ miral::Window::move_to*;
469+ miral::Window::operator*;
470+ miral::Window::resize*;
471+ miral::Window::size*;
472+ miral::Window::top_left*;
473+ miral::WindowInfo::?WindowInfo*;
474+ miral::WindowInfo::WindowInfo*;
475+ miral::WindowInfo::add_child*;
476+ miral::WindowInfo::can_be_active*;
477+ miral::WindowInfo::children*;
478+ miral::WindowInfo::confine_pointer*;
479+ miral::WindowInfo::constrain_resize*;
480+ miral::WindowInfo::has_output_id*;
481+ miral::WindowInfo::height_inc*;
482+ miral::WindowInfo::is_visible*;
483+ miral::WindowInfo::max_aspect*;
484+ miral::WindowInfo::max_height*;
485+ miral::WindowInfo::max_width*;
486+ miral::WindowInfo::min_aspect*;
487+ miral::WindowInfo::min_height*;
488+ miral::WindowInfo::min_width*;
489+ miral::WindowInfo::must_have_parent*;
490+ miral::WindowInfo::must_not_have_parent*;
491+ miral::WindowInfo::name*;
492+ miral::WindowInfo::operator*;
493+ miral::WindowInfo::output_id*;
494+ miral::WindowInfo::parent*;
495+ miral::WindowInfo::preferred_orientation*;
496+ miral::WindowInfo::remove_child*;
497+ miral::WindowInfo::restore_rect*;
498+ miral::WindowInfo::userdata*;
499+ miral::WindowInfo::width_inc*;
500+ miral::WindowInfo::window*;
501+ miral::WindowManagementPolicy::?WindowManagementPolicy*;
502+ miral::WindowManagementPolicy::WindowManagementPolicy*;
503+ miral::WindowManagementPolicy::advise_begin*;
504+ miral::WindowManagementPolicy::advise_delete_app*;
505+ miral::WindowManagementPolicy::advise_delete_window*;
506+ miral::WindowManagementPolicy::advise_end*;
507+ miral::WindowManagementPolicy::advise_focus_gained*;
508+ miral::WindowManagementPolicy::advise_focus_lost*;
509+ miral::WindowManagementPolicy::advise_move_to*;
510+ miral::WindowManagementPolicy::advise_new_app*;
511+ miral::WindowManagementPolicy::advise_new_window*;
512+ miral::WindowManagementPolicy::advise_raise*;
513+ miral::WindowManagementPolicy::advise_resize*;
514+ miral::WindowManagementPolicy::operator*;
515+ miral::WindowManagerOptions::WindowManagerOptions*;
516+ miral::WindowManagerOptions::operator*;
517+ miral::WindowManagerTools::?WindowManagerTools*;
518+ miral::WindowManagerTools::WindowManagerTools*;
519+ miral::WindowManagerTools::active_display*;
520+ miral::WindowManagerTools::active_window*;
521+ miral::WindowManagerTools::ask_client_to_close*;
522+ miral::WindowManagerTools::count_applications*;
523+ miral::WindowManagerTools::drag_active_window*;
524+ miral::WindowManagerTools::find_application*;
525+ miral::WindowManagerTools::focus_next_application*;
526+ miral::WindowManagerTools::focus_next_within_application*;
527+ miral::WindowManagerTools::for_each_application*;
528+ miral::WindowManagerTools::force_close*;
529+ miral::WindowManagerTools::id_for_window*;
530+ miral::WindowManagerTools::info_for*;
531+ miral::WindowManagerTools::info_for_window_id*;
532+ miral::WindowManagerTools::invoke_under_lock*;
533+ miral::WindowManagerTools::modify_window*;
534+ miral::WindowManagerTools::operator*;
535+ miral::WindowManagerTools::place_and_size_for_state*;
536+ miral::WindowManagerTools::raise_tree*;
537+ miral::WindowManagerTools::select_active_window*;
538+ miral::WindowManagerTools::window_at*;
539+ miral::WindowSpecification::?WindowSpecification*;
540+ miral::WindowSpecification::WindowSpecification*;
541+ miral::WindowSpecification::aux_rect*;
542+ miral::WindowSpecification::aux_rect_placement_gravity*;
543+ miral::WindowSpecification::aux_rect_placement_offset*;
544+ miral::WindowSpecification::confine_pointer*;
545+ miral::WindowSpecification::height_inc*;
546+ miral::WindowSpecification::input_mode*;
547+ miral::WindowSpecification::input_shape*;
548+ miral::WindowSpecification::max_aspect*;
549+ miral::WindowSpecification::max_height*;
550+ miral::WindowSpecification::max_width*;
551+ miral::WindowSpecification::min_aspect*;
552+ miral::WindowSpecification::min_height*;
553+ miral::WindowSpecification::min_width*;
554+ miral::WindowSpecification::name*;
555+ miral::WindowSpecification::operator*;
556+ miral::WindowSpecification::output_id*;
557+ miral::WindowSpecification::parent*;
558+ miral::WindowSpecification::placement_hints*;
559+ miral::WindowSpecification::preferred_orientation*;
560+ miral::WindowSpecification::shell_chrome*;
561+ miral::WindowSpecification::size*;
562+ miral::WindowSpecification::state*;
563+ miral::WindowSpecification::top_left*;
564+ miral::WindowSpecification::type*;
565+ miral::WindowSpecification::update*;
566+ miral::WindowSpecification::userdata*;
567+ miral::WindowSpecification::width_inc*;
568+ miral::WindowSpecification::window_placement_gravity*;
569+ miral::apply_lifecycle_state_to*;
570+ miral::display_configuration_options*;
571+ miral::equivalent_display_area*;
572+ miral::kill*;
573+ miral::name_of*;
574+ miral::operator*;
575+ miral::pid_of*;
576+ miral::toolkit::Connection::Connection*;
577+ miral::toolkit::Surface::Surface*;
578+ non-virtual?thunk?to?miral::ActiveOutputsListener::?ActiveOutputsListener*;
579+ non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_begin*;
580+ non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_create*;
581+ non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_delete*;
582+ non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_end*;
583+ non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_update*;
584+ non-virtual?thunk?to?miral::ApplicationAuthorizer::?ApplicationAuthorizer*;
585+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::advise_focus_gained*;
586+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::confirm_inherited_move*;
587+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_modify_window*;
588+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_raise_window*;
589+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_window_ready*;
590+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::place_new_surface*;
591+ non-virtual?thunk?to?miral::WindowManagementPolicy::?WindowManagementPolicy*;
592+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_begin*;
593+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_delete_app*;
594+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_delete_window*;
595+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_end*;
596+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_focus_gained*;
597+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_focus_lost*;
598+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_move_to*;
599+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_new_app*;
600+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_new_window*;
601+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_raise*;
602+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_resize*;
603+ non-virtual?thunk?to?miral::WindowManagementPolicy::advise_state_change*;
604+ typeinfo?for?miral::ActiveOutputsListener;
605+ typeinfo?for?miral::ActiveOutputsMonitor;
606+ typeinfo?for?miral::AddInitCallback;
607+ typeinfo?for?miral::AppendEventFilter;
608+ typeinfo?for?miral::ApplicationAuthorizer;
609+ typeinfo?for?miral::ApplicationCredentials;
610+ typeinfo?for?miral::ApplicationInfo;
611+ typeinfo?for?miral::BasicSetApplicationAuthorizer;
612+ typeinfo?for?miral::CanonicalWindowManagerPolicy;
613+ typeinfo?for?miral::CommandLineOption;
614+ typeinfo?for?miral::CursorTheme;
615+ typeinfo?for?miral::DebugExtension;
616+ typeinfo?for?miral::InternalClientLauncher;
617+ typeinfo?for?miral::Keymap;
618+ typeinfo?for?miral::MirRunner;
619+ typeinfo?for?miral::Output;
620+ typeinfo?for?miral::Output::PhysicalSizeMM;
621+ typeinfo?for?miral::SetCommandLineHandler;
622+ typeinfo?for?miral::SetTerminator;
623+ typeinfo?for?miral::SetWindowManagmentPolicy;
624+ typeinfo?for?miral::StartupInternalClient;
625+ typeinfo?for?miral::Window;
626+ typeinfo?for?miral::WindowInfo;
627+ typeinfo?for?miral::WindowManagementPolicy;
628+ typeinfo?for?miral::WindowManagerOption;
629+ typeinfo?for?miral::WindowManagerOptions;
630+ typeinfo?for?miral::WindowManagerTools;
631+ typeinfo?for?miral::WindowSpecification;
632+ typeinfo?for?miral::WindowSpecification::AspectRatio;
633+ typeinfo?for?miral::toolkit::Connection;
634+ typeinfo?for?miral::toolkit::PersistentId;
635+ typeinfo?for?miral::toolkit::Surface;
636+ typeinfo?for?miral::toolkit::SurfaceSpec;
637+ vtable?for?miral::ActiveOutputsListener;
638+ vtable?for?miral::ActiveOutputsMonitor;
639+ vtable?for?miral::AddInitCallback;
640+ vtable?for?miral::AppendEventFilter;
641+ vtable?for?miral::ApplicationAuthorizer;
642+ vtable?for?miral::ApplicationCredentials;
643+ vtable?for?miral::ApplicationInfo;
644+ vtable?for?miral::BasicSetApplicationAuthorizer;
645+ vtable?for?miral::CanonicalWindowManagerPolicy;
646+ vtable?for?miral::CommandLineOption;
647+ vtable?for?miral::CursorTheme;
648+ vtable?for?miral::DebugExtension;
649+ vtable?for?miral::InternalClientLauncher;
650+ vtable?for?miral::Keymap;
651+ vtable?for?miral::MirRunner;
652+ vtable?for?miral::Output;
653+ vtable?for?miral::Output::PhysicalSizeMM;
654+ vtable?for?miral::SetCommandLineHandler;
655+ vtable?for?miral::SetTerminator;
656+ vtable?for?miral::SetWindowManagmentPolicy;
657+ vtable?for?miral::StartupInternalClient;
658+ vtable?for?miral::Window;
659+ vtable?for?miral::WindowInfo;
660+ vtable?for?miral::WindowManagementPolicy;
661+ vtable?for?miral::WindowManagerOption;
662+ vtable?for?miral::WindowManagerOptions;
663+ vtable?for?miral::WindowManagerTools;
664+ vtable?for?miral::WindowSpecification;
665+ vtable?for?miral::WindowSpecification::AspectRatio;
666+ vtable?for?miral::toolkit::Connection;
667+ vtable?for?miral::toolkit::PersistentId;
668+ vtable?for?miral::toolkit::Surface;
669+ vtable?for?miral::toolkit::SurfaceSpec;
670+ };
671+# miral::WindowInfo::can_morph_to*;
672+ _ZNK5miral10WindowInfo12can_morph_toE14MirSurfaceType;
673+
674+# miral::WindowInfo::needs_titlebar*;
675+ _ZN5miral10WindowInfo14needs_titlebarE14MirSurfaceType;
676+
677+# miral::WindowInfo::state*;
678+ _ZNK5miral10WindowInfo5stateEv;
679+ _ZN5miral10WindowInfo5stateE15MirSurfaceState;
680+
681+# miral::WindowInfo::type*;
682+ _ZN5miral10WindowInfo4typeE14MirSurfaceType;
683+ _ZNK5miral10WindowInfo4typeEv;
684+
685+# miral::WindowManagementPolicy::advise_state_change*;
686+ _ZN5miral22WindowManagementPolicy19advise_state_changeERKNS_10WindowInfoE15MirSurfaceState;
687+
688+# miral::StartupInternalClient::StartupInternalClient*;
689+ _ZN5miral21StartupInternalClientC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvNS_7toolkit10ConnectionEEES7_IFvSt8weak_ptrIN3mir5scene7SessionEEEE;
690+# miral::InternalClientLauncher::launch*;
691+ _ZNK5miral22InternalClientLauncher6launchERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvNS_7toolkit10ConnectionEEERKS9_IFvSt8weak_ptrIN3mir5scene7SessionEEEE;
692+local: *;
693+};
694+
695+MIRAL_1.1 {
696+global:
697+ # miral::WindowInfo::can_morph_to*
698+ _ZNK5miral10WindowInfo12can_morph_toE13MirWindowType;
699+
700+ #miral::WindowInfo::needs_titlebar*;
701+ _ZN5miral10WindowInfo14needs_titlebarE13MirWindowType;
702+
703+ # miral::WindowInfo::state*;
704+ _ZNK5miral10WindowInfo5stateEv;
705+ _ZN5miral10WindowInfo5stateE14MirWindowState;
706+
707+ miral::WindowInfo::type*;
708+ _ZN5miral10WindowInfo4typeE13MirWindowType;
709+ _ZNK5miral10WindowInfo4typeEv;
710+
711+ # miral::WindowManagementPolicy::advise_state_change*;
712+ _ZN5miral22WindowManagementPolicy19advise_state_changeERKNS_10WindowInfoE14MirWindowState;
713+
714+ extern "C++" {
715+ miral::CanonicalWindowManagerPolicy::place_new_window*;
716+ non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::place_new_window*;
717+ };
718+} MIRAL_1.0;
719+
720+MIRAL_1.2 {
721+global:
722+# miral::InternalClientLauncher::launch*;
723+ _ZNK5miral22InternalClientLauncher6launchERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvN3mir6client10ConnectionEEERKS9_IFvSt8weak_ptrINSA_5scene7SessionEEEE;
724+
725+# miral::StartupInternalClient::StartupInternalClient*;
726+ _ZN5miral21StartupInternalClientC?ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvN3mir6client10ConnectionEEES7_IFvSt8weak_ptrINS8_5scene7SessionEEEE;
727+ extern "C++" {
728+ miral::WindowInfo::shell_chrome*;
729+ miral::WindowManagerTools::drag_window*;
730+ typeinfo?for?miral::ApplicationAuthorizer1;
731+ vtable?for?miral::ApplicationAuthorizer1;
732+ };
733+} MIRAL_1.1;
734+
735+MIRAL_1.3 {
736+global:
737+ extern "C++" {
738+ miral::WindowManagerTools::add_tree_to_workspace*;
739+ miral::WindowManagerTools::create_workspace*;
740+ miral::WindowManagerTools::focus_prev_within_application*;
741+ miral::WindowManagerTools::for_each_window_in_workspace*;
742+ miral::WindowManagerTools::for_each_workspace_containing*;
743+ miral::WindowManagerTools::remove_tree_from_workspace*;
744+ miral::WindowManagerTools::move_workspace_content_to_workspace*;
745+ miral::WorkspacePolicy::?WorkspacePolicy*;
746+ miral::WorkspacePolicy::WorkspacePolicy*;
747+ miral::WorkspacePolicy::advise_adding_to_workspace*;
748+ miral::WorkspacePolicy::advise_removing_from_workspace*;
749+ miral::WorkspacePolicy::operator*;
750+ non-virtual?thunk?to?miral::WorkspacePolicy::?WorkspacePolicy*;
751+ non-virtual?thunk?to?miral::WorkspacePolicy::advise_adding_to_workspace*;
752+ non-virtual?thunk?to?miral::WorkspacePolicy::advise_removing_from_workspace*;
753+ typeinfo?for?miral::WorkspacePolicy;
754+ vtable?for?miral::WorkspacePolicy;
755+ };
756+} MIRAL_1.2;
757+
758+MIRAL_1.3.1 {
759+global:
760+ extern "C++" {
761+ miral::SetWindowManagementPolicy::?SetWindowManagementPolicy*;
762+ miral::SetWindowManagementPolicy::SetWindowManagementPolicy*;
763+ miral::SetWindowManagementPolicy::operator*;
764+ typeinfo?for?miral::SetWindowManagementPolicy;
765+ vtable?for?miral::SetWindowManagementPolicy;
766+ };
767+} MIRAL_1.3;
768+
769+MIRAL_1.4.0 {
770+global:
771+ extern "C++" {
772+ miral::WindowManagementPolicyAddendum2::?WindowManagementPolicyAddendum2*;
773+ miral::WindowManagementPolicyAddendum2::WindowManagementPolicyAddendum2*;
774+ miral::WindowManagementPolicyAddendum2::operator*;
775+ miral::WindowManagerTools::end_drag_and_drop*;
776+ miral::WindowManagerTools::start_drag_and_drop*;
777+ miral::toolkit::Window::Window*;
778+ non-virtual?thunk?to?miral::WindowManagementPolicyAddendum2::?WindowManagementPolicyAddendum2*;
779+ typeinfo?for?miral::WindowManagementPolicyAddendum2;
780+ typeinfo?for?miral::toolkit::Window;
781+ typeinfo?for?miral::toolkit::WindowId;
782+ typeinfo?for?miral::toolkit::WindowSpec;
783+ vtable?for?miral::WindowManagementPolicyAddendum2;
784+ vtable?for?miral::toolkit::Window;
785+ vtable?for?miral::toolkit::WindowId;
786+ vtable?for?miral::toolkit::WindowSpec;
787+ };
788+} MIRAL_1.3.1;
789+
790+MIRAL_1.5.0 {
791+global:
792+ extern "C++" {'''
793+
794+END_NEW_STANZA = ''' };
795+} MIRAL_1.4.0;'''
796+
797+def _print_report():
798+ print(OLD_STANZAS)
799+ for symbol in sorted(SYMBOLS['public']):
800+ formatted_symbol = ' {};'.format(symbol)
801+ if formatted_symbol not in OLD_STANZAS and 'miral::' in formatted_symbol:
802+ print(formatted_symbol)
803+ print(END_NEW_STANZA)
804+
805+def _print_debug_info(node, attributes):
806+ if not DEBUG:
807+ return
808+ print()
809+ _print_attribs(node, attributes)
810+ _print_location(node)
811+
812+def _parse_member_def(context_name, node, is_class):
813+ kind = node.attributes['kind'].value
814+
815+ if (kind in ['enum', 'typedef']
816+ or _has_element(node, ['templateparamlist'])
817+ or kind in ['function'] and node.attributes['inline'].value == 'yes'):
818+ return
819+
820+ name = _concat_text_from_tags(node, ['name'])
821+
822+ if name in ['__attribute__']:
823+ if DEBUG:
824+ print(' ignoring doxygen mis-parsing:', _concat_text_from_tags(node, ['argsstring']))
825+ return
826+
827+ if name.startswith('operator'):
828+ name = 'operator'
829+
830+ if not context_name is None:
831+ symbol = context_name + '::' + name
832+ else:
833+ symbol = name
834+
835+ is_function = kind == 'function'
836+
837+ if is_function:
838+ _print_debug_info(node, ['kind', 'prot', 'static', 'virt'])
839+ else:
840+ _print_debug_info(node, ['kind', 'prot', 'static'])
841+
842+ if DEBUG:
843+ print(' is_class:', is_class)
844+
845+ publish = _should_publish(is_class, is_function, node)
846+
847+ _report(publish, symbol + '*')
848+
849+ if is_function and node.attributes['virt'].value == 'virtual':
850+ _report(publish, 'non-virtual?thunk?to?' + symbol + '*')
851+
852+
853+def _should_publish(is_class, is_function, node):
854+ (kind, static, prot) = _get_attribs(node)
855+
856+ publish = True
857+
858+ if publish:
859+ publish = kind != 'define'
860+
861+ if publish and is_class:
862+ publish = is_function or static == 'yes'
863+
864+ if publish and prot == 'private':
865+ if is_function:
866+ publish = node.attributes['virt'].value == 'virtual'
867+ else:
868+ publish = False
869+
870+ if publish and _has_element(node, ['argsstring']):
871+ publish = not _get_text_for_element(node, 'argsstring').endswith('=0')
872+
873+ return publish
874+
875+
876+def _parse_compound_defs(xmldoc):
877+ compounddefs = xmldoc.getElementsByTagName('compounddef')
878+ for node in compounddefs:
879+ kind = node.attributes['kind'].value
880+
881+ if kind in ['page', 'file', 'example', 'union']:
882+ continue
883+
884+ if kind in ['group']:
885+ for member in node.getElementsByTagName('memberdef'):
886+ _parse_member_def(None, member, False)
887+ continue
888+
889+ if kind in ['namespace']:
890+ symbol = _concat_text_from_tags(node, ['compoundname'])
891+ for member in node.getElementsByTagName('memberdef'):
892+ _parse_member_def(symbol, member, False)
893+ continue
894+
895+ filename = _get_file_location(node)
896+
897+ if DEBUG:
898+ print(' from file:', filename)
899+
900+ if ('/examples/' in filename or '/test/' in filename or '[generated]' in filename
901+ or '[STL]' in filename or _has_element(node, ['templateparamlist'])):
902+ continue
903+
904+ symbol = _concat_text_from_tags(node, ['compoundname'])
905+
906+ publish = True
907+
908+ if publish:
909+ if kind in ['class', 'struct']:
910+ prot = node.attributes['prot'].value
911+ publish = prot != 'private'
912+ _print_debug_info(node, ['kind', 'prot'])
913+ _report(publish, 'vtable?for?' + symbol)
914+ _report(publish, 'typeinfo?for?' + symbol)
915+
916+ if publish:
917+ for member in node.getElementsByTagName('memberdef'):
918+ _parse_member_def(symbol, member, kind in ['class', 'struct'])
919+
920+if __name__ == "__main__":
921+ if len(argv) == 1 or '-h' in argv or '--help' in argv:
922+ print(HELPTEXT)
923+ exit()
924+
925+ for arg in argv[1:]:
926+ try:
927+ if DEBUG:
928+ print('Processing:', arg)
929+ _parse_compound_defs(minidom.parse(arg))
930+ except Exception as error:
931+ print('Error:', arg, error)
932+
933+ if DEBUG:
934+ print('Processing complete')
935+
936+ _print_report()

Subscribers

People subscribed via source and target branches