/** * Reset an event queue. * * @param queueId ID of the queue to reset */ static void resetEventQueue(jint queueId) { MidpEvent event; if (NULL == gsEventQueues) { return; } gsEventQueues[queueId].isMonitorBlocked = KNI_FALSE; while (getPendingMIDPEvent(&event, queueId) != -1) { freeMIDPEventFields(event); } }
/** * Reset an event queue. * * @param handle handle of the event queue. */ static void resetEventQueue(int handle) { MidpEvent event; if (NULL == pEventQueues) { return; } pEventQueues[handle].isMonitorBlocked = KNI_FALSE; while (getPendingMIDPEvent(&event, handle) != -1) { freeMIDPEventFields(event); } }
/** * Reads a native event without blocking. Must be called from a KNI method. * * @param event The parameter is on the java stack, * An empty event to be filled in if there is a queued * event. * @param queueId queue ID * @return -1 for no event read or the number of events still pending after * this event */ static int readNativeEventCommon(jint queueId) { MidpEvent event; int eventsPending; eventsPending = getPendingMIDPEvent(&event, queueId); if (eventsPending == -1) { return eventsPending; } KNI_StartHandles(3); KNI_DeclareHandle(eventObj); KNI_DeclareHandle(stringObj); KNI_DeclareHandle(classObj); KNI_GetParameterAsObject(1, eventObj); cacheEventFieldIDs(eventObj, classObj); KNI_SetIntField(eventObj, typeFieldID, event.type); KNI_SetIntField(eventObj, intParam1FieldID, event.intParam1); KNI_SetIntField(eventObj, intParam2FieldID, event.intParam2); KNI_SetIntField(eventObj, intParam3FieldID, event.intParam3); KNI_SetIntField(eventObj, intParam4FieldID, event.intParam4); KNI_SetIntField(eventObj, intParam5FieldID, event.intParam5); SET_STRING_EVENT_FIELD(event.stringParam1, stringObj, eventObj, stringParam1FieldID); SET_STRING_EVENT_FIELD(event.stringParam2, stringObj, eventObj, stringParam2FieldID); SET_STRING_EVENT_FIELD(event.stringParam3, stringObj, eventObj, stringParam3FieldID); SET_STRING_EVENT_FIELD(event.stringParam4, stringObj, eventObj, stringParam4FieldID); SET_STRING_EVENT_FIELD(event.stringParam5, stringObj, eventObj, stringParam5FieldID); SET_STRING_EVENT_FIELD(event.stringParam6, stringObj, eventObj, stringParam6FieldID); freeMIDPEventFields(event); KNI_EndHandles(); return eventsPending; }