QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCLoggingCategory.cc
Go to the documentation of this file.
2
3#include <QtCore/QMutex>
4#include <QtCore/QObject>
5#include <QtCore/QPointer>
6
7namespace {
8struct Registry
9{
10 QMutex mutex;
11 QStringList categories;
12 QPointer<QObject> context;
13 std::function<void(const QString&)> observer;
14};
15
16Registry& registry()
17{
18 static Registry state;
19 return state;
20}
21} // namespace
22
24{
25 auto& state = registry();
26 QMutexLocker lock(&state.mutex);
27 if (state.categories.contains(category))
28 return;
29 state.categories.append(category);
30 if (state.context && state.observer) {
31 QMetaObject::invokeMethod(
32 state.context, [observer = state.observer, category] { observer(category); }, Qt::QueuedConnection);
33 }
34}
35
36QStringList qgcObserveLoggingCategories(QObject* context, std::function<void(const QString&)> observer)
37{
38 auto& state = registry();
39 QMutexLocker lock(&state.mutex);
40 state.context = context;
41 state.observer = std::move(observer);
42 return state.categories;
43}
QStringList qgcObserveLoggingCategories(QObject *context, std::function< void(const QString &)> observer)
QGCLoggingCategory(const QString &category)