Alexandre Julliard : user32: Don' t paint to the surface if the window has a pixel format, regardless of the state of the top parent.
Alexandre Julliard
julliard at winehq.org
Mon Feb 11 13:06:32 CST 2013
Module: wine
Branch: master
Commit: 0cc78d97c15eb26c791c990f7e27dbe679989c32
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0cc78d97c15eb26c791c990f7e27dbe679989c32
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Feb 11 17:49:22 2013 +0100
user32: Don't paint to the surface if the window has a pixel format, regardless of the state of the top parent.
---
dlls/user32/painting.c | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/dlls/user32/painting.c b/dlls/user32/painting.c
index a6fb23f..ee84689 100644
--- a/dlls/user32/painting.c
+++ b/dlls/user32/painting.c
@@ -113,6 +113,7 @@ static void update_visible_region( struct dce *dce )
HRGN vis_rgn = 0;
HWND top_win = 0;
DWORD flags = dce->flags;
+ DWORD paint_flags = 0;
size_t size = 256;
RECT win_rect, top_rect;
WND *win;
@@ -149,6 +150,7 @@ static void update_visible_region( struct dce *dce )
top_rect.top = reply->top_rect.top;
top_rect.right = reply->top_rect.right;
top_rect.bottom = reply->top_rect.bottom;
+ paint_flags = reply->paint_flags;
}
else size = reply->total_size;
}
@@ -163,12 +165,16 @@ static void update_visible_region( struct dce *dce )
if (dce->clip_rgn) CombineRgn( vis_rgn, vis_rgn, dce->clip_rgn,
(flags & DCX_INTERSECTRGN) ? RGN_AND : RGN_DIFF );
- if ((win = WIN_GetPtr( top_win )) && win != WND_DESKTOP && win != WND_OTHER_PROCESS)
+ /* don't use a surface to paint the client area of OpenGL windows */
+ if (!(paint_flags & SET_WINPOS_PIXEL_FORMAT) || (flags & DCX_WINDOW))
{
- /* don't use a surface to paint the client area of OpenGL windows */
- if (!win->pixel_format || (flags & DCX_WINDOW)) surface = win->surface;
- if (surface) window_surface_add_ref( surface );
- WIN_ReleasePtr( win );
+ win = WIN_GetPtr( top_win );
+ if (win && win != WND_DESKTOP && win != WND_OTHER_PROCESS)
+ {
+ surface = win->surface;
+ if (surface) window_surface_add_ref( surface );
+ WIN_ReleasePtr( win );
+ }
}
if (!surface) top_rect = get_virtual_screen_rect();
More information about the wine-cvs
mailing list