diff options
author | Kevin Krammer <kevin.krammer.qnx@kdab.com> | 2012-03-26 16:44:07 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-01 07:10:43 +0200 |
commit | e212d25972dbc19e3cc687b8c7bd4503eec8a602 (patch) | |
tree | 31c5448ad31465ee39c808d069f646d97abee81e /src/plugins/platforms/qnx/qqnxbpseventfilter.cpp | |
parent | 0b05e4cdd5800b9ea90eaface984dc21f506ac92 (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.cpp | 29 |
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; } |