Merge lp:~thomas-voss/platform-api/add-location-service-api-take-2 into lp:platform-api

Proposed by Thomas Voß on 2013-07-08
Status: Rejected
Rejected by: Didier Roche on 2019-02-12
Proposed branch: lp:~thomas-voss/platform-api/add-location-service-api-take-2
Merge into: lp:platform-api
Diff against target: 10604 lines (+5416/-4588)
102 files modified
debian/control (+4/-2)
debian/libplatform-api1-doc.doc-base (+2/-1)
debian/libubuntu-application-api1.symbols (+28/-0)
doc/Doxyfile.in (+6/-6)
include/ubuntu/application/CMakeLists.txt (+1/-0)
include/ubuntu/application/location/CMakeLists.txt (+14/-0)
include/ubuntu/application/location/heading_update.h (+78/-0)
include/ubuntu/application/location/position_update.h (+108/-0)
include/ubuntu/application/location/service.h (+94/-0)
include/ubuntu/application/location/session.h (+169/-0)
include/ubuntu/application/location/velocity_update.h (+78/-0)
src/CMakeLists.txt (+1/-15)
src/hybris/CMakeLists.txt (+0/-53)
src/hybris/bridge.h (+0/-202)
src/hybris/tests/CMakeLists.txt (+0/-25)
src/hybris/tests/test_c_api.cpp (+0/-329)
src/hybris/tests/test_gps_api.cpp (+0/-252)
src/hybris/tests/test_multiple_surfaces_event_delivery.cpp (+0/-351)
src/hybris/tests/test_sensors_api.cpp (+0/-88)
src/hybris/tests/test_session_c_api.cpp (+0/-229)
src/hybris/ubuntu_application_api_hybris.cpp (+0/-130)
src/hybris/ubuntu_application_sensors_hybris.cpp (+0/-70)
src/hybris/ubuntu_platform_hardware_api.cpp (+0/-78)
src/mirclient/CMakeLists.txt (+0/-34)
src/mirclient/application_instance_mirclient.cpp (+0/-68)
src/mirclient/application_instance_mirclient_priv.h (+0/-68)
src/mirclient/ubuntu_application_api_mirclient.cpp (+0/-279)
src/mirclient/window_mirclient.cpp (+0/-128)
src/mirclient/window_mirclient_priv.h (+0/-76)
src/mirclient/window_properties_mirclient.cpp (+0/-68)
src/mirclient/window_properties_mirclient_priv.h (+0/-72)
src/mircommon/CMakeLists.txt (+0/-43)
src/mircommon/application_description_mir.cpp (+0/-94)
src/mircommon/application_description_mir_priv.h (+0/-56)
src/mircommon/application_id_mir.cpp (+0/-56)
src/mircommon/application_id_mir_priv.h (+0/-53)
src/mircommon/application_options_mir.cpp (+0/-170)
src/mircommon/application_options_mir_priv.h (+0/-58)
src/mircommon/event_helpers_mir.cpp (+0/-77)
src/mircommon/event_helpers_mir.h (+0/-39)
src/mircommon/lifecycle_delegate_mir.cpp (+0/-136)
src/mircommon/lifecycle_delegate_mir_priv.h (+0/-59)
src/mircommon/session_mir.cpp (+0/-51)
src/mircommon/ubuntu_application_sensors_desktop.cpp (+0/-190)
src/mirserver/CMakeLists.txt (+0/-38)
src/mirserver/application_instance_mirserver.cpp (+0/-83)
src/mirserver/application_instance_mirserver_priv.h (+0/-85)
src/mirserver/ubuntu_application_api_mirserver.cpp (+0/-320)
src/mirserver/ubuntu_application_api_mirserver_priv.h (+0/-41)
src/mirserver/window_mirserver.cpp (+0/-81)
src/mirserver/window_mirserver_priv.h (+0/-92)
src/mirserver/window_properties_mirserver.cpp (+0/-73)
src/mirserver/window_properties_mirserver_priv.h (+0/-69)
src/ubuntu/CMakeLists.txt (+27/-0)
src/ubuntu/application/CMakeLists.txt (+1/-0)
src/ubuntu/application/location/CMakeLists.txt (+10/-0)
src/ubuntu/application/location/heading_update.cpp (+32/-0)
src/ubuntu/application/location/position_update.cpp (+60/-0)
src/ubuntu/application/location/service.cpp (+15/-0)
src/ubuntu/application/location/session.cpp (+87/-0)
src/ubuntu/application/location/velocity_update.cpp (+32/-0)
src/ubuntu/hybris/CMakeLists.txt (+57/-0)
src/ubuntu/hybris/bridge.h (+202/-0)
src/ubuntu/hybris/tests/CMakeLists.txt (+25/-0)
src/ubuntu/hybris/tests/test_c_api.cpp (+329/-0)
src/ubuntu/hybris/tests/test_gps_api.cpp (+252/-0)
src/ubuntu/hybris/tests/test_multiple_surfaces_event_delivery.cpp (+351/-0)
src/ubuntu/hybris/tests/test_sensors_api.cpp (+88/-0)
src/ubuntu/hybris/tests/test_session_c_api.cpp (+229/-0)
src/ubuntu/hybris/ubuntu_application_api_hybris.cpp (+130/-0)
src/ubuntu/hybris/ubuntu_application_sensors_hybris.cpp (+70/-0)
src/ubuntu/hybris/ubuntu_platform_hardware_api.cpp (+78/-0)
src/ubuntu/mirclient/CMakeLists.txt (+34/-0)
src/ubuntu/mirclient/application_instance_mirclient.cpp (+68/-0)
src/ubuntu/mirclient/application_instance_mirclient_priv.h (+68/-0)
src/ubuntu/mirclient/ubuntu_application_api_mirclient.cpp (+279/-0)
src/ubuntu/mirclient/window_mirclient.cpp (+128/-0)
src/ubuntu/mirclient/window_mirclient_priv.h (+76/-0)
src/ubuntu/mirclient/window_properties_mirclient.cpp (+68/-0)
src/ubuntu/mirclient/window_properties_mirclient_priv.h (+72/-0)
src/ubuntu/mircommon/CMakeLists.txt (+44/-0)
src/ubuntu/mircommon/application_description_mir.cpp (+94/-0)
src/ubuntu/mircommon/application_description_mir_priv.h (+56/-0)
src/ubuntu/mircommon/application_id_mir.cpp (+56/-0)
src/ubuntu/mircommon/application_id_mir_priv.h (+53/-0)
src/ubuntu/mircommon/application_options_mir.cpp (+170/-0)
src/ubuntu/mircommon/application_options_mir_priv.h (+58/-0)
src/ubuntu/mircommon/event_helpers_mir.cpp (+77/-0)
src/ubuntu/mircommon/event_helpers_mir.h (+39/-0)
src/ubuntu/mircommon/lifecycle_delegate_mir.cpp (+136/-0)
src/ubuntu/mircommon/lifecycle_delegate_mir_priv.h (+59/-0)
src/ubuntu/mircommon/session_mir.cpp (+51/-0)
src/ubuntu/mircommon/ubuntu_application_sensors_desktop.cpp (+190/-0)
src/ubuntu/mirserver/CMakeLists.txt (+38/-0)
src/ubuntu/mirserver/application_instance_mirserver.cpp (+83/-0)
src/ubuntu/mirserver/application_instance_mirserver_priv.h (+85/-0)
src/ubuntu/mirserver/ubuntu_application_api_mirserver.cpp (+320/-0)
src/ubuntu/mirserver/ubuntu_application_api_mirserver_priv.h (+41/-0)
src/ubuntu/mirserver/window_mirserver.cpp (+81/-0)
src/ubuntu/mirserver/window_mirserver_priv.h (+92/-0)
src/ubuntu/mirserver/window_properties_mirserver.cpp (+73/-0)
src/ubuntu/mirserver/window_properties_mirserver_priv.h (+69/-0)
To merge this branch: bzr merge lp:~thomas-voss/platform-api/add-location-service-api-take-2
Reviewer Review Type Date Requested Status
Gerry Boland (community) Needs Information on 2014-11-06
PS Jenkins bot continuous-integration Approve on 2013-07-30
Didier Roche Approve on 2013-07-18
Ricardo Mendoza (community) Approve on 2013-07-16
Ricardo Salveti 2013-07-08 Approve on 2013-07-09
Review via email: mp+173457@code.launchpad.net

Commit message

Add the location service API together with respective documentation.

Description of the change

Add the location service API together with respective documentation.

To post a comment you must log in.
Didier Roche (didrocks) wrote :

* the -doc package should rather be arch: all if possible
* nitpick: the ${misc:Depends}, would be better as first dep :)

Otherwise, everything looks good to me

Ricardo Salveti (rsalveti) wrote :

Looks good, tested and not issues with the flipped image. Would just like a +1 from ricmm to make sure it didn't break platform-api with mir.

review: Approve
Didier Roche (didrocks) wrote :

Please fix the lines too long in the description in debian/control
as well, the lintian errors on the -doc package.

As part of our discussion, this branch can only land if we land just after that one, the same day, the package transition to the correct naming.

Didier Roche (didrocks) wrote :

ok, +1 on this branch, but please, globally approve and have that landed once the package renaming is settled on and ready to be merged.

Bonus point if you fix that one still having long description:
W: ubuntu-platform-implementation-android-tests: extended-description-line-too-long

review: Approve
Ricardo Mendoza (ricmm) wrote :

Works fine under the Mir environment.

review: Approve
Didier Roche (didrocks) wrote :

looking good, thanks!

review: Approve
95. By Thomas Voß on 2013-07-22

Merged trunk.

96. By Thomas Voß on 2013-07-29

* General renaming of packages to match debian guidelines
[ Gustavo Pichorim Boiko ]
* Rename the well known applications to match their names after the
  splitting of phone-app. The entry for the current phone-app was kept
  there so that it can be used while the new applications are not yet
  mature.
