mirror of
https://github.com/glfw/glfw.git
synced 2026-02-06 18:57:36 +00:00
Win32: Clear to black in WM_PAINT for transparent framebuffer windows
The DWM redirection surface may contain undefined alpha values, causing the window to composite incorrectly. PatBlt with BLACKNESS clears both RGB and alpha to zero.
This commit is contained in:
parent
9352d8fe93
commit
24c2b3cf01
@ -1139,6 +1139,22 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM l
|
||||
case WM_PAINT:
|
||||
{
|
||||
_glfwInputWindowDamage(window);
|
||||
|
||||
// The DWM redirection surface starts with undefined alpha.
|
||||
// Clear to BLACKNESS which should zero out the alpha components as well.
|
||||
if (window->win32.transparent)
|
||||
{
|
||||
PAINTSTRUCT ps;
|
||||
HDC hdc = BeginPaint(hWnd, &ps);
|
||||
PatBlt(hdc,
|
||||
ps.rcPaint.left,
|
||||
ps.rcPaint.top,
|
||||
ps.rcPaint.right - ps.rcPaint.left,
|
||||
ps.rcPaint.bottom - ps.rcPaint.top,
|
||||
BLACKNESS);
|
||||
EndPaint(hWnd, &ps);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user