diff --git a/modules/rosapps/applications/screensavers/butterflies/butterflies.c b/modules/rosapps/applications/screensavers/butterflies/butterflies.c index 60f7ed4d171..6d33fd35e66 100644 --- a/modules/rosapps/applications/screensavers/butterflies/butterflies.c +++ b/modules/rosapps/applications/screensavers/butterflies/butterflies.c @@ -12,6 +12,7 @@ HINSTANCE hInstance; // Holds The Instance Of The Application GLuint texture[3]; //stores texture objects and display list +HDC hdcOpenGL; LPCTSTR registryPath = _T("Software\\Microsoft\\ScreenSavers\\Butterflies"); BOOL dRotate; @@ -136,7 +137,7 @@ HGLRC InitOGLWindow(HWND hWnd) hRC = wglCreateContext(hDC); wglMakeCurrent(hDC, hRC); - ReleaseDC(hWnd, hDC); + hdcOpenGL = hDC; return hRC; } @@ -231,7 +232,7 @@ void Display() } INT_PTR CALLBACK AboutProc(HWND hdlg, UINT msg, WPARAM wpm, LPARAM lpm){ - + switch(msg){ case WM_CTLCOLORSTATIC: if(((HWND)lpm == GetDlgItem(hdlg, WEBPAGE1)) || ((HWND)lpm == GetDlgItem(hdlg, WEBPAGE2))) @@ -287,6 +288,7 @@ LRESULT WINAPI ScreenSaverProc(HWND hWnd, UINT message, case WM_DESTROY: wglMakeCurrent(NULL, NULL); wglDeleteContext(hRC); + ReleaseDC(hWnd, hdcOpenGL); break; } diff --git a/win32ss/gdi/gdi32/objects/bitmap.c b/win32ss/gdi/gdi32/objects/bitmap.c index a3f4c482c6f..cc70e85911e 100644 --- a/win32ss/gdi/gdi32/objects/bitmap.c +++ b/win32ss/gdi/gdi32/objects/bitmap.c @@ -755,7 +755,8 @@ SetDIBitsToDevice( if (!GdiGetHandleUserData(hdc, GDI_OBJECT_TYPE_DC, (PVOID) & pDc_Attr)) { SetLastError(ERROR_INVALID_PARAMETER); - return 0; + LinesCopied = 0; + goto Exit; } /* if ( !pDc_Attr || // DC is Public @@ -858,8 +859,7 @@ StretchDIBits( if ( GdiConvertAndCheckDC(hdc) == NULL ) return 0; - pConvertedInfo = ConvertBitmapInfo(lpBitsInfo, iUsage, &ConvertedInfoSize, - FALSE); + pConvertedInfo = ConvertBitmapInfo(lpBitsInfo, iUsage, &ConvertedInfoSize, FALSE); if (!pConvertedInfo) { return 0; @@ -896,7 +896,8 @@ StretchDIBits( if (!GdiGetHandleUserData(hdc, GDI_OBJECT_TYPE_DC, (PVOID) & pDc_Attr)) { SetLastError(ERROR_INVALID_PARAMETER); - return 0; + LinesCopied = 0; + goto Exit; } /* if ( !pDc_Attr || @@ -910,6 +911,7 @@ StretchDIBits( ConvertedInfoSize, cjBmpScanSize, NULL); } +Exit: if (pvSafeBits) RtlFreeHeap(RtlGetProcessHeap(), 0, pvSafeBits); if (lpBitsInfo != pConvertedInfo)