Mercurial > sdl-ios-xcode
diff src/video/xbios/SDL_xbios.c @ 4197:1bf6585720e9 SDL-1.2
Use loop to allocate needed buffers, instead of code duplication. Add missing header.
author | Patrice Mandin <patmandin@gmail.com> |
---|---|
date | Sat, 19 Sep 2009 21:58:59 +0000 |
parents | 13de8ea401db |
children | 6405314a7c07 |
line wrap: on
line diff
--- a/src/video/xbios/SDL_xbios.c Sat Sep 19 13:31:41 2009 +0000 +++ b/src/video/xbios/SDL_xbios.c Sat Sep 19 21:58:59 2009 +0000 @@ -613,7 +613,7 @@ int width, int height, int bpp, Uint32 flags) { int mode, new_depth; - int i; + int i, num_buffers; xbiosmode_t *new_video_mode; Uint32 new_screen_size; Uint32 modeflags; @@ -670,16 +670,8 @@ XBIOS_doubleline = SDL_TRUE; } - XBIOS_screensmem[0] = Atari_SysMalloc(new_screen_size, MX_STRAM); - - if (XBIOS_screensmem[0]==NULL) { - XBIOS_FreeBuffers(this); - SDL_SetError("Can not allocate %d KB for frame buffer", new_screen_size>>10); - return (NULL); - } - SDL_memset(XBIOS_screensmem[0], 0, new_screen_size); - - XBIOS_screens[0]=(void *) (( (long) XBIOS_screensmem[0]+256) & 0xFFFFFF00UL); + /* Double buffer ? */ + num_buffers = 1; #if SDL_VIDEO_OPENGL if (flags & SDL_OPENGL) { @@ -688,20 +680,23 @@ } } #endif + if (flags & SDL_DOUBLEBUF) { + num_buffers = 2; + modeflags |= SDL_DOUBLEBUF; + } - /* Double buffer ? */ - if (flags & SDL_DOUBLEBUF) { - XBIOS_screensmem[1] = Atari_SysMalloc(new_screen_size, MX_STRAM); + /* Allocate buffers */ + for (i=0; i<num_buffers; i++) { + XBIOS_screensmem[i] = Atari_SysMalloc(new_screen_size, MX_STRAM); - if (XBIOS_screensmem[1]==NULL) { + if (XBIOS_screensmem[i]==NULL) { XBIOS_FreeBuffers(this); - SDL_SetError("Can not allocate %d KB for double buffer", new_screen_size>>10); + SDL_SetError("Can not allocate %d KB for buffer %d", new_screen_size>>10, i); return (NULL); } - SDL_memset(XBIOS_screensmem[1], 0, new_screen_size); + SDL_memset(XBIOS_screensmem[i], 0, new_screen_size); - XBIOS_screens[1]=(void *) (( (long) XBIOS_screensmem[1]+256) & 0xFFFFFF00UL); - modeflags |= SDL_DOUBLEBUF; + XBIOS_screens[i]=(void *) (( (long) XBIOS_screensmem[i]+256) & 0xFFFFFF00UL); } /* Allocate the new pixel format for the screen */