summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/directfb
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/directfb')
-rw-r--r--src/plugins/platforms/directfb/qdirectfbinput.cpp32
-rw-r--r--src/plugins/platforms/directfb/qdirectfbinput.h4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbwindow.cpp6
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());
}