diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2011-11-21 14:07:11 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-24 12:11:04 +0100 |
commit | a0e035956768fe29edb1109fd8e81212017afe9a (patch) | |
tree | c4b3c9d87949b4ddfe8164585d1cbea3e052b894 /src/plugins/platforms/directfb | |
parent | 7da24c14fdff3c67c58071be29d5bf5d76c18f55 (diff) |
directfb: Pass the IDirectFBWindow to the QDirectFbInput methods
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>
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()); } |