summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/minimal
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/minimal')
-rw-r--r--src/plugins/platforms/minimal/main.cpp3
-rw-r--r--src/plugins/platforms/minimal/qminimalbackingstore.cpp6
-rw-r--r--src/plugins/platforms/minimal/qminimalbackingstore.h2
-rw-r--r--src/plugins/platforms/minimal/qminimalintegration.cpp50
-rw-r--r--src/plugins/platforms/minimal/qminimalintegration.h17
5 files changed, 70 insertions, 8 deletions
diff --git a/src/plugins/platforms/minimal/main.cpp b/src/plugins/platforms/minimal/main.cpp
index a690a13d81..5e0388a0af 100644
--- a/src/plugins/platforms/minimal/main.cpp
+++ b/src/plugins/platforms/minimal/main.cpp
@@ -55,9 +55,8 @@ public:
QPlatformIntegration *QMinimalIntegrationPlugin::create(const QString& system, const QStringList& paramList)
{
- Q_UNUSED(paramList);
if (!system.compare(QLatin1String("minimal"), Qt::CaseInsensitive))
- return new QMinimalIntegration;
+ return new QMinimalIntegration(paramList);
return 0;
}
diff --git a/src/plugins/platforms/minimal/qminimalbackingstore.cpp b/src/plugins/platforms/minimal/qminimalbackingstore.cpp
index 3aac1bfe33..f58458cd31 100644
--- a/src/plugins/platforms/minimal/qminimalbackingstore.cpp
+++ b/src/plugins/platforms/minimal/qminimalbackingstore.cpp
@@ -41,6 +41,7 @@
#include "qminimalbackingstore.h"
+#include "qminimalintegration.h"
#include "qscreen.h"
#include <QtCore/qdebug.h>
#include <qpa/qplatformscreen.h>
@@ -49,10 +50,9 @@
QT_BEGIN_NAMESPACE
QMinimalBackingStore::QMinimalBackingStore(QWindow *window)
- : QPlatformBackingStore(window),mDebug(false)
+ : QPlatformBackingStore(window)
+ , mDebug(QMinimalIntegration::instance()->options() & QMinimalIntegration::DebugBackingStore)
{
- if (QT_PREPEND_NAMESPACE(qgetenv)("QT_DEBUG_BACKINGSTORE").toInt() > 0)
- mDebug = true;
if (mDebug)
qDebug() << "QMinimalBackingStore::QMinimalBackingStore:" << (quintptr)this;
}
diff --git a/src/plugins/platforms/minimal/qminimalbackingstore.h b/src/plugins/platforms/minimal/qminimalbackingstore.h
index 5f1fd0f4d3..9265a09d18 100644
--- a/src/plugins/platforms/minimal/qminimalbackingstore.h
+++ b/src/plugins/platforms/minimal/qminimalbackingstore.h
@@ -60,7 +60,7 @@ public:
private:
QImage mImage;
- bool mDebug;
+ const bool mDebug;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/minimal/qminimalintegration.cpp b/src/plugins/platforms/minimal/qminimalintegration.cpp
index a08cede76a..76b4b5b0eb 100644
--- a/src/plugins/platforms/minimal/qminimalintegration.cpp
+++ b/src/plugins/platforms/minimal/qminimalintegration.cpp
@@ -50,11 +50,31 @@
#include <QtGui/private/qpixmap_raster_p.h>
#include <QtGui/private/qguiapplication_p.h>
#include <qpa/qplatformwindow.h>
+#include <qpa/qplatformfontdatabase.h>
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);
@@ -64,6 +84,11 @@ QMinimalIntegration::QMinimalIntegration()
screenAdded(mPrimaryScreen);
}
+QMinimalIntegration::~QMinimalIntegration()
+{
+ delete m_dummyFontDatabase;
+}
+
bool QMinimalIntegration::hasCapability(QPlatformIntegration::Capability cap) const
{
switch (cap) {
@@ -73,6 +98,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);
@@ -95,4 +138,9 @@ QAbstractEventDispatcher *QMinimalIntegration::createEventDispatcher() const
#endif
}
+QMinimalIntegration *QMinimalIntegration::instance()
+{
+ return static_cast<QMinimalIntegration *>(QGuiApplicationPrivate::platformIntegration());
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/minimal/qminimalintegration.h b/src/plugins/platforms/minimal/qminimalintegration.h
index 7dc01e1d51..a737057085 100644
--- a/src/plugins/platforms/minimal/qminimalintegration.h
+++ b/src/plugins/platforms/minimal/qminimalintegration.h
@@ -67,13 +67,28 @@ public:
class QMinimalIntegration : public QPlatformIntegration
{
public:
- QMinimalIntegration();
+ enum Options { // Options to be passed on command line or determined from environment
+ DebugBackingStore = 0x1,
+ EnableFonts = 0x2
+ };
+
+ explicit QMinimalIntegration(const QStringList &parameters);
+ ~QMinimalIntegration();
bool hasCapability(QPlatformIntegration::Capability cap) const;
+ QPlatformFontDatabase *fontDatabase() const;
QPlatformWindow *createPlatformWindow(QWindow *window) const;
QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const;
QAbstractEventDispatcher *createEventDispatcher() const;
+
+ unsigned options() const { return m_options; }
+
+ static QMinimalIntegration *instance();
+
+private:
+ mutable QPlatformFontDatabase *m_dummyFontDatabase;
+ unsigned m_options;
};
QT_END_NAMESPACE