Merge lp:~ricmm/qtubuntu-sensors/browser-location-vivid into lp:qtubuntu-sensors

Proposed by Ricardo Mendoza
Status: Merged
Approved by: Ricardo Salveti
Approved revision: 84
Merged at revision: 84
Proposed branch: lp:~ricmm/qtubuntu-sensors/browser-location-vivid
Merge into: lp:qtubuntu-sensors
Diff against target: 102 lines (+13/-12)
3 files modified
plugins/position/CMakeLists.txt (+5/-2)
plugins/position/core_geo_position_info_source.cpp (+7/-8)
plugins/position/core_geo_position_info_source.h (+1/-2)
To merge this branch: bzr merge lp:~ricmm/qtubuntu-sensors/browser-location-vivid
Reviewer Review Type Date Requested Status
Ricardo Salveti (community) Approve
PS Jenkins bot continuous-integration Approve
Review via email: mp+251152@code.launchpad.net

Commit message

Connect to application state signals directly and explicitly by registering the meta type in case we dont live on the UI thread. Fix #1402994.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Ricardo Salveti (rsalveti) wrote :

Works fine and it finally stops location updates after moving removing the focus from the webapp.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'plugins/position/CMakeLists.txt'
2--- plugins/position/CMakeLists.txt 2014-01-10 16:51:27 +0000
3+++ plugins/position/CMakeLists.txt 2015-02-26 19:26:34 +0000
4@@ -1,6 +1,7 @@
5 find_package(PkgConfig)
6
7 find_package(Qt5Core REQUIRED)
8+find_package(Qt5Gui REQUIRED)
9 find_package(Qt5Location REQUIRED)
10
11 pkg_check_modules(UBUNTU_PLATFORM_API ubuntu-platform-api REQUIRED)
12@@ -26,14 +27,16 @@
13
14 message(STATUS "Installing Qt5 location plugin to: ${PLUGIN_INSTALL_LOCATION}")
15
16-qt5_use_modules(qtposition_ubuntu Core Location)
17+qt5_use_modules(qtposition_ubuntu Core Gui Location)
18+qt5_use_modules(qtposition_ubuntu Gui Location)
19
20 target_link_libraries(
21 qtposition_ubuntu
22
23 ${CMAKE_THREAD_LIBS_INIT}
24
25- Qt5::Core
26+ Qt5::Core
27+ Qt5::Gui
28 Qt5::Location
29
30 ${UBUNTU_PLATFORM_API_LIBRARIES}
31
32=== modified file 'plugins/position/core_geo_position_info_source.cpp'
33--- plugins/position/core_geo_position_info_source.cpp 2015-02-18 18:41:17 +0000
34+++ plugins/position/core_geo_position_info_source.cpp 2015-02-26 19:26:34 +0000
35@@ -20,8 +20,8 @@
36
37 #include <cmath>
38
39+#include <QGuiApplication>
40 #include <QtCore>
41-#include <QCoreApplication>
42
43 #include <ubuntu/application/location/service.h>
44 #include <ubuntu/application/location/session.h>
45@@ -94,13 +94,14 @@
46 QObject::connect(&d->timer, SIGNAL(timeout()), this, SLOT(timeout()), Qt::DirectConnection);
47 // Whenever we receive an update, we stop the timeout timer immediately.
48 QObject::connect(this, SIGNAL(positionUpdated(const QGeoPositionInfo&)), &d->timer, SLOT(stop()));
49-
50- QCoreApplication::instance()->installEventFilter(this);
51+ QObject::connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(applicationStateChanged()));
52+ qRegisterMetaType<Qt::ApplicationState>("Qt::ApplicationState");
53 }
54
55-bool core::GeoPositionInfoSource::eventFilter(QObject *obj, QEvent *event)
56+void core::GeoPositionInfoSource::applicationStateChanged()
57 {
58- if (event->type() == QEvent::ApplicationDeactivate) {
59+ Qt::ApplicationState state = qApp->applicationState();
60+ if (state == Qt::ApplicationInactive) {
61 if (m_applicationActive) {
62 int state = m_state;
63 stopUpdates();
64@@ -119,7 +120,7 @@
65 }
66 }
67 }
68- else if (event->type() == QEvent::ApplicationActivate) {
69+ else if (state == Qt::ApplicationActive) {
70 if (!m_applicationActive) {
71 m_applicationActive = true;
72
73@@ -134,8 +135,6 @@
74 }
75 }
76 }
77-
78- return QObject::eventFilter(obj, event);
79 }
80
81
82
83=== modified file 'plugins/position/core_geo_position_info_source.h'
84--- plugins/position/core_geo_position_info_source.h 2015-02-13 15:35:54 +0000
85+++ plugins/position/core_geo_position_info_source.h 2015-02-26 19:26:34 +0000
86@@ -30,8 +30,6 @@
87 GeoPositionInfoSource(QObject *parent = 0);
88 ~GeoPositionInfoSource();
89
90- bool eventFilter(QObject *obj, QEvent *event);
91-
92 // From QGeoPositionInfoSource
93 void setUpdateInterval(int msec);
94 QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const;
95@@ -49,6 +47,7 @@
96 };
97
98 public slots:
99+ void applicationStateChanged();
100 virtual void startUpdates();
101 virtual void stopUpdates();
102 virtual void requestUpdate(int timeout = 5000);

Subscribers

People subscribed via source and target branches