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
=== modified file 'plugins/position/CMakeLists.txt'
--- plugins/position/CMakeLists.txt 2014-01-10 16:51:27 +0000
+++ plugins/position/CMakeLists.txt 2015-02-26 19:26:34 +0000
@@ -1,6 +1,7 @@
1find_package(PkgConfig)1find_package(PkgConfig)
22
3find_package(Qt5Core REQUIRED)3find_package(Qt5Core REQUIRED)
4find_package(Qt5Gui REQUIRED)
4find_package(Qt5Location REQUIRED)5find_package(Qt5Location REQUIRED)
56
6pkg_check_modules(UBUNTU_PLATFORM_API ubuntu-platform-api REQUIRED)7pkg_check_modules(UBUNTU_PLATFORM_API ubuntu-platform-api REQUIRED)
@@ -26,14 +27,16 @@
2627
27message(STATUS "Installing Qt5 location plugin to: ${PLUGIN_INSTALL_LOCATION}")28message(STATUS "Installing Qt5 location plugin to: ${PLUGIN_INSTALL_LOCATION}")
2829
29qt5_use_modules(qtposition_ubuntu Core Location)30qt5_use_modules(qtposition_ubuntu Core Gui Location)
31qt5_use_modules(qtposition_ubuntu Gui Location)
3032
31target_link_libraries(33target_link_libraries(
32 qtposition_ubuntu34 qtposition_ubuntu
3335
34 ${CMAKE_THREAD_LIBS_INIT}36 ${CMAKE_THREAD_LIBS_INIT}
3537
36 Qt5::Core 38 Qt5::Core
39 Qt5::Gui
37 Qt5::Location40 Qt5::Location
3841
39 ${UBUNTU_PLATFORM_API_LIBRARIES}42 ${UBUNTU_PLATFORM_API_LIBRARIES}
4043
=== modified file 'plugins/position/core_geo_position_info_source.cpp'
--- plugins/position/core_geo_position_info_source.cpp 2015-02-18 18:41:17 +0000
+++ plugins/position/core_geo_position_info_source.cpp 2015-02-26 19:26:34 +0000
@@ -20,8 +20,8 @@
2020
21#include <cmath>21#include <cmath>
2222
23#include <QGuiApplication>
23#include <QtCore>24#include <QtCore>
24#include <QCoreApplication>
2525
26#include <ubuntu/application/location/service.h>26#include <ubuntu/application/location/service.h>
27#include <ubuntu/application/location/session.h>27#include <ubuntu/application/location/session.h>
@@ -94,13 +94,14 @@
94 QObject::connect(&d->timer, SIGNAL(timeout()), this, SLOT(timeout()), Qt::DirectConnection);94 QObject::connect(&d->timer, SIGNAL(timeout()), this, SLOT(timeout()), Qt::DirectConnection);
95 // Whenever we receive an update, we stop the timeout timer immediately.95 // Whenever we receive an update, we stop the timeout timer immediately.
96 QObject::connect(this, SIGNAL(positionUpdated(const QGeoPositionInfo&)), &d->timer, SLOT(stop()));96 QObject::connect(this, SIGNAL(positionUpdated(const QGeoPositionInfo&)), &d->timer, SLOT(stop()));
97 97 QObject::connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(applicationStateChanged()));
98 QCoreApplication::instance()->installEventFilter(this);98 qRegisterMetaType<Qt::ApplicationState>("Qt::ApplicationState");
99}99}
100100
101bool core::GeoPositionInfoSource::eventFilter(QObject *obj, QEvent *event)101void core::GeoPositionInfoSource::applicationStateChanged()
102{102{
103 if (event->type() == QEvent::ApplicationDeactivate) {103 Qt::ApplicationState state = qApp->applicationState();
104 if (state == Qt::ApplicationInactive) {
104 if (m_applicationActive) {105 if (m_applicationActive) {
105 int state = m_state;106 int state = m_state;
106 stopUpdates();107 stopUpdates();
@@ -119,7 +120,7 @@
119 }120 }
120 }121 }
121 }122 }
122 else if (event->type() == QEvent::ApplicationActivate) {123 else if (state == Qt::ApplicationActive) {
123 if (!m_applicationActive) {124 if (!m_applicationActive) {
124 m_applicationActive = true;125 m_applicationActive = true;
125126
@@ -134,8 +135,6 @@
134 }135 }
135 }136 }
136 }137 }
137
138 return QObject::eventFilter(obj, event);
139}138}
140139
141140
142141
=== modified file 'plugins/position/core_geo_position_info_source.h'
--- plugins/position/core_geo_position_info_source.h 2015-02-13 15:35:54 +0000
+++ plugins/position/core_geo_position_info_source.h 2015-02-26 19:26:34 +0000
@@ -30,8 +30,6 @@
30 GeoPositionInfoSource(QObject *parent = 0);30 GeoPositionInfoSource(QObject *parent = 0);
31 ~GeoPositionInfoSource();31 ~GeoPositionInfoSource();
3232
33 bool eventFilter(QObject *obj, QEvent *event);
34
35 // From QGeoPositionInfoSource33 // From QGeoPositionInfoSource
36 void setUpdateInterval(int msec);34 void setUpdateInterval(int msec);
37 QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const;35 QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const;
@@ -49,6 +47,7 @@
49 };47 };
5048
51public slots:49public slots:
50 void applicationStateChanged();
52 virtual void startUpdates();51 virtual void startUpdates();
53 virtual void stopUpdates();52 virtual void stopUpdates();
54 virtual void requestUpdate(int timeout = 5000);53 virtual void requestUpdate(int timeout = 5000);

Subscribers

People subscribed via source and target branches