Mercurial > sdl-ios-xcode
changeset 314:bff64eba7721
*** empty log message ***
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 22 Mar 2002 18:11:56 +0000 |
parents | 67ad846ed21c |
children | 3333b6e68289 |
files | README.MiNT src/video/xbios/SDL_xbios.c |
diffstat | 2 files changed, 51 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/README.MiNT Wed Mar 20 02:37:44 2002 +0000 +++ b/README.MiNT Fri Mar 22 18:11:56 2002 +0000 @@ -110,4 +110,4 @@ -- Patrice Mandin <pmandin@caramail.com> -http://www.multimania.com/pmandin +http://membres.lycos.fr/pmandin/
--- a/src/video/xbios/SDL_xbios.c Wed Mar 20 02:37:44 2002 +0000 +++ b/src/video/xbios/SDL_xbios.c Fri Mar 22 18:11:56 2002 +0000 @@ -619,10 +619,58 @@ static void XBIOS_UpdateRects(_THIS, int numrects, SDL_Rect *rects) { SDL_Surface *surface; - + surface = this->screen; - XBIOS_FlipHWSurface(this, surface); + if ((surface->format->BitsPerPixel) == 8) { + void *destscr; + int destx; + int i; + + /* Center on destination screen */ + destscr = XBIOS_screens[XBIOS_fbnum]; + destscr += XBIOS_pitch * ((XBIOS_height - surface->h) >> 1); + destx = (XBIOS_width - surface->w) >> 1; + destx &= ~15; + destscr += destx; + + for (i=0;i<numrects;i++) { + void *source,*destination; + int x1,x2; + + x1 = rects[i].x & ~15; + x2 = ((rects[i].x+rects[i].w) | 15) +1; + + source = surface->pixels; + source += surface->pitch * rects[i].y; + source += x1; + + destination = destscr; + destination += XBIOS_pitch * rects[i].y; + destination += x1; + + /* Convert chunky to planar screen */ + Atari_C2pConvert( + source, + destination, + x2-x1, + rects[i].h, + XBIOS_doubleline, + surface->pitch, + XBIOS_pitch + ); + } + } + + Setscreen(-1,XBIOS_screens[XBIOS_fbnum],-1); + Vsync(); + + if ((surface->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) { + XBIOS_fbnum ^= 1; + if ((surface->format->BitsPerPixel) > 8) { + surface->pixels=XBIOS_screens[XBIOS_fbnum]; + } + } } static int XBIOS_FlipHWSurface(_THIS, SDL_Surface *surface)