[ Ubuntu daily release ]
* Automatic snapshot from revision 103
[ Jani Monoses ]
* Fixing issue with gcc 4.6.
* Build fixes for tests.
[ Ubuntu daily release ]
* Automatic snapshot from revision 101
[ Ricardo Mendoza ]
* * Clear all input traps upon death of the last client * Reset shell
  focus if all apps exit. (LP: #1203698, #1204299)
[ Ubuntu daily release ]
* Automatic snapshot from revision 98

Gerry Boland (gerboland) wrote :

Ancient, do we need this any more?

review: Needs Information

Unmerged revisions

96. By Thomas Voß on 2013-07-29

* General renaming of packages to match debian guidelines
[ Gustavo Pichorim Boiko ]
* Rename the well known applications to match their names after the
  splitting of phone-app. The entry for the current phone-app was kept
  there so that it can be used while the new applications are not yet
  mature.
[ Ubuntu daily release ]
* Automatic snapshot from revision 103
[ Jani Monoses ]
* Fixing issue with gcc 4.6.
* Build fixes for tests.
[ Ubuntu daily release ]
* Automatic snapshot from revision 101
[ Ricardo Mendoza ]
* * Clear all input traps upon death of the last client * Reset shell
  focus if all apps exit. (LP: #1203698, #1204299)
[ Ubuntu daily release ]
* Automatic snapshot from revision 98

95. By Thomas Voß on 2013-07-22

Merged trunk.

94. By Thomas Voß on 2013-07-14

Merged trunk.

93. By Thomas Voß on 2013-07-09

Fix lintian warnings for the doc-base package.

92. By Thomas Voß on 2013-07-09

Fix line-length in debian/control.

91. By Thomas Voß on 2013-07-09

[ Thomas Voß ]
[ Ubuntu daily release ]
* debian/*symbols: auto-update new symbols to released version
[ Thomas Voß ]
* Add first wave of doxygen documentation and make the documentation
  known to the packaging setup.
[ Ubuntu daily release ]
* Automatic snapshot from revision 87

90. By Thomas Voß on 2013-07-08

Update symbols file to account for removed symbols.

89. By Thomas Voß on 2013-07-08

 * Do not include full-paths in documentation.

88. By Thomas Voß on 2013-07-08

Add documentation for the location service.

87. By Thomas Voß on 2013-07-06

 * Refactored the src folder
 * Added the location service API

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/control'
2--- debian/control 2013-07-18 23:55:59 +0000
3+++ debian/control 2013-07-30 05:35:33 +0000
4@@ -38,7 +38,8 @@
5 Depends: ${misc:Depends},
6 libplatform-api-headers,
7 Description: Platform API for system level capabilities (API headers)
8- This package provides the library headers for the hw-access parts of the Platform API.
9+ This package provides the library headers for the hw-access parts
10+ of the Platform API.
11 .
12 Unless a new backend for the Platform API is developed, packages
13 should build depend on the libplatform-hardware-api-dev package instead, which
14@@ -91,7 +92,8 @@
15 ${shlibs:Depends},
16 libhybris,
17 Description: Hybris implementation of the hw-access parts of the Platform API (runtime)
18- This package provides the hybris implementation of the hw-access parts of the Platform API.
19+ This package provides the hybris implementation of the hw-access parts
20+ of the Platform API.
21 .
22 The produced library should be used via libhybris, to communicate with the
23 Android userspace, which is where the device drivers live.
24
25=== modified file 'debian/libplatform-api1-doc.doc-base'
26--- debian/libplatform-api1-doc.doc-base 2013-07-05 16:34:47 +0000
27+++ debian/libplatform-api1-doc.doc-base 2013-07-30 05:35:33 +0000
28@@ -1,8 +1,9 @@
29-Document: ubuntu-platform-api
30+Document: ubuntu-platform-api
31 Title: Ubuntu Platform API Reference Documentation
32 Author: Thomas Voß
33 Abstract: This is the reference documentation for the Ubuntu Platform API
34 Section: Debian
35+
36 Format: HTML
37 Index: /usr/share/doc/ubuntu-platform-api/html/index.html
38 Files: /usr/share/doc/ubuntu-platform-api/html/*.html
39
40=== modified file 'debian/libubuntu-application-api1.symbols'
41--- debian/libubuntu-application-api1.symbols 2013-07-17 14:29:04 +0000
42+++ debian/libubuntu-application-api1.symbols 2013-07-30 05:35:33 +0000
43@@ -17,6 +17,34 @@
44 u_application_options_get_form_factor@Base 0.18.1daily13.06.21
45 u_application_options_get_stage@Base 0.18.1daily13.06.21
46 u_application_options_new_from_cmd_line@Base 0.18.1daily13.06.21
47+ ua_location_heading_update_get_timestamp@Base 0replaceme
48+ ua_location_heading_update_ref@Base 0replaceme
49+ ua_location_heading_update_unref@Base 0replaceme
50+ ua_location_position_update_get_altitude_in_meter@Base 0replaceme
51+ ua_location_position_update_get_heading_in_degree@Base 0replaceme
52+ ua_location_position_update_get_latitude_in_degree@Base 0replaceme
53+ ua_location_position_update_get_longitude_in_degree@Base 0replaceme
54+ ua_location_position_update_get_timestamp@Base 0replaceme
55+ ua_location_position_update_has_altitude@Base 0replaceme
56+ ua_location_position_update_ref@Base 0replaceme
57+ ua_location_position_update_unref@Base 0replaceme
58+ ua_location_service_create_session_for_high_accuracy@Base 0replaceme
59+ ua_location_service_create_session_for_low_accuracy@Base 0replaceme
60+ ua_location_service_session_ref@Base 0replaceme
61+ ua_location_service_session_set_heading_updates_handler@Base 0replaceme
62+ ua_location_service_session_set_position_updates_handler@Base 0replaceme
63+ ua_location_service_session_set_velocity_updates_handler@Base 0replaceme
64+ ua_location_service_session_start_heading_updates@Base 0replaceme
65+ ua_location_service_session_start_position_updates@Base 0replaceme
66+ ua_location_service_session_start_velocity_updates@Base 0replaceme
67+ ua_location_service_session_stop_heading_updates@Base 0replaceme
68+ ua_location_service_session_stop_position_updates@Base 0replaceme
69+ ua_location_service_session_stop_velocity_updates@Base 0replaceme
70+ ua_location_service_session_unref@Base 0replaceme
71+ ua_location_velocity_update_get_timestamp@Base 0replaceme
72+ ua_location_velocity_update_get_velocity_in_meters_per_second@Base 0replaceme
73+ ua_location_velocity_update_ref@Base 0replaceme
74+ ua_location_velocity_update_unref@Base 0replaceme
75 ua_sensors_accelerometer_disable@Base 0.18.1daily13.06.21
76 ua_sensors_accelerometer_enable@Base 0.18.1daily13.06.21
77 ua_sensors_accelerometer_get_max_value@Base 0.18.1daily13.06.21
78
79=== modified file 'doc/Doxyfile.in'
80--- doc/Doxyfile.in 2013-07-05 09:13:31 +0000
81+++ doc/Doxyfile.in 2013-07-30 05:35:33 +0000
82@@ -119,7 +119,7 @@
83 # path before files name in the file list and in the header files. If set
84 # to NO the shortest path that makes the file name unique will be used.
85
86-FULL_PATH_NAMES = YES
87+FULL_PATH_NAMES = NO
88
89 # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
90 # can be used to strip a user-defined part of the path. Stripping is
91@@ -1293,7 +1293,7 @@
92 # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
93 # generate Latex output.
94
95-GENERATE_LATEX = NO
96+GENERATE_LATEX = YES
97
98 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
99 # If a relative path is entered the value of OUTPUT_DIRECTORY will be
100@@ -1319,7 +1319,7 @@
101 # LaTeX documents. This may be useful for small projects and may help to
102 # save some trees in general.
103
104-COMPACT_LATEX = NO
105+COMPACT_LATEX = YES
106
107 # The PAPER_TYPE tag can be used to set the paper type that is used
108 # by the printer. Possible values are: a4, letter, legal and
109@@ -1364,20 +1364,20 @@
110 # running if errors occur, instead of asking the user for help.
111 # This option is also used when generating formulas in HTML.
112
113-LATEX_BATCHMODE = NO
114+LATEX_BATCHMODE = YES
115
116 # If LATEX_HIDE_INDICES is set to YES then doxygen will not
117 # include the index chapters (such as File Index, Compound Index, etc.)
118 # in the output.
119
120-LATEX_HIDE_INDICES = NO
121+LATEX_HIDE_INDICES = YES
122
123 # If LATEX_SOURCE_CODE is set to YES then doxygen will include
124 # source code with syntax highlighting in the LaTeX output.
125 # Note that which sources are shown also depends on other settings
126 # such as SOURCE_BROWSER.
127
128-LATEX_SOURCE_CODE = NO
129+LATEX_SOURCE_CODE = YES
130
131 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the
132 # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
133
134=== modified file 'include/ubuntu/application/CMakeLists.txt'
135--- include/ubuntu/application/CMakeLists.txt 2013-07-18 09:08:17 +0000
136+++ include/ubuntu/application/CMakeLists.txt 2013-07-30 05:35:33 +0000
137@@ -14,5 +14,6 @@
138 DESTINATION include/ubuntu/application
139 )
140
141+add_subdirectory(location)
142 add_subdirectory(sensors)
143 add_subdirectory(ui)
144
145=== added directory 'include/ubuntu/application/location'
146=== added file 'include/ubuntu/application/location/CMakeLists.txt'
147--- include/ubuntu/application/location/CMakeLists.txt 1970-01-01 00:00:00 +0000
148+++ include/ubuntu/application/location/CMakeLists.txt 2013-07-30 05:35:33 +0000
149@@ -0,0 +1,14 @@
150+set(
151+ UBUNTU_APPLICATION_SENSORS_HEADERS
152+
153+ heading_update.h
154+ position_update.h
155+ service.h
156+ session.h
157+ velocity_update.h
158+)
159+
160+install(
161+ FILES ${UBUNTU_APPLICATION_SENSORS_HEADERS}
162+ DESTINATION include/ubuntu-${UBUNTU_PLATFORM_API_VERSION_MAJOR}/application/location
163+)
164\ No newline at end of file
165
166=== added file 'include/ubuntu/application/location/heading_update.h'
167--- include/ubuntu/application/location/heading_update.h 1970-01-01 00:00:00 +0000
168+++ include/ubuntu/application/location/heading_update.h 2013-07-30 05:35:33 +0000
169@@ -0,0 +1,78 @@
170+/*
171+ * Copyright © 2013 Canonical Ltd.
172+ *
173+ * This program is free software: you can redistribute it and/or modify
174+ * it under the terms of the GNU Lesser General Public License version 3 as
175+ * published by the Free Software Foundation.
176+ *
177+ * This program is distributed in the hope that it will be useful,
178+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
179+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
180+ * GNU Lesser General Public License for more details.
181+ *
182+ * You should have received a copy of the GNU Lesser General Public License
183+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
184+ *
185+ * Authored by: Thomas Voß <thomas.voss@canonical.com>
186+ */
187+
188+#ifndef UBUNTU_APPLICATION_LOCATION_HEADING_UPDATE_H_
189+#define UBUNTU_APPLICATION_LOCATION_HEADING_UPDATE_H_
190+
191+#include <stdbool.h>
192+#include <stdint.h>
193+
194+#ifdef __cplusplus
195+extern "C"
196+{
197+#endif
198+
199+ /**
200+ * \brief Opaque type encapsulating a heading update.
201+ * \ingroup location_service
202+ */
203+ typedef struct UbuntuApplicationLocationHeadingUpdate UALocationHeadingUpdate;
204+
205+ /**
206+ * \brief Increments the reference count of the heading update instance.
207+ * \ingroup location_service
208+ * \param[in] update The heading update instance to increment the reference count for.
209+ */
210+ void
211+ ua_location_heading_update_ref(
212+ UALocationHeadingUpdate *update);
213+
214+ /**
215+ * \brief Decrements the reference count of the heading update instance.
216+ * \ingroup location_service
217+ * \param[in] update The heading update instance to decrement the reference count for.
218+ */
219+ void
220+ ua_location_heading_update_unref(
221+ UALocationHeadingUpdate *update);
222+
223+ /**
224+ * \brief Queries the timestamp of the heading update.
225+ * \ingroup location_service
226+ * \returns The timestamp of the heading update in [µs].
227+ * \param[in] update The heading update instance to be queried.
228+ */
229+ uint64_t
230+ ua_location_heading_update_get_timestamp(
231+ UALocationHeadingUpdate *update);
232+
233+ /**
234+ * \brief Queries the new heading from the update.
235+ * \ingroup location_service
236+ * \returns The new heading from the update in [°].
237+ * \param[in] update The heading update instance to be queried.
238+ */
239+ double
240+ ua_location_position_update_get_heading_in_degree(
241+ UALocationHeadingUpdate *update);
242+
243+#ifdef __cplusplus
244+}
245+#endif
246+
247+#endif // UBUNTU_APPLICATION_LOCATION_HEADING_UPDATE_H_
248
249=== added file 'include/ubuntu/application/location/position_update.h'
250--- include/ubuntu/application/location/position_update.h 1970-01-01 00:00:00 +0000
251+++ include/ubuntu/application/location/position_update.h 2013-07-30 05:35:33 +0000
252@@ -0,0 +1,108 @@
253+/*
254+ * Copyright © 2013 Canonical Ltd.
255+ *
256+ * This program is free software: you can redistribute it and/or modify
257+ * it under the terms of the GNU Lesser General Public License version 3 as
258+ * published by the Free Software Foundation.
259+ *
260+ * This program is distributed in the hope that it will be useful,
261+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
262+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
263+ * GNU Lesser General Public License for more details.
264+ *
265+ * You should have received a copy of the GNU Lesser General Public License
266+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
267+ *
268+ * Authored by: Thomas Voß <thomas.voss@canonical.com>
269+ */
270+
271+#ifndef UBUNTU_APPLICATION_LOCATION_POSITION_UPDATE_H_
272+#define UBUNTU_APPLICATION_LOCATION_POSITION_UPDATE_H_
273+
274+#include <stdbool.h>
275+#include <stdint.h>
276+
277+#ifdef __cplusplus
278+extern "C"
279+{
280+#endif
281+
282+ /**
283+ * \brief Opaque type encapsulating a location update.
284+ * \ingroup location_service
285+ */
286+ typedef struct UbuntuApplicationLocationPositionUpdate UALocationPositionUpdate;
287+
288+ /**
289+ * \brief Increments the reference count of the position update instance.
290+ * \ingroup location_service
291+ * \param[in] update The position update instance to increment the reference count for.
292+ */
293+ void
294+ ua_location_position_update_ref(
295+ UALocationPositionUpdate *update);
296+
297+ /**
298+ * \brief Decrements the reference count of the position update instance.
299+ * \ingroup location_service
300+ * \param[in] update The position update instance to decrement the reference count for.
301+ */
302+ void
303+ ua_location_position_update_unref(
304+ UALocationPositionUpdate *update);
305+
306+ /**
307+ * \brief Queries the timestamp of the position update.
308+ * \ingroup location_service
309+ * \returns The timestamp of the position update in [µs].
310+ * \param[in] update The position update instance to be queried.
311+ */
312+ uint64_t
313+ ua_location_position_update_get_timestamp(
314+ UALocationPositionUpdate *update);
315+
316+ /**
317+ * \brief Queries the latitude contained in the position update.
318+ * \ingroup location_service
319+ * \returns The latitude of the position update in [°].
320+ * \param[in] update The position update instance to be queried.
321+ */
322+ double
323+ ua_location_position_update_get_latitude_in_degree(
324+ UALocationPositionUpdate *update);
325+
326+ /**
327+ * \brief Queries the longitude contained in the position update.
328+ * \ingroup location_service
329+ * \returns The longitude of the position update in [°].
330+ * \param[in] update The position update instance to be queried.
331+ */
332+ double
333+ ua_location_position_update_get_longitude_in_degree(
334+ UALocationPositionUpdate *update);
335+
336+ /**
337+ * \brief Checks if the position update contains an altitude.
338+ * \ingroup location_service
339+ * \returns TRUE if the update contains an altitude, else FALSE.
340+ * \param[in] update The position update instance to be queried.
341+ */
342+ bool
343+ ua_location_position_update_has_altitude(
344+ UALocationPositionUpdate *update);
345+
346+ /**
347+ * \brief Queries the altitude contained in the position update.
348+ * \ingroup location_service
349+ * \returns The altitude of the position update in [m].
350+ * \param[in] update The position update instance to be queried.
351+ */
352+ double
353+ ua_location_position_update_get_altitude_in_meter(
354+ UALocationPositionUpdate *update);
355+
356+#ifdef __cplusplus
357+}
358+#endif
359+
360+#endif // UBUNTU_APPLICATION_LOCATION_POSITION_UPDATE_H_
361
362=== added file 'include/ubuntu/application/location/service.h'
363--- include/ubuntu/application/location/service.h 1970-01-01 00:00:00 +0000
364+++ include/ubuntu/application/location/service.h 2013-07-30 05:35:33 +0000
365@@ -0,0 +1,94 @@
366+/*
367+ * Copyright © 2013 Canonical Ltd.
368+ *
369+ * This program is free software: you can redistribute it and/or modify
370+ * it under the terms of the GNU Lesser General Public License version 3 as
371+ * published by the Free Software Foundation.
372+ *
373+ * This program is distributed in the hope that it will be useful,
374+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
375+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
376+ * GNU Lesser General Public License for more details.
377+ *
378+ * You should have received a copy of the GNU Lesser General Public License
379+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
380+ *
381+ * Authored by: Thomas Voß <thomas.voss@canonical.com>
382+ */
383+
384+#ifndef UBUNTU_APPLICATION_LOCATION_SERVICE_H_
385+#define UBUNTU_APPLICATION_LOCATION_SERVICE_H_
386+
387+#include "ubuntu/application/location/session.h"
388+
389+#ifdef __cplusplus
390+extern "C"
391+{
392+#endif
393+ /**
394+ * \defgroup location_service Functions and types to provide location services to applications.
395+ *
396+ * Applications in Ubuntu do not access positioning hardware
397+ * directly but instead rely on a system-wide location service to
398+ * be provided with position, heading and velocity updates. An
399+ * application that wants to receive position, heading or
400+ * velocity updates needs to start a session with the location
401+ * service and specify its requirements with the help
402+ * UALocationServiceRequirementsFlags. After the session has been
403+ * created, position, heading and velocity updates need to be
404+ * started by the application for its session. The actual updates
405+ * are delivered via callbacks. Please note that the location
406+ * service caches updates as good as possible. That is, if an
407+ * application is only interested in a single position fix, and a
408+ * reasonable fix is already known to the service, the
409+ * information is immediately delivered to the application when
410+ * the respecitve updates are started.
411+ *
412+ */
413+
414+ /**
415+ * \brief Application-specific requirements.
416+ * \ingroup location_service
417+ */
418+ typedef enum
419+ {
420+ UA_LOCATION_SERVICE_REQUIRE_ALTITUDE = 1 << 0, /**< The application requires altitude updates. */
421+ UA_LOCATION_SERVICE_REQUIRE_HEADING = 1 << 1, /**< The application requires heading updates. */
422+ UA_LOCATION_SERVICE_REQUIRE_VELOCITY = 1 << 2 /**< The application requires velocity updates. */
423+ } UbuntuApplicationLocationServiceRequirement;
424+
425+ typedef UbuntuApplicationLocationServiceRequirement UALocationServiceRequirement;
426+
427+ /**
428+ * \brief Bitfield type for summarizing an application's requirements.
429+ * \ingroup location_service
430+ */
431+ typedef unsigned int UALocationServiceRequirementsFlags;
432+
433+ /**
434+ * \brief Creates a new session with the location service for low positional accuracy requirements.
435+ * \returns A new session or NULL if the requirements cannot be
436+ * satisfied or if the app lacks permissions to access the
437+ * location service.
438+ * \param[in] Bitfield describing the application's requirements.
439+ */
440+ UALocationServiceSession*
441+ ua_location_service_create_session_for_low_accuracy(
442+ UALocationServiceRequirementsFlags flags);
443+
444+ /**
445+ * \brief Creates a new session with the location service for high positional accuracy requirements.
446+ * \returns A new session or NULL if the requirements cannot be
447+ * satisfied or if the app lacks permissions to access the
448+ * location service.
449+ * \param[in] Bitfield describing the application's requirements.
450+ */
451+ UALocationServiceSession*
452+ ua_location_service_create_session_for_high_accuracy(
453+ UALocationServiceRequirementsFlags flags);
454+
455+#ifdef __cplusplus
456+}
457+#endif
458+
459+#endif // UBUNTU_APPLICATION_LOCATION_SERVICE_H_
460
461=== added file 'include/ubuntu/application/location/session.h'
462--- include/ubuntu/application/location/session.h 1970-01-01 00:00:00 +0000
463+++ include/ubuntu/application/location/session.h 2013-07-30 05:35:33 +0000
464@@ -0,0 +1,169 @@
465+/*
466+ * Copyright © 2013 Canonical Ltd.
467+ *
468+ * This program is free software: you can redistribute it and/or modify
469+ * it under the terms of the GNU Lesser General Public License version 3 as
470+ * published by the Free Software Foundation.
471+ *
472+ * This program is distributed in the hope that it will be useful,
473+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
474+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
475+ * GNU Lesser General Public License for more details.
476+ *
477+ * You should have received a copy of the GNU Lesser General Public License
478+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
479+ *
480+ * Authored by: Thomas Voß <thomas.voss@canonical.com>
481+ */
482+
483+#ifndef UBUNTU_APPLICATION_LOCATION_SESSION_H_
484+#define UBUNTU_APPLICATION_LOCATION_SESSION_H_
485+
486+#include "ubuntu/status.h"
487+#include "ubuntu/application/location/heading_update.h"
488+#include "ubuntu/application/location/position_update.h"
489+#include "ubuntu/application/location/velocity_update.h"
490+
491+#ifdef __cplusplus
492+extern "C"
493+{
494+#endif
495+
496+ /**
497+ * \brief Opaque type encapsulating a session with the location service.
498+ * \ingroup location_service
499+ */
500+ typedef struct UbuntuApplicationLocationServiceSession UALocationServiceSession;
501+
502+ /**
503+ * \brief Callback type that is invoked for position updates.
504+ * \ingroup location_service
505+ */
506+
507+ typedef void (*UALocationServiceSessionPositionUpdatesHandler)(UALocationPositionUpdate *position);
508+
509+ /**
510+ * \brief Callback type that is invoked for heading updates.
511+ * \ingroup location_service
512+ */
513+ typedef void (*UALocationServiceSessionHeadingUpdatesHandler)(UALocationHeadingUpdate *heading);
514+
515+ /**
516+ * \brief Callback type that is invoked for velocity updates.
517+ * \ingroup location_service
518+ */
519+ typedef void (*UALocationServiceSessionVelocityUpdatesHandler)(UALocationVelocityUpdate *heading);
520+
521+ /**
522+ * \brief Increments the reference count of the session instance.
523+ * \ingroup location_service
524+ * \param[in] session The session instance to increment the reference count for.
525+ */
526+ void
527+ ua_location_service_session_ref(
528+ UALocationServiceSession *session);
529+
530+ /**
531+ * \brief Decrements the reference count of the session instance.
532+ * \ingroup location_service
533+ * \param[in] session The session instance to decrement the reference count for.
534+ */
535+ void
536+ ua_location_service_session_unref(
537+ UALocationServiceSession *session);
538+
539+ /**
540+ * \brief Installs an app-specific position update handler for the session.
541+ * \ingroup location_service
542+ * \param[in] session The session instance to install the handler for.
543+ * \param[in] handler The position update handler.
544+ */
545+ void
546+ ua_location_service_session_set_position_updates_handler(
547+ UALocationServiceSession *session,
548+ UALocationServiceSessionPositionUpdatesHandler *handler);
549+
550+ /**
551+ * \brief Installs an app-specific heading update handler for the session.
552+ * \ingroup location_service
553+ * \param[in] session The session instance to install the handler for.
554+ * \param[in] handler The heading update handler.
555+ */
556+ void
557+ ua_location_service_session_set_heading_updates_handler(
558+ UALocationServiceSession *session,
559+ UALocationServiceSessionHeadingUpdatesHandler *handler);
560+
561+ /**
562+ * \brief Installs an app-specific velocity update handler for the session.
563+ * \ingroup location_service
564+ * \param[in] session The session instance to install the handler for.
565+ * \param[in] handler The velocity update handler.
566+ */
567+ void
568+ ua_location_service_session_set_velocity_updates_handler(
569+ UALocationServiceSession *session,
570+ UALocationServiceSessionVelocityUpdatesHandler *handler);
571+
572+ /**
573+ * \brief Starts position updates for the supplied session.
574+ * \ingroup location_service
575+ * \returns U_STATUS_SUCCESS if the updates were successfully started on the service side, else U_STATUS_ERROR.
576+ * \param[in] session The session instance to start position updates for.
577+ */
578+ UStatus
579+ ua_location_service_session_start_position_updates(
580+ UALocationServiceSession *session);
581+
582+ /**
583+ * \brief Stops position updates for the supplied session.
584+ * \ingroup location_service
585+ * \param[in] session The session instance to stop position updates for.
586+ */
587+ void
588+ ua_location_service_session_stop_position_updates(
589+ UALocationServiceSession *session);
590+
591+ /**
592+ * \brief Starts heading updates for the supplied session.
593+ * \ingroup location_service
594+ * \returns U_STATUS_SUCCESS if the updates were successfully started on the service side, else U_STATUS_ERROR.
595+ * \param[in] session The session instance to start heading updates for.
596+ */
597+ UStatus
598+ ua_location_service_session_start_heading_updates(
599+ UALocationServiceSession *session);
600+
601+ /**
602+ * \brief Stops heading updates for the supplied session.
603+ * \ingroup location_service
604+ * \param[in] session The session instance to stop heading updates for.
605+ */
606+ void
607+ ua_location_service_session_stop_heading_updates(
608+ UALocationServiceSession *session);
609+
610+ /**
611+ * \brief Starts velocity updates for the supplied session.
612+ * \ingroup location_service
613+ * \returns U_STATUS_SUCCESS if the updates were successfully started on the service side, else U_STATUS_ERROR.
614+ * \param[in] session The session instance to start velocity updates for.
615+ */
616+ UStatus
617+ ua_location_service_session_start_velocity_updates(
618+ UALocationServiceSession *session);
619+
620+ /**
621+ * \brief Stops velocity updates for the supplied session.
622+ * \ingroup location_service
623+ * \param[in] session The session instance to stop velocity updates for.
624+ */
625+ void
626+ ua_location_service_session_stop_velocity_updates(
627+ UALocationServiceSession *session);
628+
629+#ifdef __cplusplus
630+}
631+#endif
632+
633+#endif // UBUNTU_APPLICATION_LOCATION_SESSION_H_
634
635=== added file 'include/ubuntu/application/location/velocity_update.h'
636--- include/ubuntu/application/location/velocity_update.h 1970-01-01 00:00:00 +0000
637+++ include/ubuntu/application/location/velocity_update.h 2013-07-30 05:35:33 +0000
638@@ -0,0 +1,78 @@
639+/*
640+ * Copyright © 2013 Canonical Ltd.
641+ *
642+ * This program is free software: you can redistribute it and/or modify
643+ * it under the terms of the GNU Lesser General Public License version 3 as
644+ * published by the Free Software Foundation.
645+ *
646+ * This program is distributed in the hope that it will be useful,
647+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
648+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
649+ * GNU Lesser General Public License for more details.
650+ *
651+ * You should have received a copy of the GNU Lesser General Public License
652+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
653+ *
654+ * Authored by: Thomas Voß <thomas.voss@canonical.com>
655+ */
656+
657+#ifndef UBUNTU_APPLICATION_LOCATION_VELOCITY_UPDATE_H_
658+#define UBUNTU_APPLICATION_LOCATION_VELOCITY_UPDATE_H_
659+
660+#include <stdbool.h>
661+#include <stdint.h>
662+
663+#ifdef __cplusplus
664+extern "C"
665+{
666+#endif
667+
668+ /**
669+ * \brief Opaque type encapsulating a velocity update.
670+ * \ingroup location_service
671+ */
672+ typedef struct UbuntuApplicationLocationVelocityUpdate UALocationVelocityUpdate;
673+
674+ /**
675+ * \brief Increments the reference count of the velocity update instance.
676+ * \ingroup location_service
677+ * \param[in] update The velocity update instance to increment the reference count for.
678+ */
679+ void
680+ ua_location_velocity_update_ref(
681+ UALocationVelocityUpdate *update);
682+
683+ /**
684+ * \brief Decrements the reference count of the velocity update instance.
685+ * \ingroup location_service
686+ * \param[in] update The velocity update instance to decrement the reference count for.
687+ */
688+ void
689+ ua_location_velocity_update_unref(
690+ UALocationVelocityUpdate *update);
691+
692+ /**
693+ * \brief Queries the timestamp of the velocity update.
694+ * \ingroup location_service
695+ * \returns The timestamp of the position update in [µs].
696+ * \param[in] update The velocity update instance to be queried.
697+ */
698+ uint64_t
699+ ua_location_velocity_update_get_timestamp(
700+ UALocationVelocityUpdate *update);
701+
702+ /**
703+ * \brief Queries the velocity contained in the position update.
704+ * \ingroup location_service
705+ * \returns The velocity in the position update in [m/s].
706+ * \param[in] update The velocity update instance to be queried.
707+ */
708+ double
709+ ua_location_velocity_update_get_velocity_in_meters_per_second(
710+ UALocationVelocityUpdate *update);
711+
712+#ifdef __cplusplus
713+}
714+#endif
715+
716+#endif // UBUNTU_APPLICATION_LOCATION_VELOCITY_UPDATE_H_
717
718=== modified file 'src/CMakeLists.txt'
719--- src/CMakeLists.txt 2013-06-17 23:37:58 +0000
720+++ src/CMakeLists.txt 2013-07-30 05:35:33 +0000
721@@ -2,18 +2,4 @@
722 ${CMAKE_CURRENT_SOURCE_DIR}
723 )
724
725-if(ENABLE_HYBRIS_IMPLEMENTATION)
726- add_subdirectory(hybris/)
727-endif()
728-
729-if(ENABLE_MIRSERVER_IMPLEMENTATION OR ENABLE_MIRCLIENT_IMPLEMENTATION)
730- add_subdirectory(mircommon/)
731-endif()
732-
733-if(ENABLE_MIRSERVER_IMPLEMENTATION)
734- add_subdirectory(mirserver/)
735-endif()
736-
737-if(ENABLE_MIRCLIENT_IMPLEMENTATION)
738- add_subdirectory(mirclient/)
739-endif()
740+add_subdirectory(ubuntu)
741\ No newline at end of file
742
743=== removed directory 'src/hybris'
744=== removed file 'src/hybris/CMakeLists.txt'
745--- src/hybris/CMakeLists.txt 2013-06-20 12:37:44 +0000
746+++ src/hybris/CMakeLists.txt 1970-01-01 00:00:00 +0000
747@@ -1,53 +0,0 @@
748-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++0x")
749-
750-add_library(
751- ubuntu_application_api SHARED
752-
753- ubuntu_application_api_hybris.cpp
754- ubuntu_application_sensors_hybris.cpp
755-)
756-
757-add_library(
758- ubuntu_platform_hardware_api SHARED
759- ubuntu_platform_hardware_api.cpp
760-)
761-
762-include_directories(
763- ${CMAKE_BINARY_DIR}/include
764-)
765-
766-target_link_libraries(
767- ubuntu_application_api
768- hybris-common
769-)
770-
771-target_link_libraries(
772- ubuntu_platform_hardware_api
773- hybris-common
774-)
775-
776-set_target_properties(
777- ubuntu_application_api
778- PROPERTIES
779- VERSION ${UBUNTU_PLATFORM_API_VERSION_MAJOR}.${UBUNTU_PLATFORM_API_VERSION_MINOR}.${UBUNTU_PLATFORM_API_VERSION_PATCH}
780- SOVERSION ${UBUNTU_PLATFORM_API_VERSION_MAJOR}
781-)
782-
783-set_target_properties(
784- ubuntu_platform_hardware_api
785- PROPERTIES
786- VERSION ${UBUNTU_PLATFORM_API_VERSION_MAJOR}.${UBUNTU_PLATFORM_API_VERSION_MINOR}.${UBUNTU_PLATFORM_API_VERSION_PATCH}
787- SOVERSION ${UBUNTU_PLATFORM_API_VERSION_MAJOR}
788-)
789-
790-install(
791- TARGETS ubuntu_application_api
792- ${INSTALL_TARGETS_DEFAULT_ARGS}
793-)
794-
795-install(
796- TARGETS ubuntu_platform_hardware_api
797- ${INSTALL_TARGETS_DEFAULT_ARGS}
798-)
799-
800-add_subdirectory(tests/)
801
802=== removed file 'src/hybris/bridge.h'
803--- src/hybris/bridge.h 2013-07-05 10:30:08 +0000
804+++ src/hybris/bridge.h 1970-01-01 00:00:00 +0000
805@@ -1,202 +0,0 @@
806-/*
807- * Copyright (C) 2012 Canonical Ltd
808- *
809- * This program is free software: you can redistribute it and/or modify
810- * it under the terms of the GNU Lesser General Public License version 3 as
811- * published by the Free Software Foundation.
812- *
813- * This program is distributed in the hope that it will be useful,
814- * but WITHOUT ANY WARRANTY; without even the implied warranty of
815- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
816- * GNU Lesser General Public License for more details.
817- *
818- * You should have received a copy of the GNU Lesser General Public License
819- * along with this program. If not, see <http://www.gnu.org/licenses/>.
820- *
821- * Authored by: Thomas Voss <thomas.voss@canonical.com>
822- * Ricardo Mendoza <ricardo.mendoza@canonical.com>
823- */
824-#ifndef BRIDGE_H_
825-#define BRIDGE_H_
826-
827-#include <assert.h>
828-#include <dlfcn.h>
829-#include <stddef.h>
830-
831-#define HIDDEN_SYMBOL __attribute__ ((visibility ("hidden")))
832-
833-#ifdef __cplusplus
834-extern "C" {
835-#endif
836-
837-extern void *android_dlopen(const char *filename, int flag);
838-extern void *android_dlsym(void *handle, const char *symbol);
839-
840-#ifdef __cplusplus
841-}
842-#endif
843-
844-namespace internal
845-{
846-
847-struct HIDDEN_SYMBOL ToApplication
848-{
849- static const char* path()
850- {
851- return "/system/lib/libubuntu_application_api.so";
852- }
853-};
854-
855-struct HIDDEN_SYMBOL ToHardware
856-{
857- static const char* path()
858- {
859- return "/system/lib/libubuntu_platform_hardware_api.so";
860- }
861-};
862-
863-template<typename Scope = ToApplication>
864-class HIDDEN_SYMBOL Bridge
865-{
866- public:
867- static Bridge<Scope>& instance()
868- {
869- static Bridge<Scope> bridge;
870- return bridge;
871- }
872-
873- void* resolve_symbol(const char* symbol) const
874- {
875- return android_dlsym(lib_handle, symbol);
876- }
877-
878- protected:
879- Bridge() : lib_handle(android_dlopen(Scope::path(), RTLD_LAZY))
880- {
881- assert(lib_handle && "Error loading ubuntu_application_api");
882- }
883-
884- ~Bridge()
885- {
886- // TODO android_dlclose(libcamera_handle);
887- }
888-
889- void* lib_handle;
890-};
891-
892-}
893-
894-#ifdef __cplusplus
895-extern "C" {
896-#endif
897-
898-/**********************************************************/
899-/*********** Implementation starts here *******************/
900-/**********************************************************/
901-
902-#define DLSYM(fptr, sym) if (*(fptr) == NULL) { *((void**)fptr) = (void *) internal::Bridge<>::instance().resolve_symbol(sym); }
903-
904-#define IMPLEMENT_FUNCTION0(return_type, symbol) \
905- return_type symbol() \
906- { \
907- static return_type (*f)() = NULL; \
908- DLSYM(&f, #symbol); \
909- return f();}
910-
911-#define IMPLEMENT_VOID_FUNCTION0(symbol) \
912- void symbol() \
913- { \
914- static void (*f)() = NULL; \
915- DLSYM(&f, #symbol); \
916- f();}
917-
918-#define IMPLEMENT_FUNCTION1(return_type, symbol, arg1) \
919- return_type symbol(arg1 _1) \
920- { \
921- static return_type (*f)(arg1) = NULL; \
922- DLSYM(&f, #symbol); \
923- return f(_1); }
924-
925-#define IMPLEMENT_SF_FUNCTION1(return_type, symbol, arg1) \
926- return_type symbol(arg1 _1) \
927- { \
928- static return_type (*f)(arg1) __attribute__((pcs("aapcs"))) = NULL; \
929- DLSYM(&f, #symbol); \
930- return f(_1); }
931-
932-
933-#define IMPLEMENT_VOID_FUNCTION1(symbol, arg1) \
934- void symbol(arg1 _1) \
935- { \
936- static void (*f)(arg1) = NULL; \
937- DLSYM(&f, #symbol); \
938- f(_1); }
939-
940-#define IMPLEMENT_FUNCTION2(return_type, symbol, arg1, arg2) \
941- return_type symbol(arg1 _1, arg2 _2) \
942- { \
943- static return_type (*f)(arg1, arg2) = NULL; \
944- DLSYM(&f, #symbol); \
945- return f(_1, _2); }
946-
947-#define IMPLEMENT_VOID_FUNCTION2(symbol, arg1, arg2) \
948- void symbol(arg1 _1, arg2 _2) \
949- { \
950- static void (*f)(arg1, arg2) = NULL; \
951- DLSYM(&f, #symbol); \
952- f(_1, _2); }
953-
954-#define IMPLEMENT_FUNCTION3(return_type, symbol, arg1, arg2, arg3) \
955- return_type symbol(arg1 _1, arg2 _2, arg3 _3) \
956- { \
957- static return_type (*f)(arg1, arg2, arg3) = NULL; \
958- DLSYM(&f, #symbol); \
959- return f(_1, _2, _3); }
960-
961-#define IMPLEMENT_VOID_FUNCTION3(symbol, arg1, arg2, arg3) \
962- void symbol(arg1 _1, arg2 _2, arg3 _3) \
963- { \
964- static void (*f)(arg1, arg2, arg3) = NULL; \
965- DLSYM(&f, #symbol); \
966- f(_1, _2, _3); }
967-
968-#define IMPLEMENT_VOID_FUNCTION4(symbol, arg1, arg2, arg3, arg4) \
969- void symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4) \
970- { \
971- static void (*f)(arg1, arg2, arg3, arg4) = NULL; \
972- DLSYM(&f, #symbol); \
973- f(_1, _2, _3, _4); }
974-
975-#define IMPLEMENT_FUNCTION4(return_type, symbol, arg1, arg2, arg3, arg4) \
976- return_type symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4) \
977- { \
978- static return_type (*f)(arg1, arg2, arg3, arg4) = NULL; \
979- DLSYM(&f, #symbol); \
980- return f(_1, _2, _3, _4); }
981-
982-#define IMPLEMENT_FUNCTION6(return_type, symbol, arg1, arg2, arg3, arg4, arg5, arg6) \
983- return_type symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4, arg5 _5, arg6 _6) \
984- { \
985- static return_type (*f)(arg1, arg2, arg3, arg4, arg5, arg6) = NULL; \
986- DLSYM(&f, #symbol); \
987- return f(_1, _2, _3, _4, _5, _6); }
988-
989-#define IMPLEMENT_VOID_FUNCTION7(symbol, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
990- void symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4, arg5 _5, arg6 _6, arg7 _7) \
991- { \
992- static void (*f)(arg1, arg2, arg3, arg4, arg5, arg6, arg7) = NULL; \
993- DLSYM(&f, #symbol); \
994- f(_1, _2, _3, _4, _5, _6, _7); }
995-
996-#define IMPLEMENT_VOID_FUNCTION8(symbol, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
997- void symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4, arg5 _5, arg6 _6, arg7 _7, arg8 _8) \
998- { \
999- static void (*f)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) = NULL; \
1000- DLSYM(&f, #symbol); \
1001- f(_1, _2, _3, _4, _5, _6, _7, _8); }
1002-
1003-#ifdef __cplusplus
1004-}
1005-#endif
1006-
1007-#endif // BRIDGE_H_
1008
1009=== removed directory 'src/hybris/tests'
1010=== removed file 'src/hybris/tests/CMakeLists.txt'
1011--- src/hybris/tests/CMakeLists.txt 2013-06-20 12:37:44 +0000
1012+++ src/hybris/tests/CMakeLists.txt 1970-01-01 00:00:00 +0000
1013@@ -1,25 +0,0 @@
1014-set(SOURCES ubuntu_application_api_hybris.cpp)
1015-
1016-add_executable(test_android_ubuntu_app_api test_c_api.cpp)
1017-target_link_libraries(test_android_ubuntu_app_api ubuntu_application_api EGL GLESv2)
1018-
1019-add_executable(test_android_gps_api test_gps_api.cpp)
1020-target_link_libraries(test_android_gps_api ubuntu_platform_hardware_api)
1021-
1022-add_executable(test_android_ubuntu_app_api_multiple_surfaces test_multiple_surfaces_event_delivery.cpp)
1023-target_link_libraries(test_android_ubuntu_app_api_multiple_surfaces ubuntu_application_api EGL GLESv2)
1024-
1025-add_executable(test_android_sensors_api test_sensors_api.cpp)
1026-target_link_libraries(test_android_sensors_api ubuntu_application_api)
1027-
1028-add_executable(test_android_ubuntu_session_api test_session_c_api.cpp)
1029-target_link_libraries(test_android_ubuntu_session_api ubuntu_application_api)
1030-
1031-install(TARGETS
1032- test_android_ubuntu_app_api
1033- test_android_gps_api
1034- test_android_ubuntu_app_api_multiple_surfaces
1035- test_android_sensors_api
1036- test_android_ubuntu_session_api
1037- DESTINATION bin
1038-)
1039
1040=== removed file 'src/hybris/tests/test_c_api.cpp'
1041--- src/hybris/tests/test_c_api.cpp 2013-05-21 22:14:40 +0000
1042+++ src/hybris/tests/test_c_api.cpp 1970-01-01 00:00:00 +0000
1043@@ -1,329 +0,0 @@
1044-/*
1045- * Copyright © 2012 Canonical Ltd.
1046- *
1047- * This program is free software: you can redistribute it and/or modify
1048- * it under the terms of the GNU General Public License version 3 as
1049- * published by the Free Software Foundation.
1050- *
1051- * This program is distributed in the hope that it will be useful,
1052- * but WITHOUT ANY WARRANTY; without even the implied warranty of
1053- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1054- * GNU General Public License for more details.
1055- *
1056- * You should have received a copy of the GNU General Public License
1057- * along with this program. If not, see <http://www.gnu.org/licenses/>.
1058- *
1059- * Authored by: Thomas Voß <thomas.voss@canonical.com>
1060- */
1061-
1062-#include <ubuntu/application/ui/window.h>
1063-#include <ubuntu/application/ui/options.h>
1064-#include <ubuntu/application/ui/display.h>
1065-#include <ubuntu/application/ui/session.h>
1066-
1067-#include <EGL/egl.h>
1068-#include <GLES2/gl2.h>
1069-#include <GLES2/gl2ext.h>
1070-
1071-#include <cassert>
1072-#include <cstdio>
1073-#include <cstdlib>
1074-#include <cstring>
1075-
1076-struct View
1077-{
1078- static const char* vertex_shader();
1079- static const char* fragment_shader();
1080-
1081- static GLuint load_shader(GLenum shaderType, const char* pSource);
1082- static GLuint create_program(const char* pVertexSource, const char* pFragmentSource);
1083-
1084- static const GLfloat* triangle()
1085- {
1086- static const GLfloat result[] =
1087- {
1088- -0.125f, -0.125f, 0.0f, 0.5f,
1089- 0.0f, 0.125f, 0.0f, 0.5f,
1090- 0.125f, -0.125f, 0.0f, 0.5f
1091- };
1092-
1093- return result;
1094- }
1095-
1096- static const GLfloat* color_triangle()
1097- {
1098- static const GLfloat result[] =
1099- {
1100- 0.0f, 0.0f, 1.0f, 1.0f,
1101- 0.0f, 1.0f, 0.0f, 1.0f,
1102- 1.0f, 0.0f, 0.0f, 0.0f
1103- };
1104-
1105- return result;
1106- }
1107-
1108- View(UAUiWindow* surface);
1109-
1110- void render();
1111- void step();
1112-
1113- UAUiWindow* surface;
1114- EGLDisplay egl_display;
1115- EGLSurface egl_surface;
1116- EGLConfig egl_config;
1117- EGLContext egl_context;
1118-
1119- GLfloat rotation_angle;
1120-
1121- GLuint gProgram;
1122- GLuint gvPositionHandle, gvColorHandle;
1123- GLuint rotation_uniform;
1124- GLint num_vertex;
1125- const GLfloat * vertex_data;
1126- const GLfloat * color_data;
1127-};
1128-
1129-void on_new_event(void* ctx, const Event* ev)
1130-{
1131-}
1132-
1133-int main(int argc, char** argv)
1134-{
1135- UApplicationOptions* options = u_application_options_new_from_cmd_line(argc, argv);
1136-
1137- UApplicationDescription* desc = u_application_description_new();
1138- UApplicationId* id = u_application_id_new_from_stringn("UbuntuApplicationCAPI", 21);
1139- u_application_description_set_application_id(desc, id);
1140- UApplicationInstance* instance = u_application_instance_new_from_description_with_options(desc, options);
1141-
1142- UAUiSessionProperties* props = ua_ui_session_properties_new();
1143- ua_ui_session_properties_set_type(props, U_USER_SESSION);
1144-
1145- UAUiSession* ua_ui_session_new_with_properties(props);
1146-
1147- UAUiDisplay* display = ua_ui_display_new_with_index(0);
1148-
1149- printf("Display resolution: (x,y) = (%d,%d)\n",
1150- ua_ui_display_query_horizontal_res(display),
1151- ua_ui_display_query_vertical_res(display));
1152-
1153- UAUiWindowProperties* wprops = ua_ui_window_properties_new_for_normal_window();
1154- ua_ui_window_properties_set_titlen(wprops, "Window 1", 8);
1155- ua_ui_window_properties_set_role(wprops, U_MAIN_ROLE);
1156- ua_ui_window_properties_set_input_cb_and_ctx(wprops, on_new_event, NULL);
1157-
1158- UAUiWindow* surface = ua_ui_window_new_for_application_with_properties(instance, wprops);
1159-
1160- View view(surface);
1161- while(true)
1162- {
1163- view.render();
1164- view.step();
1165- }
1166-}
1167-
1168-const char* View::vertex_shader()
1169-{
1170- static const char shader[] =
1171- "attribute vec4 vPosition;\n"
1172- "attribute vec4 vColor;\n"
1173- "uniform float angle;\n"
1174- "varying vec4 colorinfo;\n"
1175- "void main() {\n"
1176- " mat3 rot_z = mat3( vec3( cos(angle), sin(angle), 0.0),\n"
1177- " vec3(-sin(angle), cos(angle), 0.0),\n"
1178- " vec3( 0.0, 0.0, 1.0));\n"
1179- " gl_Position = vec4(rot_z * vPosition.xyz, 1.0);\n"
1180- " colorinfo = vColor;\n"
1181- "}\n";
1182-
1183- return shader;
1184-}
1185-
1186-const char* View::fragment_shader()
1187-{
1188- static const char shader[] =
1189- "precision mediump float;\n"
1190- "varying vec4 colorinfo;\n"
1191- "void main() {\n"
1192- " gl_FragColor = colorinfo;\n"
1193- "}\n";
1194-
1195- return shader;
1196-}
1197-
1198-GLuint View::load_shader(GLenum shaderType, const char* pSource) {
1199- GLuint shader = glCreateShader(shaderType);
1200- if (shader) {
1201- glShaderSource(shader, 1, &pSource, NULL);
1202- glCompileShader(shader);
1203- GLint compiled = 0;
1204- glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
1205- if (!compiled) {
1206- GLint infoLen = 0;
1207- glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
1208- if (infoLen) {
1209- char* buf = (char*) malloc(infoLen);
1210- if (buf) {
1211- glGetShaderInfoLog(shader, infoLen, NULL, buf);
1212- fprintf(stderr, "Could not compile shader %d:\n%s\n",
1213- shaderType, buf);
1214- free(buf);
1215- }
1216- glDeleteShader(shader);
1217- shader = 0;
1218- }
1219- }
1220- } else
1221- {
1222- printf("Error, during shader creation: %i\n", glGetError());
1223- }
1224- return shader;
1225-}
1226-
1227-GLuint View::create_program(const char* pVertexSource, const char* pFragmentSource) {
1228- GLuint vertexShader = load_shader(GL_VERTEX_SHADER, pVertexSource);
1229- if (!vertexShader) {
1230- printf("vertex shader not compiled\n");
1231- return 0;
1232- }
1233-
1234- GLuint pixelShader = load_shader(GL_FRAGMENT_SHADER, pFragmentSource);
1235- if (!pixelShader) {
1236- printf("frag shader not compiled\n");
1237- return 0;
1238- }
1239-
1240- GLuint program = glCreateProgram();
1241- if (program) {
1242- glAttachShader(program, vertexShader);
1243- glAttachShader(program, pixelShader);
1244- glLinkProgram(program);
1245- GLint linkStatus = GL_FALSE;
1246- glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
1247- if (linkStatus != GL_TRUE) {
1248- GLint bufLength = 0;
1249- glGetProgramiv(program, GL_INFO_LOG_LENGTH, &bufLength);
1250- if (bufLength) {
1251- char* buf = (char*) malloc(bufLength);
1252- if (buf) {
1253- glGetProgramInfoLog(program, bufLength, NULL, buf);
1254- fprintf(stderr, "Could not link program:\n%s\n", buf);
1255- free(buf);
1256- }
1257- }
1258- glDeleteProgram(program);
1259- program = 0;
1260- }
1261- }
1262- return program;
1263-}
1264-
1265-View::View(UAUiWindow* surface)
1266- : surface(surface),
1267- rotation_angle(0.f),
1268- num_vertex(3)
1269-{
1270- // assert(eglBindAPI(EGL_OPENGL_ES_API) == EGL_TRUE);
1271- egl_display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
1272- assert(egl_display != EGL_NO_DISPLAY);
1273- EGLint major, minor;
1274- if (EGL_FALSE == eglInitialize(egl_display, &major, &minor))
1275- {
1276- printf("egl error: problem initializing.\n");
1277- exit(1);
1278- }
1279-
1280- EGLint attribs[] =
1281- {
1282- EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
1283- EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
1284- EGL_NONE
1285- };
1286- EGLint n;
1287- if (EGL_FALSE == eglChooseConfig(
1288- egl_display,
1289- attribs,
1290- &egl_config,
1291- 1,
1292- &n))
1293- {
1294- printf("egl error: Cannot choose configuration.\n");
1295- }
1296-
1297- EGLint context_attribs[] =
1298- {
1299- EGL_CONTEXT_CLIENT_VERSION, 2,
1300- EGL_NONE
1301- };
1302-
1303- egl_context = eglCreateContext(
1304- egl_display,
1305- egl_config,
1306- EGL_NO_CONTEXT,
1307- context_attribs);
1308-
1309- assert(EGL_NO_CONTEXT != egl_context);
1310-
1311- EGLNativeWindowType nativeWindow = ua_ui_window_get_native_type(surface);
1312- egl_surface = eglCreateWindowSurface(egl_display, egl_config, nativeWindow, NULL);
1313-
1314- eglMakeCurrent(
1315- egl_display,
1316- egl_surface,
1317- egl_surface,
1318- egl_context);
1319-
1320- vertex_data = triangle();
1321- color_data = color_triangle();
1322-
1323- gProgram = create_program(vertex_shader(), fragment_shader());
1324- if (!gProgram)
1325- {
1326- printf("error making program\n");
1327- return;
1328- }
1329-
1330- gvPositionHandle = glGetAttribLocation(gProgram, "vPosition");
1331- gvColorHandle = glGetAttribLocation(gProgram, "vColor");
1332-
1333- rotation_uniform = glGetUniformLocation(gProgram, "angle");
1334-
1335- return;
1336-}
1337-
1338-void View::render()
1339-{
1340- glUseProgram(gProgram);
1341-
1342- glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
1343-
1344- glUniform1fv(rotation_uniform, 1, &rotation_angle);
1345-
1346- glVertexAttribPointer(
1347- gvColorHandle,
1348- num_vertex,
1349- GL_FLOAT,
1350- GL_FALSE,
1351- sizeof(GLfloat)*4, color_data);
1352- glVertexAttribPointer(
1353- gvPositionHandle,
1354- num_vertex,
1355- GL_FLOAT,
1356- GL_FALSE,
1357- 0,
1358- vertex_data);
1359- glEnableVertexAttribArray(gvPositionHandle);
1360- glEnableVertexAttribArray(gvColorHandle);
1361-
1362- glDrawArrays(GL_TRIANGLE_STRIP, 0, num_vertex);
1363- glDisableVertexAttribArray(gvPositionHandle);
1364- glDisableVertexAttribArray(gvColorHandle);
1365-
1366- eglSwapBuffers(egl_display, egl_surface);
1367-}
1368-
1369-void View::step()
1370-{
1371- rotation_angle += 0.01;
1372-}
1373
1374=== removed file 'src/hybris/tests/test_gps_api.cpp'
1375--- src/hybris/tests/test_gps_api.cpp 2013-06-13 08:07:21 +0000
1376+++ src/hybris/tests/test_gps_api.cpp 1970-01-01 00:00:00 +0000
1377@@ -1,252 +0,0 @@
1378-/*
1379- * Copyright © 2013 Canonical Ltd.
1380- *
1381- * This program is free software: you can redistribute it and/or modify
1382- * it under the terms of the GNU General Public License version 3 as
1383- * published by the Free Software Foundation.
1384- *
1385- * This program is distributed in the hope that it will be useful,
1386- * but WITHOUT ANY WARRANTY; without even the implied warranty of
1387- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1388- * GNU General Public License for more details.
1389- *
1390- * You should have received a copy of the GNU General Public License
1391- * along with this program. If not, see <http://www.gnu.org/licenses/>.
1392- *
1393- * Authored by: Daniel d'Andrada <daniel.dandrada@canonical.com>
1394- */
1395-#include <ubuntu/hardware/gps.h>
1396-
1397-#include <ctime>
1398-#include <signal.h>
1399-#include <stdio.h>
1400-#include <string.h>
1401-#include <unistd.h>
1402-
1403-namespace ubuntu
1404-{
1405-class GPSTest
1406-{
1407- public:
1408- GPSTest();
1409- ~GPSTest();
1410- bool init_and_start();
1411- bool stop();
1412- void inject_time();
1413-
1414- UHardwareGps u_hardware_gps;
1415-};
1416-
1417-void gps_location_cb(UHardwareGpsLocation* location, void* context)
1418-{
1419- printf("gps_location_cb() called.\n");
1420-}
1421-
1422-void gps_status_cb(uint16_t status, void* context)
1423-{
1424- switch(status)
1425- {
1426- case U_HARDWARE_GPS_STATUS_NONE:
1427- printf("status: None\n");
1428- break;
1429- case U_HARDWARE_GPS_STATUS_SESSION_BEGIN:
1430- printf("status: Session Begin\n");
1431- break;
1432- case U_HARDWARE_GPS_STATUS_SESSION_END:
1433- printf("status: Session End\n");
1434- break;
1435- case U_HARDWARE_GPS_STATUS_ENGINE_ON:
1436- printf("status: Engine On\n");
1437- break;
1438- case U_HARDWARE_GPS_STATUS_ENGINE_OFF:
1439- printf("status: Engine Off\n");
1440- default:
1441- break;
1442- };
1443-}
1444-
1445-void gps_sb_status_cb(UHardwareGpsSvStatus* sv_info, void* context)
1446-{
1447- printf("gps_sb_status_cb() called, listing %d space vehicles\n", sv_info->num_svs);
1448-}
1449-
1450-void gps_nmea_cb(int64_t timestamp, const char* nmea, int length, void* context)
1451-{
1452- char str[length+1];
1453- memcpy(str, nmea, length);
1454- str[length] = 0;
1455- printf("gps_nmea_cb() - %s\n", str);
1456-}
1457-
1458-void gps_set_cabapilities_cb(uint32_t capabilities, void* context)
1459-{
1460- printf("gps_set_cabapilities_cb() -");
1461-
1462- if (capabilities & U_HARDWARE_GPS_CAPABILITY_SCHEDULING)
1463- printf(" scheduling");
1464- if (capabilities & U_HARDWARE_GPS_CAPABILITY_MSB)
1465- printf(" MSB");
1466- if (capabilities & U_HARDWARE_GPS_CAPABILITY_MSA)
1467- printf(" MSA");
1468- if (capabilities & U_HARDWARE_GPS_CAPABILITY_SINGLE_SHOT)
1469- printf(" 'single shot'");
1470- if (capabilities & U_HARDWARE_GPS_CAPABILITY_ON_DEMAND_TIME)
1471- printf(" 'on demand time'");
1472-
1473- printf("\n");
1474-}
1475-
1476-void gps_request_utc_time_cb(void* context)
1477-{
1478- printf("gps_request_utc_time_cb() called.\n");
1479- ((GPSTest*)context)->inject_time();
1480-}
1481-
1482-void gps_xtra_download_request_cb(void* context)
1483-{
1484- printf("gps_xtra_download_request_cb() called.\n");
1485-}
1486-
1487-void agps_status_cb(UHardwareGpsAGpsStatus* status, void* context)
1488-{
1489- printf("agps status -");
1490-
1491- if (status->type == U_HARDWARE_GPS_AGPS_TYPE_SUPL)
1492- printf(" SUPL");
1493- else
1494- printf(" C2K");
1495-
1496- switch (status->status)
1497- {
1498- case U_HARDWARE_GPS_REQUEST_AGPS_DATA_CONN:
1499- printf(", request AGPS data connection");
1500- break;
1501- case U_HARDWARE_GPS_RELEASE_AGPS_DATA_CONN:
1502- printf(", release AGPS data connection");
1503- break;
1504- case U_HARDWARE_GPS_AGPS_DATA_CONNECTED:
1505- printf(", request AGPS data connected");
1506- break;
1507- case U_HARDWARE_GPS_AGPS_DATA_CONN_DONE:
1508- printf(", AGPS data connection done");
1509- break;
1510- default:
1511- case U_HARDWARE_GPS_AGPS_DATA_CONN_FAILED:
1512- printf(", AGPS data connection failed");
1513- break;
1514- }
1515-
1516- printf(" ipaddr=%u\n", status->ipaddr);
1517-}
1518-
1519-void gps_notify_cb(UHardwareGpsNiNotification *notification, void* context)
1520-{
1521- printf("gps_notify_cb() called.\n");
1522-}
1523-
1524-void agps_ril_request_set_id_cb(uint32_t flags, void* context)
1525-{
1526- printf("agps_ril_request_set_id_cb() called.\n");
1527-}
1528-
1529-void agps_ril_request_refloc_cb(uint32_t flags, void* context)
1530-{
1531- printf("agps_ril_request_refloc_cb() called.\n");
1532-}
1533-
1534-GPSTest::GPSTest()
1535- : u_hardware_gps(NULL)
1536-{
1537-}
1538-
1539-GPSTest::~GPSTest()
1540-{
1541- if (u_hardware_gps)
1542- u_hardware_gps_delete(u_hardware_gps);
1543-}
1544-
1545-void GPSTest::inject_time()
1546-{
1547- // A real implementation would inject time from some NTP server.
1548- time_t t = time(0);
1549- int64_t time_millis = (int64_t)t * (int64_t)1000;
1550- u_hardware_gps_inject_time(u_hardware_gps,
1551- time_millis /*NTP time would go here*/,
1552- time_millis /*internal time when that NTP time was taken*/,
1553- 10 /* possible deviation, in milliseconds*/);
1554-}
1555-
1556-bool GPSTest::init_and_start()
1557-{
1558- UHardwareGpsParams gps_params;
1559-
1560- gps_params.location_cb = gps_location_cb;
1561- gps_params.status_cb = gps_status_cb;
1562- gps_params.sv_status_cb = gps_sb_status_cb;
1563- gps_params.nmea_cb = gps_nmea_cb;
1564- gps_params.set_capabilities_cb = gps_set_cabapilities_cb;
1565- gps_params.request_utc_time_cb = gps_request_utc_time_cb;
1566- gps_params.xtra_download_request_cb = gps_xtra_download_request_cb;
1567- gps_params.agps_status_cb = agps_status_cb;
1568- gps_params.gps_ni_notify_cb = gps_notify_cb;
1569- gps_params.request_setid_cb = agps_ril_request_set_id_cb;
1570- gps_params.request_refloc_cb = agps_ril_request_refloc_cb;
1571- gps_params.context = this;
1572-
1573- UHardwareGps u_hardware_gps = u_hardware_gps_new(&gps_params);
1574- if (!u_hardware_gps)
1575- {
1576- printf("GPS creation failed!\n");
1577- return false;
1578- }
1579-
1580- bool ok = u_hardware_gps_start(u_hardware_gps);
1581- if (!ok)
1582- {
1583- printf("GPS start up failed!\n");
1584- return false;
1585- }
1586-
1587- return true;
1588-}
1589-
1590-bool GPSTest::stop()
1591-{
1592- bool ok = u_hardware_gps_stop(u_hardware_gps);
1593- if (!ok)
1594- printf("failed when stopping GPS!\n");
1595-
1596- return ok;
1597-}
1598-}
1599-
1600-void wait_for_sigint()
1601-{
1602- sigset_t signals;
1603- sigemptyset(&signals);
1604- sigaddset(&signals, SIGINT);
1605-
1606- int sig;
1607- int result = sigwait(&signals, &sig);
1608- if (result != 0)
1609- printf("sigwait failed!\n");
1610-}
1611-
1612-int main(int argc, char** argv)
1613-{
1614- int return_value = 0;
1615- ubuntu::GPSTest test;
1616-
1617- if (!test.init_and_start())
1618- return 1;
1619-
1620- printf("GPS initialized and started. Now waiting for callbacks or SIGINT (to quit).\n");
1621- wait_for_sigint();
1622- printf("Exiting...\n");
1623-
1624- if (!test.stop())
1625- return 1;
1626-
1627- printf("GPS stopped.\n");
1628- return 0;
1629-}
1630
1631=== removed file 'src/hybris/tests/test_multiple_surfaces_event_delivery.cpp'
1632--- src/hybris/tests/test_multiple_surfaces_event_delivery.cpp 2013-05-21 22:14:40 +0000
1633+++ src/hybris/tests/test_multiple_surfaces_event_delivery.cpp 1970-01-01 00:00:00 +0000
1634@@ -1,351 +0,0 @@
1635-/*
1636- * Copyright © 2012 Canonical Ltd.
1637- *
1638- * This program is free software: you can redistribute it and/or modify
1639- * it under the terms of the GNU General Public License version 3 as
1640- * published by the Free Software Foundation.
1641- *
1642- * This program is distributed in the hope that it will be useful,
1643- * but WITHOUT ANY WARRANTY; without even the implied warranty of
1644- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1645- * GNU General Public License for more details.
1646- *
1647- * You should have received a copy of the GNU General Public License
1648- * along with this program. If not, see <http://www.gnu.org/licenses/>.
1649- *
1650- * Authored by: Thomas Voß <thomas.voss@canonical.com>
1651- */
1652-
1653-#include <ubuntu/application/ui/window.h>
1654-#include <ubuntu/application/ui/options.h>
1655-#include <ubuntu/application/ui/display.h>
1656-#include <ubuntu/application/ui/session.h>
1657-
1658-#include <EGL/egl.h>
1659-#include <GLES2/gl2.h>
1660-#include <GLES2/gl2ext.h>
1661-
1662-#include <cassert>
1663-#include <cstdio>
1664-#include <cstdlib>
1665-#include <cstring>
1666-
1667-struct View
1668-{
1669- static const char* vertex_shader();
1670- static const char* fragment_shader();
1671-
1672- static GLuint load_shader(GLenum shaderType, const char* pSource);
1673- static GLuint create_program(const char* pVertexSource, const char* pFragmentSource);
1674-
1675- static const GLfloat* triangle()
1676- {
1677- static const GLfloat result[] =
1678- {
1679- -0.125f, -0.125f, 0.0f, 0.5f,
1680- 0.0f, 0.125f, 0.0f, 0.5f,
1681- 0.125f, -0.125f, 0.0f, 0.5f
1682- };
1683-
1684- return result;
1685- }
1686-
1687- static const GLfloat* color_triangle()
1688- {
1689- static const GLfloat result[] =
1690- {
1691- 0.0f, 0.0f, 1.0f, 1.0f,
1692- 0.0f, 1.0f, 0.0f, 1.0f,
1693- 1.0f, 0.0f, 0.0f, 0.0f
1694- };
1695-
1696- return result;
1697- }
1698-
1699- View(UAUiWindow* surface);
1700-
1701- void render();
1702- void step();
1703-
1704- UAUiWindow* surface;
1705- EGLDisplay egl_display;
1706- EGLSurface egl_surface;
1707- EGLConfig egl_config;
1708- EGLContext egl_context;
1709-
1710- GLfloat rotation_angle;
1711-
1712- GLuint gProgram;
1713- GLuint gvPositionHandle, gvColorHandle;
1714- GLuint rotation_uniform;
1715- GLint num_vertex;
1716- const GLfloat * vertex_data;
1717- const GLfloat * color_data;
1718-};
1719-
1720-void on_new_event(void* ctx, const Event* ev)
1721-{
1722- int* surface = (int*) ctx;
1723-
1724- printf("%s for surface: %d \n", __PRETTY_FUNCTION__, *surface);
1725-}
1726-
1727-int main(int argc, char** argv)
1728-{
1729- UApplicationOptions* options = u_application_options_new_from_cmd_line(argc, argv);
1730-
1731- UApplicationDescription* desc = u_application_description_new();
1732- UApplicationId* id = u_application_id_new_from_stringn("UbuntuApplicationCAPI", 21);
1733- u_application_description_set_application_id(desc, id);
1734- UApplicationInstance* instance = u_application_instance_new_from_description_with_options(desc, options);
1735-
1736- UAUiSessionProperties* props = ua_ui_session_properties_new();
1737- ua_ui_session_properties_set_type(props, U_USER_SESSION);
1738-
1739- UAUiSession* ua_ui_session_new_with_properties(props);
1740-
1741- UAUiDisplay* display = ua_ui_display_new_with_index(0);
1742-
1743- printf("Display resolution: (x,y) = (%d,%d)\n",
1744- ua_ui_display_query_horizontal_res(display),
1745- ua_ui_display_query_vertical_res(display));
1746-
1747- int i = 1, j = 2;
1748-
1749- UAUiWindowProperties* wprops1 = ua_ui_window_properties_new_for_normal_window();
1750- ua_ui_window_properties_set_titlen(wprops1, "Window 1", 8);
1751- ua_ui_window_properties_set_role(wprops1, U_MAIN_ROLE);
1752- ua_ui_window_properties_set_input_cb_and_ctx(wprops1, on_new_event, &i);
1753-
1754- UAUiWindow* surface1 = ua_ui_window_new_for_application_with_properties(instance, wprops1);
1755-
1756- UAUiWindowProperties* wprops2 = ua_ui_window_properties_new_for_normal_window();
1757- ua_ui_window_properties_set_titlen(wprops2, "Window 2", 8);
1758- ua_ui_window_properties_set_role(wprops2, U_MAIN_ROLE);
1759- ua_ui_window_properties_set_input_cb_and_ctx(wprops2, on_new_event, &j);
1760-
1761- UAUiWindow* surface2 = ua_ui_window_new_for_application_with_properties(instance, wprops2);
1762-
1763- View view1(surface1);
1764- View view2(surface2);
1765- while(true)
1766- {
1767- view1.render();
1768- view2.render();
1769-
1770- view1.step();
1771- view2.step();
1772- }
1773-}
1774-
1775-const char* View::vertex_shader()
1776-{
1777- static const char shader[] =
1778- "attribute vec4 vPosition;\n"
1779- "attribute vec4 vColor;\n"
1780- "uniform float angle;\n"
1781- "varying vec4 colorinfo;\n"
1782- "void main() {\n"
1783- " mat3 rot_z = mat3( vec3( cos(angle), sin(angle), 0.0),\n"
1784- " vec3(-sin(angle), cos(angle), 0.0),\n"
1785- " vec3( 0.0, 0.0, 1.0));\n"
1786- " gl_Position = vec4(rot_z * vPosition.xyz, 1.0);\n"
1787- " colorinfo = vColor;\n"
1788- "}\n";
1789-
1790- return shader;
1791-}
1792-
1793-const char* View::fragment_shader()
1794-{
1795- static const char shader[] =
1796- "precision mediump float;\n"
1797- "varying vec4 colorinfo;\n"
1798- "void main() {\n"
1799- " gl_FragColor = colorinfo;\n"
1800- "}\n";
1801-
1802- return shader;
1803-}
1804-
1805-GLuint View::load_shader(GLenum shaderType, const char* pSource) {
1806- GLuint shader = glCreateShader(shaderType);
1807- if (shader) {
1808- glShaderSource(shader, 1, &pSource, NULL);
1809- glCompileShader(shader);
1810- GLint compiled = 0;
1811- glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
1812- if (!compiled) {
1813- GLint infoLen = 0;
1814- glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
1815- if (infoLen) {
1816- char* buf = (char*) malloc(infoLen);
1817- if (buf) {
1818- glGetShaderInfoLog(shader, infoLen, NULL, buf);
1819- fprintf(stderr, "Could not compile shader %d:\n%s\n",
1820- shaderType, buf);
1821- free(buf);
1822- }
1823- glDeleteShader(shader);
1824- shader = 0;
1825- }
1826- }
1827- } else
1828- {
1829- printf("Error, during shader creation: %i\n", glGetError());
1830- }
1831- return shader;
1832-}
1833-
1834-GLuint View::create_program(const char* pVertexSource, const char* pFragmentSource) {
1835- GLuint vertexShader = load_shader(GL_VERTEX_SHADER, pVertexSource);
1836- if (!vertexShader) {
1837- printf("vertex shader not compiled\n");
1838- return 0;
1839- }
1840-
1841- GLuint pixelShader = load_shader(GL_FRAGMENT_SHADER, pFragmentSource);
1842- if (!pixelShader) {
1843- printf("frag shader not compiled\n");
1844- return 0;
1845- }
1846-
1847- GLuint program = glCreateProgram();
1848- if (program) {
1849- glAttachShader(program, vertexShader);
1850- glAttachShader(program, pixelShader);
1851- glLinkProgram(program);
1852- GLint linkStatus = GL_FALSE;
1853- glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
1854- if (linkStatus != GL_TRUE) {
1855- GLint bufLength = 0;
1856- glGetProgramiv(program, GL_INFO_LOG_LENGTH, &bufLength);
1857- if (bufLength) {
1858- char* buf = (char*) malloc(bufLength);
1859- if (buf) {
1860- glGetProgramInfoLog(program, bufLength, NULL, buf);
1861- fprintf(stderr, "Could not link program:\n%s\n", buf);
1862- free(buf);
1863- }
1864- }
1865- glDeleteProgram(program);
1866- program = 0;
1867- }
1868- }
1869- return program;
1870-}
1871-
1872-View::View(UAUiWindow* surface)
1873- : surface(surface),
1874- rotation_angle(0.f),
1875- num_vertex(3)
1876-{
1877- // assert(eglBindAPI(EGL_OPENGL_ES_API) == EGL_TRUE);
1878- egl_display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
1879- assert(egl_display != EGL_NO_DISPLAY);
1880- EGLint major, minor;
1881- if (EGL_FALSE == eglInitialize(egl_display, &major, &minor))
1882- {
1883- printf("egl error: problem initializing.\n");
1884- exit(1);
1885- }
1886-
1887- EGLint attribs[] =
1888- {
1889- EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
1890- EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
1891- EGL_NONE
1892- };
1893- EGLint n;
1894- if (EGL_FALSE == eglChooseConfig(
1895- egl_display,
1896- attribs,
1897- &egl_config,
1898- 1,
1899- &n))
1900- {
1901- printf("egl error: Cannot choose configuration.\n");
1902- }
1903-
1904- EGLint context_attribs[] =
1905- {
1906- EGL_CONTEXT_CLIENT_VERSION, 2,
1907- EGL_NONE
1908- };
1909-
1910- egl_context = eglCreateContext(
1911- egl_display,
1912- egl_config,
1913- EGL_NO_CONTEXT,
1914- context_attribs);
1915-
1916- assert(EGL_NO_CONTEXT != egl_context);
1917-
1918- EGLNativeWindowType nativeWindow = ua_ui_window_get_native_type(surface);
1919- egl_surface = eglCreateWindowSurface(egl_display, egl_config, nativeWindow, NULL);
1920-
1921- eglMakeCurrent(
1922- egl_display,
1923- egl_surface,
1924- egl_surface,
1925- egl_context);
1926-
1927- vertex_data = triangle();
1928- color_data = color_triangle();
1929-
1930- gProgram = create_program(vertex_shader(), fragment_shader());
1931- if (!gProgram)
1932- {
1933- printf("error making program\n");
1934- return;
1935- }
1936-
1937- gvPositionHandle = glGetAttribLocation(gProgram, "vPosition");
1938- gvColorHandle = glGetAttribLocation(gProgram, "vColor");
1939-
1940- rotation_uniform = glGetUniformLocation(gProgram, "angle");
1941-
1942- return;
1943-}
1944-
1945-void View::render()
1946-{
1947- eglMakeCurrent(
1948- egl_display,
1949- egl_surface,
1950- egl_surface,
1951- egl_context);
1952-
1953- glUseProgram(gProgram);
1954-
1955- glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
1956-
1957- glUniform1fv(rotation_uniform, 1, &rotation_angle);
1958-
1959- glVertexAttribPointer(
1960- gvColorHandle,
1961- num_vertex,
1962- GL_FLOAT,
1963- GL_FALSE,
1964- sizeof(GLfloat)*4, color_data);
1965- glVertexAttribPointer(
1966- gvPositionHandle,
1967- num_vertex,
1968- GL_FLOAT,
1969- GL_FALSE,
1970- 0,
1971- vertex_data);
1972- glEnableVertexAttribArray(gvPositionHandle);
1973- glEnableVertexAttribArray(gvColorHandle);
1974-
1975- glDrawArrays(GL_TRIANGLE_STRIP, 0, num_vertex);
1976- glDisableVertexAttribArray(gvPositionHandle);
1977- glDisableVertexAttribArray(gvColorHandle);
1978-
1979- eglSwapBuffers(egl_display, egl_surface);
1980-}
1981-
1982-void View::step()
1983-{
1984- rotation_angle += 0.01;
1985-}
1986
1987=== removed file 'src/hybris/tests/test_sensors_api.cpp'
1988--- src/hybris/tests/test_sensors_api.cpp 2013-05-30 02:03:42 +0000
1989+++ src/hybris/tests/test_sensors_api.cpp 1970-01-01 00:00:00 +0000
1990@@ -1,88 +0,0 @@
1991-/*
1992- * Copyright © 2012 Canonical Ltd.
1993- *
1994- * This program is free software: you can redistribute it and/or modify
1995- * it under the terms of the GNU General Public License version 3 as
1996- * published by the Free Software Foundation.
1997- *
1998- * This program is distributed in the hope that it will be useful,
1999- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2000- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2001- * GNU General Public License for more details.
2002- *
2003- * You should have received a copy of the GNU General Public License
2004- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2005- *
2006- * Authored by: Ricardo Mendoza <ricardo.mendoza@canonical.com>
2007- */
2008-
2009-#include <stdint.h>
2010-#include <stdio.h>
2011-#include <string.h>
2012-
2013-#include <ubuntu/application/sensors/accelerometer.h>
2014-#include <ubuntu/application/sensors/proximity.h>
2015-#include <ubuntu/application/sensors/light.h>
2016-
2017-void on_new_accelerometer_event(UASAccelerometerEvent* event, void* context)
2018-{
2019- printf("%s \n", __PRETTY_FUNCTION__);
2020- printf("\ttime: %llu\n", uas_accelerometer_event_get_timestamp(event));
2021- printf("\tx: %f\n", uas_accelerometer_event_get_acceleration_x(event));
2022- printf("\ty: %f\n", uas_accelerometer_event_get_acceleration_y(event));
2023- printf("\tz: %f\n", uas_accelerometer_event_get_acceleration_z(event));
2024-}
2025-
2026-void on_new_proximity_event(UASProximityEvent* event, void* context)
2027-{
2028- printf("%s \n", __PRETTY_FUNCTION__);
2029- printf("\ttime: %llu\n", uas_proximity_event_get_timestamp(event));
2030-
2031- switch (uas_proximity_event_get_distance(event))
2032- {
2033- case U_PROXIMITY_NEAR:
2034- {
2035- printf("\tdistance: NEAR\n");
2036- break;
2037- }
2038- case U_PROXIMITY_FAR:
2039- {
2040- printf("\tdistance: FAR\n");
2041- break;
2042- }
2043- }
2044-}
2045-
2046-void on_new_light_event(UASLightEvent* event, void* context)
2047-{
2048- printf("%s \n", __PRETTY_FUNCTION__);
2049- printf("\ttime: %llu\n", uas_light_event_get_timestamp(event));
2050- printf("\tlight: %f\n", uas_light_event_get_light(event));
2051-}
2052-
2053-int main(int argc, char** argv)
2054-{
2055- UASensorsAccelerometer* accelerometer = ua_sensors_accelerometer_new();
2056- UASensorsProximity* proximity = ua_sensors_proximity_new();
2057- UASensorsLight* ambientlight = ua_sensors_light_new();
2058-
2059- ua_sensors_accelerometer_set_reading_cb(accelerometer,
2060- on_new_accelerometer_event,
2061- NULL);
2062-
2063- ua_sensors_proximity_set_reading_cb(proximity,
2064- on_new_proximity_event,
2065- NULL);
2066-
2067- ua_sensors_light_set_reading_cb(ambientlight,
2068- on_new_light_event,
2069- NULL);
2070-
2071- ua_sensors_accelerometer_enable(accelerometer);
2072- ua_sensors_proximity_enable(proximity);
2073- ua_sensors_light_enable(ambientlight);
2074-
2075- while(true)
2076- {
2077- }
2078-}
2079
2080=== removed file 'src/hybris/tests/test_session_c_api.cpp'
2081--- src/hybris/tests/test_session_c_api.cpp 2013-02-13 23:09:01 +0000
2082+++ src/hybris/tests/test_session_c_api.cpp 1970-01-01 00:00:00 +0000
2083@@ -1,229 +0,0 @@
2084-/*
2085- * Copyright © 2012 Canonical Ltd.
2086- *
2087- * This program is free software: you can redistribute it and/or modify
2088- * it under the terms of the GNU General Public License version 3 as
2089- * published by the Free Software Foundation.
2090- *
2091- * This program is distributed in the hope that it will be useful,
2092- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2093- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2094- * GNU General Public License for more details.
2095- *
2096- * You should have received a copy of the GNU General Public License
2097- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2098- *
2099- * Authored by: Thomas Voß <thomas.voss@canonical.com>
2100- */
2101-
2102-#include <ubuntu/ui/ubuntu_ui_session_service.h>
2103-
2104-#include <getopt.h>
2105-
2106-#include <stdio.h>
2107-#include <stdint.h>
2108-#include <string.h>
2109-#include <time.h>
2110-
2111-typedef union
2112-{
2113- struct Components
2114- {
2115- uint8_t r;
2116- uint8_t g;
2117- uint8_t b;
2118- uint8_t a;
2119- } components;
2120- uint32_t value;
2121-} Pixel;
2122-
2123-struct Config
2124-{
2125- Config() : take_screencast_flag(0),
2126- take_screenshot_flag(0)
2127- {
2128- }
2129-
2130- int take_screencast_flag;
2131- int take_screenshot_flag;
2132-};
2133-
2134-void on_snapshot_completed(const void* pixel_data, unsigned int width, unsigned int height, unsigned int x, unsigned int y, unsigned int source_width, unsigned int source_height, unsigned int stride, void* context)
2135-{
2136- static unsigned int counter = 0;
2137-
2138- printf("%s: (%p, %d, %d, %d) \n",
2139- __PRETTY_FUNCTION__,
2140- pixel_data,
2141- width,
2142- height,
2143- stride);
2144-
2145- static const char snapshot_pattern[] = "./snapshot_%I_%M_%S.ppm";
2146- static const char frame_pattern[] = "./frame_%I_%M_%S.raw";
2147-
2148- char fn[256];
2149-
2150- int take_screenshot = 1;
2151- int take_screencast = 0;
2152-
2153- if (context != NULL)
2154- {
2155- Config* config = (Config*) context;
2156-
2157- take_screenshot = config->take_screenshot_flag;
2158- take_screencast = config->take_screencast_flag;
2159- }
2160-
2161- time_t curtime;
2162- struct tm *loctime;
2163-
2164- curtime = time (NULL);
2165- loctime = localtime (&curtime);
2166-
2167- static const char screenshot_file_mode[] = "w+";
2168- static const char screencast_file_mode[] = "wb+";
2169-
2170- FILE* f = NULL;
2171- if (take_screenshot)
2172- {
2173- strftime(fn, 256, snapshot_pattern, loctime);
2174- f = fopen(fn, screenshot_file_mode);
2175- } else if (take_screencast)
2176- {
2177- strftime(fn, 256, frame_pattern, loctime);
2178- f = fopen(fn, screencast_file_mode);
2179- }
2180-
2181- if (!f)
2182- {
2183- printf("Problem opening file: %s \n", fn);
2184- return;
2185- }
2186-
2187- if (take_screenshot)
2188- {
2189- const unsigned int* p = static_cast<const unsigned int*>(pixel_data);
2190-
2191- fprintf(f, "P3\n%d %d\n%d\n\n", width, height, 255);
2192- for(unsigned int i = 0; i < height; i++)
2193- {
2194- for(unsigned int j = 0; j < width; j++)
2195- {
2196- Pixel pixel; pixel.value = *p; ++p;
2197- fprintf(
2198- f, "%d %d %d\t",
2199- pixel.components.r,
2200- pixel.components.g,
2201- pixel.components.b);
2202- }
2203- }
2204- }
2205- else if (take_screencast)
2206- {
2207- fwrite(pixel_data, sizeof(unsigned int), width*height, f);
2208- ubuntu_ui_session_snapshot_running_session_with_id(
2209- -1,
2210- on_snapshot_completed,
2211- context);
2212- }
2213-}
2214-
2215-void on_session_born(ubuntu_ui_session_properties props, void*)
2216-{
2217- printf("%s:\n\t Id: %d \n\t Desktop file hint: %s \n",
2218- __PRETTY_FUNCTION__,
2219- ubuntu_ui_session_properties_get_application_instance_id(props),
2220- ubuntu_ui_session_properties_get_desktop_file_hint(props));
2221-
2222- ubuntu_ui_session_snapshot_running_session_with_id(
2223- ubuntu_ui_session_properties_get_application_instance_id(props),
2224- on_snapshot_completed,
2225- NULL);
2226-}
2227-
2228-void on_session_focused(ubuntu_ui_session_properties props, void*)
2229-{
2230- printf("%s:\n\t Id: %d \n\t Desktop file hint: %s \n",
2231- __PRETTY_FUNCTION__,
2232- ubuntu_ui_session_properties_get_application_instance_id(props),
2233- ubuntu_ui_session_properties_get_desktop_file_hint(props));
2234-}
2235-
2236-void on_session_died(ubuntu_ui_session_properties props, void*)
2237-{
2238- printf("%s:\n\t Id: %d \n\t Desktop file hint: %s \n",
2239- __PRETTY_FUNCTION__,
2240- ubuntu_ui_session_properties_get_application_instance_id(props),
2241- ubuntu_ui_session_properties_get_desktop_file_hint(props));
2242-}
2243-
2244-
2245-
2246-Config parse_cmd_line(int argc, char** argv)
2247-{
2248- Config config;
2249- static struct option long_options[] = {
2250- {"take-screencast", no_argument, &config.take_screencast_flag, 1},
2251- {"take-screenshot", no_argument, &config.take_screenshot_flag, 1}
2252- };
2253-
2254- while (true)
2255- {
2256- int option_index = 0;
2257-
2258- int c = getopt_long(
2259- argc,
2260- argv,
2261- "",
2262- long_options,
2263- &option_index);
2264-
2265- if (c == -1)
2266- break;
2267-
2268- switch (c)
2269- {
2270- case 0:
2271- // No need to do anything here: Flag is set automatically.
2272- break;
2273- default:
2274- break;
2275- }
2276- }
2277-
2278- return config;
2279-}
2280-
2281-int main(int argc, char** argv)
2282-{
2283- static const int complete_session_id = -1;
2284-
2285- Config config = parse_cmd_line(argc, argv);
2286-
2287- if (config.take_screenshot_flag || config.take_screencast_flag)
2288- {
2289- ubuntu_ui_session_snapshot_running_session_with_id(
2290- complete_session_id,
2291- on_snapshot_completed,
2292- &config);
2293-
2294- return 0;
2295- }
2296-
2297- ubuntu_ui_session_lifecycle_observer observer;
2298-
2299- memset(&observer, 0, sizeof(observer));
2300- observer.on_session_born = on_session_born;
2301- observer.on_session_focused = on_session_focused;
2302- observer.on_session_died = on_session_died;
2303-
2304- ubuntu_ui_session_install_session_lifecycle_observer(&observer);
2305-
2306- while(true)
2307- {
2308- }
2309-
2310- return 0;
2311-}
2312-
2313
2314=== removed file 'src/hybris/ubuntu_application_api_hybris.cpp'
2315--- src/hybris/ubuntu_application_api_hybris.cpp 2013-06-20 12:37:44 +0000
2316+++ src/hybris/ubuntu_application_api_hybris.cpp 1970-01-01 00:00:00 +0000
2317@@ -1,130 +0,0 @@
2318-/*
2319- * Copyright (C) 2012 Canonical Ltd
2320- *
2321- * This program is free software: you can redistribute it and/or modify
2322- * it under the terms of the GNU Lesser General Public License version 3 as
2323- * published by the Free Software Foundation.
2324- *
2325- * This program is distributed in the hope that it will be useful,
2326- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2327- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2328- * GNU Lesser General Public License for more details.
2329- *
2330- * You should have received a copy of the GNU Lesser General Public License
2331- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2332- *
2333- * Authored by: Thomas Voss <thomas.voss@canonical.com>
2334- * Ricardo Mendoza <ricardo.mendoza@canonical.com>
2335- */
2336-
2337-#include <private/application/ui/ubuntu_application_ui.h>
2338-
2339-#include <ubuntu/ui/ubuntu_ui_session_service.h>
2340-
2341-// C APIs
2342-#include <ubuntu/application/lifecycle_delegate.h>
2343-#include <ubuntu/application/ui/window.h>
2344-#include <ubuntu/application/ui/options.h>
2345-#include <ubuntu/application/ui/session.h>
2346-#include <ubuntu/application/ui/clipboard.h>
2347-#include <ubuntu/application/ui/display.h>
2348-
2349-#include "bridge.h"
2350-
2351-#ifdef __cplusplus
2352-extern "C" {
2353-#endif
2354-
2355-// Session helpers
2356-IMPLEMENT_FUNCTION0(UAUiSessionProperties*, ua_ui_session_properties_new);
2357-IMPLEMENT_VOID_FUNCTION2(ua_ui_session_properties_set_type, UAUiSessionProperties*, UAUiSessionType);
2358-IMPLEMENT_VOID_FUNCTION2(ua_ui_session_properties_set_remote_pid, UAUiSessionProperties*, uint32_t);
2359-IMPLEMENT_FUNCTION1(UAUiSession*, ua_ui_session_new_with_properties, UAUiSessionProperties*);
2360-
2361-// Lifecycle helpers
2362-IMPLEMENT_FUNCTION0(UApplicationLifecycleDelegate*, u_application_lifecycle_delegate_new);
2363-IMPLEMENT_VOID_FUNCTION2(u_application_lifecycle_delegate_set_context, UApplicationLifecycleDelegate*, void*);
2364-IMPLEMENT_VOID_FUNCTION1(u_application_lifecycle_delegate_ref, UApplicationLifecycleDelegate*);
2365-IMPLEMENT_VOID_FUNCTION1(u_application_lifecycle_delegate_unref, UApplicationLifecycleDelegate*);
2366-IMPLEMENT_VOID_FUNCTION2(u_application_lifecycle_delegate_set_application_resumed_cb, UApplicationLifecycleDelegate*, u_on_application_resumed);
2367-IMPLEMENT_VOID_FUNCTION2(u_application_lifecycle_delegate_set_application_about_to_stop_cb, UApplicationLifecycleDelegate*, u_on_application_about_to_stop);
2368-
2369-// Application Helpers
2370-
2371-// UApplicationId
2372-IMPLEMENT_FUNCTION2(UApplicationId*, u_application_id_new_from_stringn, const char*, size_t);
2373-IMPLEMENT_VOID_FUNCTION1(u_application_id_destroy, UApplicationId*);
2374-IMPLEMENT_FUNCTION2(int, u_application_id_compare, UApplicationId*, UApplicationId*);
2375-
2376-// UApplicationDescription
2377-IMPLEMENT_FUNCTION0(UApplicationDescription*, u_application_description_new);
2378-IMPLEMENT_VOID_FUNCTION1(u_application_description_destroy, UApplicationDescription*);
2379-IMPLEMENT_VOID_FUNCTION2(u_application_description_set_application_id, UApplicationDescription*, UApplicationId*);
2380-IMPLEMENT_VOID_FUNCTION2(u_application_description_set_application_lifecycle_delegate, UApplicationDescription*, UApplicationLifecycleDelegate*);
2381-
2382-// UApplicationOptions
2383-IMPLEMENT_FUNCTION2(UApplicationOptions*, u_application_options_new_from_cmd_line, int, char**);
2384-IMPLEMENT_VOID_FUNCTION1(u_application_options_destroy, UApplicationOptions*);
2385-IMPLEMENT_FUNCTION1(UAUiFormFactor, u_application_options_get_form_factor, UApplicationOptions*);
2386-IMPLEMENT_FUNCTION1(UAUiStage, u_application_options_get_stage, UApplicationOptions*);
2387-
2388-// UApplicationInstance
2389-IMPLEMENT_FUNCTION2(UApplicationInstance*, u_application_instance_new_from_description_with_options, UApplicationDescription*, UApplicationOptions*);
2390-
2391-// Application Ui Helpers
2392-
2393-// Clipboard
2394-IMPLEMENT_VOID_FUNCTION2(ua_ui_set_clipboard_content, void*, size_t);
2395-IMPLEMENT_VOID_FUNCTION2(ua_ui_get_clipboard_content, void**, size_t*);
2396-
2397-// UAUiDisplay
2398-IMPLEMENT_FUNCTION1(UAUiDisplay*, ua_ui_display_new_with_index, size_t);
2399-IMPLEMENT_VOID_FUNCTION1(ua_ui_display_destroy, UAUiDisplay*);
2400-IMPLEMENT_FUNCTION1(uint32_t, ua_ui_display_query_horizontal_res, UAUiDisplay*);
2401-IMPLEMENT_FUNCTION1(uint32_t, ua_ui_display_query_vertical_res, UAUiDisplay*);
2402-IMPLEMENT_FUNCTION1(EGLNativeDisplayType, ua_ui_display_get_native_type, UAUiDisplay*);
2403-
2404-
2405-// UAUiWindowProperties
2406-IMPLEMENT_FUNCTION0(UAUiWindowProperties*, ua_ui_window_properties_new_for_normal_window);
2407-IMPLEMENT_VOID_FUNCTION1(ua_ui_window_properties_destroy, UAUiWindowProperties*);
2408-IMPLEMENT_VOID_FUNCTION3(ua_ui_window_properties_set_titlen, UAUiWindowProperties*, const char*, size_t);
2409-IMPLEMENT_FUNCTION1(const char*, ua_ui_window_properties_get_title, UAUiWindowProperties*);
2410-IMPLEMENT_VOID_FUNCTION2(ua_ui_window_properties_set_role, UAUiWindowProperties*, UAUiWindowRole);
2411-IMPLEMENT_VOID_FUNCTION3(ua_ui_window_properties_set_input_cb_and_ctx, UAUiWindowProperties*, UAUiWindowInputEventCb, void*);
2412-
2413-// UAUiWindow
2414-IMPLEMENT_FUNCTION2(UAUiWindow*, ua_ui_window_new_for_application_with_properties, UApplicationInstance*, UAUiWindowProperties*);
2415-IMPLEMENT_VOID_FUNCTION1(ua_ui_window_destroy, UAUiWindow*);
2416-IMPLEMENT_FUNCTION3(UStatus, ua_ui_window_move, UAUiWindow*, uint32_t, uint32_t);
2417-IMPLEMENT_FUNCTION3(UStatus, ua_ui_window_resize, UAUiWindow*, uint32_t, uint32_t);
2418-IMPLEMENT_FUNCTION1(UStatus, ua_ui_window_hide, UAUiWindow*);
2419-IMPLEMENT_FUNCTION1(UStatus, ua_ui_window_show, UAUiWindow*);
2420-IMPLEMENT_VOID_FUNCTION1(ua_ui_window_request_fullscreen, UAUiWindow*);
2421-IMPLEMENT_FUNCTION1(EGLNativeWindowType, ua_ui_window_get_native_type, UAUiWindow*);
2422-
2423-/* -------------------------------------------------------------------------- *
2424- * * * * * * * * * * * * * * * Deprecated API * * * * * * * * * * * * * * * * *
2425- * -------------------------------------------------------------------------- *
2426- */
2427-
2428-// Session service
2429-IMPLEMENT_FUNCTION1(int, ubuntu_ui_session_properties_get_application_instance_id, ubuntu_ui_session_properties);
2430-IMPLEMENT_FUNCTION1(int, ubuntu_ui_session_properties_get_application_stage_hint, ubuntu_ui_session_properties);
2431-IMPLEMENT_FUNCTION1(const char*, ubuntu_ui_session_properties_get_desktop_file_hint, ubuntu_ui_session_properties);
2432-IMPLEMENT_VOID_FUNCTION1(ubuntu_ui_session_install_session_lifecycle_observer, ubuntu_ui_session_lifecycle_observer*);
2433-IMPLEMENT_VOID_FUNCTION0(ubuntu_ui_session_unfocus_running_sessions);
2434-IMPLEMENT_VOID_FUNCTION1(ubuntu_ui_session_focus_running_session_with_id, int);
2435-IMPLEMENT_VOID_FUNCTION3(ubuntu_ui_session_snapshot_running_session_with_id, int, ubuntu_ui_session_service_snapshot_cb, void*);
2436-IMPLEMENT_VOID_FUNCTION1(ubuntu_ui_session_trigger_switch_to_well_known_application, ubuntu_ui_well_known_application);
2437-IMPLEMENT_FUNCTION4(int32_t, ubuntu_ui_set_surface_trap, int, int, int, int);
2438-IMPLEMENT_VOID_FUNCTION1(ubuntu_ui_unset_surface_trap, int);
2439-IMPLEMENT_VOID_FUNCTION4(ubuntu_ui_report_osk_visible, int, int, int, int);
2440-IMPLEMENT_VOID_FUNCTION0(ubuntu_ui_report_osk_invisible);
2441-IMPLEMENT_VOID_FUNCTION0(ubuntu_ui_report_notification_visible);
2442-IMPLEMENT_VOID_FUNCTION0(ubuntu_ui_report_notification_invisible);
2443-IMPLEMENT_VOID_FUNCTION1(ubuntu_ui_install_task_controller, ubuntu_ui_task_controller*);
2444-
2445-#ifdef __cplusplus
2446-}
2447-#endif
2448
2449=== removed file 'src/hybris/ubuntu_application_sensors_hybris.cpp'
2450--- src/hybris/ubuntu_application_sensors_hybris.cpp 2013-06-20 12:37:44 +0000
2451+++ src/hybris/ubuntu_application_sensors_hybris.cpp 1970-01-01 00:00:00 +0000
2452@@ -1,70 +0,0 @@
2453-/*
2454- * Copyright (C) 2012 Canonical Ltd
2455- *
2456- * This program is free software: you can redistribute it and/or modify
2457- * it under the terms of the GNU Lesser General Public License version 3 as
2458- * published by the Free Software Foundation.
2459- *
2460- * This program is distributed in the hope that it will be useful,
2461- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2462- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2463- * GNU Lesser General Public License for more details.
2464- *
2465- * You should have received a copy of the GNU Lesser General Public License
2466- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2467- *
2468- * Authored by: Thomas Voss <thomas.voss@canonical.com>
2469- * Ricardo Mendoza <ricardo.mendoza@canonical.com>
2470- */
2471-
2472-#include <ubuntu/application/sensors/accelerometer.h>
2473-#include <ubuntu/application/sensors/proximity.h>
2474-#include <ubuntu/application/sensors/light.h>
2475-
2476-#include "bridge.h"
2477-
2478-// Ubuntu Application Sensors
2479-
2480-// Acceleration Sensor
2481-IMPLEMENT_FUNCTION0(UASensorsAccelerometer*, ua_sensors_accelerometer_new);
2482-IMPLEMENT_FUNCTION1(UStatus, ua_sensors_accelerometer_enable, UASensorsAccelerometer*);
2483-IMPLEMENT_FUNCTION1(UStatus, ua_sensors_accelerometer_disable, UASensorsAccelerometer*);
2484-IMPLEMENT_FUNCTION1(uint32_t, ua_sensors_accelerometer_get_min_delay, UASensorsAccelerometer*);
2485-IMPLEMENT_SF_FUNCTION1(float, ua_sensors_accelerometer_get_min_value, UASensorsAccelerometer*);
2486-IMPLEMENT_SF_FUNCTION1(float, ua_sensors_accelerometer_get_max_value, UASensorsAccelerometer*);
2487-IMPLEMENT_SF_FUNCTION1(float, ua_sensors_accelerometer_get_resolution, UASensorsAccelerometer*);
2488-IMPLEMENT_VOID_FUNCTION3(ua_sensors_accelerometer_set_reading_cb, UASensorsAccelerometer*, on_accelerometer_event_cb, void*);
2489-
2490-// Acceleration Sensor Event
2491-IMPLEMENT_FUNCTION1(uint64_t, uas_accelerometer_event_get_timestamp, UASAccelerometerEvent*);
2492-IMPLEMENT_SF_FUNCTION1(float, uas_accelerometer_event_get_acceleration_x, UASAccelerometerEvent*);
2493-IMPLEMENT_SF_FUNCTION1(float, uas_accelerometer_event_get_acceleration_y, UASAccelerometerEvent*);
2494-IMPLEMENT_SF_FUNCTION1(float, uas_accelerometer_event_get_acceleration_z, UASAccelerometerEvent*);
2495-
2496-// Proximity Sensor
2497-IMPLEMENT_FUNCTION0(UASensorsProximity*, ua_sensors_proximity_new);
2498-IMPLEMENT_FUNCTION1(UStatus, ua_sensors_proximity_enable, UASensorsProximity*);
2499-IMPLEMENT_FUNCTION1(UStatus, ua_sensors_proximity_disable, UASensorsProximity*);
2500-IMPLEMENT_FUNCTION1(uint32_t, ua_sensors_proximity_get_min_delay, UASensorsProximity*);
2501-IMPLEMENT_SF_FUNCTION1(float, ua_sensors_proximity_get_min_value, UASensorsProximity*);
2502-IMPLEMENT_SF_FUNCTION1(float, ua_sensors_proximity_get_max_value, UASensorsProximity*);
2503-IMPLEMENT_SF_FUNCTION1(float, ua_sensors_proximity_get_resolution, UASensorsProximity*);
2504-IMPLEMENT_VOID_FUNCTION3(ua_sensors_proximity_set_reading_cb, UASensorsProximity*, on_proximity_event_cb, void*);
2505-
2506-// Proximity Sensor Event
2507-IMPLEMENT_FUNCTION1(uint64_t, uas_proximity_event_get_timestamp, UASProximityEvent*);
2508-IMPLEMENT_FUNCTION1(UASProximityDistance, uas_proximity_event_get_distance, UASProximityEvent*);
2509-
2510-// Ambient Light Sensor
2511-IMPLEMENT_FUNCTION0(UASensorsLight*, ua_sensors_light_new);
2512-IMPLEMENT_FUNCTION1(UStatus, ua_sensors_light_enable, UASensorsLight*);
2513-IMPLEMENT_FUNCTION1(UStatus, ua_sensors_light_disable, UASensorsLight*);
2514-IMPLEMENT_FUNCTION1(uint32_t, ua_sensors_light_get_min_delay, UASensorsLight*);
2515-IMPLEMENT_SF_FUNCTION1(float, ua_sensors_light_get_min_value, UASensorsLight*);
2516-IMPLEMENT_SF_FUNCTION1(float, ua_sensors_light_get_max_value, UASensorsLight*);
2517-IMPLEMENT_SF_FUNCTION1(float, ua_sensors_light_get_resolution, UASensorsLight*);
2518-IMPLEMENT_VOID_FUNCTION3(ua_sensors_light_set_reading_cb, UASensorsLight*, on_light_event_cb, void*);
2519-
2520-// Ambient Light Sensor Event
2521-IMPLEMENT_FUNCTION1(uint64_t, uas_light_event_get_timestamp, UASLightEvent*);
2522-IMPLEMENT_SF_FUNCTION1(float, uas_light_event_get_light, UASLightEvent*);
2523
2524=== removed file 'src/hybris/ubuntu_platform_hardware_api.cpp'
2525--- src/hybris/ubuntu_platform_hardware_api.cpp 2013-06-13 08:37:52 +0000
2526+++ src/hybris/ubuntu_platform_hardware_api.cpp 1970-01-01 00:00:00 +0000
2527@@ -1,78 +0,0 @@
2528-/*
2529- * Copyright (C) 2012 Canonical Ltd
2530- *
2531- * This program is free software: you can redistribute it and/or modify
2532- * it under the terms of the GNU Lesser General Public License version 3 as
2533- * published by the Free Software Foundation.
2534- *
2535- * This program is distributed in the hope that it will be useful,
2536- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2537- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2538- * GNU Lesser General Public License for more details.
2539- *
2540- * You should have received a copy of the GNU Lesser General Public License
2541- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2542- *
2543- * Authored by: Thomas Voss <thomas.voss@canonical.com>
2544- * Ricardo Mendoza <ricardo.mendoza@canonical.com>
2545- */
2546-
2547-// C APIs
2548-#include <ubuntu/hardware/gps.h>
2549-
2550-#include "bridge.h"
2551-
2552-// Hardware - GPS
2553-IMPLEMENT_FUNCTION1(
2554-UHardwareGps,
2555-u_hardware_gps_new,
2556-UHardwareGpsParams*);
2557-
2558-IMPLEMENT_VOID_FUNCTION1(
2559-u_hardware_gps_delete,
2560-UHardwareGps);
2561-
2562-IMPLEMENT_FUNCTION1(
2563-bool,
2564-u_hardware_gps_start,
2565-UHardwareGps);
2566-
2567-IMPLEMENT_FUNCTION1(
2568-bool,
2569-u_hardware_gps_stop,
2570-UHardwareGps);
2571-
2572-IMPLEMENT_VOID_FUNCTION4(
2573-u_hardware_gps_inject_time,
2574-UHardwareGps,
2575-int64_t,
2576-int64_t,
2577-int);
2578-
2579-IMPLEMENT_VOID_FUNCTION4(
2580-u_hardware_gps_inject_location,
2581-UHardwareGps,
2582-double,
2583-double,
2584-float);
2585-
2586-IMPLEMENT_VOID_FUNCTION2(
2587-u_hardware_gps_delete_aiding_data,
2588-UHardwareGps,
2589-uint16_t);
2590-
2591-IMPLEMENT_FUNCTION6(
2592-bool,
2593-u_hardware_gps_set_position_mode,
2594-UHardwareGps,
2595-uint32_t,
2596-uint32_t,
2597-uint32_t,
2598-uint32_t,
2599-uint32_t);
2600-
2601-IMPLEMENT_VOID_FUNCTION3(
2602-u_hardware_gps_inject_xtra_data,
2603-UHardwareGps,
2604-char*,
2605-int);
2606
2607=== removed directory 'src/mirclient'
2608=== removed file 'src/mirclient/CMakeLists.txt'
2609--- src/mirclient/CMakeLists.txt 2013-06-07 23:27:45 +0000
2610+++ src/mirclient/CMakeLists.txt 1970-01-01 00:00:00 +0000
2611@@ -1,34 +0,0 @@
2612-set(SOURCES
2613- ubuntu_application_api_mirclient.cpp
2614- application_instance_mirclient.cpp
2615- window_properties_mirclient.cpp
2616- window_mirclient.cpp
2617-)
2618-
2619-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11 -fPIC")
2620-
2621-add_library(
2622- ubuntu_application_api_mirclient SHARED
2623- ${SOURCES}
2624-)
2625-
2626-include_directories(
2627- ${CMAKE_BINARY_DIR}/include
2628- ${MIRCLIENT_INCLUDE_DIRS}
2629-)
2630-
2631-target_link_libraries(
2632- ubuntu_application_api_mirclient
2633- ${MIRCLIENT_LDFLAGS} ${MIRCLIENT_LIBRARIES}
2634- -Wl,--whole-archive ubuntu_application_api_mircommon
2635- -Wl,--no-whole-archive
2636-)
2637-
2638-set_target_properties(
2639- ubuntu_application_api_mirclient
2640- PROPERTIES
2641- VERSION 1.0
2642- SOVERSION 1
2643-)
2644-
2645-install(TARGETS ubuntu_application_api_mirclient ${INSTALL_TARGETS_DEFAULT_ARGS})
2646
2647=== removed file 'src/mirclient/application_instance_mirclient.cpp'
2648--- src/mirclient/application_instance_mirclient.cpp 2013-06-07 20:56:22 +0000
2649+++ src/mirclient/application_instance_mirclient.cpp 1970-01-01 00:00:00 +0000
2650@@ -1,68 +0,0 @@
2651-/*
2652- * Copyright (C) 2013 Canonical Ltd
2653- *
2654- * This program is free software: you can redistribute it and/or modify
2655- * it under the terms of the GNU Lesser General Public License version 3 as
2656- * published by the Free Software Foundation.
2657- *
2658- * This program is distributed in the hope that it will be useful,
2659- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2660- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2661- * GNU Lesser General Public License for more details.
2662- *
2663- * You should have received a copy of the GNU Lesser General Public License
2664- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2665- *
2666- * Authored by: Robert Carr <robert.carr@canonical.com>
2667- */
2668-
2669-#include "application_instance_mirclient_priv.h"
2670-
2671-namespace uamc = ubuntu::application::mir::client;
2672-
2673-uamc::Instance::Instance()
2674- : con(nullptr),
2675- ref_count(1)
2676-{
2677-
2678-}
2679-
2680-UApplicationInstance* uamc::Instance::as_u_application_instance()
2681-{
2682- return static_cast<UApplicationInstance*>(this);
2683-}
2684-
2685-uamc::Instance* uamc::Instance::from_u_application_instance(UApplicationInstance* u_instance)
2686-{
2687- return static_cast<uamc::Instance*>(u_instance);
2688-}
2689-
2690-void uamc::Instance::ref()
2691-{
2692- ref_count++;
2693-}
2694-
2695-void uamc::Instance::unref()
2696-{
2697- ref_count--;
2698- if (ref_count == 0)
2699- delete this;
2700-}
2701-
2702-MirConnection* uamc::Instance::connection() const
2703-{
2704- return con.get();
2705-}
2706-
2707-bool uamc::Instance::connect(std::string const& application_name)
2708-{
2709- auto mir_connection = mir_connect_sync(NULL, application_name.c_str());
2710- if (mir_connection == nullptr)
2711- return false;
2712- con = ConnectionPtr(mir_connection,
2713- [](MirConnection *c)
2714- {
2715- mir_connection_release(c);
2716- });
2717- return true;
2718-}
2719
2720=== removed file 'src/mirclient/application_instance_mirclient_priv.h'
2721--- src/mirclient/application_instance_mirclient_priv.h 2013-06-09 21:52:56 +0000
2722+++ src/mirclient/application_instance_mirclient_priv.h 1970-01-01 00:00:00 +0000
2723@@ -1,68 +0,0 @@
2724-/*
2725- * Copyright (C) 2013 Canonical Ltd
2726- *
2727- * This program is free software: you can redistribute it and/or modify
2728- * it under the terms of the GNU Lesser General Public License version 3 as
2729- * published by the Free Software Foundation.
2730- *
2731- * This program is distributed in the hope that it will be useful,
2732- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2733- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2734- * GNU Lesser General Public License for more details.
2735- *
2736- * You should have received a copy of the GNU Lesser General Public License
2737- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2738- *
2739- * Authored by: Robert Carr <robert.carr@canonical.com>
2740- */
2741-
2742-#ifndef UBUNTU_APPLICATION_INSTANCE_MIRCLIENT_PRIV_H_
2743-#define UBUNTU_APPLICATION_INSTANCE_MIRCLIENT_PRIV_H_
2744-
2745-#include <ubuntu/application/instance.h>
2746-
2747-#include <memory>
2748-#include <string>
2749-
2750-#include <mir_toolkit/mir_client_library.h>
2751-
2752-namespace ubuntu
2753-{
2754-namespace application
2755-{
2756-namespace mir
2757-{
2758-namespace client
2759-{
2760-
2761-class Instance
2762-{
2763-public:
2764- Instance();
2765- ~Instance() = default;
2766-
2767- UApplicationInstance* as_u_application_instance();
2768- static Instance* from_u_application_instance(UApplicationInstance* u_instance);
2769-
2770- void ref();
2771- void unref();
2772-
2773- MirConnection* connection() const;
2774- bool connect(std::string const& application_name);
2775-
2776-protected:
2777- Instance(Instance const&) = delete;
2778- Instance& operator=(Instance const&) = delete;
2779-
2780-private:
2781- typedef std::unique_ptr<MirConnection, std::function<void(MirConnection*)>> ConnectionPtr;
2782- ConnectionPtr con;
2783- int ref_count;
2784-};
2785-
2786-}
2787-}
2788-}
2789-} // namespace ubuntu
2790-
2791-#endif // UBUNTU_APPLICATION_INSTANCE_MIRCLIENT_PRIV_H_
2792
2793=== removed file 'src/mirclient/ubuntu_application_api_mirclient.cpp'
2794--- src/mirclient/ubuntu_application_api_mirclient.cpp 2013-06-12 21:20:38 +0000
2795+++ src/mirclient/ubuntu_application_api_mirclient.cpp 1970-01-01 00:00:00 +0000
2796@@ -1,279 +0,0 @@
2797-/*
2798- * Copyright (C) 2013 Canonical Ltd
2799- *
2800- * This program is free software: you can redistribute it and/or modify
2801- * it under the terms of the GNU Lesser General Public License version 3 as
2802- * published by the Free Software Foundation.
2803- *
2804- * This program is distributed in the hope that it will be useful,
2805- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2806- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2807- * GNU Lesser General Public License for more details.
2808- *
2809- * You should have received a copy of the GNU Lesser General Public License
2810- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2811- *
2812- * Authored by: Robert Carr <robert.carr@canonical.com>
2813- */
2814-
2815-#include "application_instance_mirclient_priv.h"
2816-#include "window_properties_mirclient_priv.h"
2817-#include "window_mirclient_priv.h"
2818-
2819-#include "mircommon/application_id_mir_priv.h"
2820-
2821-#include <ubuntu/application/lifecycle_delegate.h>
2822-#include <ubuntu/application/ui/window.h>
2823-#include <ubuntu/application/ui/options.h>
2824-#include <ubuntu/application/ui/session.h>
2825-#include <ubuntu/application/ui/clipboard.h>
2826-#include <ubuntu/application/ui/display.h>
2827-#include <ubuntu/application/sensors/accelerometer.h>
2828-#include <ubuntu/application/sensors/proximity.h>
2829-#include <ubuntu/application/sensors/light.h>
2830-
2831-#include <mir_toolkit/mir_client_library.h>
2832-
2833-#include <stdlib.h>
2834-#include <assert.h>
2835-#include <string.h>
2836-
2837-namespace uam = ubuntu::application::mir;
2838-namespace uamc = uam::client;
2839-
2840-namespace
2841-{
2842-
2843-// We use a global instance as some platform-api functions, i.e. display_new_with_index
2844-// do not supply dependencies, but a MirConnection is required for all queries.
2845-static uamc::Instance*
2846-global_mir_instance()
2847-{
2848- // Obviously ref counting is whacky here...
2849- static uamc::Instance instance;
2850- instance.ref(); // We leak a reference, this object can't be destroyed
2851- return &instance;
2852-}
2853-
2854-// Display info
2855-static MirDisplayInfo*
2856-u_display_mir_display(UAUiDisplay *display)
2857-{
2858- return static_cast<MirDisplayInfo*>(display);
2859-}
2860-
2861-static UAUiDisplay*
2862-mir_display_u_display(MirDisplayInfo *display)
2863-{
2864- return static_cast<UAUiDisplay*>(display);
2865-}
2866-
2867-};
2868-
2869-extern "C"
2870-{
2871-
2872-// TODO<papi>: Eliminate global instance by adding Instance to some functions (i.e. display queries)
2873-// TODO: We can't take ownership of description and options until we get rid of the global instance
2874-// so we leak them.
2875-UApplicationInstance* u_application_instance_new_from_description_with_options(UApplicationDescription* description, UApplicationOptions* options)
2876-{
2877- auto instance = global_mir_instance();
2878-
2879- auto id = uam::Id::from_u_application_id(u_application_description_get_application_id(description));
2880- auto connect_suceeded = instance->connect(id->name);
2881- assert(connect_suceeded);
2882-
2883- return instance->as_u_application_instance();
2884-}
2885-
2886-void
2887-u_application_instance_ref(UApplicationInstance *u_instance)
2888-{
2889- auto instance = uamc::Instance::from_u_application_instance(u_instance);
2890- instance->ref();
2891-}
2892-
2893-void
2894-u_application_instance_unref(UApplicationInstance *u_instance)
2895-{
2896- auto instance = uamc::Instance::from_u_application_instance(u_instance);
2897- instance->unref();
2898-}
2899-
2900-void
2901-u_application_instance_destroy(UApplicationInstance *u_instance)
2902-{
2903- // TODO<papi>: What are the proper semantics here.
2904- u_application_instance_unref(u_instance);
2905-}
2906-
2907-void
2908-u_application_instance_run(UApplicationInstance *instance)
2909-{
2910- // TODO<papi>: What is this supposed to do? Seems to be no-op on hybris.
2911- (void) instance;
2912-}
2913-
2914-void ua_ui_set_clipboard_content(void* content, size_t content_size)
2915-{
2916- // TODO<papi,mir>: Implement. We will need a MirConnection
2917- (void) content;
2918- (void) content_size;
2919-}
2920-
2921-void ua_ui_get_clipboard_content(void** out_content, size_t* out_content_size)
2922-{
2923- // TODO<papi,mir>: Implement, see get_clipboard_comment.
2924- *out_content = NULL;
2925- *out_content_size = 0;
2926-}
2927-
2928-//
2929-// TODO <papi>: We need to expose the EGLNativeDisplay somehow
2930-//
2931-
2932-// TODO <papi>: This function should take an application instance so we can eliminate the global mir instance.
2933-// TODO <mir>: Perhaps this should be noop for Mir as there is no need to construct
2934-// a display object, the connection already has everything we need, as it receives
2935-// the display info at connect time.
2936-UAUiDisplay* ua_ui_display_new_with_index(size_t index)
2937-{
2938- // TODO<papi,mir>: What are the semantics of index. How should we use it?
2939- (void) index;
2940- auto instance = global_mir_instance();
2941-
2942- auto display = new MirDisplayInfo;
2943- mir_connection_get_display_info(instance->connection(), display);
2944-
2945- return mir_display_u_display(display);
2946-}
2947-
2948-void ua_ui_display_destroy(UAUiDisplay* display)
2949-{
2950- auto mir_display = u_display_mir_display(display);
2951- delete mir_display;
2952-}
2953-
2954-uint32_t ua_ui_display_query_horizontal_res(UAUiDisplay* display)
2955-{
2956- auto mir_display = u_display_mir_display(display);
2957-
2958- // TODO<mir>: Line up return types from mirclient
2959- return static_cast<uint32_t>(mir_display->width);
2960-}
2961-
2962-uint32_t ua_ui_display_query_vertical_res(UAUiDisplay* display)
2963-{
2964- auto mir_display = u_display_mir_display(display);
2965-
2966- // TODO<mir>: Line up return types from mirclient
2967- return static_cast<uint32_t>(mir_display->height);
2968-}
2969-
2970-EGLNativeDisplayType ua_ui_display_get_native_type(UAUiDisplay* display)
2971-{
2972- auto instance = global_mir_instance();
2973-
2974- // TODO<mir>: Careful with this cast
2975- return reinterpret_cast<EGLNativeDisplayType>(mir_connection_get_egl_native_display(instance->connection()));
2976-}
2977-
2978-UAUiWindowProperties* ua_ui_window_properties_new_for_normal_window()
2979-{
2980- return (new uamc::WindowProperties)->as_u_window_properties();
2981-}
2982-
2983-void ua_ui_window_properties_destroy(UAUiWindowProperties* u_properties)
2984-{
2985- auto properties = uamc::WindowProperties::from_u_window_properties(u_properties);
2986- delete properties;
2987-}
2988-
2989-void ua_ui_window_properties_set_titlen(UAUiWindowProperties* u_properties, const char* title, size_t title_length)
2990-{
2991- auto properties = uamc::WindowProperties::from_u_window_properties(u_properties);
2992-
2993- properties->set_title(title, title_length);
2994-}
2995-
2996-const char* ua_ui_window_properties_get_title(UAUiWindowProperties* u_properties)
2997-{
2998- auto properties = uamc::WindowProperties::from_u_window_properties(u_properties);
2999- return properties->surface_parameters().name;
3000-}
3001-
3002-void ua_ui_window_properties_set_role(UAUiWindowProperties* properties, UAUiWindowRole role)
3003-{
3004- // TODO<papi>: Doesn't seem like this is meaningful for mirclient. Perhaps it should leave platform-api.
3005- (void) properties;
3006- (void) role;
3007-}
3008-
3009-void ua_ui_window_properties_set_input_cb_and_ctx(UAUiWindowProperties* u_properties, UAUiWindowInputEventCb cb, void* ctx)
3010-{
3011- auto properties = uamc::WindowProperties::from_u_window_properties(u_properties);
3012- properties->set_input_cb_and_ctx(cb, ctx);
3013-}
3014-
3015-UAUiWindow* ua_ui_window_new_for_application_with_properties(UApplicationInstance* u_instance, UAUiWindowProperties* u_properties)
3016-{
3017- auto instance = uamc::Instance::from_u_application_instance(u_instance);
3018- auto properties = uamc::WindowProperties::from_u_window_properties(u_properties);
3019-
3020- auto window = new uamc::Window(*instance, properties);
3021- return window->as_u_window();
3022-}
3023-
3024-void ua_ui_window_destroy(UAUiWindow* u_window)
3025-{
3026- auto window = uamc::Window::from_u_window(u_window);
3027- delete window;
3028-}
3029-
3030-UStatus ua_ui_window_move(UAUiWindow* u_window, uint32_t x, uint32_t y)
3031-{
3032- // TODO<papi,mir>: Implement. Assuming this should exist on mirclient?
3033- (void) u_window;
3034- (void) x;
3035- (void) y;
3036- return (UStatus) 0;
3037-}
3038-
3039-UStatus ua_ui_window_resize(UAUiWindow* u_window, uint32_t width, uint32_t height)
3040-{
3041- // TODO<mir>: Implement
3042- (void) u_window;
3043- (void) width;
3044- (void) height;
3045- return (UStatus) 0;
3046-}
3047-
3048-UStatus ua_ui_window_hide(UAUiWindow* u_window)
3049-{
3050- // TODO<mir>: Implement
3051- (void) u_window;
3052- return (UStatus) 0;
3053-}
3054-
3055-UStatus ua_ui_window_show(UAUiWindow* u_window)
3056-{
3057- // TODO<mir>: Implement
3058- (void) u_window;
3059- return (UStatus) 0;
3060-}
3061-
3062-void ua_ui_window_request_fullscreen(UAUiWindow* u_window)
3063-{
3064- // TODO<mir>: Implement
3065- (void) u_window;
3066-}
3067-
3068-EGLNativeWindowType ua_ui_window_get_native_type(UAUiWindow* u_window)
3069-{
3070- auto window = uamc::Window::from_u_window(u_window);
3071- return window->get_native_type();
3072-}
3073-
3074-// TODO: Sensors
3075-}
3076
3077=== removed file 'src/mirclient/window_mirclient.cpp'
3078--- src/mirclient/window_mirclient.cpp 2013-06-07 23:27:45 +0000
3079+++ src/mirclient/window_mirclient.cpp 1970-01-01 00:00:00 +0000
3080@@ -1,128 +0,0 @@
3081-/*
3082- * Copyright (C) 2013 Canonical Ltd
3083- *
3084- * This program is free software: you can redistribute it and/or modify
3085- * it under the terms of the GNU Lesser General Public License version 3 as
3086- * published by the Free Software Foundation.
3087- *
3088- * This program is distributed in the hope that it will be useful,
3089- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3090- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3091- * GNU Lesser General Public License for more details.
3092- *
3093- * You should have received a copy of the GNU Lesser General Public License
3094- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3095- *
3096- * Authored by: Robert Carr <robert.carr@canonical.com>
3097- */
3098-
3099-#include "window_mirclient_priv.h"
3100-#include "application_instance_mirclient_priv.h"
3101-#include "window_properties_mirclient_priv.h"
3102-#include "window_mirclient_priv.h"
3103-
3104-#include "mircommon/event_helpers_mir.h"
3105-
3106-namespace uamc = ubuntu::application::mir::client;
3107-namespace uaum = ubuntu::application::ui::mir;
3108-
3109-namespace ubuntu
3110-{
3111-namespace application
3112-{
3113-namespace mir
3114-{
3115-namespace client
3116-{
3117-
3118-struct InputContext
3119-{
3120- UAUiWindowInputEventCb cb;
3121- void *ctx;
3122-};
3123-
3124-static void
3125-ua_ui_window_mir_handle_event(MirSurface* surface, MirEvent const* mir_ev, void* ctx)
3126-{
3127- // TODO<mir>: Perhaps this indicates that mirclient library should not pass a surface argument here.
3128- (void) surface;
3129-
3130- Event ubuntu_ev;
3131- uaum::event_to_ubuntu_event(mir_ev, ubuntu_ev);
3132- auto mir_ctx = static_cast<uamc::InputContext*>(ctx);
3133- mir_ctx->cb(mir_ctx->ctx, &ubuntu_ev);
3134-}
3135-
3136-}
3137-}
3138-}
3139-}
3140-
3141-namespace
3142-{
3143-
3144-static MirPixelFormat
3145-mir_choose_default_pixel_format(MirConnection *connection)
3146-{
3147- MirDisplayInfo info;
3148- mir_connection_get_display_info(connection, &info);
3149- return info.supported_pixel_format[0];
3150-}
3151-
3152-static MirSurface*
3153-create_surface_with_parameters(MirConnection *connection,
3154- MirSurfaceParameters parameters)
3155-{
3156-}
3157-
3158-}
3159-
3160-uamc::Window::Window(uamc::Instance& instance,
3161- uamc::WindowProperties* properties)
3162- : instance(instance)
3163-{
3164- window_properties = WindowPropertiesPtr(properties,
3165- [](uamc::WindowProperties *p)
3166- {
3167- ua_ui_window_properties_destroy(p->as_u_window_properties());
3168- });
3169-
3170- MirSurfaceParameters parameters = properties->surface_parameters();
3171- auto connection = instance.connection();
3172- parameters.pixel_format = mir_choose_default_pixel_format(connection);
3173-
3174- auto mir_surface = mir_connection_create_surface_sync(connection, &parameters);
3175- // TODO: create_surface_sync is unsafe as there is a race between setting the event handler and receiving surfaces
3176- input_ctx = InputContextPtr(new uamc::InputContext{properties->input_cb(), properties->input_context()},
3177- [](InputContext *c)
3178- {
3179- delete c;
3180- });
3181-
3182- MirEventDelegate delegate =
3183- {
3184- uamc::ua_ui_window_mir_handle_event,
3185- input_ctx.get()
3186- };
3187- mir_surface_set_event_handler(mir_surface, &delegate);
3188- surface = SurfacePtr(mir_surface,
3189- [](MirSurface *s)
3190- {
3191- mir_surface_release_sync(s);
3192- });
3193-}
3194-
3195-UAUiWindow* uamc::Window::as_u_window()
3196-{
3197- return static_cast<UAUiWindow*>(this);
3198-}
3199-
3200-uamc::Window* uamc::Window::from_u_window(UAUiWindow *u_window)
3201-{
3202- return static_cast<uamc::Window*>(u_window);
3203-}
3204-
3205-EGLNativeWindowType uamc::Window::get_native_type()
3206-{
3207- return reinterpret_cast<EGLNativeWindowType>(mir_surface_get_egl_native_window(surface.get()));
3208-}
3209
3210=== removed file 'src/mirclient/window_mirclient_priv.h'
3211--- src/mirclient/window_mirclient_priv.h 2013-06-07 23:27:45 +0000
3212+++ src/mirclient/window_mirclient_priv.h 1970-01-01 00:00:00 +0000
3213@@ -1,76 +0,0 @@
3214-/*
3215- * Copyright (C) 2013 Canonical Ltd
3216- *
3217- * This program is free software: you can redistribute it and/or modify
3218- * it under the terms of the GNU Lesser General Public License version 3 as
3219- * published by the Free Software Foundation.
3220- *
3221- * This program is distributed in the hope that it will be useful,
3222- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3223- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3224- * GNU Lesser General Public License for more details.
3225- *
3226- * You should have received a copy of the GNU Lesser General Public License
3227- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3228- *
3229- * Authored by: Robert Carr <robert.carr@canonical.com>
3230- */
3231-
3232-#ifndef UBUNTU_APPLICATION_UI_WINDOW_MIRCLIENT_PRIV_H_
3233-#define UBUNTU_APPLICATION_UI_WINDOW_MIRCLIENT_PRIV_H_
3234-
3235-#include <ubuntu/application/ui/window.h>
3236-#include <mir_toolkit/mir_client_library.h>
3237-
3238-#include <EGL/egl.h>
3239-
3240-#include <stddef.h>
3241-
3242-#include <functional>
3243-#include <memory>
3244-#include <string>
3245-
3246-namespace ubuntu
3247-{
3248-namespace application
3249-{
3250-namespace mir
3251-{
3252-namespace client
3253-{
3254-class Instance;
3255-class WindowProperties;
3256-struct InputContext;
3257-
3258-class Window
3259-{
3260-public:
3261- Window(Instance& instance, WindowProperties* window);
3262- ~Window() = default;
3263-
3264- UAUiWindow* as_u_window();
3265- static Window* from_u_window(UAUiWindow* u_window);
3266-
3267- EGLNativeWindowType get_native_type();
3268-protected:
3269- Window(Window const&) = delete;
3270- Window& operator=(Window const&) = delete;
3271-
3272-private:
3273- Instance& instance;
3274-
3275- typedef std::unique_ptr<WindowProperties, std::function<void(WindowProperties*)>> WindowPropertiesPtr;
3276- typedef std::unique_ptr<MirSurface, std::function<void(MirSurface*)>> SurfacePtr;
3277- typedef std::unique_ptr<InputContext, std::function<void(InputContext*)>> InputContextPtr;
3278-
3279- WindowPropertiesPtr window_properties;
3280- SurfacePtr surface;
3281- InputContextPtr input_ctx;
3282-};
3283-
3284-}
3285-}
3286-}
3287-}
3288-
3289-#endif // UBUNTU_APPLICATION_UI_WINDOW_MIRCLIENT_PRIV_H_
3290
3291=== removed file 'src/mirclient/window_properties_mirclient.cpp'
3292--- src/mirclient/window_properties_mirclient.cpp 2013-06-07 21:58:44 +0000
3293+++ src/mirclient/window_properties_mirclient.cpp 1970-01-01 00:00:00 +0000
3294@@ -1,68 +0,0 @@
3295-/*
3296- * Copyright (C) 2013 Canonical Ltd
3297- *
3298- * This program is free software: you can redistribute it and/or modify
3299- * it under the terms of the GNU Lesser General Public License version 3 as
3300- * published by the Free Software Foundation.
3301- *
3302- * This program is distributed in the hope that it will be useful,
3303- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3304- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3305- * GNU Lesser General Public License for more details.
3306- *
3307- * You should have received a copy of the GNU Lesser General Public License
3308- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3309- *
3310- * Authored by: Robert Carr <robert.carr@canonical.com>
3311- */
3312-
3313-#include "window_properties_mirclient_priv.h"
3314-
3315-namespace uamc = ubuntu::application::mir::client;
3316-
3317-uamc::WindowProperties::WindowProperties()
3318- : cb(nullptr),
3319- input_ctx(nullptr)
3320-{
3321- parameters.name = nullptr;
3322- parameters.width = 0;
3323- parameters.height = 0;
3324- parameters.buffer_usage = mir_buffer_usage_hardware;
3325-}
3326-
3327-UAUiWindowProperties* uamc::WindowProperties::as_u_window_properties()
3328-{
3329- return static_cast<UAUiWindowProperties*>(this);
3330-}
3331-uamc::WindowProperties* uamc::WindowProperties::from_u_window_properties(UAUiWindowProperties* u_properties)
3332-{
3333- return static_cast<uamc::WindowProperties*>(u_properties);
3334-}
3335-
3336-void uamc::WindowProperties::set_title(char const* window_title, size_t length)
3337-{
3338- title = std::string(window_title, length);
3339- parameters.name = title.c_str();
3340-}
3341-
3342-void uamc::WindowProperties::set_input_cb_and_ctx(UAUiWindowInputEventCb callback, void* ctx)
3343-{
3344- cb = callback;
3345- input_ctx = ctx;
3346-}
3347-
3348-MirSurfaceParameters const& uamc::WindowProperties::surface_parameters() const
3349-{
3350- return parameters;
3351-}
3352-
3353-UAUiWindowInputEventCb uamc::WindowProperties::input_cb() const
3354-{
3355- return cb;
3356-}
3357-
3358-void* uamc::WindowProperties::input_context() const
3359-{
3360- return input_ctx;
3361-}
3362-
3363
3364=== removed file 'src/mirclient/window_properties_mirclient_priv.h'
3365--- src/mirclient/window_properties_mirclient_priv.h 2013-06-07 21:58:44 +0000
3366+++ src/mirclient/window_properties_mirclient_priv.h 1970-01-01 00:00:00 +0000
3367@@ -1,72 +0,0 @@
3368-/*
3369- * Copyright (C) 2013 Canonical Ltd
3370- *
3371- * This program is free software: you can redistribute it and/or modify
3372- * it under the terms of the GNU Lesser General Public License version 3 as
3373- * published by the Free Software Foundation.
3374- *
3375- * This program is distributed in the hope that it will be useful,
3376- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3377- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3378- * GNU Lesser General Public License for more details.
3379- *
3380- * You should have received a copy of the GNU Lesser General Public License
3381- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3382- *
3383- * Authored by: Robert Carr <robert.carr@canonical.com>
3384- */
3385-
3386-#ifndef UBUNTU_APPLICATION_UI_WINDOW_PROPERTIES_MIRCLIENT_PRIV_H_
3387-#define UBUNTU_APPLICATION_UI_WINDOW_PROPERTIES_MIRCLIENT_PRIV_H_
3388-
3389-#include <ubuntu/application/ui/window.h>
3390-#include <mir_toolkit/mir_client_library.h>
3391-
3392-#include <stddef.h>
3393-
3394-#include <string>
3395-
3396-namespace ubuntu
3397-{
3398-namespace application
3399-{
3400-namespace mir
3401-{
3402-namespace client
3403-{
3404-
3405-class WindowProperties
3406-{
3407-public:
3408- WindowProperties();
3409- ~WindowProperties() = default;
3410-
3411- UAUiWindowProperties* as_u_window_properties();
3412- static WindowProperties* from_u_window_properties(UAUiWindowProperties* u_properties);
3413-
3414- void set_title(char const* title, size_t length);
3415- void set_input_cb_and_ctx(UAUiWindowInputEventCb cb, void* ctx);
3416-
3417- MirSurfaceParameters const& surface_parameters() const;
3418- UAUiWindowInputEventCb input_cb() const;
3419- void* input_context() const;
3420-
3421-protected:
3422- WindowProperties(WindowProperties const&) = delete;
3423- WindowProperties& operator=(WindowProperties const&) = delete;
3424-
3425-private:
3426- MirSurfaceParameters parameters;
3427-
3428- std::string title;
3429-
3430- UAUiWindowInputEventCb cb;
3431- void *input_ctx;
3432-};
3433-
3434-}
3435-}
3436-}
3437-}
3438-
3439-#endif // UBUNTU_APPLICATION_UI_WINDOW_PROPERTIES_MIRCLIENT_PRIV_H_
3440
3441=== removed directory 'src/mircommon'
3442=== removed file 'src/mircommon/CMakeLists.txt'
3443--- src/mircommon/CMakeLists.txt 2013-07-10 13:57:20 +0000
3444+++ src/mircommon/CMakeLists.txt 1970-01-01 00:00:00 +0000
3445@@ -1,43 +0,0 @@
3446-set(SOURCES
3447- event_helpers_mir.cpp
3448- application_id_mir.cpp
3449- application_options_mir.cpp
3450- application_description_mir.cpp
3451- lifecycle_delegate_mir.cpp
3452- session_mir.cpp
3453-)
3454-
3455-set(LINK_LIBRARIES
3456- ${MIR_COMMON_LDFLAGS} ${MIR_COMMON_LIBRARIES}
3457-)
3458-
3459-if(ENABLE_HYBRIS_IMPLEMENTATION)
3460- list(APPEND SOURCES
3461- ../hybris/ubuntu_application_sensors_hybris.cpp
3462- )
3463- list(APPEND LINK_LIBRARIES
3464- hybris-common
3465- )
3466-else()
3467- list(APPEND SOURCES
3468- ubuntu_application_sensors_desktop.cpp
3469- )
3470-endif()
3471-
3472-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC --std=c++11")
3473-
3474-include_directories(
3475- ${MIRCOMMON_INCLUDE_DIRS}
3476-)
3477-
3478-add_library(
3479- ubuntu_application_api_mircommon STATIC
3480- ${SOURCES}
3481-)
3482-
3483-target_link_libraries(
3484- ubuntu_application_api_mircommon
3485- ${LINK_LIBRARIES}
3486-)
3487-
3488-
3489
3490=== removed file 'src/mircommon/application_description_mir.cpp'
3491--- src/mircommon/application_description_mir.cpp 2013-06-07 17:41:36 +0000
3492+++ src/mircommon/application_description_mir.cpp 1970-01-01 00:00:00 +0000
3493@@ -1,94 +0,0 @@
3494-/*
3495- * Copyright (C) 2013 Canonical Ltd
3496- *
3497- * This program is free software: you can redistribute it and/or modify
3498- * it under the terms of the GNU Lesser General Public License version 3 as
3499- * published by the Free Software Foundation.
3500- *
3501- * This program is distributed in the hope that it will be useful,
3502- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3503- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3504- * GNU Lesser General Public License for more details.
3505- *
3506- * You should have received a copy of the GNU Lesser General Public License
3507- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3508- *
3509- * Authored by: Robert Carr <robert.carr@canonical.com>
3510- */
3511-
3512-#include "application_description_mir_priv.h"
3513-
3514-namespace uam = ubuntu::application::mir;
3515-
3516-uam::Description::Description()
3517- : application_id(nullptr),
3518- lifecycle_delegate(nullptr)
3519-{
3520-}
3521-
3522-UApplicationDescription* uam::Description::as_u_application_description()
3523-{
3524- return static_cast<UApplicationDescription*>(this);
3525-}
3526-
3527-uam::Description* uam::Description::from_u_application_description(UApplicationDescription* description)
3528-{
3529- return static_cast<uam::Description*>(description);
3530-}
3531-
3532-UApplicationDescription*
3533-u_application_description_new()
3534-{
3535- auto description = new uam::Description();
3536- return description->as_u_application_description();
3537-}
3538-
3539-void
3540-u_application_description_destroy(UApplicationDescription *u_description)
3541-{
3542- auto description = uam::Description::from_u_application_description(u_description);
3543- delete description;
3544-}
3545-
3546-void
3547-u_application_description_set_application_id(UApplicationDescription *u_description,
3548- UApplicationId *id)
3549-{
3550- auto description = uam::Description::from_u_application_description(u_description);
3551-
3552- description->application_id = std::unique_ptr<UApplicationId, std::function<void(UApplicationId*)>>(id,
3553- [](UApplicationId *p)
3554- {
3555- u_application_id_destroy(p);
3556- });
3557-}
3558-
3559-UApplicationId*
3560-u_application_description_get_application_id(UApplicationDescription *u_description)
3561-{
3562- auto description = uam::Description::from_u_application_description(u_description);
3563- return description->application_id.get();
3564-}
3565-
3566-void
3567-u_application_description_set_application_lifecycle_delegate(UApplicationDescription *u_description,
3568- UApplicationLifecycleDelegate *lifecycle_delegate)
3569-{
3570- auto description = uam::Description::from_u_application_description(u_description);
3571-
3572- // TODO: We don't take a ref as it is created with a floating ref but this should be made more explicit...
3573- description->lifecycle_delegate =
3574- std::unique_ptr<UApplicationLifecycleDelegate, std::function<void(UApplicationLifecycleDelegate*)>>(lifecycle_delegate,
3575- [](UApplicationLifecycleDelegate *p)
3576- {
3577- u_application_lifecycle_delegate_unref(p);
3578- });
3579-
3580-}
3581-
3582-UApplicationLifecycleDelegate*
3583-u_application_description_get_application_lifecycle_delegate(UApplicationDescription *u_description)
3584-{
3585- auto description = uam::Description::from_u_application_description(u_description);
3586- return description->lifecycle_delegate.get();
3587-}
3588
3589=== removed file 'src/mircommon/application_description_mir_priv.h'
3590--- src/mircommon/application_description_mir_priv.h 2013-06-07 17:41:36 +0000
3591+++ src/mircommon/application_description_mir_priv.h 1970-01-01 00:00:00 +0000
3592@@ -1,56 +0,0 @@
3593-/*
3594- * Copyright (C) 2013 Canonical Ltd
3595- *
3596- * This program is free software: you can redistribute it and/or modify
3597- * it under the terms of the GNU Lesser General Public License version 3 as
3598- * published by the Free Software Foundation.
3599- *
3600- * This program is distributed in the hope that it will be useful,
3601- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3602- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3603- * GNU Lesser General Public License for more details.
3604- *
3605- * You should have received a copy of the GNU Lesser General Public License
3606- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3607- *
3608- * Authored by: Robert Carr <robert.carr@canonical.com>
3609- */
3610-
3611-#ifndef UBUNTU_APPLICATION_DESCRIPTION_MIR_PRIV_H_
3612-#define UBUNTU_APPLICATION_DESCRIPTION_MIR_PRIV_H_
3613-
3614-#include <ubuntu/application/description.h>
3615-
3616-#include <memory>
3617-#include <functional>
3618-
3619-namespace ubuntu
3620-{
3621-namespace application
3622-{
3623-namespace mir
3624-{
3625-
3626-class Description
3627-{
3628-public:
3629- Description();
3630- ~Description() = default;
3631-
3632- UApplicationDescription* as_u_application_description();
3633- static Description* from_u_application_description(UApplicationDescription* u_description);
3634-
3635- // TODO<papi> Do we really own these?
3636- std::unique_ptr<UApplicationId, std::function<void(UApplicationId*)>> application_id;
3637- std::unique_ptr<UApplicationLifecycleDelegate, std::function<void(UApplicationLifecycleDelegate*)>> lifecycle_delegate;
3638-
3639-protected:
3640- Description(Description const&) = delete;
3641- Description& operator=(Description const&) = delete;
3642-};
3643-
3644-}
3645-}
3646-} // namespace ubuntu
3647-
3648-#endif // UBUNTU_APPLICATION_DESCRIPTION_MIR_PRIV_H_
3649
3650=== removed file 'src/mircommon/application_id_mir.cpp'
3651--- src/mircommon/application_id_mir.cpp 2013-06-05 19:33:23 +0000
3652+++ src/mircommon/application_id_mir.cpp 1970-01-01 00:00:00 +0000
3653@@ -1,56 +0,0 @@
3654-/*
3655- * Copyright (C) 2013 Canonical Ltd
3656- *
3657- * This program is free software: you can redistribute it and/or modify
3658- * it under the terms of the GNU Lesser General Public License version 3 as
3659- * published by the Free Software Foundation.
3660- *
3661- * This program is distributed in the hope that it will be useful,
3662- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3663- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3664- * GNU Lesser General Public License for more details.
3665- *
3666- * You should have received a copy of the GNU Lesser General Public License
3667- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3668- *
3669- * Authored by: Robert Carr <robert.carr@canonical.com>
3670- */
3671-
3672-#include "application_id_mir_priv.h"
3673-
3674-namespace uam = ubuntu::application::mir;
3675-
3676-uam::Id::Id(const char *name, size_t size)
3677- : name(name, size)
3678-{
3679-}
3680-
3681-UApplicationId* uam::Id::as_u_application_id()
3682-{
3683- return static_cast<UApplicationId*>(this);
3684-}
3685-
3686-uam::Id* uam::Id::from_u_application_id(UApplicationId *id)
3687-{
3688- return static_cast<uam::Id*>(id);
3689-}
3690-
3691-UApplicationId*
3692-u_application_id_new_from_stringn(const char *string, size_t size)
3693-{
3694- auto id = new uam::Id(string, size);
3695- return id->as_u_application_id();
3696-}
3697-
3698-void u_application_id_destroy(UApplicationId *u_id)
3699-{
3700- auto id = uam::Id::from_u_application_id(u_id);
3701- delete id;
3702-}
3703-
3704-int u_application_id_compare(UApplicationId* u_lhs, UApplicationId* u_rhs)
3705-{
3706- auto lhs = uam::Id::from_u_application_id(u_lhs);
3707- auto rhs = uam::Id::from_u_application_id(u_rhs);
3708- return lhs->name.compare(rhs->name);
3709-}
3710
3711=== removed file 'src/mircommon/application_id_mir_priv.h'
3712--- src/mircommon/application_id_mir_priv.h 2013-06-05 19:44:09 +0000
3713+++ src/mircommon/application_id_mir_priv.h 1970-01-01 00:00:00 +0000
3714@@ -1,53 +0,0 @@
3715-/*
3716- * Copyright (C) 2013 Canonical Ltd
3717- *
3718- * This program is free software: you can redistribute it and/or modify
3719- * it under the terms of the GNU Lesser General Public License version 3 as
3720- * published by the Free Software Foundation.
3721- *
3722- * This program is distributed in the hope that it will be useful,
3723- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3724- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3725- * GNU Lesser General Public License for more details.
3726- *
3727- * You should have received a copy of the GNU Lesser General Public License
3728- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3729- *
3730- * Authored by: Robert Carr <robert.carr@canonical.com>
3731- */
3732-
3733-#ifndef UBUNTU_APPLICATION_ID_MIR_PRIV_H_
3734-#define UBUNTU_APPLICATION_ID_MIR_PRIV_H_
3735-
3736-#include <ubuntu/application/id.h>
3737-
3738-#include <string>
3739-
3740-namespace ubuntu
3741-{
3742-namespace application
3743-{
3744-namespace mir
3745-{
3746-
3747-class Id
3748-{
3749-public:
3750- Id(const char *name, size_t size);
3751- ~Id() = default;
3752-
3753- UApplicationId* as_u_application_id();
3754- static Id* from_u_application_id(UApplicationId* id);
3755-
3756- std::string const name;
3757-
3758-protected:
3759- Id(const Id&) = delete;
3760- Id& operator=(const Id&) = delete;
3761-};
3762-
3763-}
3764-}
3765-} // namespace ubuntu
3766-
3767-#endif // UBUNTU_APPLICATION_ID_MIR_PRIV_H_
3768
3769=== removed file 'src/mircommon/application_options_mir.cpp'
3770--- src/mircommon/application_options_mir.cpp 2013-06-06 23:35:14 +0000
3771+++ src/mircommon/application_options_mir.cpp 1970-01-01 00:00:00 +0000
3772@@ -1,170 +0,0 @@
3773-/*
3774- * Copyright (C) 2013 Canonical Ltd
3775- *
3776- * This program is free software: you can redistribute it and/or modify
3777- * it under the terms of the GNU Lesser General Public License version 3 as
3778- * published by the Free Software Foundation.
3779- *
3780- * This program is distributed in the hope that it will be useful,
3781- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3782- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3783- * GNU Lesser General Public License for more details.
3784- *
3785- * You should have received a copy of the GNU Lesser General Public License
3786- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3787- *
3788- * Authored by: Robert Carr <robert.carr@canonical.com>
3789- */
3790-
3791-#include "application_options_mir_priv.h"
3792-
3793-#include <string.h>
3794-#include <stdio.h>
3795-#include <stdlib.h>
3796-#include <getopt.h>
3797-
3798-#include <tuple>
3799-#include <string>
3800-
3801-namespace uam = ubuntu::application::mir;
3802-
3803-UApplicationOptions* uam::Options::as_u_application_options()
3804-{
3805- return static_cast<UApplicationOptions*>(this);
3806-}
3807-uam::Options* uam::Options::from_u_application_options(UApplicationOptions* options)
3808-{
3809- return static_cast<uam::Options*>(options);
3810-}
3811-
3812-namespace
3813-{
3814-
3815-UAUiStage
3816-string_to_stage(std::string const& s)
3817-{
3818- if (s == "main_stage")
3819- return U_MAIN_STAGE;
3820- else if (s == "side_stage")
3821- return U_SIDE_STAGE;
3822- else if (s == "share_stage")
3823- return U_SHARE_STAGE;
3824-}
3825-
3826-UAUiFormFactor
3827-string_to_form_factor(std::string const& s)
3828-{
3829- if (s == "desktop")
3830- return U_DESKTOP;
3831- else if (s == "phone")
3832- return U_PHONE;
3833- else if (s == "tablet")
3834- return U_TABLET;
3835-}
3836-
3837-void print_help_and_exit()
3838-{
3839- printf("Usage: executable "
3840- "[--form_factor_hint={desktop, phone, tablet}] "
3841- "[--stage_hint={main_stage, side_stage, share_stage}] "
3842- "[--desktop_file_hint=absolute_path_to_desktop_file]\n");
3843- exit(EXIT_SUCCESS);
3844-}
3845-
3846-}
3847-
3848-extern "C"
3849-{
3850-UApplicationOptions*
3851-u_application_options_new_from_cmd_line(int argc, char** argv)
3852-{
3853- static const int uninteresting_flag_value = 0;
3854- static struct option long_options[] =
3855- {
3856- {"form_factor_hint", required_argument, NULL, uninteresting_flag_value},
3857- {"stage_hint", required_argument, NULL, uninteresting_flag_value},
3858- {"desktop_file_hint", required_argument, NULL, uninteresting_flag_value},
3859- {"help", no_argument, NULL, uninteresting_flag_value},
3860- {0, 0, 0, 0}
3861- };
3862-
3863- static const int form_factor_hint_index = 0;
3864- static const int stage_hint_index = 1;
3865- static const int desktop_file_hint_index = 2;
3866- static const int help_index = 3;
3867-
3868- auto app_options = new uam::Options;
3869-
3870- while(true)
3871- {
3872- int option_index = 0;
3873-
3874- int c = getopt_long(argc,
3875- argv,
3876- "",
3877- long_options,
3878- &option_index);
3879-
3880- if (c == -1)
3881- break;
3882-
3883- switch (c)
3884- {
3885- case 0:
3886- // If this option set a flag, do nothing else now.
3887- if (long_options[option_index].flag != 0)
3888- break;
3889- if (option_index == help_index)
3890- print_help_and_exit();
3891- if (optarg)
3892- {
3893- switch(option_index)
3894- {
3895- case form_factor_hint_index:
3896- app_options->form_factor = string_to_form_factor(std::string(optarg));
3897- break;
3898- case stage_hint_index:
3899- app_options->stage = string_to_stage(std::string(optarg));
3900- break;
3901- case desktop_file_hint_index:
3902- app_options->desktop_file = std::string(optarg);
3903- break;
3904- }
3905- }
3906- break;
3907- case '?':
3908- break;
3909- }
3910- }
3911-
3912- return app_options->as_u_application_options();
3913-}
3914-
3915-void
3916-u_application_options_destroy(UApplicationOptions* u_options)
3917-{
3918- auto options = uam::Options::from_u_application_options(u_options);
3919- delete options;
3920-}
3921-
3922-UApplicationOperationMode
3923-u_application_options_get_operation_mode(UApplicationOptions *u_options)
3924-{
3925- auto options = uam::Options::from_u_application_options(u_options);
3926- return options->operation_mode;
3927-}
3928-
3929-UAUiFormFactor
3930-u_application_options_get_form_factor(UApplicationOptions* u_options)
3931-{
3932- auto options = uam::Options::from_u_application_options(u_options);
3933- return options->form_factor;
3934-}
3935-
3936-UAUiStage
3937-u_application_options_get_stage(UApplicationOptions* u_options)
3938-{
3939- auto options = uam::Options::from_u_application_options(u_options);
3940- return options->stage;
3941-}
3942-}
3943
3944=== removed file 'src/mircommon/application_options_mir_priv.h'
3945--- src/mircommon/application_options_mir_priv.h 2013-06-05 19:44:09 +0000
3946+++ src/mircommon/application_options_mir_priv.h 1970-01-01 00:00:00 +0000
3947@@ -1,58 +0,0 @@
3948-/*
3949- * Copyright (C) 2013 Canonical Ltd
3950- *
3951- * This program is free software: you can redistribute it and/or modify
3952- * it under the terms of the GNU Lesser General Public License version 3 as
3953- * published by the Free Software Foundation.
3954- *
3955- * This program is distributed in the hope that it will be useful,
3956- * but WITHOUT ANY WARRANTY; without even the implied warranty of
3957- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3958- * GNU Lesser General Public License for more details.
3959- *
3960- * You should have received a copy of the GNU Lesser General Public License
3961- * along with this program. If not, see <http://www.gnu.org/licenses/>.
3962- *
3963- * Authored by: Robert Carr <robert.carr@canonical.com>
3964- */
3965-
3966-#ifndef UBUNTU_APPLICATION_OPTIONS_MIR_PRIV_H_
3967-#define UBUNTU_APPLICATION_OPTIONS_MIR_PRIV_H_
3968-
3969-#include <ubuntu/application/options.h>
3970-#include <ubuntu/application/ui/options.h>
3971-
3972-#include <string>
3973-
3974-namespace ubuntu
3975-{
3976-namespace application
3977-{
3978-namespace mir
3979-{
3980-
3981-class Options
3982-{
3983-public:
3984- Options() = default;
3985- ~Options() = default;
3986-
3987- UApplicationOptions* as_u_application_options();
3988- static Options* from_u_application_options(UApplicationOptions* u_options);
3989-
3990- UApplicationOperationMode operation_mode = U_APPLICATION_FOREGROUND_APP;
3991- UAUiFormFactor form_factor = U_DESKTOP;
3992- UAUiStage stage = U_MAIN_STAGE;
3993-
3994- std::string desktop_file;
3995-
3996-protected:
3997- Options(Options const&) = delete;
3998- Options& operator=(Options const&) = delete;
3999-};
4000-
4001-}
4002-}
4003-} // namespace ubuntu
4004-
4005-#endif // UBUNTU_APPLICATION_OPTIONS_MIR_PRIV_H_
4006
4007=== removed file 'src/mircommon/event_helpers_mir.cpp'
4008--- src/mircommon/event_helpers_mir.cpp 2013-06-05 21:15:46 +0000
4009+++ src/mircommon/event_helpers_mir.cpp 1970-01-01 00:00:00 +0000
4010@@ -1,77 +0,0 @@
4011-/*
4012- * Copyright (C) 2013 Canonical Ltd
4013- *
4014- * This program is free software: you can redistribute it and/or modify
4015- * it under the terms of the GNU Lesser General Public License version 3 as
4016- * published by the Free Software Foundation.
4017- *
4018- * This program is distributed in the hope that it will be useful,
4019- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4020- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4021- * GNU Lesser General Public License for more details.
4022- *
4023- * You should have received a copy of the GNU Lesser General Public License
4024- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4025- *
4026- * Authored by: Robert Carr <robert.carr@canonical.com>
4027- */
4028-
4029-#include "event_helpers_mir.h"
4030-
4031-namespace uaum = ubuntu::application::ui::mir;
4032-
4033-// TODO<mir>: This begs the question: Why does MirEvent exist? It's difficult to ensure this function is kept in sync
4034-// at the unit test level.
4035-void
4036-uaum::event_to_ubuntu_event(MirEvent const* mir_event, Event& ubuntu_ev)
4037-{
4038- switch (mir_event->type)
4039- {
4040- case mir_event_type_key:
4041- ubuntu_ev.type = KEY_EVENT_TYPE;
4042- ubuntu_ev.device_id = mir_event->key.device_id;
4043- ubuntu_ev.source_id = mir_event->key.source_id;
4044- ubuntu_ev.action = mir_event->key.action;
4045- ubuntu_ev.flags = mir_event->key.flags;
4046- ubuntu_ev.meta_state = mir_event->key.modifiers;
4047- ubuntu_ev.details.key.key_code = mir_event->key.key_code;
4048- ubuntu_ev.details.key.scan_code = mir_event->key.scan_code;
4049- ubuntu_ev.details.key.repeat_count = mir_event->key.repeat_count;
4050- ubuntu_ev.details.key.down_time = mir_event->key.down_time;
4051- ubuntu_ev.details.key.event_time = mir_event->key.event_time;
4052- ubuntu_ev.details.key.is_system_key = mir_event->key.is_system_key;
4053- break;
4054- case mir_event_type_motion:
4055- ubuntu_ev.type = MOTION_EVENT_TYPE;
4056- ubuntu_ev.device_id = mir_event->motion.device_id;
4057- ubuntu_ev.source_id = mir_event->motion.source_id;
4058- ubuntu_ev.action = mir_event->motion.action;
4059- ubuntu_ev.flags = mir_event->motion.flags;
4060- ubuntu_ev.meta_state = mir_event->motion.modifiers;
4061- ubuntu_ev.details.motion.edge_flags = mir_event->motion.edge_flags;
4062- ubuntu_ev.details.motion.button_state = mir_event->motion.button_state;
4063- ubuntu_ev.details.motion.x_offset = mir_event->motion.x_offset;
4064- ubuntu_ev.details.motion.y_offset = mir_event->motion.y_offset;
4065- ubuntu_ev.details.motion.x_precision = mir_event->motion.x_precision;
4066- ubuntu_ev.details.motion.y_precision = mir_event->motion.y_precision;
4067- ubuntu_ev.details.motion.down_time = mir_event->motion.down_time;
4068- ubuntu_ev.details.motion.event_time = mir_event->motion.event_time;
4069- ubuntu_ev.details.motion.pointer_count = mir_event->motion.pointer_count;
4070- for (int i = 0; i < mir_event->motion.pointer_count; i++)
4071- {
4072- ubuntu_ev.details.motion.pointer_coordinates[i].id = mir_event->motion.pointer_coordinates[i].id;
4073- ubuntu_ev.details.motion.pointer_coordinates[i].x = mir_event->motion.pointer_coordinates[i].x;
4074- ubuntu_ev.details.motion.pointer_coordinates[i].raw_x = mir_event->motion.pointer_coordinates[i].raw_x;
4075- ubuntu_ev.details.motion.pointer_coordinates[i].y = mir_event->motion.pointer_coordinates[i].y;
4076- ubuntu_ev.details.motion.pointer_coordinates[i].raw_y = mir_event->motion.pointer_coordinates[i].raw_y;
4077- ubuntu_ev.details.motion.pointer_coordinates[i].touch_major = mir_event->motion.pointer_coordinates[i].touch_major;
4078- ubuntu_ev.details.motion.pointer_coordinates[i].touch_minor = mir_event->motion.pointer_coordinates[i].touch_minor;
4079- ubuntu_ev.details.motion.pointer_coordinates[i].size = mir_event->motion.pointer_coordinates[i].size;
4080- ubuntu_ev.details.motion.pointer_coordinates[i].pressure = mir_event->motion.pointer_coordinates[i].pressure;
4081- ubuntu_ev.details.motion.pointer_coordinates[i].orientation = mir_event->motion.pointer_coordinates[i].orientation;
4082- }
4083- break;
4084- default:
4085- break;
4086- }
4087-}
4088
4089=== removed file 'src/mircommon/event_helpers_mir.h'
4090--- src/mircommon/event_helpers_mir.h 2013-06-05 20:02:14 +0000
4091+++ src/mircommon/event_helpers_mir.h 1970-01-01 00:00:00 +0000
4092@@ -1,39 +0,0 @@
4093-/*
4094- * Copyright (C) 2013 Canonical Ltd
4095- *
4096- * This program is free software: you can redistribute it and/or modify
4097- * it under the terms of the GNU Lesser General Public License version 3 as
4098- * published by the Free Software Foundation.
4099- *
4100- * This program is distributed in the hope that it will be useful,
4101- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4102- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4103- * GNU Lesser General Public License for more details.
4104- *
4105- * You should have received a copy of the GNU Lesser General Public License
4106- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4107- *
4108- * Authored by: Robert Carr <robert.carr@canonical.com>
4109- */
4110-
4111-#ifndef UBUNTU_EVENT_HELPERS_MIR_COMMON_H_
4112-#define UBUNTU_EVENT_HELPERS_MIR_COMMON_H_
4113-
4114-#include <ubuntu/application/ui/input/event.h>
4115-#include <mir_toolkit/event.h>
4116-
4117-namespace ubuntu
4118-{
4119-namespace application
4120-{
4121-namespace ui
4122-{
4123-namespace mir
4124-{
4125-void event_to_ubuntu_event(MirEvent const* mir_event, Event& ubuntu_ev);
4126-}
4127-}
4128-}
4129-}
4130-
4131-#endif // UBUNTU_EVENT_HELPERS_MIR_COMMON_H_
4132
4133=== removed file 'src/mircommon/lifecycle_delegate_mir.cpp'
4134--- src/mircommon/lifecycle_delegate_mir.cpp 2013-06-07 17:23:48 +0000
4135+++ src/mircommon/lifecycle_delegate_mir.cpp 1970-01-01 00:00:00 +0000
4136@@ -1,136 +0,0 @@
4137-/*
4138- * Copyright (C) 2013 Canonical Ltd
4139- *
4140- * This program is free software: you can redistribute it and/or modify
4141- * it under the terms of the GNU Lesser General Public License version 3 as
4142- * published by the Free Software Foundation.
4143- *
4144- * This program is distributed in the hope that it will be useful,
4145- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4146- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4147- * GNU Lesser General Public License for more details.
4148- *
4149- * You should have received a copy of the GNU Lesser General Public License
4150- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4151- *
4152- * Authored by: Robert Carr <robert.carr@canonical.com>
4153- */
4154-
4155-#include "lifecycle_delegate_mir_priv.h"
4156-
4157-namespace uam = ubuntu::application::mir;
4158-
4159-// TODO<papi, mir>: This implementation as a stub as we
4160-// currently don't do anything with this in Mir. I am not sure
4161-// what exactly we should be doing either so we need some alignment
4162-// on this.
4163-
4164-uam::LifecycleDelegate::LifecycleDelegate()
4165- : resumed_cb(nullptr),
4166- stop_cb(nullptr),
4167- ctx(nullptr)
4168-{
4169-}
4170-
4171-UApplicationLifecycleDelegate* uam::LifecycleDelegate::as_u_lifecycle_delegate()
4172-{
4173- return static_cast<UApplicationLifecycleDelegate*>(this);
4174-}
4175-
4176-uam::LifecycleDelegate* uam::LifecycleDelegate::from_u_lifecycle_delegate(UApplicationLifecycleDelegate *u_delegate)
4177-{
4178- return static_cast<uam::LifecycleDelegate*>(u_delegate);
4179-}
4180-
4181-void uam::LifecycleDelegate::ref()
4182-{
4183- ref_count++;
4184-}
4185-
4186-void uam::LifecycleDelegate::unref()
4187-{
4188- ref_count--;
4189- if (ref_count == 0)
4190- delete this;
4191-}
4192-
4193-
4194-extern "C"
4195-{
4196-
4197-UApplicationLifecycleDelegate*
4198-u_application_lifecycle_delegate_new()
4199-{
4200- return (new uam::LifecycleDelegate)->as_u_lifecycle_delegate();
4201-}
4202-
4203-void
4204-u_application_lifecycle_delegate_destroy(UApplicationLifecycleDelegate *u_delegate)
4205-{
4206- auto delegate = uam::LifecycleDelegate::from_u_lifecycle_delegate(u_delegate);
4207-
4208- // TODO: What are the intended semantics of this?
4209- delegate->unref();
4210-}
4211-
4212-void
4213-u_application_lifecycle_delegate_ref(UApplicationLifecycleDelegate *u_delegate)
4214-{
4215- auto delegate = uam::LifecycleDelegate::from_u_lifecycle_delegate(u_delegate);
4216- delegate->ref();
4217-}
4218-
4219-void
4220-u_application_lifecycle_delegate_unref(UApplicationLifecycleDelegate *u_delegate)
4221-{
4222- auto delegate = uam::LifecycleDelegate::from_u_lifecycle_delegate(u_delegate);
4223- delegate->unref();
4224-}
4225-
4226-void
4227-u_application_lifecycle_delegate_set_application_resumed_cb(UApplicationLifecycleDelegate *u_delegate,
4228- u_on_application_resumed cb)
4229-{
4230- auto delegate = uam::LifecycleDelegate::from_u_lifecycle_delegate(u_delegate);
4231- delegate->resumed_cb = cb;
4232-}
4233-
4234-u_on_application_resumed
4235-u_application_lifecycle_delegate_get_application_resumed_cb(UApplicationLifecycleDelegate *u_delegate)
4236-{
4237- auto delegate = uam::LifecycleDelegate::from_u_lifecycle_delegate(u_delegate);
4238- return delegate->resumed_cb;
4239-}
4240-
4241-void
4242-u_application_lifecycle_delegate_set_application_about_to_stop_cb(UApplicationLifecycleDelegate *u_delegate,
4243- u_on_application_about_to_stop cb)
4244-{
4245- auto delegate = uam::LifecycleDelegate::from_u_lifecycle_delegate(u_delegate);
4246- delegate->stop_cb = cb;
4247-}
4248-
4249-u_on_application_about_to_stop
4250-u_application_lifecycle_delegate_get_application_about_to_stop_cb(UApplicationLifecycleDelegate *u_delegate)
4251-{
4252- auto delegate = uam::LifecycleDelegate::from_u_lifecycle_delegate(u_delegate);
4253- return delegate->stop_cb;
4254-}
4255-
4256-void
4257-u_application_lifecycle_delegate_set_context(UApplicationLifecycleDelegate *u_delegate,
4258- void *context)
4259-{
4260- auto delegate = uam::LifecycleDelegate::from_u_lifecycle_delegate(u_delegate);
4261- delegate->ctx = context;
4262-}
4263-
4264-void*
4265-u_application_lifecycle_delegate_get_context(UApplicationLifecycleDelegate *u_delegate,
4266- void *context)
4267-{
4268- auto delegate = uam::LifecycleDelegate::from_u_lifecycle_delegate(u_delegate);
4269- return delegate->ctx;
4270-}
4271-
4272-}
4273
4274=== removed file 'src/mircommon/lifecycle_delegate_mir_priv.h'
4275--- src/mircommon/lifecycle_delegate_mir_priv.h 2013-06-07 17:23:48 +0000
4276+++ src/mircommon/lifecycle_delegate_mir_priv.h 1970-01-01 00:00:00 +0000
4277@@ -1,59 +0,0 @@
4278-/*
4279- * Copyright (C) 2013 Canonical Ltd
4280- *
4281- * This program is free software: you can redistribute it and/or modify
4282- * it under the terms of the GNU Lesser General Public License version 3 as
4283- * published by the Free Software Foundation.
4284- *
4285- * This program is distributed in the hope that it will be useful,
4286- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4287- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4288- * GNU Lesser General Public License for more details.
4289- *
4290- * You should have received a copy of the GNU Lesser General Public License
4291- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4292- *
4293- * Authored by: Robert Carr <robert.carr@canonical.com>
4294- */
4295-
4296-#ifndef UBUNTU_APPLICATION_LIECYCLE_DELEGATE_MIR_PRIV_H_
4297-#define UBUNTU_APPLICATION_LIECYCLE_DELEGATE_MIR_PRIV_H_
4298-
4299-#include <ubuntu/application/lifecycle_delegate.h>
4300-
4301-namespace ubuntu
4302-{
4303-namespace application
4304-{
4305-namespace mir
4306-{
4307-
4308-class LifecycleDelegate
4309-{
4310-public:
4311- LifecycleDelegate();
4312- ~LifecycleDelegate() = default;
4313-
4314- UApplicationLifecycleDelegate* as_u_lifecycle_delegate();
4315- static LifecycleDelegate* from_u_lifecycle_delegate(UApplicationLifecycleDelegate *u_delegate);
4316-
4317- void ref();
4318- void unref();
4319-
4320- u_on_application_resumed resumed_cb;
4321- u_on_application_about_to_stop stop_cb;
4322- void *ctx;
4323-
4324-protected:
4325- LifecycleDelegate(LifecycleDelegate const&) = delete;
4326- LifecycleDelegate& operator=(LifecycleDelegate const&) = delete;
4327-
4328-private:
4329- unsigned int ref_count;
4330-};
4331-
4332-}
4333-}
4334-}
4335-
4336-#endif // UBUNTU_APPLICATION_LIECYCLE_DELEGATE_MIR_PRIV_H_
4337
4338=== removed file 'src/mircommon/session_mir.cpp'
4339--- src/mircommon/session_mir.cpp 2013-06-21 17:03:18 +0000
4340+++ src/mircommon/session_mir.cpp 1970-01-01 00:00:00 +0000
4341@@ -1,51 +0,0 @@
4342-/*
4343- * Copyright (C) 2013 Canonical Ltd
4344- *
4345- * This program is free software: you can redistribute it and/or modify
4346- * it under the terms of the GNU Lesser General Public License version 3 as
4347- * published by the Free Software Foundation.
4348- *
4349- * This program is distributed in the hope that it will be useful,
4350- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4351- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4352- * GNU Lesser General Public License for more details.
4353- *
4354- * You should have received a copy of the GNU Lesser General Public License
4355- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4356- *
4357- * Authored by: Robert Carr <robert.carr@canonical.com>
4358- */
4359-
4360-#include <ubuntu/application/ui/session.h>
4361-
4362-// TODO<papi>: Not sure what this should do for mir. ApplicationInstance maps to the mir
4363-// concept of a session and this doesn't really seem to be used
4364-
4365-extern "C"
4366-{
4367-
4368-UAUiSession* ua_ui_session_new_with_properties(UAUiSessionProperties *properties)
4369-{
4370- return nullptr;
4371-}
4372-
4373-UAUiSessionProperties* ua_ui_session_properties_new()
4374-{
4375- return nullptr;
4376-}
4377-
4378-void ua_ui_session_properties_set_type(UAUiSessionProperties* properties,
4379- UAUiSessionType type)
4380-{
4381- (void) properties;
4382- (void) type;
4383-}
4384-
4385-void ua_ui_session_properties_set_remote_pid(UAUiSessionProperties* properties,
4386- uint32_t pid)
4387-{
4388- (void) properties;
4389- (void) pid;
4390-}
4391-
4392-}
4393
4394=== removed file 'src/mircommon/ubuntu_application_sensors_desktop.cpp'
4395--- src/mircommon/ubuntu_application_sensors_desktop.cpp 2013-06-05 23:47:51 +0000
4396+++ src/mircommon/ubuntu_application_sensors_desktop.cpp 1970-01-01 00:00:00 +0000
4397@@ -1,190 +0,0 @@
4398-/*
4399- * Copyright (C) 2012 Canonical Ltd
4400- *
4401- * This program is free software: you can redistribute it and/or modify
4402- * it under the terms of the GNU Lesser General Public License version 3 as
4403- * published by the Free Software Foundation.
4404- *
4405- * This program is distributed in the hope that it will be useful,
4406- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4407- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4408- * GNU Lesser General Public License for more details.
4409- *
4410- * You should have received a copy of the GNU Lesser General Public License
4411- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4412- *
4413- * Authored by: Thomas Voss <thomas.voss@canonical.com>
4414- * Ricardo Mendoza <ricardo.mendoza@canonical.com>
4415- */
4416-
4417-#include <ubuntu/application/sensors/accelerometer.h>
4418-#include <ubuntu/application/sensors/proximity.h>
4419-#include <ubuntu/application/sensors/light.h>
4420-
4421-#include <stddef.h>
4422-
4423-// Ubuntu Application Sensors. Null desktop implementation
4424-
4425-// Acceleration Sensor
4426-UASensorsAccelerometer* ua_sensors_accelerometer_new()
4427-{
4428- return NULL;
4429-}
4430-
4431-UStatus ua_sensors_accelerometer_enable(UASensorsAccelerometer*)
4432-{
4433- return (UStatus) 0;
4434-}
4435-
4436-UStatus ua_sensors_accelerometer_disable(UASensorsAccelerometer*)
4437-{
4438- return (UStatus) 0;
4439-}
4440-
4441-uint32_t ua_sensors_accelerometer_get_min_delay(UASensorsAccelerometer*)
4442-{
4443- return 0;
4444-}
4445-
4446-float ua_sensors_accelerometer_get_min_value(UASensorsAccelerometer*)
4447-{
4448- return 0.0;
4449-}
4450-
4451-float ua_sensors_accelerometer_get_max_value(UASensorsAccelerometer*)
4452-{
4453- return 0.0;
4454-}
4455-
4456-float ua_sensors_accelerometer_get_resolution(UASensorsAccelerometer*)
4457-{
4458- return 0.0;
4459-}
4460-
4461-void ua_sensors_accelerometer_set_reading_cb(UASensorsAccelerometer*, on_accelerometer_event_cb, void*)
4462-{
4463-}
4464-
4465-// Acceleration Sensor Event
4466-uint64_t uas_accelerometer_event_get_timestamp(UASAccelerometerEvent*)
4467-{
4468- return 0;
4469-}
4470-
4471-float uas_accelerometer_event_get_acceleration_x(UASAccelerometerEvent*)
4472-{
4473- return 0.0;
4474-}
4475-
4476-float uas_accelerometer_event_get_acceleration_y(UASAccelerometerEvent*)
4477-{
4478- return 0.0;
4479-}
4480-
4481-float uas_accelerometer_event_get_acceleration_z(UASAccelerometerEvent*)
4482-{
4483- return 0.0;
4484-}
4485-
4486-// Proximity Sensor
4487-UASensorsProximity* ua_sensors_proximity_new()
4488-{
4489- return NULL;
4490-}
4491-
4492-UStatus ua_sensors_proximity_enable(UASensorsProximity*)
4493-{
4494- return (UStatus) 0;
4495-}
4496-
4497-UStatus ua_sensors_proximity_disable(UASensorsProximity*)
4498-{
4499- return (UStatus) 0;
4500-}
4501-
4502-uint32_t ua_sensors_proximity_get_min_delay(UASensorsProximity*)
4503-{
4504- return 0;
4505-}
4506-
4507-float ua_sensors_proximity_get_min_value(UASensorsProximity*)
4508-{
4509- return 0.0;
4510-}
4511-
4512-float ua_sensors_proximity_get_max_value(UASensorsProximity*)
4513-{
4514- return 0.0;
4515-}
4516-
4517-float ua_sensors_proximity_get_resolution(UASensorsProximity*)
4518-{
4519- return 0.0;
4520-}
4521-
4522-void ua_sensors_proximity_set_reading_cb(UASensorsProximity*, on_proximity_event_cb, void*)
4523-{
4524-}
4525-
4526-// Proximity Sensor Event
4527-uint64_t uas_proximity_event_get_timestamp(UASProximityEvent*)
4528-{
4529- return 0;
4530-}
4531-
4532-UASProximityDistance uas_proximity_event_get_distance(UASProximityEvent*)
4533-{
4534- return (UASProximityDistance) 0;
4535-}
4536-
4537-
4538-// Ambient Light Sensor
4539-UASensorsLight* ua_sensors_light_new()
4540-{
4541- return NULL;
4542-}
4543-
4544-UStatus ua_sensors_light_enable(UASensorsLight*)
4545-{
4546- return (UStatus) 0;
4547-}
4548-
4549-UStatus ua_sensors_light_disable(UASensorsLight*)
4550-{
4551- return (UStatus) 0;
4552-}
4553-
4554-uint32_t ua_sensors_light_get_min_delay(UASensorsLight*)
4555-{
4556- return 0;
4557-}
4558-
4559-float ua_sensors_light_get_min_value(UASensorsLight*)
4560-{
4561- return 0.0;
4562-}
4563-
4564-float ua_sensors_light_get_max_value(UASensorsLight*)
4565-{
4566- return 0.0;
4567-}
4568-
4569-float ua_sensors_light_get_resolution(UASensorsLight*)
4570-{
4571- return 0.0;
4572-}
4573-
4574-void ua_sensors_light_set_reading_cb(UASensorsLight*, on_light_event_cb, void*)
4575-{
4576-}
4577-
4578-// Ambient Light Sensor Event
4579-uint64_t uas_light_event_get_timestamp(UASLightEvent*)
4580-{
4581- return 0;
4582-}
4583-
4584-float uas_light_event_get_light(UASLightEvent*)
4585-{
4586- return 0.0;
4587-}
4588
4589=== removed directory 'src/mirserver'
4590=== removed file 'src/mirserver/CMakeLists.txt'
4591--- src/mirserver/CMakeLists.txt 2013-07-18 09:08:17 +0000
4592+++ src/mirserver/CMakeLists.txt 1970-01-01 00:00:00 +0000
4593@@ -1,38 +0,0 @@
4594-set(SOURCES
4595- ubuntu_application_api_mirserver.cpp
4596- application_instance_mirserver.cpp
4597- window_properties_mirserver.cpp
4598- window_mirserver.cpp
4599-)
4600-
4601-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11 -fPIC")
4602-
4603-add_library(
4604- ubuntu_application_api_mirserver SHARED
4605- ${SOURCES}
4606-)
4607-
4608-include_directories(
4609- ${CMAKE_BINARY_DIR}/include
4610- ${MIRSERVER_INCLUDE_DIRS}
4611-)
4612-
4613-target_link_libraries(
4614- ubuntu_application_api_mirserver
4615- ${MIRSERVER_LDFLAGS} ${MIRSERVER_LIBRARIES}
4616- -Wl,--whole-archive ubuntu_application_api_mircommon
4617- -Wl,--no-whole-archive
4618-)
4619-
4620-
4621-install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ubuntu_application_api_mirserver_priv.h DESTINATION include/ubuntu/priv/mirserver)
4622-
4623-set_target_properties(
4624- ubuntu_application_api_mirserver
4625- PROPERTIES
4626- VERSION 1.0
4627- SOVERSION 1
4628-)
4629-
4630-install(TARGETS ubuntu_application_api_mirserver ${INSTALL_TARGETS_DEFAULT_ARGS})
4631-install(FILES ubuntu_application_api_mirserver_priv.h DESTINATION include/ubuntu/application)
4632
4633=== removed file 'src/mirserver/application_instance_mirserver.cpp'
4634--- src/mirserver/application_instance_mirserver.cpp 2013-06-17 22:51:21 +0000
4635+++ src/mirserver/application_instance_mirserver.cpp 1970-01-01 00:00:00 +0000
4636@@ -1,83 +0,0 @@
4637-/*
4638- * Copyright (C) 2013 Canonical Ltd
4639- *
4640- * This program is free software: you can redistribute it and/or modify
4641- * it under the terms of the GNU Lesser General Public License version 3 as
4642- * published by the Free Software Foundation.
4643- *
4644- * This program is distributed in the hope that it will be useful,
4645- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4646- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4647- * GNU Lesser General Public License for more details.
4648- *
4649- * You should have received a copy of the GNU Lesser General Public License
4650- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4651- *
4652- * Authored by: Robert Carr <robert.carr@canonical.com>
4653- */
4654-
4655-#include "application_instance_mirserver_priv.h"
4656-
4657-#include "mircommon/application_description_mir_priv.h"
4658-#include "mircommon/application_options_mir_priv.h"
4659-#include "mircommon/application_id_mir_priv.h"
4660-
4661-#include <mir/shell/surface.h>
4662-#include <mir/shell/surface_factory.h>
4663-#include <mir/shell/surface_creation_parameters.h>
4664-
4665-namespace uam = ubuntu::application::mir;
4666-namespace uams = uam::server;
4667-
4668-namespace mf = mir::frontend;
4669-namespace me = mir::events;
4670-namespace msh = mir::shell;
4671-
4672-uams::Instance::Instance(std::shared_ptr<msh::SurfaceFactory> const &surface_factory,
4673- uam::Description* description_,
4674- uam::Options *options_)
4675- : surface_factory(surface_factory),
4676- ref_count(1)
4677-{
4678- description = DescriptionPtr(description_,
4679- [] (uam::Description* p)
4680- {
4681- delete p;
4682- });
4683- options = OptionsPtr(options_,
4684- [] (uam::Options* p)
4685- {
4686- delete p;
4687- });
4688-}
4689-
4690-UApplicationInstance* uams::Instance::as_u_application_instance()
4691-{
4692- return static_cast<UApplicationInstance*>(this);
4693-}
4694-
4695-uams::Instance* uams::Instance::from_u_application_instance(UApplicationInstance *u_instance)
4696-{
4697- return static_cast<uams::Instance*>(u_instance);
4698-}
4699-
4700-void uams::Instance::ref()
4701-{
4702- ref_count++;
4703-}
4704-
4705-void uams::Instance::unref()
4706-{
4707- ref_count--;
4708- if (ref_count == 0)
4709- delete this;
4710-}
4711-
4712-std::shared_ptr<msh::Surface> uams::Instance::create_surface(msh::SurfaceCreationParameters const& parameters)
4713-{
4714- static std::shared_ptr<me::EventSink> const null_event_sink{nullptr};
4715- static mf::SurfaceId const default_surface_id{0};
4716-
4717- return surface_factory->create_surface(parameters, default_surface_id,
4718- null_event_sink);
4719-}
4720
4721=== removed file 'src/mirserver/application_instance_mirserver_priv.h'
4722--- src/mirserver/application_instance_mirserver_priv.h 2013-06-17 22:51:21 +0000
4723+++ src/mirserver/application_instance_mirserver_priv.h 1970-01-01 00:00:00 +0000
4724@@ -1,85 +0,0 @@
4725-/*
4726- * Copyright (C) 2013 Canonical Ltd
4727- *
4728- * This program is free software: you can redistribute it and/or modify
4729- * it under the terms of the GNU Lesser General Public License version 3 as
4730- * published by the Free Software Foundation.
4731- *
4732- * This program is distributed in the hope that it will be useful,
4733- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4734- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4735- * GNU Lesser General Public License for more details.
4736- *
4737- * You should have received a copy of the GNU Lesser General Public License
4738- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4739- *
4740- * Authored by: Robert Carr <robert.carr@canonical.com>
4741- */
4742-
4743-#ifndef UBUNTU_APPLICATION_INSTANCE_MIRSERVER_PRIV_H_
4744-#define UBUNTU_APPLICATION_INSTANCE_MIRSERVER_PRIV_H_
4745-
4746-#include <ubuntu/application/instance.h>
4747-
4748-#include <memory>
4749-#include <functional>
4750-
4751-namespace mir
4752-{
4753-namespace shell
4754-{
4755-class SurfaceCreationParameters;
4756-class Surface;
4757-class SurfaceFactory;
4758-}
4759-}
4760-
4761-namespace ubuntu
4762-{
4763-namespace application
4764-{
4765-namespace mir
4766-{
4767-class Description;
4768-class Options;
4769-
4770-namespace server
4771-{
4772-
4773-class Instance
4774-{
4775-public:
4776- Instance(std::shared_ptr< ::mir::shell::SurfaceFactory> const& surface_factory,
4777- ubuntu::application::mir::Description* description,
4778- ubuntu::application::mir::Options *options);
4779- ~Instance() = default;
4780-
4781- UApplicationInstance* as_u_application_instance();
4782- static Instance* from_u_application_instance(UApplicationInstance* u_instance);
4783-
4784- void ref();
4785- void unref();
4786-
4787- std::shared_ptr< ::mir::shell::Surface> create_surface( ::mir::shell::SurfaceCreationParameters const& parameters);
4788-
4789-protected:
4790- Instance(Instance const&) = delete;
4791- Instance& operator=(Instance const&) = delete;
4792-
4793-private:
4794- typedef std::unique_ptr<Description, std::function<void(Description*)>> DescriptionPtr;
4795- typedef std::unique_ptr<Options, std::function<void(Options*)>> OptionsPtr;
4796-
4797- OptionsPtr options;
4798- DescriptionPtr description;
4799-
4800- std::shared_ptr< ::mir::shell::SurfaceFactory> const surface_factory;
4801- int ref_count;
4802-};
4803-
4804-}
4805-}
4806-}
4807-} // namespace ubuntu
4808-
4809-#endif // UBUNTU_APPLICATION_INSTANCE_MIRSERVER_PRIV_H_
4810
4811=== removed file 'src/mirserver/ubuntu_application_api_mirserver.cpp'
4812--- src/mirserver/ubuntu_application_api_mirserver.cpp 2013-06-17 22:51:21 +0000
4813+++ src/mirserver/ubuntu_application_api_mirserver.cpp 1970-01-01 00:00:00 +0000
4814@@ -1,320 +0,0 @@
4815-/*
4816- * Copyright (C) 2013 Canonical Ltd
4817- *
4818- * This program is free software: you can redistribute it and/or modify
4819- * it under the terms of the GNU Lesser General Public License version 3 as
4820- * published by the Free Software Foundation.
4821- *
4822- * This program is distributed in the hope that it will be useful,
4823- * but WITHOUT ANY WARRANTY; without even the implied warranty of
4824- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4825- * GNU Lesser General Public License for more details.
4826- *
4827- * You should have received a copy of the GNU Lesser General Public License
4828- * along with this program. If not, see <http://www.gnu.org/licenses/>.
4829- *
4830- * Authored by: Robert Carr <robert.carr@canonical.com>
4831- */
4832-
4833-#include "ubuntu_application_api_mirserver_priv.h"
4834-#include "application_instance_mirserver_priv.h"
4835-#include "window_properties_mirserver_priv.h"
4836-#include "window_mirserver_priv.h"
4837-
4838-#include "mircommon/application_id_mir_priv.h"
4839-#include "mircommon/application_description_mir_priv.h"
4840-#include "mircommon/application_options_mir_priv.h"
4841-
4842-// C APIs
4843-#include <ubuntu/application/lifecycle_delegate.h>
4844-#include <ubuntu/application/ui/window.h>
4845-#include <ubuntu/application/ui/options.h>
4846-#include <ubuntu/application/ui/session.h>
4847-#include <ubuntu/application/ui/clipboard.h>
4848-#include <ubuntu/application/ui/display.h>
4849-#include <ubuntu/application/sensors/accelerometer.h>
4850-#include <ubuntu/application/sensors/proximity.h>
4851-#include <ubuntu/application/sensors/light.h>
4852-
4853-#include <mir/default_server_configuration.h>
4854-
4855-#include <mir/graphics/display.h>
4856-#include <mir/graphics/platform.h>
4857-#include <mir/compositor/graphic_buffer_allocator.h>
4858-#include <mir/frontend/session.h>
4859-#include <mir/frontend/shell.h>
4860-#include <mir/shell/surface_creation_parameters.h>
4861-#include <mir/shell/surface.h>
4862-#include <mir/graphics/internal_client.h>
4863-#include <mir/input/input_platform.h>
4864-
4865-#include <assert.h>
4866-
4867-#include <memory>
4868-#include <functional>
4869-
4870-namespace uam = ubuntu::application::mir;
4871-namespace uams = ubuntu::application::mir::server;
4872-
4873-namespace
4874-{
4875-
4876-struct MirServerContext
4877-{
4878- std::shared_ptr<mir::graphics::Display> display;
4879- std::shared_ptr<mir::compositor::GraphicBufferAllocator> buffer_allocator;
4880- std::shared_ptr<mir::shell::SurfaceFactory> surface_factory;
4881- std::shared_ptr<mir::input::receiver::InputPlatform> input_platform;
4882- std::shared_ptr<mir::graphics::InternalClient> egl_client;
4883-};
4884-
4885-MirServerContext *
4886-global_mirserver_context()
4887-{
4888- static MirServerContext context;
4889- return &context;
4890-}
4891-
4892-extern "C"
4893-{
4894-void ua_ui_mirserver_init(mir::DefaultServerConfiguration& config)
4895-{
4896- auto context = global_mirserver_context();
4897-
4898- context->display = config.the_display();
4899- context->buffer_allocator = config.the_buffer_allocator();
4900- context->surface_factory = config.the_shell_surface_factory();
4901- context->input_platform = mir::input::receiver::InputPlatform::create();
4902- context->egl_client = config.the_graphics_platform()->create_internal_client();
4903-}
4904-
4905-void ua_ui_mirserver_finish()
4906-{
4907- auto context = global_mirserver_context();
4908-
4909- context->display.reset();
4910- context->surface_factory.reset();
4911- context->input_platform.reset();
4912- context->egl_client.reset();
4913-}
4914-}
4915-
4916-}
4917-
4918-
4919-extern "C"
4920-{
4921-
4922-UApplicationInstance* u_application_instance_new_from_description_with_options(UApplicationDescription* u_description, UApplicationOptions* u_options)
4923-{
4924- auto surface_factory = global_mirserver_context()->surface_factory;
4925- assert(surface_factory);
4926-
4927- auto description = uam::Description::from_u_application_description(u_description);
4928- auto options = uam::Options::from_u_application_options(u_options);
4929-
4930- auto instance = new uams::Instance(surface_factory, description, options);
4931-
4932- return instance->as_u_application_instance();
4933-}
4934-
4935-void
4936-u_application_instance_ref(UApplicationInstance *u_instance)
4937-{
4938- auto instance = uams::Instance::from_u_application_instance(u_instance);
4939- instance->ref();
4940-}
4941-
4942-void
4943-u_application_instance_unref(UApplicationInstance *u_instance)
4944-{
4945- auto instance = uams::Instance::from_u_application_instance(u_instance);
4946- instance->unref();
4947-}
4948-
4949-void
4950-u_application_instance_destroy(UApplicationInstance *instance)
4951-{
4952- // TODO<papi>: What are the proper semantics here.
4953- u_application_instance_unref(instance);
4954-}
4955-
4956-void
4957-u_application_instance_run(UApplicationInstance *instance)
4958-{
4959- // TODO<papi>: What is this supposed to do? Seems to be no-op on hybris.
4960- (void) instance;
4961-}
4962-
4963-void ua_ui_set_clipboard_content(void* content, size_t content_size)
4964-{
4965- // TODO<mir,papi>: Implement. Probably need more arguments?
4966- (void) content;
4967- (void) content_size;
4968-}
4969-
4970-void ua_ui_get_clipboard_content(void** out_content, size_t* out_content_size)
4971-{
4972- // TODO<mir,papi>: Implement
4973- *out_content = NULL;
4974- *out_content_size = 0;
4975-}
4976-
4977-UAUiDisplay* ua_ui_display_new_with_index(size_t index)
4978-{
4979- // TODO<mir>: Make use of index. This is kind of strangely done...
4980- return reinterpret_cast<UAUiDisplay*>(index);
4981-}
4982-
4983-void ua_ui_display_destroy(UAUiDisplay* display)
4984-{
4985- // TODO: Implement. Or is this a noop for mirserver?
4986- (void) display;
4987-}
4988-
4989-uint32_t ua_ui_display_query_horizontal_res(UAUiDisplay* display)
4990-{
4991- (void) display; // TODO<mir>: Multiple displays
4992-
4993- auto mir_display = global_mirserver_context()->display;
4994- assert(mir_display);
4995-
4996- return mir_display->view_area().size.width.as_uint32_t();
4997-}
4998-
4999-uint32_t ua_ui_display_query_vertical_res(UAUiDisplay* display)
5000-{
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches