8#include <qpluginloader.h>
11#include <qtenvironmentvariables.h>
12#include <qjsonarray.h>
18using namespace Qt::StringLiterals;
26#if QT_CONFIG(library) && defined(QT_SHARED)
28#if defined(Q_OS_ANDROID)
29static QString findPlugin(QLatin1StringView plugin)
31 const QString pluginPath = qEnvironmentVariable(
"QT_PLUGIN_PATH");
32 for (
const auto &entry : QDirListing(pluginPath, QDirListing::IteratorFlag::FilesOnly)) {
33 if (entry.fileName().contains(plugin))
34 return entry.absoluteFilePath();
40static bool loadPlugin(
bool &retry)
45 QPluginLoader loader(QStringLiteral(
"tracing/QCtfTracePlugind.dll"));
47 QPluginLoader loader(QStringLiteral(
"tracing/QCtfTracePlugin.dll"));
49#elif defined(Q_OS_ANDROID)
51 const QString plugin = findPlugin(
"QCtfTracePlugin"_L1);
52 if (plugin.isEmpty()) {
56 QPluginLoader loader(plugin);
58 QPluginLoader loader(QStringLiteral(
"tracing/libQCtfTracePlugin.so"));
61 if (!loader.isLoaded()) {
65 s_plugin = qobject_cast<QCtfLib *>(loader.instance());
68 s_plugin->shutdown(&s_shutdown);
74#define QCtfPluginIID QStringLiteral("org.qt-project.Qt.QCtfLib")
79 const auto &plugins = QPluginLoader::staticPlugins();
80 for (
const auto &plugin : plugins) {
81 const auto json = plugin.metaData();
82 const auto IID = json[QStringLiteral(
"IID")];
84 s_plugin = qobject_cast<QCtfLib *>(plugin.instance());
87 s_plugin->shutdown(&s_shutdown);
110 bool enabled = s_plugin->sessionEnabled();
126 return s_plugin ? s_plugin->tracepointEnabled(point) :
false;
141 return s_plugin ? s_plugin->initializeTracepoint(point) :
nullptr;
146#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