- if ((ret = opengl_sdl_recreate_window(opengl, opengl->window_width,
- opengl->window_height)) < 0)
- return ret;
- av_log(opengl, AV_LOG_INFO, "SDL driver: '%s'.\n", SDL_VideoDriverName(buffer, sizeof(buffer)));
- message.width = opengl->surface->w;
- message.height = opengl->surface->h;
- SDL_WM_SetCaption(opengl->window_title, NULL);
- opengl_control_message(h, AV_APP_TO_DEV_WINDOW_SIZE, &message, sizeof(AVDeviceRect));
- return 0;
+ opengl->window = SDL_CreateWindow(opengl->window_title,
+ SDL_WINDOWPOS_UNDEFINED,
+ SDL_WINDOWPOS_UNDEFINED,
+ opengl->window_width, opengl->window_height,
+ SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL);
+ if (!opengl->window) {
+ av_log(opengl, AV_LOG_ERROR, "Unable to create default window: %s\n", SDL_GetError());
+ return AVERROR_EXTERNAL;
+ }
+ opengl->glcontext = SDL_GL_CreateContext(opengl->window);
+ if (!opengl->glcontext) {
+ av_log(opengl, AV_LOG_ERROR, "Unable to create OpenGL context on default window: %s\n", SDL_GetError());
+ return AVERROR_EXTERNAL;
+ }
+ SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
+ SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
+ SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
+ SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
+ SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
+ av_log(opengl, AV_LOG_INFO, "SDL driver: '%s'.\n", SDL_GetCurrentVideoDriver());
+ SDL_GL_GetDrawableSize(opengl->window, &message.width, &message.height);
+ return opengl_control_message(h, AV_APP_TO_DEV_WINDOW_SIZE, &message, sizeof(AVDeviceRect));