summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/minimal/qminimalintegration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/minimal/qminimalintegration.cpp')
-rw-r--r--src/plugins/platforms/minimal/qminimalintegration.cpp50
1 files changed, 49 insertions, 1 deletions
diff --git a/src/plugins/platforms/minimal/qminimalintegration.cpp b/src/plugins/platforms/minimal/qminimalintegration.cpp
index bb2c5f53c3..7f5c25f239 100644
--- a/src/plugins/platforms/minimal/qminimalintegration.cpp
+++ b/src/plugins/platforms/minimal/qminimalintegration.cpp
@@ -45,6 +45,7 @@
#include <QtGui/private/qpixmap_raster_p.h>
#include <QtGui/private/qguiapplication_p.h>
#include <qpa/qplatformwindow.h>
+#include <qpa/qplatformfontdatabase.h>
#if !defined(Q_OS_WIN)
#include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
@@ -56,8 +57,27 @@
QT_BEGIN_NAMESPACE
-QMinimalIntegration::QMinimalIntegration()
+static const char debugBackingStoreEnvironmentVariable[] = "QT_DEBUG_BACKINGSTORE";
+
+static inline unsigned parseOptions(const QStringList &paramList)
+{
+ unsigned options = 0;
+ foreach (const QString &param, paramList) {
+ if (param == QLatin1String("enable_fonts"))
+ options |= QMinimalIntegration::EnableFonts;
+ }
+ return options;
+}
+
+QMinimalIntegration::QMinimalIntegration(const QStringList &parameters)
+ : m_dummyFontDatabase(0)
+ , m_options(parseOptions(parameters))
{
+ if (qEnvironmentVariableIsSet(debugBackingStoreEnvironmentVariable)
+ && qgetenv(debugBackingStoreEnvironmentVariable).toInt() > 0) {
+ m_options |= DebugBackingStore | EnableFonts;
+ }
+
QMinimalScreen *mPrimaryScreen = new QMinimalScreen();
mPrimaryScreen->mGeometry = QRect(0, 0, 240, 320);
@@ -67,6 +87,11 @@ QMinimalIntegration::QMinimalIntegration()
screenAdded(mPrimaryScreen);
}
+QMinimalIntegration::~QMinimalIntegration()
+{
+ delete m_dummyFontDatabase;
+}
+
bool QMinimalIntegration::hasCapability(QPlatformIntegration::Capability cap) const
{
switch (cap) {
@@ -76,6 +101,24 @@ bool QMinimalIntegration::hasCapability(QPlatformIntegration::Capability cap) co
}
}
+// Dummy font database that does not scan the fonts directory to be
+// used for command line tools like qmlplugindump that do not create windows
+// unless DebugBackingStore is activated.
+class DummyFontDatabase : public QPlatformFontDatabase
+{
+public:
+ virtual void populateFontDatabase() {}
+};
+
+QPlatformFontDatabase *QMinimalIntegration::fontDatabase() const
+{
+ if (m_options & EnableFonts)
+ return QPlatformIntegration::fontDatabase();
+ if (!m_dummyFontDatabase)
+ m_dummyFontDatabase = new DummyFontDatabase;
+ return m_dummyFontDatabase;
+}
+
QPlatformWindow *QMinimalIntegration::createPlatformWindow(QWindow *window) const
{
Q_UNUSED(window);
@@ -102,4 +145,9 @@ QAbstractEventDispatcher *QMinimalIntegration::createEventDispatcher() const
#endif
}
+QMinimalIntegration *QMinimalIntegration::instance()
+{
+ return static_cast<QMinimalIntegration *>(QGuiApplicationPrivate::platformIntegration());
+}
+
QT_END_NAMESPACE