Mir

Merge lp:~brandontschaefer/mir/capnproto-assert-structures-align into lp:mir

Proposed by Brandon Schaefer
Status: Work in progress
Proposed branch: lp:~brandontschaefer/mir/capnproto-assert-structures-align
Merge into: lp:mir
Prerequisite: lp:~brandontschaefer/mir/mir-event-capnproto
Diff against target: 98 lines (+83/-0)
2 files modified
src/common/events/CMakeLists.txt (+1/-0)
src/common/events/capnp_enums_aligned_asserts.cpp (+82/-0)
To merge this branch: bzr merge lp:~brandontschaefer/mir/capnproto-assert-structures-align
Reviewer Review Type Date Requested Status
Chris Halse Rogers Approve
Mir CI Bot continuous-integration Needs Fixing
Cemil Azizoglu (community) Approve
Review via email: mp+290764@code.launchpad.net

This proposal supersedes a proposal from 2016-04-01.

Commit message

Assert our capnproto generated structures align with the public C API enums so we can static cast between them.

Capnproto only generates enum classes, so we've to static cast if we want to name our types in capnproto.

Description of the change

Assert our capnproto generated structures align with the public C API enums so we can static cast between them.

Capnproto only generates enum classes, so we've to static cast if we want to name our types in capnproto.

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

FAILED: Continuous integration, rev:3415
https://mir-jenkins.ubuntu.com/job/mir-ci/737/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/706/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/743
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/734
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/734
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/715/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/715
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/715/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/715/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/715/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/715
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/715/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
3416. By Brandon Schaefer

* Merge parent

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

FAILED: Continuous integration, rev:3416
https://mir-jenkins.ubuntu.com/job/mir-ci/746/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/720/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/757
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/748
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/748
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/729/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/729
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/729/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/729/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/729/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/729
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/729/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Cemil Azizoglu (cemil-azizoglu) wrote :

ok

review: Approve
3417. By Brandon Schaefer

* Merge parent

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

* Switch from MotionEventSet to MotionSetEvent

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

FAILED: Continuous integration, rev:3418
https://mir-jenkins.ubuntu.com/job/mir-ci/775/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/765/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/802
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/793
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/793
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/774/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/774
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/774/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/774/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/774/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/774
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/774/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Chris Halse Rogers (raof) wrote :

Sure

review: Approve

Unmerged revisions

3418. By Brandon Schaefer

* Switch from MotionEventSet to MotionSetEvent

3417. By Brandon Schaefer

* Merge parent

3416. By Brandon Schaefer

* Merge parent

3415. By Brandon Schaefer

