~ci-train-bot/mir/mir-ubuntu-yakkety-landing-036

« back to all changes in this revision

Viewing changes to include/client/mir_toolkit/events/input_device_state_event.h

  • Committer: Bileto Bot
  • Date: 2016-08-15 16:28:40 UTC
  • mfrom: (1160.2357.136 0.24)
  • Revision ID: ci-train-bot@canonical.com-20160815162840-98t95gfrcymlrwpc
* New upstream release 0.24.0 (https://launchpad.net/mir/+milestone/0.24.0)
  - ABI summary:
    . mirclient ABI unchanged at 9
    . mirserver ABI bumped to 41
    . mircommon ABI unchanged at 6
    . mirplatform ABI bumped to 12
    . mirprotobuf ABI unchanged at 3
    . mirplatformgraphics ABI bumped to 10
    . mirclientplatform ABI unchanged at 5
    . mirinputplatform ABI unchanged at 5
  - Enhancements:
    . Added a new tool 'mirvanity' which can use a high speed video camera
      to measure client-to-screen latency.
    . Added (build-time) support for desktop full OpenGL servers (disabled
      by default in favor of GLESv2).
    . Introduced new buffer semantics (NBS) and enabled it by default.
    . Avoided using libmirserver in mir_demo_standalone_render_overlays,
      making bringup traces less cluttered.
    . Removed TilingWindowManager from example servers.
    . Added two new mir_*_performance_test tools that are run as part of
      'mir_performance_tests'.
    . Added pointer confinement to the client API.
    . Added new platform supporting software EGLStreams.
    . Added an input platform that the nested server can use.
    . Allow configuration of the application_not_responding_detector
    . Handle server-side keymapping using XKBMapper.
    . Remove the offscreen display.
    . Add callback option to notify shells that the server is about to stop.
    . Add logging for ANativeWindow events on Android.
  - Bugs fixed:
    . usage of std:call_once in mirclient causes TLS collisions with some
      android devices (LP: #1599867)
    . AltGr not working on external keyboards (LP: #1565236)
    . [regression] unity8 fails to start when built with 0.24 series (lp:mir)
      (LP: #1597717)
    . CI failure in MirSurfaceVisibilityEvent.exposed_received_when_surface_
      raised_over_occluding_surface [called twice - over-saturated and active]
      (LP: #1556045)
    . package-built mir_demo_server does not start on device (LP: #1577357)
    . During surface creation, first stream in spec becomes default stream.
      (LP: #1577967)
    . mouse is getting stuck on a phantom edge (LP: #1580774)
    . [testsfail] in MirSurfaceVisibilityEvent.exposed_received_when_surface_
      raised_over_occluding_surface [never called] (LP: #1581385)
    . [enhancement] Add support for full OpenGL compositing (LP: #1420581)
    . [testsfail] ServerSignal.terminate_handler_is_called_for_SIGINT|SIGTERM
      (LP: #1570353)
    . [testsfail] ClientLatency.triple_buffered_client_has_less_than_two_
      frames_latency (LP: #1576690)
    . [testsfail] NestedServer.when_monitor_plugged_in_client_is_notified_of_
      new_display_configuration (LP: #1576760)
    . mir server crashed in what(): drmModeMoveCursor failed (returned -13)
      (LP: #1579630)
    . mirtest-dev is hard to use as the objects used are compiled with LTO
      (LP: #1583536)
    . [testsfail] ClientLogging.reports_performance [Value of: lag]
      (LP: #1583970)
    . [ FAILED ] ClientLogging.reports_performance (Value of: nbuffers)
      (LP: #1584603)
    . [ FAILED ] ClientLogging.reports_performance (Value of: render)
      (LP: #1584605)
    . ClientCredsTestFixture.session_authorizer_receives_pid_of_connecting_
      clients failure (LP: #1587604)
    . Mir on X11 ignores mir::graphics::GLConfig depth & stencil buffer size
      (LP: #1589632)
    . Need to support pointer confinement (LP: #1590099)
    . [tests] given_nested_server_set_base_display_configuration_when_
      monitor_plugged_in_configuration_is_reset fails (LP: #1591354)
    . CI failure in DemoInProcessServerWithStubClientPlatform.surface_
      creation_does_not_leak_fds (LP: #1598802)
    . Screen is squashed/distorted when rotated in Mir-on-X11 (LP: #1577262)
    . --display-report=log shows some invalid uninitialized EGL attribute
      values (LP: #1582066)
    . mir_demo_client_eglplasma falls back to software rendering on i915
      (Intel Atoms), which explains why it's so slow (LP: #1583532)
    . [regression] x11 platform only draws to a small part of the x11 window
      (LP: #1598267)
    . mir ftbfs in yakkety builders (LP: #1600343)
    . Autolanding keeps failing: mock_egl.h:89:7: error: type 'struct
      MockEGL' violates one definition rule [-Werror=odr] (LP: #1603303)
    . [regression] The Super/Windows key doesn't work any more (LP: #1602966)
    . mir_acceptance_tests.bin: double free or corruption (fasttop)
      (LP: #1603114)
    . ftbfs in linking libmir-test-assist.a in xenial+overlay and
      yakkety+overlay (LP: #1601810)
    . [testsfail] failure in NestedInput.on_input_device_state_nested_*
      (LP: #1602646)  
    . mirtest-dev provides an incorrect .pc file (LP: #1603080)
    . mir_test_framework::server_platform_path(), 
      mir_test_framework::server_platform() don't support use in a downstream
      test built against mir-test-assist (LP: #1603091)
    . Servers based on Mir need a hook to execute code when the server is
      closing (LP: #1593655)
    . Android graphics platform doesn't get packaged for arm64 (LP: #157866)
    . memory leaks in unit tests on android (LP: #1253486)
    . Physical "screen" size reported by the X11 backend is same as pixel
      count, fixing dpi to 25.4 (LP: #1596051)
    . Mir build and test failures with gcc-6 and LTO (LP: #1610215)
    . [regression] Trust prompt not shown when starting camera (LP: #1612256)
* No-change rebuild for boost soname change.
    . unity8/libmirclient gives up and terminates prematurely with
      "std::exception::what: disconnected: no new buffers" via
      ExchangeSemantics::submit() (LP: #1506358)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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: Andreas Pokorny <andreas.pokorny@canonical.com>
 
17
 */
 
18
 
 
19
#ifndef MIR_TOOLKIT_EVENTS_INPUT_DEVICE_STATE_EVENT_H_
 
20
#define MIR_TOOLKIT_EVENTS_INPUT_DEVICE_STATE_EVENT_H_
 
21
 
 
22
#include <mir_toolkit/events/event.h>
 
23
 
 
24
#ifdef __cplusplus
 
25
/**
 
26
 * \addtogroup mir_toolkit
 
27
 * @{
 
28
 */
 
29
extern "C" {
 
30
#endif
 
31
 
 
32
/**
 
33
 * MirInputDeviceStateEvent informs clients about the current state of the
 
34
 * input devices. This is necessary when the client did not receive the most
 
35
 * recent input events. The event is sent when the server was resumed after
 
36
 * a pause, or when the client just received the input focus.
 
37
 *
 
38
 * The event contains a single pointer button state and the current cursor
 
39
 * position and the pressed modifier keys. Additionally for key and pointer
 
40
 * devices the pressed keys and buttons are supplied individually.
 
41
 */
 
42
 
 
43
/**
 
44
 * Retrieve the button state.
 
45
 *
 
46
 * \param[in] ev The input device state event
 
47
 * \return       The combined pointer button state
 
48
 */
 
49
MirPointerButtons mir_input_device_state_event_pointer_buttons(
 
50
    MirInputDeviceStateEvent const* ev);
 
51
 
 
52
/**
 
53
 * Retrieve the pointer position
 
54
 *
 
55
 * \param[in] ev   The input device state event
 
56
 * \param[in] axis The pointer axis: mir_pointer_axis_x or mir_pointer_axis_y
 
57
 * \return         The pointer position
 
58
 */
 
59
float mir_input_device_state_event_pointer_axis(
 
60
    MirInputDeviceStateEvent const* ev, MirPointerAxis axis);
 
61
 
 
62
/**
 
63
 * Retrieve the time associated with a MirInputDeviceStateEvent
 
64
 *
 
65
 * \param[in] ev The input device state event
 
66
 * \return       The time in nanoseconds since epoch
 
67
 */
 
68
int64_t mir_input_device_state_event_time(
 
69
    MirInputDeviceStateEvent const* ev);
 
70
 
 
71
/**
 
72
 * Retrieve the modifier keys pressed on all input devices.
 
73
 *
 
74
 * \param[in] ev The input device state event
 
75
 * \return       The modifier mask
 
76
 */
 
77
MirInputEventModifiers mir_input_device_state_event_modifiers(
 
78
    MirInputDeviceStateEvent const* ev);
 
79
 
 
80
/**
 
81
 * Retrieve the number of attached input devices.
 
82
 *
 
83
 * \param[in] ev The input device state event
 
84
 * \return       The time in nanoseconds since epoch
 
85
 */
 
86
uint32_t mir_input_device_state_event_device_count(
 
87
    MirInputDeviceStateEvent const* ev);
 
88
 
 
89
/**
 
90
 * Retrieve the device id
 
91
 *
 
92
 * \param[in] ev The input device state event
 
93
 * \param[in] index The index of the input device
 
94
 * \return    The device id
 
95
 */
 
96
MirInputDeviceId mir_input_device_state_event_device_id(
 
97
    MirInputDeviceStateEvent const* ev, uint32_t index);
 
98
 
 
99
/**
 
100
 * Retrieve an array of pressed keys on the device identified by the \a index.
 
101
 * The keys are encoded as scan codes.
 
102
 *
 
103
 * \param[in] ev The input device state event
 
104
 * \param[in] index The index of the input device
 
105
 * \return    An array of pressed keys
 
106
 */
 
107
uint32_t const* mir_input_device_state_event_device_pressed_keys(
 
108
    MirInputDeviceStateEvent const* ev, uint32_t index);
 
109
 
 
110
/**
 
111
 * Retrieve the size of scan code array of the device identified by the \a index.
 
112
 *
 
113
 * \param[in] ev The input device state event
 
114
 * \param[in] index The index of the input device
 
115
 * \return    Size of the pressed keys array
 
116
 */
 
117
uint32_t mir_input_device_state_event_device_pressed_keys_count(
 
118
    MirInputDeviceStateEvent const* ev, uint32_t index);
 
119
 
 
120
/**
 
121
 * Retrieve the pointer button state of the device identified by the \a index
 
122
 *
 
123
 * \param[in] ev The input device state event
 
124
 * \param[in] index The index of the input device
 
125
 * \return    The pointer button state of the device
 
126
 */
 
127
MirPointerButtons mir_input_device_state_event_device_pointer_buttons(
 
128
    MirInputDeviceStateEvent const* ev, uint32_t index);
 
129
 
 
130
#ifdef __cplusplus
 
131
}
 
132
/**@}*/
 
133
#endif
 
134
 
 
135
#endif /* MIR_TOOLKIT_EVENTS_INPUT_DEVICE_STATE_EVENT_H_ */