From 368c65d0501a1f562ef98cfb1c9f6c96a7ae535d Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Thu, 28 Jan 2021 10:14:28 +0100 Subject: [PATCH] Merge bitcoin-core/gui#72: util: Log static plugins meta data and used style 957895c715f86feaa26c806e5fa8ebb77430a926 util: Log static plugins meta data and style (Hennadii Stepanov) Pull request description: This PR is a follow-up of https://github.com/bitcoin/bitcoin/pull/17826, and adds additional info about the imported static plugins and the used style to the `debug.log` I found useful for testing (e.g., with `QT_QPA_PLATFORM`, `QT_QPA_PLATFORMTHEME`, `QT_STYLE_OVERRIDE` variables) and debugging issues (e.g., https://github.com/bitcoin/bitcoin/pull/19716#issuecomment-674052881). The excerpt from the log: ``` 2020-11-15T18:41:45Z [main] Bitcoin Core version v0.20.99.0-f0b933f78 (release build) 2020-11-15T18:41:45Z [main] Qt 5.9.8 (static), plugin=xcb (static) 2020-11-15T18:41:45Z [main] Static plugins: 2020-11-15T18:41:45Z [main] QXcbIntegrationPlugin, version 329992 2020-11-15T18:41:45Z [main] Style: fusion / QFusionStyle ... ``` ACKs for top commit: jarolrod: ACK 957895c715f86feaa26c806e5fa8ebb77430a926, Tested on macOS 11.1 jonasschnelli: utACK 957895c715f86feaa26c806e5fa8ebb77430a926 Tree-SHA512: 0e46db7560f380fbda8ce5e53faa5d419a456e90ca595ce46be8e3030c99d3a113586edad1988a97e9bf0279e944f975968ed1156817bc16723ed31c64850239 --- src/qt/guiutil.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 705e3a952a..a1b7cfa015 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -50,12 +50,14 @@ #include #include #include +#include #include #include #include #include #include #include +#include #include #include #include @@ -1814,6 +1816,20 @@ void LogQtInfo() const std::string plugin_link{"dynamic"}; #endif LogPrintf("Qt %s (%s), plugin=%s (%s)\n", qVersion(), qt_link, QGuiApplication::platformName().toStdString(), plugin_link); + const auto static_plugins = QPluginLoader::staticPlugins(); + if (static_plugins.empty()) { + LogPrintf("No static plugins.\n"); + } else { + LogPrintf("Static plugins:\n"); + for (const QStaticPlugin& p : static_plugins) { + QJsonObject meta_data = p.metaData(); + const std::string plugin_class = meta_data.take(QString("className")).toString().toStdString(); + const int plugin_version = meta_data.take(QString("version")).toInt(); + LogPrintf(" %s, version %d\n", plugin_class, plugin_version); + } + } + + LogPrintf("Style: %s / %s\n", QApplication::style()->objectName().toStdString(), QApplication::style()->metaObject()->className()); LogPrintf("System: %s, %s\n", QSysInfo::prettyProductName().toStdString(), QSysInfo::buildAbi().toStdString()); for (const QScreen* s : QGuiApplication::screens()) { LogPrintf("Screen: %s %dx%d, pixel ratio=%.1f\n", s->name().toStdString(), s->size().width(), s->size().height(), s->devicePixelRatio());