directfb: Use the QPlatformWindow in the DirectFB Backingstore
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>
Mon, 21 Nov 2011 12:50:48 +0000 (13:50 +0100)
committerQt by Nokia <qt-info@nokia.com>
Thu, 24 Nov 2011 11:11:04 +0000 (12:11 +0100)
Remove usage of QDirectFbConvenience::dfbDisplayLayer in the
QDirectFbBackingStore code and resolve the IDirectFBWindow through
the QPlatformWindow.

Change-Id: Ia7db8dedc91096648bc9de029d034002ba0d6a03
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
src/plugins/platforms/directfb/qdirectfbbackingstore.cpp
src/plugins/platforms/directfb/qdirectfbwindow.cpp
src/plugins/platforms/directfb/qdirectfbwindow.h

index a45a577..9666deb 100644 (file)
@@ -43,6 +43,7 @@
 #include "qdirectfbintegration.h"
 #include "qdirectfbblitter.h"
 #include "qdirectfbconvenience.h"
+#include "qdirectfbwindow.h"
 #include <private/qpixmap_blitter_p.h>
 
 #include <QtCore/qdebug.h>
@@ -52,15 +53,9 @@ QT_BEGIN_NAMESPACE
 QDirectFbBackingStore::QDirectFbBackingStore(QWindow *window)
     : QPlatformBackingStore(window), m_pixmap(0), m_pmdata(0)
 {
+    IDirectFBWindow *dfbWindow = static_cast<QDirectFbWindow *>(window->handle())->dfbWindow();
+    dfbWindow->GetSurface(dfbWindow, m_dfbSurface.outPtr());
 
-    QDirectFBPointer<IDirectFBDisplayLayer> layer(QDirectFbConvenience::dfbDisplayLayer());
-
-    DFBWindowID id(window->winId());
-    QDirectFBPointer<IDirectFBWindow> dfbWindow;
-
-    layer->GetWindow(layer.data(), id, dfbWindow.outPtr());
-
-    dfbWindow->GetSurface(dfbWindow.data(), m_dfbSurface.outPtr());
 //WRONGSIZE
     QDirectFbBlitter *blitter = new QDirectFbBlitter(window->size(), m_dfbSurface.data());
     m_pmdata = new QDirectFbBlitterPlatformPixmap;
index 2e9dfc1..ac9a474 100644 (file)
@@ -194,3 +194,8 @@ bool QDirectFbWindow::setMouseGrabEnabled(bool grab)
 
     return res == DFB_OK;
 }
+
+IDirectFBWindow *QDirectFbWindow::dfbWindow() const
+{
+    return m_dfbWindow.data();
+}
index 1169b8b..93fd940 100644 (file)
@@ -67,6 +67,8 @@ public:
     void lower();
     WId winId() const;
 
+    IDirectFBWindow *dfbWindow() const;
+
 private:
     QDirectFBPointer<IDirectFBWindow> m_dfbWindow;
     QDirectFbInput *m_inputHandler;