From 55d74eb418e62f177339671382014085cf3b0bd0 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 11 Dec 2006 19:51:19 +0000 Subject: [PATCH] Fix of HBITMAP leak in GAPI driver by Dmitry Yakimov. Fixes Bugzilla #371. --HG-- branch : SDL-1.2 extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%402247 --- src/video/gapi/SDL_gapivideo.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/video/gapi/SDL_gapivideo.c b/src/video/gapi/SDL_gapivideo.c index 93648f983..0dfce50cb 100644 --- a/src/video/gapi/SDL_gapivideo.c +++ b/src/video/gapi/SDL_gapivideo.c @@ -1178,7 +1178,7 @@ static void GAPI_WinPAINT(_THIS, HDC hdc) // draw current offscreen buffer on hdc int bpp = 16; // we always use either 8 or 16 bpp internally - + HGDIOBJ prevObject; unsigned short *bitmapData; HBITMAP hb; HDC srcDC; @@ -1216,10 +1216,11 @@ static void GAPI_WinPAINT(_THIS, HDC hdc) // FIXME: prevent misalignment, but I've never seen non aligned width of screen memcpy(bitmapData, this->hidden->buffer, pHeader->biSizeImage); srcDC = CreateCompatibleDC(hdc); - SelectObject(srcDC, hb); + prevObject = SelectObject(srcDC, hb); BitBlt(hdc, 0, 0, this->hidden->w, this->hidden->h, srcDC, 0, 0, SRCCOPY); + SelectObject(srcDC, prevObject); DeleteObject(hb); DeleteDC(srcDC); }