linuxfb: Adapt to initialize() pattern

Migrate to the new 5.2 pattern: Prevent relying on the event
dispatcher in the constructor by performing initialization later
in initialize() instead.

Change-Id: Ifa6024affc35e995d6e33a63fa813da9df0c491b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
bb10
Laszlo Agocs 2013-10-15 12:55:11 +02:00 committed by The Qt Project
parent 0008a6f400
commit 52c8d9ffba
4 changed files with 23 additions and 15 deletions

View File

@ -56,9 +56,8 @@ QT_BEGIN_NAMESPACE
QLinuxFbIntegration::QLinuxFbIntegration(const QStringList &paramList)
: m_fontDb(new QGenericUnixFontDatabase())
{
m_primaryScreen = new QLinuxFbScreen;
if (m_primaryScreen->initialize(paramList))
screenAdded(m_primaryScreen);
m_primaryScreen = new QLinuxFbScreen(paramList);
screenAdded(m_primaryScreen);
}
QLinuxFbIntegration::~QLinuxFbIntegration()
@ -66,6 +65,12 @@ QLinuxFbIntegration::~QLinuxFbIntegration()
delete m_primaryScreen;
}
void QLinuxFbIntegration::initialize()
{
if (!m_primaryScreen->initialize())
qWarning("linuxfb: Failed to initialize screen");
}
bool QLinuxFbIntegration::hasCapability(QPlatformIntegration::Capability cap) const
{
switch (cap) {

View File

@ -56,14 +56,16 @@ public:
QLinuxFbIntegration(const QStringList &paramList);
~QLinuxFbIntegration();
bool hasCapability(QPlatformIntegration::Capability cap) const;
void initialize() Q_DECL_OVERRIDE;
bool hasCapability(QPlatformIntegration::Capability cap) const Q_DECL_OVERRIDE;
QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const Q_DECL_OVERRIDE;
QPlatformWindow *createPlatformWindow(QWindow *window) const Q_DECL_OVERRIDE;
QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const Q_DECL_OVERRIDE;
QAbstractEventDispatcher *createEventDispatcher() const Q_DECL_OVERRIDE;
QPlatformFontDatabase *fontDatabase() const Q_DECL_OVERRIDE;
QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const;
QPlatformWindow *createPlatformWindow(QWindow *window) const;
QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const;
QAbstractEventDispatcher *createEventDispatcher() const;
QList<QPlatformScreen *> screens() const;
QPlatformFontDatabase *fontDatabase() const;
private:
QLinuxFbScreen *m_primaryScreen;

View File

@ -296,8 +296,8 @@ static void blankScreen(int fd, bool on)
ioctl(fd, FBIOBLANK, on ? VESA_POWERDOWN : VESA_NO_BLANKING);
}
QLinuxFbScreen::QLinuxFbScreen()
: mFbFd(-1), mBlitter(0)
QLinuxFbScreen::QLinuxFbScreen(const QStringList &args)
: mArgs(args), mFbFd(-1), mBlitter(0)
{
}
@ -316,7 +316,7 @@ QLinuxFbScreen::~QLinuxFbScreen()
delete mBlitter;
}
bool QLinuxFbScreen::initialize(const QStringList &args)
bool QLinuxFbScreen::initialize()
{
QRegExp ttyRx(QLatin1String("tty=(.*)"));
QRegExp fbRx(QLatin1String("fb=(.*)"));
@ -330,7 +330,7 @@ bool QLinuxFbScreen::initialize(const QStringList &args)
bool doSwitchToGraphicsMode = true;
// Parse arguments
foreach (const QString &arg, args) {
foreach (const QString &arg, mArgs) {
if (arg == QLatin1String("nographicsmodeswitch"))
doSwitchToGraphicsMode = false;
else if (sizeRx.indexIn(arg) != -1)

View File

@ -53,15 +53,16 @@ class QLinuxFbScreen : public QFbScreen
{
Q_OBJECT
public:
QLinuxFbScreen();
QLinuxFbScreen(const QStringList &args);
~QLinuxFbScreen();
bool initialize(const QStringList &args);
bool initialize();
public slots:
QRegion doRedraw();
private:
QStringList mArgs;
int mFbFd;
int mTtyFd;