Mir

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

Proposed by Alan Griffiths
Status: Merged
Approved by: Gerry Boland
Approved revision: no longer in the source branch.
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 Approve
Gerry Boland (community) Approve
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.
Revision history for this message
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)
Revision history for this message
Gerry Boland (gerboland) wrote : Posted in a previous version of this proposal

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

review: Needs Information
Revision history for this message
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.

Revision history for this message
Gerry Boland (gerboland) wrote : Posted in a previous version of this proposal

Seems ok

review: Approve
Revision history for this message
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)
Revision history for this message
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)
Revision history for this message
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)
Revision history for this message
Gerry Boland (gerboland) :
review: Approve
Revision history for this message
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
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2017-08-22 16:55:23 +0000
+++ CMakeLists.txt 2017-08-31 07:58:47 +0000
@@ -53,6 +53,7 @@
53include (cmake/EnableCoverageReport.cmake)53include (cmake/EnableCoverageReport.cmake)
54include (cmake/MirCommon.cmake)54include (cmake/MirCommon.cmake)
55include (GNUInstallDirs)55include (GNUInstallDirs)
56include (cmake/Doxygen.cmake)
5657
57set(build_types "None;Debug;Release;RelWithDebInfo;MinSizeRel;Coverage;AddressSanitizer;ThreadSanitizer;UBSanitizer")58set(build_types "None;Debug;Release;RelWithDebInfo;MinSizeRel;Coverage;AddressSanitizer;ThreadSanitizer;UBSanitizer")
58# Change informational string for CMAKE_BUILD_TYPE59# Change informational string for CMAKE_BUILD_TYPE
@@ -300,7 +301,6 @@
300endif ()301endif ()
301302
302enable_coverage_report(mirserver)303enable_coverage_report(mirserver)
303include (cmake/Doxygen.cmake)
304include (cmake/ABICheck.cmake)304include (cmake/ABICheck.cmake)
305305
306add_custom_target(ptest306add_custom_target(ptest
307307
=== modified file 'doc/Doxyfile.in'
--- doc/Doxyfile.in 2017-05-08 03:04:26 +0000
+++ doc/Doxyfile.in 2017-08-31 07:58:47 +0000
@@ -875,7 +875,8 @@
875# Note that the wildcards are matched against the file with absolute path, so to875# Note that the wildcards are matched against the file with absolute path, so to
876# exclude all test directories for example use the pattern */test/*876# exclude all test directories for example use the pattern */test/*
877877
878EXCLUDE_PATTERNS = */include/test/*878EXCLUDE_PATTERNS = *.capnp.c++ \
879 */examples/multi_stream.cpp
879880
880# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names881# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
881# (namespaces, classes, functions, etc.) that should be excluded from the882# (namespaces, classes, functions, etc.) that should be excluded from the
882883
=== modified file 'examples/basic.c'
--- examples/basic.c 2017-07-28 17:00:43 +0000
+++ examples/basic.c 2017-08-31 07:58:47 +0000
@@ -41,16 +41,12 @@
41/// \snippet basic.c surface_release_tag41/// \snippet basic.c surface_release_tag
42///\subsection connection_release We release our connection42///\subsection connection_release We release our connection
43/// \snippet basic.c connection_release_tag43/// \snippet basic.c connection_release_tag
44///\subsection get the raw, platform-specific buffer handle for the current buffer44///\subsection get graphics region for the current buffer
45/// \snippet basic.c get_current_buffer_tag45/// \snippet basic.c get_graphics_region_tag
46/// \example basic.c A simple mir client46/// \example basic.c A simple mir client
47///\section MirDemoState MirDemoState47///\section MirDemoState MirDemoState
48/// The handles needs to be accessible both to callbacks and to the control function.48/// The handles needs to be accessible both to callbacks and to the control function.
49/// \snippet basic.c MirDemoState_tag49/// \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
5450
55///\internal [MirDemoState_tag]51///\internal [MirDemoState_tag]
56// Utility structure for the state of a single surface session.52// Utility structure for the state of a single surface session.
@@ -143,11 +139,12 @@
143 {139 {
144 // We can query the current graphics buffer attributes140 // We can query the current graphics buffer attributes
145 {141 {
142 ///\internal [get_graphics_region_tag]
146 MirGraphicsRegion graphics_region;143 MirGraphicsRegion graphics_region;
147 mir_buffer_stream_get_graphics_region(bs, &graphics_region);144 mir_buffer_stream_get_graphics_region(bs, &graphics_region);
148145
149 ///\internal [get_current_buffer_tag]146 ///\internal [get_graphics_region_tag]
150 // In a real application we'd render into the current buffer147 // In a real application we'd render into the graphics_region
151 }148 }
152149
153 ///\internal [swap_buffers_tag]150 ///\internal [swap_buffers_tag]
154151
=== modified file 'include/client/mir_toolkit/mir_buffer.h'
--- include/client/mir_toolkit/mir_buffer.h 2017-07-28 17:00:43 +0000
+++ include/client/mir_toolkit/mir_buffer.h 2017-08-31 07:58:47 +0000
@@ -40,6 +40,7 @@
40 * \param [in] connection The connection40 * \param [in] connection The connection
41 * \param [in] width Requested buffer width41 * \param [in] width Requested buffer width
42 * \param [in] height Requested buffer height42 * \param [in] height Requested buffer height
43 * \param [in] format Requested buffer pixel format
43 * \param [in] available_callback The callback called when the buffer44 * \param [in] available_callback The callback called when the buffer
44 * is available45 * is available
45 * \param [in] available_context The context for the available_callback46 * \param [in] available_context The context for the available_callback
@@ -55,6 +56,7 @@
55 * \param [in] connection The connection56 * \param [in] connection The connection
56 * \param [in] width Requested buffer width57 * \param [in] width Requested buffer width
57 * \param [in] height Requested buffer height58 * \param [in] height Requested buffer height
59 * \param [in] format Requested buffer pixel format
58 * \return The buffer60 * \return The buffer
59 **/61 **/
60MirBuffer* mir_connection_allocate_buffer_sync(62MirBuffer* mir_connection_allocate_buffer_sync(
6163
=== modified file 'include/client/mir_toolkit/mir_display_configuration.h'
--- include/client/mir_toolkit/mir_display_configuration.h 2017-07-28 17:00:43 +0000
+++ include/client/mir_toolkit/mir_display_configuration.h 2017-08-31 07:58:47 +0000
@@ -539,7 +539,7 @@
539 * \param [in] output The MirOutput to query539 * \param [in] output The MirOutput to query
540 * \returns true if gamma is supported on the hardware, otherwise not supported540 * \returns true if gamma is supported on the hardware, otherwise not supported
541 */541 */
542bool mir_output_is_gamma_supported(MirOutput const* client_output);542bool mir_output_is_gamma_supported(MirOutput const* output);
543543
544/** Gets the gamma size544/** Gets the gamma size
545 *545 *
@@ -547,7 +547,7 @@
547 * \returns The size of the gamma ramp LUT547 * \returns The size of the gamma ramp LUT
548 *548 *
549 */549 */
550uint32_t mir_output_get_gamma_size(MirOutput const* client_output);550uint32_t mir_output_get_gamma_size(MirOutput const* output);
551551
552/** Get the gamma ramp of a display552/** Get the gamma ramp of a display
553 *553 *
@@ -559,7 +559,7 @@
559 * \param [out] blue The blue gamma ramp559 * \param [out] blue The blue gamma ramp
560 * \param [in] size The size of the gamma ramp560 * \param [in] size The size of the gamma ramp
561 */561 */
562void mir_output_get_gamma(MirOutput const* client_output,562void mir_output_get_gamma(MirOutput const* output,
563 uint16_t* red,563 uint16_t* red,
564 uint16_t* green,564 uint16_t* green,
565 uint16_t* blue,565 uint16_t* blue,
@@ -573,7 +573,7 @@
573 * \param [in] blue The blue gamma ramp573 * \param [in] blue The blue gamma ramp
574 * \param [in] size The size of the gamma ramp574 * \param [in] size The size of the gamma ramp
575 */575 */
576void mir_output_set_gamma(MirOutput* client_output,576void mir_output_set_gamma(MirOutput* output,
577 uint16_t const* red,577 uint16_t const* red,
578 uint16_t const* green,578 uint16_t const* green,
579 uint16_t const* blue,579 uint16_t const* blue,
580580
=== modified file 'include/client/mir_toolkit/mir_input_device.h'
--- include/client/mir_toolkit/mir_input_device.h 2017-07-28 17:00:43 +0000
+++ include/client/mir_toolkit/mir_input_device.h 2017-08-31 07:58:47 +0000
@@ -235,7 +235,7 @@
235 * Set the options of the keymap as a null terminated string.235 * Set the options of the keymap as a null terminated string.
236 *236 *
237 * \param [in] conf The keyboard config237 * \param [in] conf The keyboard config
238 * \param [in] layout The keymap options238 * \param [in] options The keymap options
239 */239 */
240void mir_keyboard_config_set_keymap_options(240void mir_keyboard_config_set_keymap_options(
241 MirKeyboardConfig* conf, char const* options);241 MirKeyboardConfig* conf, char const* options);
@@ -244,7 +244,7 @@
244 * Set the variant of the keymap as a null terminated string.244 * Set the variant of the keymap as a null terminated string.
245 *245 *
246 * \param [in] conf The keyboard config246 * \param [in] conf The keyboard config
247 * \param [in] layout The keymap variant247 * \param [in] variant The keymap variant
248 */248 */
249void mir_keyboard_config_set_keymap_variant(249void mir_keyboard_config_set_keymap_variant(
250 MirKeyboardConfig* conf, char const* variant);250 MirKeyboardConfig* conf, char const* variant);
@@ -549,7 +549,7 @@
549 * Configure whether middle mouse button emulation should be enabled549 * Configure whether middle mouse button emulation should be enabled
550 *550 *
551 * \param [in] conf The touchpad config551 * \param [in] conf The touchpad config
552 * \param [in] middle_mouse_button_emulation552 * \param [in] middle_emulation
553 */553 */
554void mir_touchpad_config_set_middle_mouse_button_emulation(554void mir_touchpad_config_set_middle_mouse_button_emulation(
555 MirTouchpadConfig* conf, bool middle_emulation);555 MirTouchpadConfig* conf, bool middle_emulation);
556556
=== modified file 'include/client/mir_toolkit/mir_window.h'
--- include/client/mir_toolkit/mir_window.h 2017-07-28 17:00:43 +0000
+++ include/client/mir_toolkit/mir_window.h 2017-08-31 07:58:47 +0000
@@ -506,7 +506,7 @@
506 * \param [in] spec the spec to update506 * \param [in] spec the spec to update
507 * \param [in] rect the destination rectangle to align with507 * \param [in] rect the destination rectangle to align with
508 * \param [in] rect_gravity the point on \p rect to align with508 * \param [in] rect_gravity the point on \p rect to align with
509 * \param [in] surface_gravity the point on the window to align with509 * \param [in] window_gravity the point on the window to align with
510 * \param [in] placement_hints positioning hints to use when limited on space510 * \param [in] placement_hints positioning hints to use when limited on space
511 * \param [in] offset_dx horizontal offset to shift w.r.t. \p rect511 * \param [in] offset_dx horizontal offset to shift w.r.t. \p rect
512 * \param [in] offset_dy vertical offset to shift w.r.t. \p rect512 * \param [in] offset_dy vertical offset to shift w.r.t. \p rect
513513
=== modified file 'include/client/mir_toolkit/rs/mir_render_surface.h'
--- include/client/mir_toolkit/rs/mir_render_surface.h 2017-07-28 17:00:43 +0000
+++ include/client/mir_toolkit/rs/mir_render_surface.h 2017-08-31 07:58:47 +0000
@@ -53,7 +53,7 @@
53 * \param [in] connection A valid connection53 * \param [in] connection A valid connection
54 * \param [in] width The width in pixels54 * \param [in] width The width in pixels
55 * \param [in] height The height in pixels55 * \param [in] height The height in pixels
56 * \param [in] MirRenderSurfaceCallback Callback to be invoked when the request completes.56 * \param [in] callback Callback to be invoked when the request completes.
57 * The callback is guaranteed to be called and called57 * The callback is guaranteed to be called and called
58 * with a non-null MirRenderSurface*, but the render58 * with a non-null MirRenderSurface*, but the render
59 * surface may be invalid in case of error.59 * surface may be invalid in case of error.
6060
=== modified file 'include/miral/miral/command_line_option.h'
--- include/miral/miral/command_line_option.h 2017-08-21 14:18:55 +0000
+++ include/miral/miral/command_line_option.h 2017-08-31 07:58:47 +0000
@@ -103,6 +103,11 @@
103 std::shared_ptr<Self> self;103 std::shared_ptr<Self> self;
104};104};
105105
106/**
107 * Update the option to be called back *before* Mir initialization starts
108 *
109 * \param clo the option
110 */
106auto pre_init(CommandLineOption const& clo) -> CommandLineOption;111auto pre_init(CommandLineOption const& clo) -> CommandLineOption;
107}112}
108113
109114
=== modified file 'include/miral/miral/window_management_policy_addendum3.h'
--- include/miral/miral/window_management_policy_addendum3.h 2017-08-21 14:18:55 +0000
+++ include/miral/miral/window_management_policy_addendum3.h 2017-08-31 07:58:47 +0000
@@ -46,6 +46,7 @@
46 * vertically maximized windows to allow adjustment for decorations.46 * vertically maximized windows to allow adjustment for decorations.
47 *47 *
48 * @param window_info the window48 * @param window_info the window
49 * @param new_state the new state
49 * @param new_placement the suggested placement50 * @param new_placement the suggested placement
50 *51 *
51 * @return the confirmed placement of the window52 * @return the confirmed placement of the window
5253
=== modified file 'include/platform/mir/graphics/platform.h'
--- include/platform/mir/graphics/platform.h 2017-07-28 17:00:43 +0000
+++ include/platform/mir/graphics/platform.h 2017-08-31 07:58:47 +0000
@@ -210,6 +210,7 @@
210 * \param [in] options options to use for this platform210 * \param [in] options options to use for this platform
211 * \param [in] emergency_cleanup_registry object to register emergency shutdown handlers with211 * \param [in] emergency_cleanup_registry object to register emergency shutdown handlers with
212 * \param [in] report the object to use to report interesting events from the display subsystem212 * \param [in] report the object to use to report interesting events from the display subsystem
213 * \param [in] logger the object to use to log interesting events from the display subsystem
213 *214 *
214 * This factory function needs to be implemented by each platform.215 * This factory function needs to be implemented by each platform.
215 *216 *
216217
=== modified file 'include/server/mir/graphics/display_configuration_observer.h'
--- include/server/mir/graphics/display_configuration_observer.h 2017-07-28 17:00:43 +0000
+++ include/server/mir/graphics/display_configuration_observer.h 2017-08-31 07:58:47 +0000
@@ -57,7 +57,7 @@
57 /**57 /**
58 * Notification after updating base display configuration.58 * Notification after updating base display configuration.
59 *59 *
60 * \param [in] config The configuration that has just been updated.60 * \param [in] base_config The configuration that has just been updated.
61 */61 */
62 virtual void base_configuration_updated(std::shared_ptr<DisplayConfiguration const> const& base_config) = 0;62 virtual void base_configuration_updated(std::shared_ptr<DisplayConfiguration const> const& base_config) = 0;
6363
6464
=== modified file 'include/test/mir_test_framework/main.h'
--- include/test/mir_test_framework/main.h 2017-07-28 17:00:43 +0000
+++ include/test/mir_test_framework/main.h 2017-08-31 07:58:47 +0000
@@ -23,11 +23,11 @@
23{23{
24/**24/**
25 * Initialize and run the mir test framework as follows:25 * Initialize and run the mir test framework as follows:
26 *26 * \code
27 * ::testing::InitGoogleTest(&argc, argv);27 * ::testing::InitGoogleTest(&argc, argv);
28 * set_commandline(argc, argv);28 * set_commandline(argc, argv);
29 * return RUN_ALL_TESTS();29 * return RUN_ALL_TESTS();
30 *30 * \endcode
31 * \attention If you override main() for your own purposes call this or do31 * \attention If you override main() for your own purposes call this or do
32 * something equivalent to run the tests.32 * something equivalent to run the tests.
33 */33 */
3434
=== modified file 'src/miral/CMakeLists.txt'
--- src/miral/CMakeLists.txt 2017-08-29 09:17:03 +0000
+++ src/miral/CMakeLists.txt 2017-08-31 07:58:47 +0000
@@ -134,6 +134,12 @@
134 ${miral_include}/miral/version.h134 ${miral_include}/miral/version.h
135)135)
136136
137if(TARGET doc)
138 add_custom_target(regenerate-miral-symbols-map
139 ${CMAKE_CURRENT_SOURCE_DIR}/process_doxygen_xml.py ${CMAKE_BINARY_DIR}/doc/xml/*.xml > ${symbol_map}
140 DEPENDS doc)
141endif()
142
137install(TARGETS miral LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}")143install(TARGETS miral LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}")
138install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/miral DESTINATION "${INCLUDEDIR}")144install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/miral DESTINATION "${INCLUDEDIR}")
139install(FILES ${CMAKE_CURRENT_BINARY_DIR}/miral.pc145install(FILES ${CMAKE_CURRENT_BINARY_DIR}/miral.pc
140146
=== added file 'src/miral/process_doxygen_xml.py'
--- src/miral/process_doxygen_xml.py 1970-01-01 00:00:00 +0000
+++ src/miral/process_doxygen_xml.py 2017-08-31 07:58:47 +0000
@@ -0,0 +1,655 @@
1#! /usr/bin/python
2"""This script processes the XML generated by "make doc" and produces summary information
3on symbols that libmiral intends to make public.
4
5To use: Go to your build folder and run "make regenerate-miral-symbols"""""
6
7from xml.dom import minidom
8from sys import argv
9
10HELPTEXT = __doc__
11DEBUG = False
12
13def _get_text(node):
14 substrings = []
15 for node in node.childNodes:
16 if node.nodeType == node.TEXT_NODE:
17 substrings.append(node.data)
18 elif node.nodeType == node.ELEMENT_NODE:
19 substrings.append(_get_text(node))
20 return ''.join(substrings)
21
22def _get_text_for_element(parent, tagname):
23 substrings = []
24
25 for node in parent.getElementsByTagName(tagname):
26 substrings.append(_get_text(node))
27
28 return ''.join(substrings)
29
30def _get_file_location(node):
31 for node in node.childNodes:
32 if node.nodeType == node.ELEMENT_NODE and node.tagName == 'location':
33 return node.attributes['file'].value
34 if DEBUG:
35 print('no location in:', node)
36 return None
37
38def _has_element(node, tagname):
39 for node in node.childNodes:
40 if node.nodeType == node.ELEMENT_NODE and node.tagName in tagname:
41 return True
42 return False
43
44def _print_attribs(node, attribs):
45 for attrib in attribs:
46 print(' ', attrib, '=', node.attributes[attrib].value)
47
48def _concat_text_from_tags(parent, tagnames):
49 substrings = []
50
51 for tag in tagnames:
52 substrings.append(_get_text_for_element(parent, tag))
53
54 return ''.join(substrings)
55
56def _print_location(node):
57 print(' ', 'location', '=', _get_file_location(node))
58
59def _get_attribs(node):
60 kind = node.attributes['kind'].value
61 static = node.attributes['static'].value
62 prot = node.attributes['prot'].value
63 return kind, static, prot
64
65COMPONENT_MAP = {}
66SYMBOLS = {'public' : set(), 'private' : set()}
67
68def _report(publish, symbol):
69 symbol = symbol.replace('~', '?')
70
71 if publish:
72 SYMBOLS['public'].add(symbol)
73 else:
74 SYMBOLS['private'].add(symbol)
75
76 if not DEBUG:
77 return
78
79 if publish:
80 print(' PUBLISH: {}'.format(symbol))
81 else:
82 print('NOPUBLISH: {}'.format(symbol))
83
84OLD_STANZAS = '''MIRAL_1.0 {
85global:
86 extern "C++" {
87 miral::ActiveOutputsListener::?ActiveOutputsListener*;
88 miral::ActiveOutputsListener::ActiveOutputsListener*;
89 miral::ActiveOutputsListener::advise_output_begin*;
90 miral::ActiveOutputsListener::advise_output_create*;
91 miral::ActiveOutputsListener::advise_output_delete*;
92 miral::ActiveOutputsListener::advise_output_end*;
93 miral::ActiveOutputsListener::advise_output_update*;
94 miral::ActiveOutputsListener::operator*;
95 miral::ActiveOutputsMonitor::?ActiveOutputsMonitor*;
96 miral::ActiveOutputsMonitor::ActiveOutputsMonitor*;
97 miral::ActiveOutputsMonitor::add_listener*;
98 miral::ActiveOutputsMonitor::delete_listener*;
99 miral::ActiveOutputsMonitor::operator*;
100 miral::ActiveOutputsMonitor::process_outputs*;
101 miral::AddInitCallback::?AddInitCallback*;
102 miral::AddInitCallback::AddInitCallback*;
103 miral::AddInitCallback::operator*;
104 miral::AppendEventFilter::AppendEventFilter*;
105 miral::AppendEventFilter::operator*;
106 miral::ApplicationAuthorizer::?ApplicationAuthorizer*;
107 miral::ApplicationAuthorizer::ApplicationAuthorizer*;
108 miral::ApplicationAuthorizer::operator*;
109 miral::ApplicationCredentials::ApplicationCredentials*;
110 miral::ApplicationCredentials::gid*;
111 miral::ApplicationCredentials::pid*;
112 miral::ApplicationCredentials::uid*;
113 miral::ApplicationInfo::?ApplicationInfo*;
114 miral::ApplicationInfo::ApplicationInfo*;
115 miral::ApplicationInfo::add_window*;
116 miral::ApplicationInfo::application*;
117 miral::ApplicationInfo::name*;
118 miral::ApplicationInfo::operator*;
119 miral::ApplicationInfo::remove_window*;
120 miral::ApplicationInfo::userdata*;
121 miral::ApplicationInfo::windows*;
122 miral::BasicSetApplicationAuthorizer::?BasicSetApplicationAuthorizer*;
123 miral::BasicSetApplicationAuthorizer::BasicSetApplicationAuthorizer*;
124 miral::BasicSetApplicationAuthorizer::operator*;
125 miral::BasicSetApplicationAuthorizer::the_application_authorizer*;
126 miral::CanonicalWindowManagerPolicy::CanonicalWindowManagerPolicy*;
127 miral::CanonicalWindowManagerPolicy::advise_focus_gained*;
128 miral::CanonicalWindowManagerPolicy::confirm_inherited_move*;
129 miral::CanonicalWindowManagerPolicy::handle_modify_window*;
130 miral::CanonicalWindowManagerPolicy::handle_raise_window*;
131 miral::CanonicalWindowManagerPolicy::handle_window_ready*;
132 miral::CanonicalWindowManagerPolicy::place_new_surface*;
133 miral::CommandLineOption::?CommandLineOption*;
134 miral::CommandLineOption::CommandLineOption*;
135 miral::CommandLineOption::operator*;
136 miral::CursorTheme::?CursorTheme*;
137 miral::CursorTheme::CursorTheme*;
138 miral::CursorTheme::operator*;
139 miral::DebugExtension::DebugExtension*;
140 miral::DebugExtension::disable*;
141 miral::DebugExtension::enable*;
142 miral::DebugExtension::operator*;
143 miral::InternalClientLauncher::?InternalClientLauncher*;
144 miral::InternalClientLauncher::InternalClientLauncher*;
145 miral::InternalClientLauncher::operator*;
146 miral::Keymap::?Keymap*;
147 miral::Keymap::Keymap*;
148 miral::Keymap::operator*;
149 miral::Keymap::set_keymap*;
150 miral::MirRunner::?MirRunner*;
151 miral::MirRunner::MirRunner*;
152 miral::MirRunner::add_start_callback*;
153 miral::MirRunner::add_stop_callback*;
154 miral::MirRunner::run_with*;
155 miral::MirRunner::set_exception_handler*;
156 miral::MirRunner::stop*;
157 miral::Output::?Output*;
158 miral::Output::Output*;
159 miral::Output::connected*;
160 miral::Output::extents*;
161 miral::Output::form_factor*;
162 miral::Output::is_same_output*;
163 miral::Output::operator*;
164 miral::Output::orientation*;
165 miral::Output::physical_size_mm*;
166 miral::Output::pixel_format*;
167 miral::Output::power_mode*;
168 miral::Output::refresh_rate*;
169 miral::Output::scale*;
170 miral::Output::type*;
171 miral::Output::used*;
172 miral::Output::valid*;
173 miral::SetCommandLineHandler::?SetCommandLineHandler*;
174 miral::SetCommandLineHandler::SetCommandLineHandler*;
175 miral::SetCommandLineHandler::operator*;
176 miral::SetTerminator::?SetTerminator*;
177 miral::SetTerminator::SetTerminator*;
178 miral::SetTerminator::operator*;
179 miral::SetWindowManagmentPolicy::?SetWindowManagmentPolicy*;
180 miral::SetWindowManagmentPolicy::SetWindowManagmentPolicy*;
181 miral::SetWindowManagmentPolicy::operator*;
182 miral::StartupInternalClient::?StartupInternalClient*;
183 miral::StartupInternalClient::operator*;
184 miral::Window::?Window*;
185 miral::Window::Window*;
186 miral::Window::application*;
187 miral::Window::move_to*;
188 miral::Window::operator*;
189 miral::Window::resize*;
190 miral::Window::size*;
191 miral::Window::top_left*;
192 miral::WindowInfo::?WindowInfo*;
193 miral::WindowInfo::WindowInfo*;
194 miral::WindowInfo::add_child*;
195 miral::WindowInfo::can_be_active*;
196 miral::WindowInfo::children*;
197 miral::WindowInfo::confine_pointer*;
198 miral::WindowInfo::constrain_resize*;
199 miral::WindowInfo::has_output_id*;
200 miral::WindowInfo::height_inc*;
201 miral::WindowInfo::is_visible*;
202 miral::WindowInfo::max_aspect*;
203 miral::WindowInfo::max_height*;
204 miral::WindowInfo::max_width*;
205 miral::WindowInfo::min_aspect*;
206 miral::WindowInfo::min_height*;
207 miral::WindowInfo::min_width*;
208 miral::WindowInfo::must_have_parent*;
209 miral::WindowInfo::must_not_have_parent*;
210 miral::WindowInfo::name*;
211 miral::WindowInfo::operator*;
212 miral::WindowInfo::output_id*;
213 miral::WindowInfo::parent*;
214 miral::WindowInfo::preferred_orientation*;
215 miral::WindowInfo::remove_child*;
216 miral::WindowInfo::restore_rect*;
217 miral::WindowInfo::userdata*;
218 miral::WindowInfo::width_inc*;
219 miral::WindowInfo::window*;
220 miral::WindowManagementPolicy::?WindowManagementPolicy*;
221 miral::WindowManagementPolicy::WindowManagementPolicy*;
222 miral::WindowManagementPolicy::advise_begin*;
223 miral::WindowManagementPolicy::advise_delete_app*;
224 miral::WindowManagementPolicy::advise_delete_window*;
225 miral::WindowManagementPolicy::advise_end*;
226 miral::WindowManagementPolicy::advise_focus_gained*;
227 miral::WindowManagementPolicy::advise_focus_lost*;
228 miral::WindowManagementPolicy::advise_move_to*;
229 miral::WindowManagementPolicy::advise_new_app*;
230 miral::WindowManagementPolicy::advise_new_window*;
231 miral::WindowManagementPolicy::advise_raise*;
232 miral::WindowManagementPolicy::advise_resize*;
233 miral::WindowManagementPolicy::operator*;
234 miral::WindowManagerOptions::WindowManagerOptions*;
235 miral::WindowManagerOptions::operator*;
236 miral::WindowManagerTools::?WindowManagerTools*;
237 miral::WindowManagerTools::WindowManagerTools*;
238 miral::WindowManagerTools::active_display*;
239 miral::WindowManagerTools::active_window*;
240 miral::WindowManagerTools::ask_client_to_close*;
241 miral::WindowManagerTools::count_applications*;
242 miral::WindowManagerTools::drag_active_window*;
243 miral::WindowManagerTools::find_application*;
244 miral::WindowManagerTools::focus_next_application*;
245 miral::WindowManagerTools::focus_next_within_application*;
246 miral::WindowManagerTools::for_each_application*;
247 miral::WindowManagerTools::force_close*;
248 miral::WindowManagerTools::id_for_window*;
249 miral::WindowManagerTools::info_for*;
250 miral::WindowManagerTools::info_for_window_id*;
251 miral::WindowManagerTools::invoke_under_lock*;
252 miral::WindowManagerTools::modify_window*;
253 miral::WindowManagerTools::operator*;
254 miral::WindowManagerTools::place_and_size_for_state*;
255 miral::WindowManagerTools::raise_tree*;
256 miral::WindowManagerTools::select_active_window*;
257 miral::WindowManagerTools::window_at*;
258 miral::WindowSpecification::?WindowSpecification*;
259 miral::WindowSpecification::WindowSpecification*;
260 miral::WindowSpecification::aux_rect*;
261 miral::WindowSpecification::aux_rect_placement_gravity*;
262 miral::WindowSpecification::aux_rect_placement_offset*;
263 miral::WindowSpecification::confine_pointer*;
264 miral::WindowSpecification::height_inc*;
265 miral::WindowSpecification::input_mode*;
266 miral::WindowSpecification::input_shape*;
267 miral::WindowSpecification::max_aspect*;
268 miral::WindowSpecification::max_height*;
269 miral::WindowSpecification::max_width*;
270 miral::WindowSpecification::min_aspect*;
271 miral::WindowSpecification::min_height*;
272 miral::WindowSpecification::min_width*;
273 miral::WindowSpecification::name*;
274 miral::WindowSpecification::operator*;
275 miral::WindowSpecification::output_id*;
276 miral::WindowSpecification::parent*;
277 miral::WindowSpecification::placement_hints*;
278 miral::WindowSpecification::preferred_orientation*;
279 miral::WindowSpecification::shell_chrome*;
280 miral::WindowSpecification::size*;
281 miral::WindowSpecification::state*;
282 miral::WindowSpecification::top_left*;
283 miral::WindowSpecification::type*;
284 miral::WindowSpecification::update*;
285 miral::WindowSpecification::userdata*;
286 miral::WindowSpecification::width_inc*;
287 miral::WindowSpecification::window_placement_gravity*;
288 miral::apply_lifecycle_state_to*;
289 miral::display_configuration_options*;
290 miral::equivalent_display_area*;
291 miral::kill*;
292 miral::name_of*;
293 miral::operator*;
294 miral::pid_of*;
295 miral::toolkit::Connection::Connection*;
296 miral::toolkit::Surface::Surface*;
297 non-virtual?thunk?to?miral::ActiveOutputsListener::?ActiveOutputsListener*;
298 non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_begin*;
299 non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_create*;
300 non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_delete*;
301 non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_end*;
302 non-virtual?thunk?to?miral::ActiveOutputsListener::advise_output_update*;
303 non-virtual?thunk?to?miral::ApplicationAuthorizer::?ApplicationAuthorizer*;
304 non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::advise_focus_gained*;
305 non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::confirm_inherited_move*;
306 non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_modify_window*;
307 non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_raise_window*;
308 non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::handle_window_ready*;
309 non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::place_new_surface*;
310 non-virtual?thunk?to?miral::WindowManagementPolicy::?WindowManagementPolicy*;
311 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_begin*;
312 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_delete_app*;
313 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_delete_window*;
314 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_end*;
315 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_focus_gained*;
316 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_focus_lost*;
317 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_move_to*;
318 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_new_app*;
319 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_new_window*;
320 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_raise*;
321 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_resize*;
322 non-virtual?thunk?to?miral::WindowManagementPolicy::advise_state_change*;
323 typeinfo?for?miral::ActiveOutputsListener;
324 typeinfo?for?miral::ActiveOutputsMonitor;
325 typeinfo?for?miral::AddInitCallback;
326 typeinfo?for?miral::AppendEventFilter;
327 typeinfo?for?miral::ApplicationAuthorizer;
328 typeinfo?for?miral::ApplicationCredentials;
329 typeinfo?for?miral::ApplicationInfo;
330 typeinfo?for?miral::BasicSetApplicationAuthorizer;
331 typeinfo?for?miral::CanonicalWindowManagerPolicy;
332 typeinfo?for?miral::CommandLineOption;
333 typeinfo?for?miral::CursorTheme;
334 typeinfo?for?miral::DebugExtension;
335 typeinfo?for?miral::InternalClientLauncher;
336 typeinfo?for?miral::Keymap;
337 typeinfo?for?miral::MirRunner;
338 typeinfo?for?miral::Output;
339 typeinfo?for?miral::Output::PhysicalSizeMM;
340 typeinfo?for?miral::SetCommandLineHandler;
341 typeinfo?for?miral::SetTerminator;
342 typeinfo?for?miral::SetWindowManagmentPolicy;
343 typeinfo?for?miral::StartupInternalClient;
344 typeinfo?for?miral::Window;
345 typeinfo?for?miral::WindowInfo;
346 typeinfo?for?miral::WindowManagementPolicy;
347 typeinfo?for?miral::WindowManagerOption;
348 typeinfo?for?miral::WindowManagerOptions;
349 typeinfo?for?miral::WindowManagerTools;
350 typeinfo?for?miral::WindowSpecification;
351 typeinfo?for?miral::WindowSpecification::AspectRatio;
352 typeinfo?for?miral::toolkit::Connection;
353 typeinfo?for?miral::toolkit::PersistentId;
354 typeinfo?for?miral::toolkit::Surface;
355 typeinfo?for?miral::toolkit::SurfaceSpec;
356 vtable?for?miral::ActiveOutputsListener;
357 vtable?for?miral::ActiveOutputsMonitor;
358 vtable?for?miral::AddInitCallback;
359 vtable?for?miral::AppendEventFilter;
360 vtable?for?miral::ApplicationAuthorizer;
361 vtable?for?miral::ApplicationCredentials;
362 vtable?for?miral::ApplicationInfo;
363 vtable?for?miral::BasicSetApplicationAuthorizer;
364 vtable?for?miral::CanonicalWindowManagerPolicy;
365 vtable?for?miral::CommandLineOption;
366 vtable?for?miral::CursorTheme;
367 vtable?for?miral::DebugExtension;
368 vtable?for?miral::InternalClientLauncher;
369 vtable?for?miral::Keymap;
370 vtable?for?miral::MirRunner;
371 vtable?for?miral::Output;
372 vtable?for?miral::Output::PhysicalSizeMM;
373 vtable?for?miral::SetCommandLineHandler;
374 vtable?for?miral::SetTerminator;
375 vtable?for?miral::SetWindowManagmentPolicy;
376 vtable?for?miral::StartupInternalClient;
377 vtable?for?miral::Window;
378 vtable?for?miral::WindowInfo;
379 vtable?for?miral::WindowManagementPolicy;
380 vtable?for?miral::WindowManagerOption;
381 vtable?for?miral::WindowManagerOptions;
382 vtable?for?miral::WindowManagerTools;
383 vtable?for?miral::WindowSpecification;
384 vtable?for?miral::WindowSpecification::AspectRatio;
385 vtable?for?miral::toolkit::Connection;
386 vtable?for?miral::toolkit::PersistentId;
387 vtable?for?miral::toolkit::Surface;
388 vtable?for?miral::toolkit::SurfaceSpec;
389 };
390# miral::WindowInfo::can_morph_to*;
391 _ZNK5miral10WindowInfo12can_morph_toE14MirSurfaceType;
392
393# miral::WindowInfo::needs_titlebar*;
394 _ZN5miral10WindowInfo14needs_titlebarE14MirSurfaceType;
395
396# miral::WindowInfo::state*;
397 _ZNK5miral10WindowInfo5stateEv;
398 _ZN5miral10WindowInfo5stateE15MirSurfaceState;
399
400# miral::WindowInfo::type*;
401 _ZN5miral10WindowInfo4typeE14MirSurfaceType;
402 _ZNK5miral10WindowInfo4typeEv;
403
404# miral::WindowManagementPolicy::advise_state_change*;
405 _ZN5miral22WindowManagementPolicy19advise_state_changeERKNS_10WindowInfoE15MirSurfaceState;
406
407# miral::StartupInternalClient::StartupInternalClient*;
408 _ZN5miral21StartupInternalClientC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvNS_7toolkit10ConnectionEEES7_IFvSt8weak_ptrIN3mir5scene7SessionEEEE;
409# miral::InternalClientLauncher::launch*;
410 _ZNK5miral22InternalClientLauncher6launchERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvNS_7toolkit10ConnectionEEERKS9_IFvSt8weak_ptrIN3mir5scene7SessionEEEE;
411local: *;
412};
413
414MIRAL_1.1 {
415global:
416 # miral::WindowInfo::can_morph_to*
417 _ZNK5miral10WindowInfo12can_morph_toE13MirWindowType;
418
419 #miral::WindowInfo::needs_titlebar*;
420 _ZN5miral10WindowInfo14needs_titlebarE13MirWindowType;
421
422 # miral::WindowInfo::state*;
423 _ZNK5miral10WindowInfo5stateEv;
424 _ZN5miral10WindowInfo5stateE14MirWindowState;
425
426 miral::WindowInfo::type*;
427 _ZN5miral10WindowInfo4typeE13MirWindowType;
428 _ZNK5miral10WindowInfo4typeEv;
429
430 # miral::WindowManagementPolicy::advise_state_change*;
431 _ZN5miral22WindowManagementPolicy19advise_state_changeERKNS_10WindowInfoE14MirWindowState;
432
433 extern "C++" {
434 miral::CanonicalWindowManagerPolicy::place_new_window*;
435 non-virtual?thunk?to?miral::CanonicalWindowManagerPolicy::place_new_window*;
436 };
437} MIRAL_1.0;
438
439MIRAL_1.2 {
440global:
441# miral::InternalClientLauncher::launch*;
442 _ZNK5miral22InternalClientLauncher6launchERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvN3mir6client10ConnectionEEERKS9_IFvSt8weak_ptrINSA_5scene7SessionEEEE;
443
444# miral::StartupInternalClient::StartupInternalClient*;
445 _ZN5miral21StartupInternalClientC?ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvN3mir6client10ConnectionEEES7_IFvSt8weak_ptrINS8_5scene7SessionEEEE;
446 extern "C++" {
447 miral::WindowInfo::shell_chrome*;
448 miral::WindowManagerTools::drag_window*;
449 typeinfo?for?miral::ApplicationAuthorizer1;
450 vtable?for?miral::ApplicationAuthorizer1;
451 };
452} MIRAL_1.1;
453
454MIRAL_1.3 {
455global:
456 extern "C++" {
457 miral::WindowManagerTools::add_tree_to_workspace*;
458 miral::WindowManagerTools::create_workspace*;
459 miral::WindowManagerTools::focus_prev_within_application*;
460 miral::WindowManagerTools::for_each_window_in_workspace*;
461 miral::WindowManagerTools::for_each_workspace_containing*;
462 miral::WindowManagerTools::remove_tree_from_workspace*;
463 miral::WindowManagerTools::move_workspace_content_to_workspace*;
464 miral::WorkspacePolicy::?WorkspacePolicy*;
465 miral::WorkspacePolicy::WorkspacePolicy*;
466 miral::WorkspacePolicy::advise_adding_to_workspace*;
467 miral::WorkspacePolicy::advise_removing_from_workspace*;
468 miral::WorkspacePolicy::operator*;
469 non-virtual?thunk?to?miral::WorkspacePolicy::?WorkspacePolicy*;
470 non-virtual?thunk?to?miral::WorkspacePolicy::advise_adding_to_workspace*;
471 non-virtual?thunk?to?miral::WorkspacePolicy::advise_removing_from_workspace*;
472 typeinfo?for?miral::WorkspacePolicy;
473 vtable?for?miral::WorkspacePolicy;
474 };
475} MIRAL_1.2;
476
477MIRAL_1.3.1 {
478global:
479 extern "C++" {
480 miral::SetWindowManagementPolicy::?SetWindowManagementPolicy*;
481 miral::SetWindowManagementPolicy::SetWindowManagementPolicy*;
482 miral::SetWindowManagementPolicy::operator*;
483 typeinfo?for?miral::SetWindowManagementPolicy;
484 vtable?for?miral::SetWindowManagementPolicy;
485 };
486} MIRAL_1.3;
487
488MIRAL_1.4.0 {
489global:
490 extern "C++" {
491 miral::WindowManagementPolicyAddendum2::?WindowManagementPolicyAddendum2*;
492 miral::WindowManagementPolicyAddendum2::WindowManagementPolicyAddendum2*;
493 miral::WindowManagementPolicyAddendum2::operator*;
494 miral::WindowManagerTools::end_drag_and_drop*;
495 miral::WindowManagerTools::start_drag_and_drop*;
496 miral::toolkit::Window::Window*;
497 non-virtual?thunk?to?miral::WindowManagementPolicyAddendum2::?WindowManagementPolicyAddendum2*;
498 typeinfo?for?miral::WindowManagementPolicyAddendum2;
499 typeinfo?for?miral::toolkit::Window;
500 typeinfo?for?miral::toolkit::WindowId;
501 typeinfo?for?miral::toolkit::WindowSpec;
502 vtable?for?miral::WindowManagementPolicyAddendum2;
503 vtable?for?miral::toolkit::Window;
504 vtable?for?miral::toolkit::WindowId;
505 vtable?for?miral::toolkit::WindowSpec;
506 };
507} MIRAL_1.3.1;
508
509MIRAL_1.5.0 {
510global:
511 extern "C++" {'''
512
513END_NEW_STANZA = ''' };
514} MIRAL_1.4.0;'''
515
516def _print_report():
517 print(OLD_STANZAS)
518 for symbol in sorted(SYMBOLS['public']):
519 formatted_symbol = ' {};'.format(symbol)
520 if formatted_symbol not in OLD_STANZAS and 'miral::' in formatted_symbol:
521 print(formatted_symbol)
522 print(END_NEW_STANZA)
523
524def _print_debug_info(node, attributes):
525 if not DEBUG:
526 return
527 print()
528 _print_attribs(node, attributes)
529 _print_location(node)
530
531def _parse_member_def(context_name, node, is_class):
532 kind = node.attributes['kind'].value
533
534 if (kind in ['enum', 'typedef']
535 or _has_element(node, ['templateparamlist'])
536 or kind in ['function'] and node.attributes['inline'].value == 'yes'):
537 return
538
539 name = _concat_text_from_tags(node, ['name'])
540
541 if name in ['__attribute__']:
542 if DEBUG:
543 print(' ignoring doxygen mis-parsing:', _concat_text_from_tags(node, ['argsstring']))
544 return
545
546 if name.startswith('operator'):
547 name = 'operator'
548
549 if not context_name is None:
550 symbol = context_name + '::' + name
551 else:
552 symbol = name
553
554 is_function = kind == 'function'
555
556 if is_function:
557 _print_debug_info(node, ['kind', 'prot', 'static', 'virt'])
558 else:
559 _print_debug_info(node, ['kind', 'prot', 'static'])
560
561 if DEBUG:
562 print(' is_class:', is_class)
563
564 publish = _should_publish(is_class, is_function, node)
565
566 _report(publish, symbol + '*')
567
568 if is_function and node.attributes['virt'].value == 'virtual':
569 _report(publish, 'non-virtual?thunk?to?' + symbol + '*')
570
571
572def _should_publish(is_class, is_function, node):
573 (kind, static, prot) = _get_attribs(node)
574
575 publish = True
576
577 if publish:
578 publish = kind != 'define'
579
580 if publish and is_class:
581 publish = is_function or static == 'yes'
582
583 if publish and prot == 'private':
584 if is_function:
585 publish = node.attributes['virt'].value == 'virtual'
586 else:
587 publish = False
588
589 if publish and _has_element(node, ['argsstring']):
590 publish = not _get_text_for_element(node, 'argsstring').endswith('=0')
591
592 return publish
593
594
595def _parse_compound_defs(xmldoc):
596 compounddefs = xmldoc.getElementsByTagName('compounddef')
597 for node in compounddefs:
598 kind = node.attributes['kind'].value
599
600 if kind in ['page', 'file', 'example', 'union']:
601 continue
602
603 if kind in ['group']:
604 for member in node.getElementsByTagName('memberdef'):
605 _parse_member_def(None, member, False)
606 continue
607
608 if kind in ['namespace']:
609 symbol = _concat_text_from_tags(node, ['compoundname'])
610 for member in node.getElementsByTagName('memberdef'):
611 _parse_member_def(symbol, member, False)
612 continue
613
614 filename = _get_file_location(node)
615
616 if DEBUG:
617 print(' from file:', filename)
618
619 if ('/examples/' in filename or '/test/' in filename or '[generated]' in filename
620 or '[STL]' in filename or _has_element(node, ['templateparamlist'])):
621 continue
622
623 symbol = _concat_text_from_tags(node, ['compoundname'])
624
625 publish = True
626
627 if publish:
628 if kind in ['class', 'struct']:
629 prot = node.attributes['prot'].value
630 publish = prot != 'private'
631 _print_debug_info(node, ['kind', 'prot'])
632 _report(publish, 'vtable?for?' + symbol)
633 _report(publish, 'typeinfo?for?' + symbol)
634
635 if publish:
636 for member in node.getElementsByTagName('memberdef'):
637 _parse_member_def(symbol, member, kind in ['class', 'struct'])
638
639if __name__ == "__main__":
640 if len(argv) == 1 or '-h' in argv or '--help' in argv:
641 print(HELPTEXT)
642 exit()
643
644 for arg in argv[1:]:
645 try:
646 if DEBUG:
647 print('Processing:', arg)
648 _parse_compound_defs(minidom.parse(arg))
649 except Exception as error:
650 print('Error:', arg, error)
651
652 if DEBUG:
653 print('Processing complete')
654
655 _print_report()

Subscribers

People subscribed via source and target branches