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
qohosmemoizingjsthreadfetcher.cpp
Go to the documentation of this file.
1
// Copyright (C) 2026 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
4
#
include
"qohosmemoizingjsthreadfetcher_p.h"
5
#
include
<
QtCore
/
private
/
qohoslogger_p
.
h
>
6
#
include
<
exception
>
7
8
QT_BEGIN_NAMESPACE
9
10
namespace
details_qohosmemoizingjsthreadfetcher_p_h
{
11
12
QBasicMutex
FetcherBase
::
s_fetchersMutex
;
13
FetcherBase
*
FetcherBase
::
s_firstFetcher
=
nullptr
;
14
std
::
atomic
<
bool
>
FetcherBase
::
s_fetchingEnabled
{
false
};
15
16
FetcherBase
::
FetcherBase
(
const
char
*
fetcherName
)
17
:
m_fetcherName
(
fetcherName
)
18
{
19
}
20
21
FetcherBase
::~
FetcherBase
() =
default
;
22
23
void
FetcherBase
::
registerSelf
()
24
{
25
QMutexLocker
fetchersLock
{&
s_fetchersMutex
};
26
m_nextFetcher
=
s_firstFetcher
;
27
s_firstFetcher
=
this
;
28
}
29
30
void
FetcherBase
::
unregisterSelf
()
31
{
32
QMutexLocker
fetchersLock
{&
s_fetchersMutex
};
33
for
(
auto
**
fetcherPtr
= &
s_firstFetcher
; *
fetcherPtr
;
fetcherPtr
= &(*
fetcherPtr
)->
m_nextFetcher
) {
34
if
(*
fetcherPtr
==
this
) {
35
*
fetcherPtr
=
m_nextFetcher
;
36
return
;
37
}
38
}
39
}
40
41
void
FetcherBase
::
enableFetching
(
QOhosJsState
&
jsState
)
42
{
43
fetchPendingFetchers
(
jsState
);
44
s_fetchingEnabled
.
store
(
true
);
45
}
46
47
void
FetcherBase
::
ensureFetched
()
48
{
49
if
(!
s_fetchingEnabled
.
load
() ||
m_fetched
.
load
())
50
return
;
51
52
QOhosJsThreadGateway
::
runAndWait
(
53
[](
QOhosJsState
&
jsState
) {
54
fetchPendingFetchers
(
jsState
);
55
},
56
Q_FUNC_INFO
);
57
}
58
59
void
FetcherBase
::
fetchPendingFetchers
(
QOhosJsState
&
jsState
)
60
{
61
QMutexLocker
fetchersLock
{&
s_fetchersMutex
};
62
for
(
auto
*
fetcher
=
s_firstFetcher
;
fetcher
;
fetcher
=
fetcher
->
m_nextFetcher
) {
63
if
(
fetcher
->
m_fetched
.
load
())
64
continue
;
65
66
try
{
67
fetcher
->
fetchInJsThread
(
jsState
);
68
}
catch
(
const
std
::
exception
&
error
) {
69
qOhosPrintfError
(
70
"%s: failed to fetch '%s' from the JS thread: %s"
,
71
Q_FUNC_INFO
,
fetcher
->
m_fetcherName
,
error
.
what
());
72
}
73
fetcher
->
m_fetched
.
store
(
true
);
74
}
75
}
76
77
}
78
79
void
qOhosEnableMemoizingJsThreadFetchers
(QOhosJsState &jsState)
80
{
81
details_qohosmemoizingjsthreadfetcher_p_h::FetcherBase::enableFetching(jsState);
82
}
83
84
QT_END_NAMESPACE
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
details_qohosmemoizingjsthreadfetcher_p_h
Definition
qohosmemoizingjsthreadfetcher.cpp:10
qOhosEnableMemoizingJsThreadFetchers
void qOhosEnableMemoizingJsThreadFetchers(QOhosJsState &jsState)
Definition
qohosmemoizingjsthreadfetcher.cpp:79
qtbase
src
corelib
platform
ohos
qohosmemoizingjsthreadfetcher.cpp
Generated on
for Qt by
1.16.1