summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
diff options
context:
space:
mode:
authorKevin Krammer <kevin.krammer.qnx@kdab.com>2012-03-26 16:44:07 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-01 07:10:43 +0200
commite212d25972dbc19e3cc687b8c7bd4503eec8a602 (patch)
tree31c5448ad31465ee39c808d069f646d97abee81e /src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
parent0b05e4cdd5800b9ea90eaface984dc21f506ac92 (diff)
Register for and handle screen events delivered through BPS
Delegates actual event inspection and reaction to the screen event handler class already used by the PPS screen event handler Change-Id: Ic07efa1de3f6b452f3091e901bd8a577175e3cf0 Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Diffstat (limited to 'src/plugins/platforms/qnx/qqnxbpseventfilter.cpp')
-rw-r--r--src/plugins/platforms/qnx/qqnxbpseventfilter.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
index d1db0665bf..c4e6f2b781 100644
--- a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
+++ b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
@@ -40,18 +40,22 @@
****************************************************************************/
#include "qqnxbpseventfilter.h"
+#include "qqnxscreen.h"
+#include "qqnxscreeneventhandler.h"
#include <QAbstractEventDispatcher>
#include <QDebug>
#include <bps/event.h>
+#include <bps/screen.h>
QT_BEGIN_NAMESPACE
static QQnxBpsEventFilter *s_instance = 0;
-QQnxBpsEventFilter::QQnxBpsEventFilter(QObject *parent)
+QQnxBpsEventFilter::QQnxBpsEventFilter(QQnxScreenEventHandler *screenEventHandler, QObject *parent)
: QObject(parent)
+ , m_screenEventHandler(screenEventHandler)
{
Q_ASSERT(s_instance == 0);
@@ -80,6 +84,18 @@ void QQnxBpsEventFilter::installOnEventDispatcher(QAbstractEventDispatcher *disp
Q_UNUSED(previousEventFilter);
}
+void QQnxBpsEventFilter::registerForScreenEvents(QQnxScreen *screen)
+{
+ if (screen_request_events(screen->nativeContext()) != BPS_SUCCESS)
+ qWarning("QQNX: failed to register for screen events on screen %p", screen->nativeContext());
+}
+
+void QQnxBpsEventFilter::unregisterForScreenEvents(QQnxScreen *screen)
+{
+ if (screen_stop_events(screen->nativeContext()) != BPS_SUCCESS)
+ qWarning("QQNX: failed to unregister for screen events on screen %p", screen->nativeContext());
+}
+
bool QQnxBpsEventFilter::dispatcherEventFilter(void *message)
{
#if defined(QQNXBPSEVENTFILTER_DEBUG)
@@ -95,12 +111,17 @@ bool QQnxBpsEventFilter::dispatcherEventFilter(void *message)
bool QQnxBpsEventFilter::bpsEventFilter(bps_event_t *event)
{
+ const int eventDomain = bps_event_get_domain(event);
+
#if defined(QQNXBPSEVENTFILTER_DEBUG)
- qDebug() << Q_FUNC_INFO << "event=" << event << "domain=" << bps_event_get_domain(event);
-#else
- Q_UNUSED(event);
+ qDebug() << Q_FUNC_INFO << "event=" << event << "domain=" << eventDomain;
#endif
+ if (eventDomain == screen_get_domain()) {
+ screen_event_t screenEvent = screen_event_get_event(event);
+ return m_screenEventHandler->handleEvent(screenEvent);
+ }
+
return false;
}