mirror of
https://github.com/RaySollium99/libpicofe.git
synced 2025-09-07 07:38:04 -04:00
sdl: use overlay on native bpp window
This commit is contained in:
parent
f4750ef3f5
commit
da0cc55643
1 changed files with 18 additions and 0 deletions
18
plat_sdl.c
18
plat_sdl.c
|
@ -49,6 +49,15 @@ int plat_sdl_change_video_mode(int w, int h, int force)
|
||||||
else
|
else
|
||||||
prev_h = h;
|
prev_h = h;
|
||||||
|
|
||||||
|
// invalid method might come from config..
|
||||||
|
if (plat_target.vout_method != 0
|
||||||
|
&& plat_target.vout_method != vout_mode_overlay
|
||||||
|
&& plat_target.vout_method != vout_mode_gl)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "invalid vout_method: %d\n", plat_target.vout_method);
|
||||||
|
plat_target.vout_method = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// skip GL recreation if window doesn't change - avoids flicker
|
// skip GL recreation if window doesn't change - avoids flicker
|
||||||
if (plat_target.vout_method == vout_mode_gl && plat_sdl_gl_active
|
if (plat_target.vout_method == vout_mode_gl && plat_sdl_gl_active
|
||||||
&& plat_target.vout_fullscreen == old_fullscreen && !force)
|
&& plat_target.vout_fullscreen == old_fullscreen && !force)
|
||||||
|
@ -77,6 +86,7 @@ int plat_sdl_change_video_mode(int w, int h, int force)
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX: workaround some occasional mysterious deadlock in SDL_SetVideoMode
|
// XXX: workaround some occasional mysterious deadlock in SDL_SetVideoMode
|
||||||
|
// (seen on r-pi)
|
||||||
SDL_PumpEvents();
|
SDL_PumpEvents();
|
||||||
|
|
||||||
plat_sdl_screen = SDL_SetVideoMode(win_w, win_h, 0, flags);
|
plat_sdl_screen = SDL_SetVideoMode(win_w, win_h, 0, flags);
|
||||||
|
@ -215,6 +225,14 @@ int plat_sdl_init(void)
|
||||||
g_menuscreen_w = window_w = plat_sdl_screen->w;
|
g_menuscreen_w = window_w = plat_sdl_screen->w;
|
||||||
g_menuscreen_h = window_h = plat_sdl_screen->h;
|
g_menuscreen_h = window_h = plat_sdl_screen->h;
|
||||||
|
|
||||||
|
// overlay/gl require native bpp in some cases..
|
||||||
|
plat_sdl_screen = SDL_SetVideoMode(g_menuscreen_w, g_menuscreen_h,
|
||||||
|
0, SDL_SWSURFACE);
|
||||||
|
if (plat_sdl_screen == NULL) {
|
||||||
|
fprintf(stderr, "SDL_SetVideoMode failed: %s\n", SDL_GetError());
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
plat_sdl_overlay = SDL_CreateYUVOverlay(plat_sdl_screen->w, plat_sdl_screen->h,
|
plat_sdl_overlay = SDL_CreateYUVOverlay(plat_sdl_screen->w, plat_sdl_screen->h,
|
||||||
SDL_UYVY_OVERLAY, plat_sdl_screen);
|
SDL_UYVY_OVERLAY, plat_sdl_screen);
|
||||||
if (plat_sdl_overlay != NULL) {
|
if (plat_sdl_overlay != NULL) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue