directfb: Pass the IDirectFBWindow to the QDirectFbInput methods
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>
Mon, 21 Nov 2011 13:07:11 +0000 (14:07 +0100)
committerQt by Nokia <qt-info@nokia.com>
Thu, 24 Nov 2011 11:11:04 +0000 (12:11 +0100)
No need to go from IDirectFBWindow -> WindowID -> IDirectFBWindow
to attach the event buffer for the event system.

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

index 5f96fe0..bc3b6e8 100644 (file)
@@ -75,22 +75,34 @@ void QDirectFbInput::stopInputEventLoop()
     m_eventBuffer->WakeUp(m_eventBuffer.data());
 }
 
-void QDirectFbInput::addWindow(DFBWindowID id, QWindow *qt_window)
+void QDirectFbInput::addWindow(IDirectFBWindow *window, QWindow *platformWindow)
 {
-    m_tlwMap.insert(id,qt_window);
-    QDirectFBPointer<IDirectFBWindow> window;
-    m_dfbDisplayLayer->GetWindow(m_dfbDisplayLayer.data(), id, window.outPtr());
+    DFBResult res;
+    DFBWindowID id;
+
+    res = window->GetID(window, &id);
+    if (res != DFB_OK) {
+        DirectFBError("QDirectFbInput::addWindow", res);
+        return;
+    }
 
-    window->AttachEventBuffer(window.data(), m_eventBuffer.data());
+    m_tlwMap.insert(id, platformWindow);
+    window->AttachEventBuffer(window, m_eventBuffer.data());
 }
 
-void QDirectFbInput::removeWindow(WId wId)
+void QDirectFbInput::removeWindow(IDirectFBWindow *window)
 {
-    QDirectFBPointer<IDirectFBWindow> window;
-    m_dfbDisplayLayer->GetWindow(m_dfbDisplayLayer.data(), wId, window.outPtr());
+    DFBResult res;
+    DFBWindowID id;
+
+    res = window->GetID(window, &id);
+    if (res != DFB_OK) {
+        DirectFBError("QDirectFbInput::removeWindow", res);
+        return;
+    }
 
-    window->DetachEventBuffer(window.data(), m_eventBuffer.data());
-    m_tlwMap.remove(wId);
+    window->DetachEventBuffer(window, m_eventBuffer.data());
+    m_tlwMap.remove(id);
 }
 
 void QDirectFbInput::handleEvents()
index 8ebc3a5..6d8cc25 100644 (file)
@@ -56,8 +56,8 @@ class QDirectFbInput : public QThread
     Q_OBJECT
 public:
     QDirectFbInput();
-    void addWindow(DFBWindowID id, QWindow *window);
-    void removeWindow(WId wId);
+    void addWindow(IDirectFBWindow *window, QWindow *platformWindow);
+    void removeWindow(IDirectFBWindow *window);
 
     void stopInputEventLoop();
 
index 4dd968e..2e9dfc1 100644 (file)
@@ -87,14 +87,12 @@ QDirectFbWindow::QDirectFbWindow(QWindow *tlw, QDirectFbInput *inputhandler)
 
     setVisible(window()->visible());
 
-    DFBWindowID id;
-    m_dfbWindow->GetID(m_dfbWindow.data(), &id);
-    m_inputHandler->addWindow(id,tlw);
+    m_inputHandler->addWindow(m_dfbWindow.data(), tlw);
 }
 
 QDirectFbWindow::~QDirectFbWindow()
 {
-    m_inputHandler->removeWindow(winId());
+    m_inputHandler->removeWindow(m_dfbWindow.data());
     m_dfbWindow->Destroy(m_dfbWindow.data());
 }