/* * Starting point for the module. We do not use main since it would * collide with main in libppapi_cpp. */ int main(int argc, char *argv[]) { fprintf(stdout,"Started main.\n"); g_pCore = (PPB_Core*)PSGetInterface(PPB_CORE_INTERFACE); g_pFullscreen = (PPB_Fullscreen*)PSGetInterface(PPB_FULLSCREEN_INTERFACE); g_pGraphics2D = (PPB_Graphics2D*)PSGetInterface(PPB_GRAPHICS_2D_INTERFACE); g_pInstance = (PPB_Instance*)PSGetInterface(PPB_INSTANCE_INTERFACE); g_pImageData = (PPB_ImageData*)PSGetInterface(PPB_IMAGEDATA_INTERFACE); g_pView = (PPB_View*)PSGetInterface(PPB_VIEW_INTERFACE); g_pInputEvent = (PPB_InputEvent*) PSGetInterface(PPB_INPUT_EVENT_INTERFACE); g_pKeyboardInput = (PPB_KeyboardInputEvent*) PSGetInterface(PPB_KEYBOARD_INPUT_EVENT_INTERFACE); g_pMouseInput = (PPB_MouseInputEvent*) PSGetInterface(PPB_MOUSE_INPUT_EVENT_INTERFACE); g_pTouchInput = (PPB_TouchInputEvent*) PSGetInterface(PPB_TOUCH_INPUT_EVENT_INTERFACE); PSEventSetFilter(PSE_ALL); while (1) { /* Process all waiting events without blocking */ PSEvent* event; while ((event = PSEventTryAcquire()) != NULL) { ProcessEvent(event); PSEventRelease(event); } /* Render a frame, blocking until complete. */ if (g_Context.bound) { Render(); } } return 0; }
/** @internal @This allocates an nacl audio pipe. * * @param mgr common management structure * @param uprobe structure used to raise events * @param signature signature of the pipe allocator * @param args optional arguments * @return pointer to upipe or NULL in case of allocation error */ static struct upipe *upipe_nacl_audio_alloc(struct upipe_mgr *mgr, struct uprobe *uprobe, uint32_t signature, va_list args) { if (signature != UPIPE_VOID_SIGNATURE) return NULL; struct upipe_nacl_audio *upipe_nacl_audio = malloc(sizeof(struct upipe_nacl_audio) + uqueue_sizeof(MAX_QUEUE_LENGTH)); if (unlikely(upipe_nacl_audio == NULL)) return NULL; if(unlikely(!uqueue_init(&upipe_nacl_audio->uqueue, MAX_QUEUE_LENGTH, upipe_nacl_audio->uqueue_extra))) { free(upipe_nacl_audio); return NULL; } struct upipe *upipe = upipe_nacl_audio_to_upipe(upipe_nacl_audio); upipe_init(upipe, mgr, uprobe); upipe_nacl_audio_init_urefcount(upipe); upipe_nacl_audio_init_input(upipe); upipe_nacl_audio_init_upump_mgr(upipe); upipe_nacl_audio_init_upump(upipe); upipe_nacl_audio_init_uclock(upipe); upipe_nacl_audio->started = false; PPB_AudioConfig *audio_config_interface = (PPB_AudioConfig *)PSGetInterface(PPB_AUDIO_CONFIG_INTERFACE); upipe_nacl_audio->nb_samples = audio_config_interface->RecommendSampleFrameCount(PSGetInstanceId(), SAMPLE_RATE, NB_SAMPLES); upipe_nacl_audio->audio_config = audio_config_interface->CreateStereo16Bit(PSGetInstanceId(), SAMPLE_RATE, upipe_nacl_audio->nb_samples); upipe_nacl_audio->core_interface = (PPB_Core *)PSGetInterface(PPB_CORE_INTERFACE); upipe_nacl_audio->audio_interface = (PPB_Audio *)PSGetInterface(PPB_AUDIO_INTERFACE); upipe_nacl_audio->audio = upipe_nacl_audio->audio_interface->Create(PSGetInstanceId(), upipe_nacl_audio->audio_config, upipe_nacl_audio_worker, upipe); upipe_throw_ready(upipe); return upipe; }
int NACL_VideoInit(_THIS) { SDL_VideoData *driverdata = (SDL_VideoData *) _this->driverdata; SDL_DisplayMode mode; SDL_zero(mode); mode.format = driverdata->format; mode.w = driverdata->w; mode.h = driverdata->h; mode.refresh_rate = 0; mode.driverdata = NULL; if (SDL_AddBasicVideoDisplay(&mode) < 0) { return -1; } SDL_AddDisplayMode(&_this->displays[0], &mode); PSInterfaceInit(); driverdata->instance = PSGetInstanceId(); driverdata->ppb_graphics = PSInterfaceGraphics3D(); driverdata->ppb_message_loop = PSInterfaceMessageLoop(); driverdata->ppb_core = PSInterfaceCore(); driverdata->ppb_fullscreen = PSInterfaceFullscreen(); driverdata->ppb_instance = PSInterfaceInstance(); driverdata->ppb_image_data = PSInterfaceImageData(); driverdata->ppb_view = PSInterfaceView(); driverdata->ppb_var = PSInterfaceVar(); driverdata->ppb_input_event = (PPB_InputEvent*) PSGetInterface(PPB_INPUT_EVENT_INTERFACE); driverdata->ppb_keyboard_input_event = (PPB_KeyboardInputEvent*) PSGetInterface(PPB_KEYBOARD_INPUT_EVENT_INTERFACE); driverdata->ppb_mouse_input_event = (PPB_MouseInputEvent*) PSGetInterface(PPB_MOUSE_INPUT_EVENT_INTERFACE); driverdata->ppb_wheel_input_event = (PPB_WheelInputEvent*) PSGetInterface(PPB_WHEEL_INPUT_EVENT_INTERFACE); driverdata->ppb_touch_input_event = (PPB_TouchInputEvent*) PSGetInterface(PPB_TOUCH_INPUT_EVENT_INTERFACE); driverdata->message_loop = driverdata->ppb_message_loop->Create(driverdata->instance); PSEventSetFilter(PSE_ALL); /* We're done! */ return 0; }