static int sailfish_init(int gles_version) { if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0) { return 0; } SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, gles_version); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); priv.window = SDL_CreateWindow( "apkenv", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 0, 0, SDL_WINDOW_OPENGL|SDL_WINDOW_FULLSCREEN ); priv.glcontext = SDL_GL_CreateContext(priv.window); /* TODO: swipe lock? */ SDL_ShowCursor(0); apkenv_accelerometer_register(sdl_accelerometer); l_audioresource = audioresource_init(AUDIO_RESOURCE_MEDIA, on_audioresource_acquired, NULL); audioresource_acquire(l_audioresource); printf("Waiting for audioresource...\n"); while(!l_audioresource_acquired) { g_main_context_iteration(NULL, false); } apkenv_audio_register(sdl_audio); apkenv_mixer_register(sdl_mixer); return 1; }
static int fremantle_init(int gles_version) { if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0) { return 0; } SDL_GLES_Init(gles_version == 2 ? SDL_GLES_VERSION_2_0 : SDL_GLES_VERSION_1_1); SDL_GLES_SetAttribute(SDL_GLES_DEPTH_SIZE, 16); priv.screen = SDL_SetVideoMode(0, 0, 0, SDL_FULLSCREEN); SDL_GLES_MakeCurrent(SDL_GLES_CreateContext()); if (priv.screen == NULL) { return 0; } SDL_ShowCursor(0); apkenv_accelerometer_register(n900_accelerometer); apkenv_audio_register(sdl_audio); apkenv_mixer_register(sdl_mixer); return 1; }
static int pandora_init(int gles_version) { int i, j; if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0) { return 0; } for (i = SDLK_0, j = AKEYCODE_0; i <= SDLK_9; i++, j++) { keymap[i] = j; } for (i = SDLK_a, j = AKEYCODE_A; i <= SDLK_z; i++, j++) { keymap[i] = j; } EGLint egl_config[] = { EGL_BUFFER_SIZE, 16, EGL_RED_SIZE, 5, EGL_GREEN_SIZE, 6, EGL_BLUE_SIZE, 5, EGL_ALPHA_SIZE, 0, EGL_DEPTH_SIZE, 24, EGL_STENCIL_SIZE, EGL_DONT_CARE, EGL_CONFIG_CAVEAT, EGL_NONE, EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_RENDERABLE_TYPE, gles_version == 2 ? EGL_OPENGL_ES2_BIT : EGL_OPENGL_ES_BIT, EGL_NONE }; GLES_Data* data = (GLES_Data*)malloc(sizeof(GLES_Data)); memset(data,0,sizeof(GLES_Data)); data->screen = SDL_SetVideoMode(0,0,0,SDL_FULLSCREEN); CHK_FREE_RET(data->screen==NULL,data,0); SDL_SysWMinfo sysWmInfo; SDL_VERSION(&sysWmInfo.version); SDL_GetWMInfo(&sysWmInfo); data->eglDisplay = eglGetDisplay(0); // (EGLNativeDisplayType)sysWmInfo.info.x11.display); CHK_FREE_RET(data->eglDisplay==EGL_NO_DISPLAY,data,0); CHK_FREE_RET(GLES_TestError("eglGetDisplay"),data,0); EGLBoolean r = eglInitialize(data->eglDisplay,0,0); CHK_FREE_RET(!r,data,0); CHK_FREE_RET(GLES_TestError("eglInitialize"),data,0); int iConfigs; r = eglChooseConfig(data->eglDisplay, egl_config, &data->eglConfig, 1, &iConfigs); CHK_FREE_RET(!r||iConfigs!=1,data,0); CHK_FREE_RET(GLES_TestError("eglChooseConfig"),data,0); data->eglSurface = eglCreateWindowSurface(data->eglDisplay, data->eglConfig, NULL, NULL); //(NativeWindowType)sysWmInfo.info.x11.window, NULL); CHK_FREE_RET(data->eglSurface==EGL_NO_SURFACE,data,0); CHK_FREE_RET(GLES_TestError("eglCreateWindowSurface"),data,0); EGLint contextAttribs[] = { EGL_CONTEXT_CLIENT_VERSION, gles_version, EGL_NONE }; data->eglContext = eglCreateContext(data->eglDisplay,data->eglConfig,NULL,contextAttribs); CHK_FREE_RET(data->eglContext==EGL_NO_CONTEXT,data,0); CHK_FREE_RET(GLES_TestError("eglCreateContext"),data,0); eglMakeCurrent(data->eglDisplay,data->eglSurface,data->eglSurface,data->eglContext); GLES_TestError("eglMakeCurrent"); data->fbdev = open(FRAMEBUFFERDEVICE,O_RDONLY); G_Data = data; SDL_ShowCursor(0); // XXX: Does Pandora expose the accelerometer via SDL? apkenv_accelerometer_register(sdl_accelerometer); apkenv_audio_register(sdl_audio); apkenv_mixer_register(sdl_mixer); return 1; }