* Assert out capnproto enums are aligned with the C API

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/common/events/CMakeLists.txt'
--- src/common/events/CMakeLists.txt 2016-04-06 19:10:13 +0000
+++ src/common/events/CMakeLists.txt 2016-04-06 19:10:13 +0000
@@ -15,6 +15,7 @@
15# Authored by: Brandon Schaefer <brandon.schaefer@canonical.com>15# Authored by: Brandon Schaefer <brandon.schaefer@canonical.com>
1616
17set(EVENT_SOURCES17set(EVENT_SOURCES
18 capnp_enums_aligned_asserts.cpp
18 close_surface_event.cpp19 close_surface_event.cpp
19 event.cpp20 event.cpp
20 input_configuration_event.cpp21 input_configuration_event.cpp
2122
=== added file 'src/common/events/capnp_enums_aligned_asserts.cpp'
--- src/common/events/capnp_enums_aligned_asserts.cpp 1970-01-01 00:00:00 +0000
+++ src/common/events/capnp_enums_aligned_asserts.cpp 2016-04-06 19:10:13 +0000
@@ -0,0 +1,82 @@
1/*
2 * Copyright © 2016 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License version 3,
6 * as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Brandon Schaefer <brandon.schaefer@canonical.com>
17 */
18
19#include "mir/events/event_private.h"
20#include "mir_event.capnp.h"
21
22namespace mcap = mir::capnp;
23
24/* Static asserts that our capnp enums are equal to the c api enums.
25 This way we can tell on compile time if any of the enums are incorrect.
26*/
27namespace
28{
29static_assert(static_cast<MirKeyboardAction>(mcap::KeyboardEvent::Action::UP) ==
30 mir_keyboard_action_up, "");
31static_assert(static_cast<MirKeyboardAction>(mcap::KeyboardEvent::Action::DOWN) ==
32 mir_keyboard_action_down, "");
33static_assert(static_cast<MirKeyboardAction>(mcap::KeyboardEvent::Action::REPEAT) ==
34 mir_keyboard_action_repeat, "");
35
36static_assert(static_cast<MirTouchTooltype>(mcap::MotionSetEvent::Motion::ToolType::UNKNOWN) ==
37 mir_touch_tooltype_unknown, "");
38static_assert(static_cast<MirTouchTooltype>(mcap::MotionSetEvent::Motion::ToolType::FINGER) ==
39 mir_touch_tooltype_finger, "");
40static_assert(static_cast<MirTouchTooltype>(mcap::MotionSetEvent::Motion::ToolType::STYLUS) ==
41 mir_touch_tooltype_stylus, "");
42
43static_assert(static_cast<MirInputConfigurationAction>(mcap::InputConfigurationEvent::Action::CONFIGURATION_CHANGED) ==
44 mir_input_configuration_action_configuration_changed, "");
45static_assert(static_cast<MirInputConfigurationAction>(mcap::InputConfigurationEvent::Action::DEVICE_RESET) ==
46 mir_input_configuration_action_device_reset, "");
47
48static_assert(static_cast<MirSurfaceAttrib>(mcap::SurfaceEvent::Attrib::TYPE) ==
49 mir_surface_attrib_type, "");
50static_assert(static_cast<MirSurfaceAttrib>(mcap::SurfaceEvent::Attrib::STATE) ==
51 mir_surface_attrib_state, "");
52static_assert(static_cast<MirSurfaceAttrib>(mcap::SurfaceEvent::Attrib::SWAP_INTERVAL) ==
53 mir_surface_attrib_swapinterval, "");
54static_assert(static_cast<MirSurfaceAttrib>(mcap::SurfaceEvent::Attrib::FOCUS) ==
55 mir_surface_attrib_focus, "");
56static_assert(static_cast<MirSurfaceAttrib>(mcap::SurfaceEvent::Attrib::DPI) ==
57 mir_surface_attrib_dpi, "");
58static_assert(static_cast<MirSurfaceAttrib>(mcap::SurfaceEvent::Attrib::VISIBILITY) ==
59 mir_surface_attrib_visibility, "");
60static_assert(static_cast<MirSurfaceAttrib>(mcap::SurfaceEvent::Attrib::PREFERRED_ORIENTATION) ==
61 mir_surface_attrib_preferred_orientation, "");
62
63static_assert(static_cast<MirPromptSessionState>(mcap::PromptSessionEvent::State::STOPPED) ==
64 mir_prompt_session_state_stopped, "");
65static_assert(static_cast<MirPromptSessionState>(mcap::PromptSessionEvent::State::STARTED) ==
66 mir_prompt_session_state_started, "");
67static_assert(static_cast<MirPromptSessionState>(mcap::PromptSessionEvent::State::SUSPENDED) ==
68 mir_prompt_session_state_suspended, "");
69
70static_assert(static_cast<MirFormFactor>(mcap::SurfaceOutputEvent::FormFactor::UNKNOWN) ==
71 mir_form_factor_unknown, "");
72static_assert(static_cast<MirFormFactor>(mcap::SurfaceOutputEvent::FormFactor::PHONE) ==
73 mir_form_factor_phone, "");
74static_assert(static_cast<MirFormFactor>(mcap::SurfaceOutputEvent::FormFactor::TABLET) ==
75 mir_form_factor_tablet, "");
76static_assert(static_cast<MirFormFactor>(mcap::SurfaceOutputEvent::FormFactor::MONITOR) ==
77 mir_form_factor_monitor, "");
78static_assert(static_cast<MirFormFactor>(mcap::SurfaceOutputEvent::FormFactor::TV) ==
79 mir_form_factor_tv, "");
80static_assert(static_cast<MirFormFactor>(mcap::SurfaceOutputEvent::FormFactor::PROJECTOR) ==
81 mir_form_factor_projector, "");
82}

Subscribers

People subscribed via source and target branches