7#include <qpluginloader.h>
10#include <qtenvironmentvariables.h>
11#include <qjsonarray.h>
17using namespace Qt::StringLiterals;
25#if QT_CONFIG(library) && defined(QT_SHARED)
27#if defined(Q_OS_ANDROID)
28static QString findPlugin(QLatin1StringView plugin)
30 const QString pluginPath = qEnvironmentVariable(
"QT_PLUGIN_PATH");
31 for (
const auto &entry : QDirListing(pluginPath, QDirListing::IteratorFlag::FilesOnly)) {
32 if (entry.fileName().contains(plugin))
33 return entry.absoluteFilePath();
39static bool loadPlugin(
bool &retry)
44 QPluginLoader loader(QStringLiteral(
"tracing/QCtfTracePlugind.dll"));
46 QPluginLoader loader(QStringLiteral(
"tracing/QCtfTracePlugin.dll"));
48#elif defined(Q_OS_ANDROID)
50 const QString plugin = findPlugin(
"QCtfTracePlugin"_L1);
51 if (plugin.isEmpty()) {
55 QPluginLoader loader(plugin);
57 QPluginLoader loader(QStringLiteral(
"tracing/libQCtfTracePlugin.so"));
60 if (!loader.isLoaded()) {
64 s_plugin = qobject_cast<QCtfLib *>(loader.instance());
67 s_plugin->shutdown(&s_shutdown);
73#define QCtfPluginIID QStringLiteral("org.qt-project.Qt.QCtfLib")
78 const auto &plugins = QPluginLoader::staticPlugins();
79 for (
const auto &plugin : plugins) {
80 const auto json = plugin.metaData();
81 const auto IID = json[QStringLiteral(
"IID")];
83 s_plugin = qobject_cast<QCtfLib *>(plugin.instance());
86 s_plugin->shutdown(&s_shutdown);
109 bool enabled = s_plugin->sessionEnabled();
125 return s_plugin ? s_plugin->tracepointEnabled(point) :
false;
140 return s_plugin ? s_plugin->initializeTracepoint(point) :
nullptr;
145#include "moc_qctf_p.cpp"
Combined button and popup list for selecting options.
static bool s_prevent_recursion
bool _tracepoint_enabled(const QCtfTracePointEvent &point)
static QCtfLib * s_plugin
void _do_tracepoint(const QCtfTracePointEvent &point, const QByteArray &arr)
static bool loadPlugin(bool &retry)
static bool s_initialized
QCtfTracePointPrivate * _initialize_tracepoint(const QCtfTracePointEvent &point)
static bool s_triedLoading