Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qgeopositioninfosourcedispatcher_wasm.cpp
Go to the documentation of this file.
1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
6
7
9
10Q_GLOBAL_STATIC(QGeoPositionInfoDispatcherWasm, g_dispatcherWasm)
11
12QGeoPositionInfoDispatcherWasm::QGeoPositionInfoDispatcherWasm()
13{
14}
15
17{
18 m_instanceRegistry.clear();
19}
20
22{
23 static quint32 counter = 0;
24 counter++;
25 return counter;
26}
27
29{
30 std::lock_guard<std::mutex> lock(registryMutex);
31 quint32 id = incrementIdOfRegisterSourceInfo();
32 m_instanceRegistry[id] = source;
33 return id;
34}
35
37{
38 std::lock_guard<std::mutex> lock(registryMutex);
39 m_instanceRegistry.erase(instanceId);
40}
41
43{
44 std::lock_guard<std::mutex> lock(registryMutex);
45 auto it = m_instanceRegistry.find(instanceId);
46 if (it != m_instanceRegistry.end())
47 return it->second;
48
49 return nullptr;
50}
51
56
57void QGeoPositionInfoDispatcherWasm::geolocationSuccess(int instanceId, val position)
58{
59 if (auto source = lookUpInfoSource(instanceId))
60 source->geolocationSuccess(position);
61}
62
63void QGeoPositionInfoDispatcherWasm::geolocationError(int instanceId, val error)
64{
65 if (auto source = lookUpInfoSource(instanceId))
66 source->geolocationError(error);
67}
68
70{
71 val::global("console").call<void>("log", value);
72}
73
75{
76 function("qtGeolocationPositionSuccess", optional_override([](int id, val pos) {
77 QGeoPositionInfoDispatcherWasm::instance()->geolocationSuccess(id, pos);
78 }));
79
80 function("qtGeolocationPositionError", optional_override([](int id, val err) {
81 QGeoPositionInfoDispatcherWasm::instance()->geolocationError(id, err);
82 }));
83
84}
85
86QT_END_NAMESPACE
int registerInfoSourceInstance(QGeoPositionInfoSourceWasm *source)
QGeoPositionInfoSourceWasm * lookUpInfoSource(int instanceId)
void geolocationSuccess(int instanceId, val position)
static QGeoPositionInfoDispatcherWasm * instance()
void geolocationError(GeolocationPositionError error)
void geolocationSuccess(GeolocationPosition position)
QJSValue function
Definition qjsengine.cpp:9
Combined button and popup list for selecting options.
EMSCRIPTEN_BINDINGS(qt_geolocation)