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// Qt-Security score:significant reason:default
4
7
8
10
11Q_GLOBAL_STATIC(QGeoPositionInfoDispatcherWasm, g_dispatcherWasm)
12
13QGeoPositionInfoDispatcherWasm::QGeoPositionInfoDispatcherWasm()
14{
15}
16
18{
19 m_instanceRegistry.clear();
20}
21
23{
24 static quint32 counter = 0;
25 counter++;
26 return counter;
27}
28
30{
31 std::lock_guard<std::mutex> lock(registryMutex);
32 quint32 id = incrementIdOfRegisterSourceInfo();
33 m_instanceRegistry[id] = source;
34 return id;
35}
36
38{
39 std::lock_guard<std::mutex> lock(registryMutex);
40 m_instanceRegistry.erase(instanceId);
41}
42
44{
45 std::lock_guard<std::mutex> lock(registryMutex);
46 auto it = m_instanceRegistry.find(instanceId);
47 if (it != m_instanceRegistry.end())
48 return it->second;
49
50 return nullptr;
51}
52
57
58void QGeoPositionInfoDispatcherWasm::geolocationSuccess(int instanceId, val position)
59{
60 if (auto source = lookUpInfoSource(instanceId))
61 source->geolocationSuccess(position);
62}
63
64void QGeoPositionInfoDispatcherWasm::geolocationError(int instanceId, val error)
65{
66 if (auto source = lookUpInfoSource(instanceId))
67 source->geolocationError(error);
68}
69
71{
72 val::global("console").call<void>("log", value);
73}
74
76{
77 function("qtGeolocationPositionSuccess", optional_override([](int id, val pos) {
78 QGeoPositionInfoDispatcherWasm::instance()->geolocationSuccess(id, pos);
79 }));
80
81 function("qtGeolocationPositionError", optional_override([](int id, val err) {
82 QGeoPositionInfoDispatcherWasm::instance()->geolocationError(id, err);
83 }));
84
85}
86
87QT_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)