From 4efaf305f51d09e214645a18a7bfa62bc36e2c61 Mon Sep 17 00:00:00 2001 From: Morten Sorvig Date: Tue, 21 Jun 2011 13:40:57 +0200 Subject: Add lighthouse event dispatcher API. Platform plugin creation is now moved forward in order to have a platform plugin instance at event dispatcher creation time. Plugins are now responsible for implementing PlatformIntegration::createEventDispatcher and returning an QAbstractEventDispatcher subclass. --- src/plugins/platforms/directfb/directfb.pro | 2 ++ src/plugins/platforms/directfb/qdirectfbintegration.cpp | 9 ++++++++- src/plugins/platforms/directfb/qdirectfbintegration.h | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src/plugins/platforms/directfb') diff --git a/src/plugins/platforms/directfb/directfb.pro b/src/plugins/platforms/directfb/directfb.pro index f830177dcb..fb446f6166 100644 --- a/src/plugins/platforms/directfb/directfb.pro +++ b/src/plugins/platforms/directfb/directfb.pro @@ -2,6 +2,8 @@ TARGET = qdirectfb load(qt_plugin) DESTDIR = $$QT.gui.plugins/platforms +QT += core-private gui-private platformsupport-private + isEmpty(DIRECTFB_LIBS) { DIRECTFB_LIBS = -ldirectfb -lfusion -ldirect -lpthread } diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.cpp b/src/plugins/platforms/directfb/qdirectfbintegration.cpp index 61f1d2513b..018a5d9e2d 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.cpp +++ b/src/plugins/platforms/directfb/qdirectfbintegration.cpp @@ -46,7 +46,8 @@ #include "qdirectfbcursor.h" #include "qdirectfbwindow.h" -#include "qgenericunixfontdatabase.h" +#include +#include #include #include @@ -55,6 +56,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -131,6 +133,11 @@ QPlatformWindow *QDirectFbIntegration::createPlatformWindow(QWidget *widget, WId return new QDirectFbWindow(widget,input); } +QAbstractEventDispatcher *QDirectFbIntegration::createEventDispatcher() const +{ + return createUnixEventDispatcher(); +} + QWindowSurface *QDirectFbIntegration::createWindowSurface(QWidget *widget, WId winId) const { return new QDirectFbWindowSurface(widget,winId); diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.h b/src/plugins/platforms/directfb/qdirectfbintegration.h index 0e8337a5fb..8195ebd4b5 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.h +++ b/src/plugins/platforms/directfb/qdirectfbintegration.h @@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE class QThread; +class QAbstractEventDispatcher; class QDirectFBCursor; class QDirectFbScreen : public QPlatformScreen @@ -87,6 +88,7 @@ public: QPixmapData *createPixmapData(QPixmapData::PixelType type) const; QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId = 0) const; QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const; + QAbstractEventDispatcher *createEventDispatcher() const; QList screens() const { return mScreens; } -- cgit v1.2.3 From 310519d6d11da546b23c1cba307f37c24e0a5c0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Fri, 15 Jul 2011 14:07:12 +0200 Subject: Rename QPixmapData to QPlatformPixmap. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Makes the API symmetric with the other Lighthouse APIs. Change-Id: I8a399f3c968ea35d4624711b31f2ac5bb94b7893 Reviewed-on: http://codereview.qt.nokia.com/1735 Reviewed-by: Qt Sanity Bot Reviewed-by: Jørgen Lind --- src/plugins/platforms/directfb/qdirectfbblitter.cpp | 6 +++--- src/plugins/platforms/directfb/qdirectfbblitter.h | 2 +- src/plugins/platforms/directfb/qdirectfbconvenience.cpp | 4 ++-- src/plugins/platforms/directfb/qdirectfbconvenience.h | 2 +- src/plugins/platforms/directfb/qdirectfbcursor.cpp | 2 +- src/plugins/platforms/directfb/qdirectfbintegration.cpp | 10 +++++----- src/plugins/platforms/directfb/qdirectfbintegration.h | 2 +- src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp | 2 +- src/plugins/platforms/directfb/qdirectfbwindowsurface.h | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) (limited to 'src/plugins/platforms/directfb') diff --git a/src/plugins/platforms/directfb/qdirectfbblitter.cpp b/src/plugins/platforms/directfb/qdirectfbblitter.cpp index 86a8bf7cb7..a4da2d8142 100644 --- a/src/plugins/platforms/directfb/qdirectfbblitter.cpp +++ b/src/plugins/platforms/directfb/qdirectfbblitter.cpp @@ -92,10 +92,10 @@ void QDirectFbBlitter::fillRect(const QRectF &rect, const QColor &color) void QDirectFbBlitter::drawPixmap(const QRectF &rect, const QPixmap &pixmap, const QRectF &srcRect) { - QPixmapData *data = pixmap.pixmapData(); + QPlatformPixmap *data = pixmap.handle(); Q_ASSERT(data->width() && data->height()); - Q_ASSERT(data->classId() == QPixmapData::BlitterClass); - QBlittablePixmapData *blitPm = static_cast(data); + Q_ASSERT(data->classId() == QPlatformPixmap::BlitterClass); + QBlittablePlatformPixmap *blitPm = static_cast(data); QDirectFbBlitter *dfbBlitter = static_cast(blitPm->blittable()); dfbBlitter->unlock(); diff --git a/src/plugins/platforms/directfb/qdirectfbblitter.h b/src/plugins/platforms/directfb/qdirectfbblitter.h index 16d7599c83..2dcb2be07a 100644 --- a/src/plugins/platforms/directfb/qdirectfbblitter.h +++ b/src/plugins/platforms/directfb/qdirectfbblitter.h @@ -67,7 +67,7 @@ protected: friend class QDirectFbConvenience; }; -class QDirectFbBlitterPixmapData : public QBlittablePixmapData +class QDirectFbBlitterPlatformPixmap : public QBlittablePlatformPixmap { public: QBlittable *createBlittable(const QSize &size) const { return new QDirectFbBlitter(size); } diff --git a/src/plugins/platforms/directfb/qdirectfbconvenience.cpp b/src/plugins/platforms/directfb/qdirectfbconvenience.cpp index 37810dc461..38130c8deb 100644 --- a/src/plugins/platforms/directfb/qdirectfbconvenience.cpp +++ b/src/plugins/platforms/directfb/qdirectfbconvenience.cpp @@ -106,9 +106,9 @@ int QDirectFbConvenience::colorDepthForSurface(const DFBSurfacePixelFormat forma return ((0x1f << 7) & format) >> 7; } -IDirectFBSurface *QDirectFbConvenience::dfbSurfaceForPixmapData(QPixmapData *pixmapData) +IDirectFBSurface *QDirectFbConvenience::dfbSurfaceForPlatformPixmap(QPlatformPixmap *handle) { - QBlittablePixmapData *blittablePmData = static_cast(pixmapData); + QBlittablePlatformPixmap *blittablePmData = static_cast(handle); if (blittablePmData) { QBlittable *blittable = blittablePmData->blittable(); QDirectFbBlitter *dfbBlitter = static_cast(blittable); diff --git a/src/plugins/platforms/directfb/qdirectfbconvenience.h b/src/plugins/platforms/directfb/qdirectfbconvenience.h index c82bea84c7..93d47f3644 100644 --- a/src/plugins/platforms/directfb/qdirectfbconvenience.h +++ b/src/plugins/platforms/directfb/qdirectfbconvenience.h @@ -67,7 +67,7 @@ public: static IDirectFB *dfbInterface(); static IDirectFBDisplayLayer *dfbDisplayLayer(int display = DLID_PRIMARY); - static IDirectFBSurface *dfbSurfaceForPixmapData(QPixmapData *); + static IDirectFBSurface *dfbSurfaceForPlatformPixmap(QPlatformPixmap *); static Qt::MouseButton mouseButton(DFBInputDeviceButtonIdentifier identifier); static Qt::MouseButtons mouseButtons(DFBInputDeviceButtonMask mask); diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.cpp b/src/plugins/platforms/directfb/qdirectfbcursor.cpp index 8a38bc4e83..0a2a872b0a 100644 --- a/src/plugins/platforms/directfb/qdirectfbcursor.cpp +++ b/src/plugins/platforms/directfb/qdirectfbcursor.cpp @@ -70,7 +70,7 @@ void QDirectFBCursor::changeCursor(QCursor * cursor, QWidget * widget) map = cursor->pixmap(); } - IDirectFBSurface *surface = QDirectFbConvenience::dfbSurfaceForPixmapData(map.pixmapData()); + IDirectFBSurface *surface = QDirectFbConvenience::dfbSurfaceForPlatformPixmap(map.handle()); if (m_layer->SetCooperativeLevel(m_layer, DLSCL_ADMINISTRATIVE) != DFB_OK) { return; diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.cpp b/src/plugins/platforms/directfb/qdirectfbintegration.cpp index 018a5d9e2d..ed8e42faf4 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.cpp +++ b/src/plugins/platforms/directfb/qdirectfbintegration.cpp @@ -53,7 +53,7 @@ #include #include -#include +#include #include #include #include @@ -118,12 +118,12 @@ QDirectFbIntegration::~QDirectFbIntegration() delete mInput; } -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(QWidget *widget, WId winId) const diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.h b/src/plugins/platforms/directfb/qdirectfbintegration.h index 8195ebd4b5..c3030031e1 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.h +++ b/src/plugins/platforms/directfb/qdirectfbintegration.h @@ -85,7 +85,7 @@ public: QDirectFbIntegration(); ~QDirectFbIntegration(); - QPixmapData *createPixmapData(QPixmapData::PixelType type) const; + QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const; QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId = 0) const; QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const; QAbstractEventDispatcher *createEventDispatcher() const; diff --git a/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp b/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp index 730f01fa1b..0cb3261eb1 100644 --- a/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp +++ b/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp @@ -63,7 +63,7 @@ QDirectFbWindowSurface::QDirectFbWindowSurface(QWidget *window, WId wId) dfbWindow->GetSurface(dfbWindow,&m_dfbSurface); //WRONGSIZE QDirectFbBlitter *blitter = new QDirectFbBlitter(window->rect().size(), m_dfbSurface); - m_pmdata = new QDirectFbBlitterPixmapData; + m_pmdata = new QDirectFbBlitterPlatformPixmap; m_pmdata->setBlittable(blitter); m_pixmap = new QPixmap(m_pmdata); } diff --git a/src/plugins/platforms/directfb/qdirectfbwindowsurface.h b/src/plugins/platforms/directfb/qdirectfbwindowsurface.h index 7f1140d4eb..5a631ca8fa 100644 --- a/src/plugins/platforms/directfb/qdirectfbwindowsurface.h +++ b/src/plugins/platforms/directfb/qdirectfbwindowsurface.h @@ -67,7 +67,7 @@ private: void lockSurfaceToImage(); QPixmap *m_pixmap; - QBlittablePixmapData *m_pmdata; + QBlittablePlatformPixmap *m_pmdata; IDirectFBSurface *m_dfbSurface; }; -- cgit v1.2.3 From 688d9f6ec0a0da5539a3d11fa1dc6e1ae0558cda Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Thu, 25 Aug 2011 00:55:51 +0800 Subject: directfb: Convert the directfb plugin, disable the OpenGL support OpenGL was never tested and the platform integration has changed, remove it from the build and re-enable it once one can test it. Change-Id: I70d5b5b11de06e6e999d3aae44660f11d2dbc719 Reviewed-on: http://codereview.qt.nokia.com/3666 Reviewed-by: Qt Sanity Bot Reviewed-by: Lars Knoll --- src/plugins/platforms/directfb/directfb.pro | 8 ++-- src/plugins/platforms/directfb/qdirectfbcursor.cpp | 3 +- src/plugins/platforms/directfb/qdirectfbcursor.h | 2 +- src/plugins/platforms/directfb/qdirectfbinput.cpp | 13 +++---- src/plugins/platforms/directfb/qdirectfbinput.h | 4 +- .../platforms/directfb/qdirectfbintegration.cpp | 24 ++++++------ .../platforms/directfb/qdirectfbintegration.h | 11 ++---- src/plugins/platforms/directfb/qdirectfbwindow.cpp | 45 +++++++--------------- src/plugins/platforms/directfb/qdirectfbwindow.h | 6 +-- .../platforms/directfb/qdirectfbwindowsurface.cpp | 15 ++++---- .../platforms/directfb/qdirectfbwindowsurface.h | 10 ++--- 11 files changed, 57 insertions(+), 84 deletions(-) (limited to 'src/plugins/platforms/directfb') diff --git a/src/plugins/platforms/directfb/directfb.pro b/src/plugins/platforms/directfb/directfb.pro index fb446f6166..e516fb11f3 100644 --- a/src/plugins/platforms/directfb/directfb.pro +++ b/src/plugins/platforms/directfb/directfb.pro @@ -21,16 +21,16 @@ SOURCES = main.cpp \ qdirectfbconvenience.cpp \ qdirectfbinput.cpp \ qdirectfbcursor.cpp \ - qdirectfbwindow.cpp \ - qdirectfbglcontext.cpp + qdirectfbwindow.cpp HEADERS = qdirectfbintegration.h \ qdirectfbwindowsurface.h \ qdirectfbblitter.h \ qdirectfbconvenience.h \ qdirectfbinput.h \ qdirectfbcursor.h \ - qdirectfbwindow.h \ - qdirectfbglcontext.h + qdirectfbwindow.h + +# ### port the GL context include(../fontdatabases/genericunix/genericunix.pri) target.path += $$[QT_INSTALL_PLUGINS]/platforms diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.cpp b/src/plugins/platforms/directfb/qdirectfbcursor.cpp index 0a2a872b0a..cd4130b18e 100644 --- a/src/plugins/platforms/directfb/qdirectfbcursor.cpp +++ b/src/plugins/platforms/directfb/qdirectfbcursor.cpp @@ -50,9 +50,8 @@ QDirectFBCursor::QDirectFBCursor(QPlatformScreen* screen) : image = new QPlatformCursorImage(0, 0, 0, 0, 0, 0); } -void QDirectFBCursor::changeCursor(QCursor * cursor, QWidget * widget) +void QDirectFBCursor::changeCursor(QCursor * cursor, QWindow * window) { - Q_UNUSED(widget); int xSpot; int ySpot; QPixmap map; diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.h b/src/plugins/platforms/directfb/qdirectfbcursor.h index b148de5589..ab94d72153 100644 --- a/src/plugins/platforms/directfb/qdirectfbcursor.h +++ b/src/plugins/platforms/directfb/qdirectfbcursor.h @@ -51,7 +51,7 @@ class QDirectFBCursor : public QPlatformCursor { public: QDirectFBCursor(QPlatformScreen *screem); - void changeCursor(QCursor * cursor, QWidget * widget); + void changeCursor(QCursor * cursor, QWindow * window); private: IDirectFBDisplayLayer * m_layer; diff --git a/src/plugins/platforms/directfb/qdirectfbinput.cpp b/src/plugins/platforms/directfb/qdirectfbinput.cpp index d35cea5ee9..d05729b992 100644 --- a/src/plugins/platforms/directfb/qdirectfbinput.cpp +++ b/src/plugins/platforms/directfb/qdirectfbinput.cpp @@ -47,7 +47,6 @@ #include #include #include -#include #include @@ -82,9 +81,9 @@ void QDirectFbInput::stopInputEventLoop() m_waitStop.acquire(); } -void QDirectFbInput::addWindow(DFBWindowID id, QWidget *tlw) +void QDirectFbInput::addWindow(DFBWindowID id, QWindow *qt_window) { - m_tlwMap.insert(id,tlw); + m_tlwMap.insert(id,qt_window); IDirectFBWindow *window; m_dfbDisplayLayer->GetWindow(m_dfbDisplayLayer,id,&window); @@ -152,7 +151,7 @@ void QDirectFbInput::handleMouseEvents(const DFBEvent &event) } else if (event.window.type == DWET_BUTTONUP) { window->UngrabPointer(window); } - QWidget *tlw = m_tlwMap.value(event.window.window_id); + QWindow *tlw = m_tlwMap.value(event.window.window_id); QWindowSystemInterface::handleMouseEvent(tlw, timestamp, p, globalPos, buttons); } @@ -161,7 +160,7 @@ void QDirectFbInput::handleWheelEvent(const DFBEvent &event) QPoint p(event.window.cx, event.window.cy); QPoint globalPos = globalPoint(event); long timestamp = (event.window.timestamp.tv_sec*1000) + (event.window.timestamp.tv_usec/1000); - QWidget *tlw = m_tlwMap.value(event.window.window_id); + QWindow *tlw = m_tlwMap.value(event.window.window_id); QWindowSystemInterface::handleWheelEvent(tlw, timestamp, p, globalPos, event.window.step*120, Qt::Vertical); @@ -178,13 +177,13 @@ void QDirectFbInput::handleKeyEvents(const DFBEvent &event) QChar character; if (DFB_KEY_TYPE(event.window.key_symbol) == DIKT_UNICODE) character = QChar(event.window.key_symbol); - QWidget *tlw = m_tlwMap.value(event.window.window_id); + QWindow *tlw = m_tlwMap.value(event.window.window_id); QWindowSystemInterface::handleKeyEvent(tlw, timestamp, type, key, modifiers, character); } void QDirectFbInput::handleEnterLeaveEvents(const DFBEvent &event) { - QWidget *tlw = m_tlwMap.value(event.window.window_id); + QWindow *tlw = m_tlwMap.value(event.window.window_id); switch (event.window.type) { case DWET_ENTER: QWindowSystemInterface::handleEnterEvent(tlw); diff --git a/src/plugins/platforms/directfb/qdirectfbinput.h b/src/plugins/platforms/directfb/qdirectfbinput.h index 3b8008f1fe..b0fe0c79eb 100644 --- a/src/plugins/platforms/directfb/qdirectfbinput.h +++ b/src/plugins/platforms/directfb/qdirectfbinput.h @@ -57,7 +57,7 @@ class QDirectFbInput : public QObject Q_OBJECT public: QDirectFbInput(QObject *parent); - void addWindow(DFBWindowID id, QWidget *tlw); + void addWindow(DFBWindowID id, QWindow *window); void removeWindow(WId wId); public slots: @@ -80,7 +80,7 @@ private: bool m_shouldStop; QSemaphore m_waitStop; - QHashm_tlwMap; + QHashm_tlwMap; }; #endif // QDIRECTFBINPUT_H diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.cpp b/src/plugins/platforms/directfb/qdirectfbintegration.cpp index ed8e42faf4..28b0979df7 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.cpp +++ b/src/plugins/platforms/directfb/qdirectfbintegration.cpp @@ -49,10 +49,9 @@ #include #include -#include -#include - #include +#include +#include #include #include #include @@ -85,7 +84,10 @@ QDirectFbScreen::~QDirectFbScreen() QDirectFbIntegration::QDirectFbIntegration() : mFontDb(new QGenericUnixFontDatabase()) + , mEventDispatcher(createUnixEventDispatcher()) { + QGuiApplicationPrivate::instance()->setEventDispatcher(mEventDispatcher); + const QStringList args = QCoreApplication::arguments(); int argc = args.size(); char **argv = new char*[argc]; @@ -101,8 +103,9 @@ QDirectFbIntegration::QDirectFbIntegration() delete[] argv; + QDirectFbScreen *primaryScreen = new QDirectFbScreen(0); - mScreens.append(primaryScreen); + screenAdded(primaryScreen); mInputRunner = new QThread; mInput = new QDirectFbInput(0); @@ -126,21 +129,20 @@ QPlatformPixmap *QDirectFbIntegration::createPlatformPixmap(QPlatformPixmap::Pix return new QDirectFbBlitterPlatformPixmap; } -QPlatformWindow *QDirectFbIntegration::createPlatformWindow(QWidget *widget, WId winId) const +QPlatformWindow *QDirectFbIntegration::createPlatformWindow(QWindow *window) const { - Q_UNUSED(winId); QDirectFbInput *input = const_cast(mInput);//gah - return new QDirectFbWindow(widget,input); + return new QDirectFbWindow(window,input); } -QAbstractEventDispatcher *QDirectFbIntegration::createEventDispatcher() const +QAbstractEventDispatcher *QDirectFbIntegration::guiThreadEventDispatcher() const { - return createUnixEventDispatcher(); + return mEventDispatcher; } -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 diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.h b/src/plugins/platforms/directfb/qdirectfbintegration.h index c3030031e1..67eed38c41 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.h +++ b/src/plugins/platforms/directfb/qdirectfbintegration.h @@ -56,7 +56,6 @@ class QDirectFBCursor; class QDirectFbScreen : public QPlatformScreen { -Q_OBJECT public: QDirectFbScreen(int display); ~QDirectFbScreen(); @@ -86,19 +85,17 @@ public: ~QDirectFbIntegration(); QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const; - QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId = 0) const; - QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const; - QAbstractEventDispatcher *createEventDispatcher() const; - - QList screens() const { return mScreens; } + QPlatformWindow *createPlatformWindow(QWindow *window) const; + QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; + QAbstractEventDispatcher *guiThreadEventDispatcher() const; QPlatformFontDatabase *fontDatabase() const; private: - QList mScreens; QDirectFbInput *mInput; QThread *mInputRunner; QPlatformFontDatabase *mFontDb; + QAbstractEventDispatcher *mEventDispatcher; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/directfb/qdirectfbwindow.cpp b/src/plugins/platforms/directfb/qdirectfbwindow.cpp index d2c411eaeb..94cd63b997 100644 --- a/src/plugins/platforms/directfb/qdirectfbwindow.cpp +++ b/src/plugins/platforms/directfb/qdirectfbwindow.cpp @@ -41,15 +41,12 @@ #include "qdirectfbwindow.h" #include "qdirectfbinput.h" -#include "qdirectfbglcontext.h" - -#include #include "qdirectfbwindowsurface.h" #include -QDirectFbWindow::QDirectFbWindow(QWidget *tlw, QDirectFbInput *inputhandler) +QDirectFbWindow::QDirectFbWindow(QWindow *tlw, QDirectFbInput *inputhandler) : QPlatformWindow(tlw), m_inputHandler(inputhandler), m_context(0) { IDirectFBDisplayLayer *layer = QDirectFbConvenience::dfbDisplayLayer(); @@ -63,10 +60,10 @@ QDirectFbWindow::QDirectFbWindow(QWidget *tlw, QDirectFbInput *inputhandler) |DWDESC_OPTIONS #endif |DWDESC_CAPS); - description.width = tlw->rect().width(); - description.height = tlw->rect().height(); - description.posx = tlw->rect().x(); - description.posy = tlw->rect().y(); + description.width = tlw->width(); + description.height = tlw->height(); + description.posx = tlw->x(); + description.posy = tlw->y(); if (layerConfig.surface_caps & DSCAPS_PREMULTIPLIED) description.surface_caps = DSCAPS_PREMULTIPLIED; @@ -85,7 +82,7 @@ QDirectFbWindow::QDirectFbWindow(QWidget *tlw, QDirectFbInput *inputhandler) m_dfbWindow->SetOpacity(m_dfbWindow,0xff); - setVisible(widget()->isVisible()); + setVisible(window()->visible()); DFBWindowID id; m_dfbWindow->GetID(m_dfbWindow, &id); @@ -100,17 +97,20 @@ QDirectFbWindow::~QDirectFbWindow() void QDirectFbWindow::setGeometry(const QRect &rect) { - bool isMoveOnly = (rect.topLeft() != geometry().topLeft()) && (rect.size() == geometry().size()); +// bool isMoveOnly = (rect.topLeft() != geometry().topLeft()) && (rect.size() == geometry().size()); + QPlatformWindow::setGeometry(rect); - if (widget()->isVisible() && !(widget()->testAttribute(Qt::WA_DontShowOnScreen))) { + if (window()->visible()) { m_dfbWindow->SetBounds(m_dfbWindow, rect.x(),rect.y(), rect.width(), rect.height()); - +// ### TODO port, verify if this is needed +#if 0 //Hack. When moving since the WindowSurface of a window becomes invalid when moved if (isMoveOnly) { //if resize then windowsurface is updated. widget()->windowSurface()->resize(rect.size()); - widget()->update(); + window()->update(); } +#endif } } @@ -170,22 +170,3 @@ WId QDirectFbWindow::winId() const return WId(id); } -QPlatformGLContext *QDirectFbWindow::glContext() const -{ - if (!m_context) { - IDirectFBSurface *surface; - DFBResult result = m_dfbWindow->GetSurface(m_dfbWindow,&surface); - if (result != DFB_OK) { - qWarning("could not retrieve surface in QDirectFbWindow::glContext()"); - return 0; - } - IDirectFBGL *gl; - result = surface->GetGL(surface,&gl); - if (result != DFB_OK) { - qWarning("could not retrieve IDirectFBGL in QDirectFbWindow::glContext()"); - return 0; - } - const_cast(this)->m_context = new QDirectFbGLContext(gl); - } - return m_context; -} diff --git a/src/plugins/platforms/directfb/qdirectfbwindow.h b/src/plugins/platforms/directfb/qdirectfbwindow.h index 4f839a05fa..4c9bbaaab5 100644 --- a/src/plugins/platforms/directfb/qdirectfbwindow.h +++ b/src/plugins/platforms/directfb/qdirectfbwindow.h @@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE class QDirectFbWindow : public QPlatformWindow { public: - QDirectFbWindow(QWidget *tlw, QDirectFbInput *inputhandler); + QDirectFbWindow(QWindow *tlw, QDirectFbInput *inputhandler); ~QDirectFbWindow(); void setGeometry(const QRect &rect); @@ -65,13 +65,9 @@ public: void lower(); WId winId() const; - QPlatformGLContext *glContext() const; - private: IDirectFBWindow *m_dfbWindow; QDirectFbInput *m_inputHandler; - - QPlatformGLContext *m_context; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp b/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp index 0cb3261eb1..ab355c48f4 100644 --- a/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp +++ b/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp @@ -49,20 +49,20 @@ QT_BEGIN_NAMESPACE -QDirectFbWindowSurface::QDirectFbWindowSurface(QWidget *window, WId wId) - : QWindowSurface(window), m_pixmap(0), m_pmdata(0), m_dfbSurface(0) +QDirectFbWindowSurface::QDirectFbWindowSurface(QWindow *window) + : QPlatformBackingStore(window), m_pixmap(0), m_pmdata(0), m_dfbSurface(0) { IDirectFBDisplayLayer *layer = QDirectFbConvenience::dfbDisplayLayer(); - DFBWindowID id(wId); + DFBWindowID id(window->winId()); IDirectFBWindow *dfbWindow; layer->GetWindow(layer,id,&dfbWindow); dfbWindow->GetSurface(dfbWindow,&m_dfbSurface); //WRONGSIZE - QDirectFbBlitter *blitter = new QDirectFbBlitter(window->rect().size(), m_dfbSurface); + QDirectFbBlitter *blitter = new QDirectFbBlitter(window->size(), m_dfbSurface); m_pmdata = new QDirectFbBlitterPlatformPixmap; m_pmdata->setBlittable(blitter); m_pixmap = new QPixmap(m_pmdata); @@ -78,9 +78,8 @@ QPaintDevice *QDirectFbWindowSurface::paintDevice() return m_pixmap; } -void QDirectFbWindowSurface::flush(QWidget *widget, const QRegion ®ion, const QPoint &offset) +void QDirectFbWindowSurface::flush(QWindow *, const QRegion ®ion, const QPoint &offset) { - Q_UNUSED(widget); m_pmdata->blittable()->unlock(); QVector rects = region.rects(); @@ -91,9 +90,9 @@ void QDirectFbWindowSurface::flush(QWidget *widget, const QRegion ®ion, const } } -void QDirectFbWindowSurface::resize(const QSize &size) +void QDirectFbWindowSurface::resize(const QSize &size, const QRegion& reg) { - QWindowSurface::resize(size); + QPlatformBackingStore::resize(size, reg); //Have to add 1 ref ass it will be removed by deleting the old blitter in setBlittable m_dfbSurface->AddRef(m_dfbSurface); diff --git a/src/plugins/platforms/directfb/qdirectfbwindowsurface.h b/src/plugins/platforms/directfb/qdirectfbwindowsurface.h index 5a631ca8fa..2b6cb58aef 100644 --- a/src/plugins/platforms/directfb/qdirectfbwindowsurface.h +++ b/src/plugins/platforms/directfb/qdirectfbwindowsurface.h @@ -42,22 +42,22 @@ #ifndef QWINDOWSURFACE_DIRECTFB_H #define QWINDOWSURFACE_DIRECTFB_H -#include +#include #include #include QT_BEGIN_NAMESPACE -class QDirectFbWindowSurface : public QWindowSurface +class QDirectFbWindowSurface : public QPlatformBackingStore { public: - QDirectFbWindowSurface(QWidget *window, WId wid); + QDirectFbWindowSurface(QWindow *window); ~QDirectFbWindowSurface(); QPaintDevice *paintDevice(); - void flush(QWidget *widget, const QRegion ®ion, const QPoint &offset); - void resize (const QSize &size); + void flush(QWindow *window, const QRegion ®ion, const QPoint &offset); + void resize (const QSize &size, const QRegion &staticContents); bool scroll(const QRegion &area, int dx, int dy); void beginPaint(const QRegion ®ion); -- cgit v1.2.3 From 30c23971d0e584a5cbfa1787f60e0f5837efd046 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Thu, 25 Aug 2011 01:25:19 +0800 Subject: directfb: Follow coding standards, add hints of memleaks, remove vars Use m_ for all member variables, document some classes that appear to lack proper destruction, remove unused variables from classes. Change-Id: Icec451149fa5d562d8d5f54cbe9a1aa1518bfc48 Reviewed-on: http://codereview.qt.nokia.com/3667 Reviewed-by: Lars Knoll --- src/plugins/platforms/directfb/qdirectfbcursor.cpp | 18 ++++++------ src/plugins/platforms/directfb/qdirectfbcursor.h | 8 ++---- .../platforms/directfb/qdirectfbintegration.cpp | 33 +++++++++++----------- .../platforms/directfb/qdirectfbintegration.h | 11 ++++---- src/plugins/platforms/directfb/qdirectfbwindow.cpp | 2 +- 5 files changed, 36 insertions(+), 36 deletions(-) (limited to 'src/plugins/platforms/directfb') diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.cpp b/src/plugins/platforms/directfb/qdirectfbcursor.cpp index cd4130b18e..b39a3f3c0a 100644 --- a/src/plugins/platforms/directfb/qdirectfbcursor.cpp +++ b/src/plugins/platforms/directfb/qdirectfbcursor.cpp @@ -43,24 +43,26 @@ #include "qdirectfbconvenience.h" -QDirectFBCursor::QDirectFBCursor(QPlatformScreen* screen) : - QPlatformCursor(screen), surface(0) +QDirectFBCursor::QDirectFBCursor(QPlatformScreen *screen) + : QPlatformCursor(screen) { QDirectFbConvenience::dfbInterface()->GetDisplayLayer(QDirectFbConvenience::dfbInterface(),DLID_PRIMARY, &m_layer); - image = new QPlatformCursorImage(0, 0, 0, 0, 0, 0); + m_image = new QPlatformCursorImage(0, 0, 0, 0, 0, 0); } -void QDirectFBCursor::changeCursor(QCursor * cursor, QWindow * window) +#warning "Memory leak?" + +void QDirectFBCursor::changeCursor(QCursor *cursor, QWindow *) { int xSpot; int ySpot; QPixmap map; if (cursor->shape() != Qt::BitmapCursor) { - image->set(cursor->shape()); - xSpot = image->hotspot().x(); - ySpot = image->hotspot().y(); - QImage *i = image->image(); + m_image->set(cursor->shape()); + xSpot = m_image->hotspot().x(); + ySpot = m_image->hotspot().y(); + QImage *i = m_image->image(); map = QPixmap::fromImage(*i); } else { QPoint point = cursor->hotSpot(); diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.h b/src/plugins/platforms/directfb/qdirectfbcursor.h index ab94d72153..22328da402 100644 --- a/src/plugins/platforms/directfb/qdirectfbcursor.h +++ b/src/plugins/platforms/directfb/qdirectfbcursor.h @@ -51,13 +51,11 @@ class QDirectFBCursor : public QPlatformCursor { public: QDirectFBCursor(QPlatformScreen *screem); - void changeCursor(QCursor * cursor, QWindow * window); + void changeCursor(QCursor *cursor, QWindow *window); private: - IDirectFBDisplayLayer * m_layer; - IDirectFBSurface * surface; - QPlatformCursorImage * image; - QDirectFbBlitter *blitter; + IDirectFBDisplayLayer *m_layer; + QPlatformCursorImage *m_image; }; #endif // QDIRECTFBCURSOR_H diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.cpp b/src/plugins/platforms/directfb/qdirectfbintegration.cpp index 28b0979df7..7bf26b433a 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.cpp +++ b/src/plugins/platforms/directfb/qdirectfbintegration.cpp @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE QDirectFbScreen::QDirectFbScreen(int display) - :QPlatformScreen() + : QPlatformScreen() { m_layer = QDirectFbConvenience::dfbDisplayLayer(display); m_layer->SetCooperativeLevel(m_layer,DLSCL_SHARED); @@ -75,18 +75,19 @@ 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()) - , mEventDispatcher(createUnixEventDispatcher()) + : m_fontDb(new QGenericUnixFontDatabase()) + , m_eventDispatcher(createUnixEventDispatcher()) { - QGuiApplicationPrivate::instance()->setEventDispatcher(mEventDispatcher); + QGuiApplicationPrivate::instance()->setEventDispatcher(m_eventDispatcher); const QStringList args = QCoreApplication::arguments(); int argc = args.size(); @@ -107,18 +108,18 @@ QDirectFbIntegration::QDirectFbIntegration() QDirectFbScreen *primaryScreen = new QDirectFbScreen(0); 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; } QPlatformPixmap *QDirectFbIntegration::createPlatformPixmap(QPlatformPixmap::PixelType type) const @@ -131,13 +132,13 @@ QPlatformPixmap *QDirectFbIntegration::createPlatformPixmap(QPlatformPixmap::Pix QPlatformWindow *QDirectFbIntegration::createPlatformWindow(QWindow *window) const { - QDirectFbInput *input = const_cast(mInput);//gah + QDirectFbInput *input = const_cast(m_input);//gah return new QDirectFbWindow(window,input); } QAbstractEventDispatcher *QDirectFbIntegration::guiThreadEventDispatcher() const { - return mEventDispatcher; + return m_eventDispatcher; } QPlatformBackingStore *QDirectFbIntegration::createPlatformBackingStore(QWindow *window) const @@ -147,7 +148,7 @@ QPlatformBackingStore *QDirectFbIntegration::createPlatformBackingStore(QWindow QPlatformFontDatabase *QDirectFbIntegration::fontDatabase() const { - return mFontDb; + return m_fontDb; } QT_END_NAMESPACE diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.h b/src/plugins/platforms/directfb/qdirectfbintegration.h index 67eed38c41..64f3b6005a 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.h +++ b/src/plugins/platforms/directfb/qdirectfbintegration.h @@ -74,8 +74,7 @@ public: IDirectFBDisplayLayer *m_layer; private: - QDirectFBCursor * cursor; - + QDirectFBCursor *m_cursor; }; class QDirectFbIntegration : public QPlatformIntegration @@ -92,10 +91,10 @@ public: QPlatformFontDatabase *fontDatabase() const; private: - QDirectFbInput *mInput; - QThread *mInputRunner; - QPlatformFontDatabase *mFontDb; - QAbstractEventDispatcher *mEventDispatcher; + QDirectFbInput *m_input; + QThread *m_inputRunner; + QPlatformFontDatabase *m_fontDb; + QAbstractEventDispatcher *m_eventDispatcher; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/directfb/qdirectfbwindow.cpp b/src/plugins/platforms/directfb/qdirectfbwindow.cpp index 94cd63b997..40b2cec4ff 100644 --- a/src/plugins/platforms/directfb/qdirectfbwindow.cpp +++ b/src/plugins/platforms/directfb/qdirectfbwindow.cpp @@ -47,7 +47,7 @@ #include QDirectFbWindow::QDirectFbWindow(QWindow *tlw, QDirectFbInput *inputhandler) - : QPlatformWindow(tlw), m_inputHandler(inputhandler), m_context(0) + : QPlatformWindow(tlw), m_inputHandler(inputhandler) { IDirectFBDisplayLayer *layer = QDirectFbConvenience::dfbDisplayLayer(); DFBDisplayLayerConfig layerConfig; -- cgit v1.2.3 From 6e28e8441b698c3397c2c78125c877f2e9867cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Mon, 22 Aug 2011 10:49:28 +0200 Subject: Copy core GL functionality to QtGui with QGL -> QOpenGL naming. Change-Id: Ibc989afa4a30dd184d41d1a1cd89f97196e48855 Reviewed-on: http://codereview.qt.nokia.com/3710 Reviewed-by: Gunnar Sletta --- src/plugins/platforms/directfb/qdirectfbglcontext.cpp | 4 ++-- src/plugins/platforms/directfb/qdirectfbglcontext.h | 4 ++-- src/plugins/platforms/directfb/qdirectfbwindow.cpp | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) (limited to 'src/plugins/platforms/directfb') diff --git a/src/plugins/platforms/directfb/qdirectfbglcontext.cpp b/src/plugins/platforms/directfb/qdirectfbglcontext.cpp index 8a40b2476d..c187ec7f66 100644 --- a/src/plugins/platforms/directfb/qdirectfbglcontext.cpp +++ b/src/plugins/platforms/directfb/qdirectfbglcontext.cpp @@ -70,13 +70,13 @@ QDirectFbGLContext::QDirectFbGLContext(IDirectFBGL *glContext) void QDirectFbGLContext::makeCurrent() { - QPlatformGLContext::makeCurrent(); + QPlatformOpenGLContext::makeCurrent(); m_dfbGlContext->Lock(m_dfbGlContext); } void QDirectFbGLContext::doneCurrent() { - QPlatformGLContext::doneCurrent(); + QPlatformOpenGLContext::doneCurrent(); m_dfbGlContext->Unlock(m_dfbGlContext); } diff --git a/src/plugins/platforms/directfb/qdirectfbglcontext.h b/src/plugins/platforms/directfb/qdirectfbglcontext.h index bff8b28d08..97bab0dcb0 100644 --- a/src/plugins/platforms/directfb/qdirectfbglcontext.h +++ b/src/plugins/platforms/directfb/qdirectfbglcontext.h @@ -42,11 +42,11 @@ #ifndef QDIRECTFBGLCONTEXT_H #define QDIRECTFBGLCONTEXT_H -#include +#include #include "qdirectfbconvenience.h" -class QDirectFbGLContext : public QPlatformGLContext +class QDirectFbGLContext : public QPlatformOpenGLContext { public: explicit QDirectFbGLContext(IDirectFBGL *glContext); diff --git a/src/plugins/platforms/directfb/qdirectfbwindow.cpp b/src/plugins/platforms/directfb/qdirectfbwindow.cpp index 40b2cec4ff..e75291b5c1 100644 --- a/src/plugins/platforms/directfb/qdirectfbwindow.cpp +++ b/src/plugins/platforms/directfb/qdirectfbwindow.cpp @@ -169,4 +169,3 @@ WId QDirectFbWindow::winId() const m_dfbWindow->GetID(m_dfbWindow, &id); return WId(id); } - -- cgit v1.2.3