瀏覽代碼

Fixed bug 5113 - SDL_UpdateWindowSurfaceRects BitBlt the entire surface on Win32

Ryan C. Gordon

As discussed here:
https://discourse.libsdl.org/t/question-about-implementation-of-sdl-updatewindowsurfacerects/27561

"As you can see this function [WIN_UpdateWindowFramebuffer, in src/video/windows/SDL_windowsframebuffer.c] calls BitBlt on entire screen, even though it accepts the rects. Rects variable is not even used in this function at all. Now my question is why is that the case?"
Sam Lantinga 6 年之前
父節點
當前提交
9325b22ef0
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      src/video/windows/SDL_windowsframebuffer.c

+ 5 - 1
src/video/windows/SDL_windowsframebuffer.c

@@ -99,8 +99,12 @@ int WIN_CreateWindowFramebuffer(_THIS, SDL_Window * window, Uint32 * format, voi
 int WIN_UpdateWindowFramebuffer(_THIS, SDL_Window * window, const SDL_Rect * rects, int numrects)
 {
     SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
+	int i;
 
-    BitBlt(data->hdc, 0, 0, window->w, window->h, data->mdc, 0, 0, SRCCOPY);
+    for (i = 0; i < numrects; ++i) {
+        BitBlt(data->hdc, rects[i].x, rects[i].y, rects[i].w, rects[i].h,
+               data->mdc, rects[i].x, rects[i].y, SRCCOPY);
+    }
     return 0;
 }