diff options
Diffstat (limited to 'src/plugins/platforms/directfb')
-rw-r--r-- | src/plugins/platforms/directfb/qdirectfbinput.cpp | 32 | ||||
-rw-r--r-- | src/plugins/platforms/directfb/qdirectfbinput.h | 4 | ||||
-rw-r--r-- | src/plugins/platforms/directfb/qdirectfbwindow.cpp | 6 |
3 files changed, 26 insertions, 16 deletions
diff --git a/src/plugins/platforms/directfb/qdirectfbinput.cpp b/src/plugins/platforms/directfb/qdirectfbinput.cpp index 5f96fe0ddd..bc3b6e820c 100644 --- a/src/plugins/platforms/directfb/qdirectfbinput.cpp +++ b/src/plugins/platforms/directfb/qdirectfbinput.cpp @@ -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() diff --git a/src/plugins/platforms/directfb/qdirectfbinput.h b/src/plugins/platforms/directfb/qdirectfbinput.h index 8ebc3a558e..6d8cc25380 100644 --- a/src/plugins/platforms/directfb/qdirectfbinput.h +++ b/src/plugins/platforms/directfb/qdirectfbinput.h @@ -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(); diff --git a/src/plugins/platforms/directfb/qdirectfbwindow.cpp b/src/plugins/platforms/directfb/qdirectfbwindow.cpp index 4dd968ee60..2e9dfc1d60 100644 --- a/src/plugins/platforms/directfb/qdirectfbwindow.cpp +++ b/src/plugins/platforms/directfb/qdirectfbwindow.cpp @@ -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()); } |