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);
57#elif defined(Q_OS_DARWIN)
58 QPluginLoader loader(QStringLiteral(
"tracing/libQCtfTracePlugin.dylib"));
60 QPluginLoader loader(QStringLiteral(
"tracing/libQCtfTracePlugin.so"));
63 if (!loader.isLoaded()) {
67 s_plugin = qobject_cast<QCtfLib *>(loader.instance());
70 s_plugin->shutdown(&s_shutdown);
76#define QCtfPluginIID QStringLiteral("org.qt-project.Qt.QCtfLib")
81 const auto &plugins = QPluginLoader::staticPlugins();
82 for (
const auto &plugin : plugins) {
83 const auto json = plugin.metaData();
84 const auto IID = json[QStringLiteral(
"IID")];
86 s_plugin = qobject_cast<QCtfLib *>(plugin.instance());
89 s_plugin->shutdown(&s_shutdown);
112 bool enabled = s_plugin->sessionEnabled();
128 return s_plugin ? s_plugin->tracepointEnabled(point) :
false;
143 return s_plugin ? s_plugin->initializeTracepoint(point) :
nullptr;
148#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