summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2011-11-21 14:07:11 +0100
committerQt by Nokia <qt-info@nokia.com>2011-11-24 12:11:04 +0100
commita0e035956768fe29edb1109fd8e81212017afe9a (patch)
treec4b3c9d87949b4ddfe8164585d1cbea3e052b894 /src/plugins/platforms
parent7da24c14fdff3c67c58071be29d5bf5d76c18f55 (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')
-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());
}