eVrApiEventStatus SystemActivities_GetNextPendingEvent( EventQueue * queue, char * buffer, unsigned int const bufferSize ) { if ( buffer == NULL || bufferSize == 0 ) { return VRAPI_EVENT_ERROR_INVALID_BUFFER; } if ( bufferSize < 2 ) { buffer[0] = '\0'; return VRAPI_EVENT_ERROR_INVALID_BUFFER; } if ( queue == NULL ) { return VRAPI_EVENT_ERROR_INTERNAL; } EventQueue * q = reinterpret_cast< EventQueue* >( queue ); EventData const * eventData; if ( !q->Dequeue( eventData ) ) { return VRAPI_EVENT_NOT_PENDING; } OVR_strncpy( buffer, bufferSize, static_cast< char const * >( eventData->GetData() ), eventData->GetSize() ); bool overflowed = eventData->GetSize() >= bufferSize; delete eventData; return overflowed ? VRAPI_EVENT_BUFFER_OVERFLOW : VRAPI_EVENT_PENDING; }