diff options
Diffstat (limited to 'src/plugins/platforms/directfb/qdirectfbintegration.cpp')
-rw-r--r-- | src/plugins/platforms/directfb/qdirectfbintegration.cpp | 66 |
1 files changed, 38 insertions, 28 deletions
diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.cpp b/src/plugins/platforms/directfb/qdirectfbintegration.cpp index 61f1d2513b..7bf26b433a 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.cpp +++ b/src/plugins/platforms/directfb/qdirectfbintegration.cpp @@ -46,20 +46,21 @@ #include "qdirectfbcursor.h" #include "qdirectfbwindow.h" -#include "qgenericunixfontdatabase.h" - -#include <private/qwindowsurface_raster_p.h> -#include <private/qpixmap_raster_p.h> +#include <QtPlatformSupport/private/qgenericunixfontdatabase_p.h> +#include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h> #include <QtGui/private/qpixmap_blitter_p.h> -#include <QtGui/private/qpixmapdata_p.h> +#include <QtGui/private/qpixmap_raster_p.h> +#include <QtGui/private/qguiapplication_p.h> +#include <QtGui/qplatformpixmap_qpa.h> #include <QtCore/QCoreApplication> #include <QtCore/QThread> +#include <QtCore/QAbstractEventDispatcher> QT_BEGIN_NAMESPACE QDirectFbScreen::QDirectFbScreen(int display) - :QPlatformScreen() + : QPlatformScreen() { m_layer = QDirectFbConvenience::dfbDisplayLayer(display); m_layer->SetCooperativeLevel(m_layer,DLSCL_SHARED); @@ -74,16 +75,20 @@ QDirectFbScreen::QDirectFbScreen(int display) m_depth = QDirectFbConvenience::colorDepthForSurface(config.pixelformat); m_physicalSize = QSize(qRound(config.width * inch / dpi), qRound(config.height *inch / dpi)); - cursor = new QDirectFBCursor(this); + m_cursor = new QDirectFBCursor(this); } QDirectFbScreen::~QDirectFbScreen() { +#warning "Delete the cursor?" } QDirectFbIntegration::QDirectFbIntegration() - : mFontDb(new QGenericUnixFontDatabase()) + : m_fontDb(new QGenericUnixFontDatabase()) + , m_eventDispatcher(createUnixEventDispatcher()) { + QGuiApplicationPrivate::instance()->setEventDispatcher(m_eventDispatcher); + const QStringList args = QCoreApplication::arguments(); int argc = args.size(); char **argv = new char*[argc]; @@ -99,46 +104,51 @@ QDirectFbIntegration::QDirectFbIntegration() delete[] argv; + QDirectFbScreen *primaryScreen = new QDirectFbScreen(0); - mScreens.append(primaryScreen); + screenAdded(primaryScreen); - mInputRunner = new QThread; - mInput = new QDirectFbInput(0); - mInput->moveToThread(mInputRunner); - QObject::connect(mInputRunner,SIGNAL(started()),mInput,SLOT(runInputEventLoop())); - mInputRunner->start(); + m_inputRunner = new QThread; + m_input = new QDirectFbInput(0); + m_input->moveToThread(m_inputRunner); + QObject::connect(m_inputRunner,SIGNAL(started()),m_input,SLOT(runInputEventLoop())); + m_inputRunner->start(); } QDirectFbIntegration::~QDirectFbIntegration() { - mInput->stopInputEventLoop(); - delete mInputRunner; - delete mInput; + m_input->stopInputEventLoop(); + delete m_inputRunner; + delete m_input; } -QPixmapData *QDirectFbIntegration::createPixmapData(QPixmapData::PixelType type) const +QPlatformPixmap *QDirectFbIntegration::createPlatformPixmap(QPlatformPixmap::PixelType type) const { - if (type == QPixmapData::BitmapType) - return new QRasterPixmapData(type); + if (type == QPlatformPixmap::BitmapType) + return new QRasterPlatformPixmap(type); else - return new QDirectFbBlitterPixmapData; + return new QDirectFbBlitterPlatformPixmap; +} + +QPlatformWindow *QDirectFbIntegration::createPlatformWindow(QWindow *window) const +{ + QDirectFbInput *input = const_cast<QDirectFbInput *>(m_input);//gah + return new QDirectFbWindow(window,input); } -QPlatformWindow *QDirectFbIntegration::createPlatformWindow(QWidget *widget, WId winId) const +QAbstractEventDispatcher *QDirectFbIntegration::guiThreadEventDispatcher() const { - Q_UNUSED(winId); - QDirectFbInput *input = const_cast<QDirectFbInput *>(mInput);//gah - return new QDirectFbWindow(widget,input); + return m_eventDispatcher; } -QWindowSurface *QDirectFbIntegration::createWindowSurface(QWidget *widget, WId winId) const +QPlatformBackingStore *QDirectFbIntegration::createPlatformBackingStore(QWindow *window) const { - return new QDirectFbWindowSurface(widget,winId); + return new QDirectFbWindowSurface(window); } QPlatformFontDatabase *QDirectFbIntegration::fontDatabase() const { - return mFontDb; + return m_fontDb; } QT_END_NAMESPACE |