// // I_FinishUpdate // void I_FinishUpdate (void) { static int lasttic; int tics; int i; // UNUSED static unsigned char *bigscreen=0; if (!initialized) return; if (noblit) return; UpdateGrab(); // Don't update the screen if the window isn't visible. // Not doing this breaks under Windows when we alt-tab away // while fullscreen. if (!(SDL_GetAppState() & SDL_APPACTIVE)) return; // draws little dots on the bottom of the screen if (devparm) { i = I_GetTime(); tics = i - lasttic; lasttic = i; if (tics > 20) tics = 20; for (i=0 ; i<tics*2 ; i+=4) screens[0][ (SCREENHEIGHT-1)*SCREENWIDTH + i] = 0xff; for ( ; i<20*4 ; i+=4) screens[0][ (SCREENHEIGHT-1)*SCREENWIDTH + i] = 0x0; } // draw to screen BlitArea(0, 0, SCREENWIDTH, SCREENHEIGHT); // If we have a palette to set, the act of setting the palette // updates the screen if (palette_to_set) { SDL_SetColors(screen, palette, 0, 256); palette_to_set = false; } else { SDL_Flip(screen); } }
static void UpdateRect(int x1, int y1, int x2, int y2) { int x1_scaled, x2_scaled, y1_scaled, y2_scaled; // Do stretching and blitting if (BlitArea(x1, y1, x2, y2)) { // Update the area x1_scaled = (x1 * screen_mode->width) / SCREENWIDTH; y1_scaled = (y1 * screen_mode->height) / SCREENHEIGHT; x2_scaled = (x2 * screen_mode->width) / SCREENWIDTH; y2_scaled = (y2 * screen_mode->height) / SCREENHEIGHT; SDL_UpdateRect(screen, x1_scaled, y1_scaled, x2_scaled - x1_scaled, y2_scaled - y1_scaled); } }
// // I_FinishUpdate // void I_FinishUpdate (void) { static int lasttic; int tics; int i; if (!initialized) return; if (noblit) return; if (need_resize && SDL_GetTicks() > last_resize_time + 500) { ApplyWindowResize(resize_w, resize_h); need_resize = false; palette_to_set = true; } UpdateGrab(); // Don't update the screen if the window isn't visible. // Not doing this breaks under Windows when we alt-tab away // while fullscreen. if (!(SDL_GetAppState() & SDL_APPACTIVE)) return; // draws little dots on the bottom of the screen if (display_fps_dots) { i = I_GetTime(); tics = i - lasttic; lasttic = i; if (tics > 20) tics = 20; for (i=0 ; i<tics*4 ; i+=4) I_VideoBuffer[ (SCREENHEIGHT-1)*SCREENWIDTH + i] = 0xff; for ( ; i<20*4 ; i+=4) I_VideoBuffer[ (SCREENHEIGHT-1)*SCREENWIDTH + i] = 0x0; } if (show_diskicon && disk_indicator == disk_on) { if (diskicon_readbytes >= diskicon_threshold) { V_BeginRead(); } } else if (disk_indicator == disk_dirty) { disk_indicator = disk_off; } diskicon_readbytes = 0; // draw to screen BlitArea(0, 0, SCREENWIDTH, SCREENHEIGHT); if (palette_to_set) { SDL_SetColors(screenbuffer, palette, 0, 256); palette_to_set = false; // In native 8-bit mode, if we have a palette to set, the act // of setting the palette updates the screen if (screenbuffer == screen) { return; } } // In 8in32 mode, we must blit from the fake 8-bit screen buffer // to the real screen before doing a screen flip. if (screenbuffer != screen) { SDL_Rect dst_rect; // Center the buffer within the full screen space. dst_rect.x = (screen->w - screenbuffer->w) / 2; dst_rect.y = (screen->h - screenbuffer->h) / 2; SDL_BlitSurface(screenbuffer, NULL, screen, &dst_rect); } SDL_Flip(screen); }