bool QQnxBpsEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *result) { Q_UNUSED(eventType); Q_UNUSED(result); bps_event_t *event = static_cast<bps_event_t *>(message); const int eventDomain = bps_event_get_domain(event); qBpsEventFilterDebug() << Q_FUNC_INFO << "event=" << event << "domain=" << eventDomain; if (eventDomain == screen_get_domain()) { if (!m_screenEventHandler) { qWarning("QQNX: registered for screen events, but no handler provided."); return false; } screen_event_t screenEvent = screen_event_get_event(event); return m_screenEventHandler->handleEvent(screenEvent); } if (eventDomain == dialog_get_domain()) { dialog_instance_t nativeDialog = dialog_event_get_dialog_instance(event); QQnxFileDialogHelper *dialog = m_dialogMapper.value(nativeDialog, 0); if (dialog) return dialog->handleEvent(event); } if (eventDomain == navigator_get_domain()) return handleNavigatorEvent(event); if (m_virtualKeyboard->handleEvent(event)) return true; return false; }
static void handleEvents() { int domain; // Get the first event in the queue. bps_event_t *event = NULL; if (BPS_SUCCESS != bps_get_event(&event, 0)) { fprintf(stderr, "bps_get_event() failed\n"); return; } // Handle all events in the queue. // If we don't do this in a loop, we'll only handle one event per frame. // If many events are triggered quickly, e.g. by spinning the analog sticks, // the queue will grow and the user will see the analog sticks lag. while (event) { if (event) { domain = bps_event_get_domain(event); if (domain == navigator_get_domain()) { handleNavigatorEvent(event); } else if (domain == screen_get_domain()) { handleScreenEvent(event); } } if (BPS_SUCCESS != bps_get_event(&event, 0)) { fprintf(stderr, "bps_get_event() failed\n"); return; } } }
static void handle_events() { int screen_domain = screen_get_domain(); int navigator_domain = navigator_get_domain(); int sensor_domain = sensor_get_domain(); int rc; //Request and process available BPS events for(;;) { bps_event_t *event = NULL; rc = bps_get_event(&event, 0); assert(rc == BPS_SUCCESS); if (event) { int domain = bps_event_get_domain(event); if (domain == screen_domain) { handleScreenEvent(event); } else if (domain == navigator_domain) { handleNavigatorEvent(event); } else if (domain == sensor_domain) { handleSensorEvent(event); } } else { //No more events in the queue break; } } }
void handleEvent() { //Request and process BPS next available event int rc, domain; for (;;) { bps_event_t *event = NULL; rc = bps_get_event(&event, 0); assert(rc == BPS_SUCCESS); if (event) { int domain = bps_event_get_domain(event); if (domain == screen_get_domain()) { handleScreenEvent(event); } else if(domain == navigator_get_domain()) { handleNavigatorEvent(event); } else if (domain == dialog_get_domain()) { handle_dialog_response(event); } } else { break; } } }
static void handle_events() { //Request and process available BPS events for(;;) { bps_event_t *event = NULL; if (BPS_SUCCESS != bps_get_event(&event, 0)) { fprintf(stderr, "bps_get_event failed\n"); break; } if (event) { int domain = bps_event_get_domain(event); if (domain == screen_get_domain()) { handleScreenEvent(event); } else if (domain == navigator_get_domain()) { handleNavigatorEvent(event); } } else { break; } } }
/* * This method encapsulated the main BPS event loop -- all the details needed to * set it in place have been done in the initialize() method */ void NfcWorker::listen() { qDebug() << "XXXX NfcWorker::listen() entered ..."; int rc, domain; if (_failedToInitialize) { qDebug() << "XXXX NfcWorker::listen() terminating due to initialisation failure"; emit message("Terminating due to initialisation failure"); StateManager* state_mgr = StateManager::getInstance(); state_mgr->setDefaultState(); return; } _timeToDie = false; qDebug() << "XXXX NfcWorker::listen() entering event loop"; while (!_timeToDie) { bps_event_t *event; qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": bps_get_event() - entering"; rc = bps_get_event(&event, BPS_EVENT_TIMEOUT); qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": bps_get_event() - exited"; if (!rc) { if (event) { domain = bps_event_get_domain(event); if (nfc_get_domain() == domain) { handleNfcEvent(event); } else if (navigator_get_domain() == domain) { handleNavigatorEvent(event); } else if (_bpsInterruptDomain == domain) { unsigned int code; code = bps_event_get_code(event); switch (code) { case NfcWorker::TERMINATE: _timeToDie = true; _taskToPerform = NONE_SET; emit message("Got a custom BPS event to terminate"); qDebug() << "XXXX Got a custom BPS event to terminate."; break; case NfcWorker::WAKEUP: emit message("Got a custom BPS event to wake up"); qDebug() << "XXXX Got a custom BPS event to wake up."; break; default: emit message("Unrecognised custom BPS event"); qDebug() << "XXXX Unrecognised custom BPS event."; break; } } else { emit message("BPS event didn't match a wanted domain"); qDebug() << "XXXX BPS event didn't match a wanted domain"; } } else { qDebug() << "XXXX No events from BPS on this wakeup"; } } else { qDebug() << "XXXX NfcWorker::listen() bps_get_event rc=" << rc; emit message("Error getting BPS event"); qDebug() << "XXXX Error getting BPS event."; } } if (_navigatorExitReceived) { qDebug() << "XXXX Exiting listen() loop since got NAVIGATOR_EXIT event"; } qDebug() << "XXXX - exited listen loop - changing state"; StateManager* state_mgr = StateManager::getInstance(); state_mgr->setDefaultState(); // // NOTE: no need to call nfc_unregister_tag_readerwriter() since it gets // called on our behalf automatically if needed. // qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": nfc_stop_events() - entering"; rc = nfc_stop_events(); qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": nfc_stop_events() - exited"; qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": navigator_stop_events() - entering"; rc = navigator_stop_events(0); qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": navigator_stop_events() - exited"; qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": bps_shutdown() - entering"; bps_shutdown(); qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": bps_shutdown() - exited"; qDebug() << "XXXX NfcWorker::listen() BPS shutdown. Exiting listen()"; }