diff options
Diffstat (limited to 'src/plugins/platforms/directfb/qdirectfbinput.cpp')
-rw-r--r-- | src/plugins/platforms/directfb/qdirectfbinput.cpp | 32 |
1 files changed, 22 insertions, 10 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() |