Mercurial > sdl-ios-xcode
comparison src/video/xbios/SDL_xbios.c @ 314:bff64eba7721
*** empty log message ***
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 22 Mar 2002 18:11:56 +0000 |
parents | 2847fd83f115 |
children | 189a6a3416c7 |
comparison
equal
deleted
inserted
replaced
313:67ad846ed21c | 314:bff64eba7721 |
---|---|
617 } | 617 } |
618 | 618 |
619 static void XBIOS_UpdateRects(_THIS, int numrects, SDL_Rect *rects) | 619 static void XBIOS_UpdateRects(_THIS, int numrects, SDL_Rect *rects) |
620 { | 620 { |
621 SDL_Surface *surface; | 621 SDL_Surface *surface; |
622 | 622 |
623 surface = this->screen; | 623 surface = this->screen; |
624 | 624 |
625 XBIOS_FlipHWSurface(this, surface); | 625 if ((surface->format->BitsPerPixel) == 8) { |
626 void *destscr; | |
627 int destx; | |
628 int i; | |
629 | |
630 /* Center on destination screen */ | |
631 destscr = XBIOS_screens[XBIOS_fbnum]; | |
632 destscr += XBIOS_pitch * ((XBIOS_height - surface->h) >> 1); | |
633 destx = (XBIOS_width - surface->w) >> 1; | |
634 destx &= ~15; | |
635 destscr += destx; | |
636 | |
637 for (i=0;i<numrects;i++) { | |
638 void *source,*destination; | |
639 int x1,x2; | |
640 | |
641 x1 = rects[i].x & ~15; | |
642 x2 = ((rects[i].x+rects[i].w) | 15) +1; | |
643 | |
644 source = surface->pixels; | |
645 source += surface->pitch * rects[i].y; | |
646 source += x1; | |
647 | |
648 destination = destscr; | |
649 destination += XBIOS_pitch * rects[i].y; | |
650 destination += x1; | |
651 | |
652 /* Convert chunky to planar screen */ | |
653 Atari_C2pConvert( | |
654 source, | |
655 destination, | |
656 x2-x1, | |
657 rects[i].h, | |
658 XBIOS_doubleline, | |
659 surface->pitch, | |
660 XBIOS_pitch | |
661 ); | |
662 } | |
663 } | |
664 | |
665 Setscreen(-1,XBIOS_screens[XBIOS_fbnum],-1); | |
666 Vsync(); | |
667 | |
668 if ((surface->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) { | |
669 XBIOS_fbnum ^= 1; | |
670 if ((surface->format->BitsPerPixel) > 8) { | |
671 surface->pixels=XBIOS_screens[XBIOS_fbnum]; | |
672 } | |
673 } | |
626 } | 674 } |
627 | 675 |
628 static int XBIOS_FlipHWSurface(_THIS, SDL_Surface *surface) | 676 static int XBIOS_FlipHWSurface(_THIS, SDL_Surface *surface) |
629 { | 677 { |
630 if ((surface->format->BitsPerPixel) == 8) { | 678 if ((surface->format->BitsPerPixel) == 8) { |