Use loop to allocate needed buffers, instead of code duplication. Add missing header.
--HG-- branch : SDL-1.2 extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%403826
This commit is contained in:
parent
1fda3574b9
commit
266ad8cf88
2 changed files with 15 additions and 19 deletions
|
@ -613,7 +613,7 @@ static SDL_Surface *XBIOS_SetVideoMode(_THIS, SDL_Surface *current,
|
||||||
int width, int height, int bpp, Uint32 flags)
|
int width, int height, int bpp, Uint32 flags)
|
||||||
{
|
{
|
||||||
int mode, new_depth;
|
int mode, new_depth;
|
||||||
int i;
|
int i, num_buffers;
|
||||||
xbiosmode_t *new_video_mode;
|
xbiosmode_t *new_video_mode;
|
||||||
Uint32 new_screen_size;
|
Uint32 new_screen_size;
|
||||||
Uint32 modeflags;
|
Uint32 modeflags;
|
||||||
|
@ -670,16 +670,8 @@ static SDL_Surface *XBIOS_SetVideoMode(_THIS, SDL_Surface *current,
|
||||||
XBIOS_doubleline = SDL_TRUE;
|
XBIOS_doubleline = SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
XBIOS_screensmem[0] = Atari_SysMalloc(new_screen_size, MX_STRAM);
|
/* Double buffer ? */
|
||||||
|
num_buffers = 1;
|
||||||
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);
|
|
||||||
|
|
||||||
#if SDL_VIDEO_OPENGL
|
#if SDL_VIDEO_OPENGL
|
||||||
if (flags & SDL_OPENGL) {
|
if (flags & SDL_OPENGL) {
|
||||||
|
@ -688,20 +680,23 @@ static SDL_Surface *XBIOS_SetVideoMode(_THIS, SDL_Surface *current,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Double buffer ? */
|
|
||||||
if (flags & SDL_DOUBLEBUF) {
|
if (flags & SDL_DOUBLEBUF) {
|
||||||
XBIOS_screensmem[1] = Atari_SysMalloc(new_screen_size, MX_STRAM);
|
num_buffers = 2;
|
||||||
|
modeflags |= SDL_DOUBLEBUF;
|
||||||
|
}
|
||||||
|
|
||||||
if (XBIOS_screensmem[1]==NULL) {
|
/* Allocate buffers */
|
||||||
|
for (i=0; i<num_buffers; i++) {
|
||||||
|
XBIOS_screensmem[i] = Atari_SysMalloc(new_screen_size, MX_STRAM);
|
||||||
|
|
||||||
|
if (XBIOS_screensmem[i]==NULL) {
|
||||||
XBIOS_FreeBuffers(this);
|
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);
|
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);
|
XBIOS_screens[i]=(void *) (( (long) XBIOS_screensmem[i]+256) & 0xFFFFFF00UL);
|
||||||
modeflags |= SDL_DOUBLEBUF;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate the new pixel format for the screen */
|
/* Allocate the new pixel format for the screen */
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <mint/cookie.h>
|
#include <mint/cookie.h>
|
||||||
|
#include <mint/falcon.h>
|
||||||
|
|
||||||
#include "SDL_xbios.h"
|
#include "SDL_xbios.h"
|
||||||
#include "SDL_xbios_milan.h"
|
#include "SDL_xbios_milan.h"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue