- /* copy the current screen backbuffer to the temporary screen copy buffer */
- SDL_BlitSurface(surface_screen, &dst_rect, surface_screen_copy, &src_rect);
-
- surface_cross = (fade_mode == FADE_MODE_CROSSFADE ? bitmap_cross->surface :
- surface_black);
+ /* copy source and target surfaces to temporary surfaces for fading */
+ if (fade_mode == FADE_MODE_CROSSFADE)
+ {
+ SDL_BlitSurface(surface_cross, &src_rect, surface_source, &src_rect);
+ SDL_BlitSurface(surface_screen, &dst_rect, surface_target, &src_rect);
+ }
+ else if (fade_mode == FADE_MODE_FADE_IN)
+ {
+ SDL_BlitSurface(surface_black, &src_rect, surface_source, &src_rect);
+ SDL_BlitSurface(surface_screen, &dst_rect, surface_target, &src_rect);
+ }
+ else /* FADE_MODE_FADE_OUT */
+ {
+ SDL_BlitSurface(surface_screen, &dst_rect, surface_source, &src_rect);
+ SDL_BlitSurface(surface_black, &src_rect, surface_target, &src_rect);
+ }