src/video/sdl_v.cpp
changeset 6960 356d856462b6
parent 6937 40c760fcf1f6
child 6961 8e5217fd71f4
equal deleted inserted replaced
6959:8c5ef1825831 6960:356d856462b6
    35 	_num_dirty_rects++;
    35 	_num_dirty_rects++;
    36 }
    36 }
    37 
    37 
    38 static void UpdatePalette(uint start, uint count)
    38 static void UpdatePalette(uint start, uint count)
    39 {
    39 {
    40 	/* We can only update the palette in 8bpp for now */
       
    41 	/* TODO -- We need support for other bpps too! */
       
    42 	if (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() != 8) return;
       
    43 
       
    44 	SDL_Color pal[256];
    40 	SDL_Color pal[256];
    45 	uint i;
    41 	uint i;
    46 
    42 
    47 	for (i = 0; i != count; i++) {
    43 	for (i = 0; i != count; i++) {
    48 		pal[i].r = _cur_palette[start + i].r;
    44 		pal[i].r = _cur_palette[start + i].r;
    59 	UpdatePalette(0, 256);
    55 	UpdatePalette(0, 256);
    60 }
    56 }
    61 
    57 
    62 static void CheckPaletteAnim()
    58 static void CheckPaletteAnim()
    63 {
    59 {
    64 	if (_pal_last_dirty != -1) {
    60 	Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
    65 		UpdatePalette(_pal_first_dirty, _pal_last_dirty - _pal_first_dirty + 1);
    61 
    66 		_pal_last_dirty = -1;
    62 	if (_pal_count_dirty != 0) {
       
    63 		switch (blitter->UsePaletteAnimation()) {
       
    64 			case Blitter::PALETTE_ANIMATION_VIDEO_BACKEND:
       
    65 				UpdatePalette(_pal_first_dirty, _pal_count_dirty);
       
    66 				break;
       
    67 
       
    68 			case Blitter::PALETTE_ANIMATION_BLITTER:
       
    69 				blitter->PaletteAnimate(_pal_first_dirty, _pal_count_dirty);
       
    70 				break;
       
    71 
       
    72 			case Blitter::PALETTE_ANIMATION_NONE:
       
    73 				break;
       
    74 
       
    75 			default:
       
    76 				NOT_REACHED();
       
    77 		}
       
    78 		_pal_count_dirty = 0;
    67 	}
    79 	}
    68 }
    80 }
    69 
    81 
    70 static void DrawSurfaceToScreen()
    82 static void DrawSurfaceToScreen()
    71 {
    83 {