#include <directfb.h>
-QDirectFbInput::QDirectFbInput()
- : m_dfbInterface(QDirectFbConvenience::dfbInterface())
+QDirectFbInput::QDirectFbInput(IDirectFB *dfb, IDirectFBDisplayLayer *dfbLayer)
+ : m_dfbInterface(dfb)
+ , m_dfbDisplayLayer(dfbLayer)
, m_shouldStop(false)
{
DFBResult ok = m_dfbInterface->CreateEventBuffer(m_dfbInterface, m_eventBuffer.outPtr());
if (ok != DFB_OK)
DirectFBError("Failed to initialise eventbuffer", ok);
-
- m_dfbInterface->GetDisplayLayer(m_dfbInterface, DLID_PRIMARY, m_dfbDisplayLayer.outPtr());
}
void QDirectFbInput::run()
inline QPoint QDirectFbInput::globalPoint(const DFBEvent &event) const
{
QDirectFBPointer<IDirectFBWindow> window;
- m_dfbDisplayLayer->GetWindow(m_dfbDisplayLayer.data() , event.window.window_id, window.outPtr());
+ m_dfbDisplayLayer->GetWindow(m_dfbDisplayLayer, event.window.window_id, window.outPtr());
int x,y;
window->GetPosition(window.data(), &x, &y);
return QPoint(event.window.cx +x, event.window.cy + y);
{
Q_OBJECT
public:
- QDirectFbInput();
+ QDirectFbInput(IDirectFB *dfb, IDirectFBDisplayLayer *dfbLayer);
void addWindow(IDirectFBWindow *window, QWindow *platformWindow);
void removeWindow(IDirectFBWindow *window);
IDirectFB *m_dfbInterface;
- QDirectFBPointer<IDirectFBDisplayLayer> m_dfbDisplayLayer;
+ IDirectFBDisplayLayer *m_dfbDisplayLayer;
QDirectFBPointer<IDirectFBEventBuffer> m_eventBuffer;
bool m_shouldStop;
m_primaryScreen.reset(new QDirectFbScreen(0));
screenAdded(m_primaryScreen.data());
- m_input.reset(new QDirectFbInput());
+ m_input.reset(new QDirectFbInput(m_dfb.data(), m_primaryScreen->dfbLayer()));
m_input->start();
}