From e212d25972dbc19e3cc687b8c7bd4503eec8a602 Mon Sep 17 00:00:00 2001 From: Kevin Krammer Date: Mon, 26 Mar 2012 16:44:07 +0200 Subject: 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 Reviewed-by: Sean Harmer Reviewed-by: Giuseppe D'Angelo --- src/plugins/platforms/qnx/qqnxbpseventfilter.cpp | 29 ++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'src/plugins/platforms/qnx/qqnxbpseventfilter.cpp') 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 #include #include +#include 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; } -- cgit v1.2.3