> @@ -835,6 +835,10 @@ BOOL WINAPI PolyDraw(HDC hdc, const POIN
> result = dc->funcs->pPolyDraw( dc->physDev, lppt, lpbTypes, cCount );
> goto end;
> }
> + if( PATH_IsPathOpen( dc->path ) ){
> + result = PATH_PolyDraw(dc, lppt, lpbTypes, cCount);
> + goto end;
> + }
I believe the correct order here is:
---
if( PATH_IsPathOpen( dc->path ))
result = PATH_PolyDraw(dc, lppt, lpbTypes, cCount);
else if (dc->funcs->pPolyDraw)
result = dc->funcs->pPolyDraw( dc->physDev, lppt, lpbTypes, cCount );
else{
Non-path open case here
result = TRUE;
}
end:
GDI_ReleaseObj( hdc );
return result;
---
The reason is that BeginPath either calls pBeginPath, in which case the gdi
driver
handles the path calls, or it sets path state to PATH_Open, which means we will
be
handling the path ourselves and we then do not call any of the gdi driver's
pFunc functions while we are in the path (also if you look at most of the other
functions in
painting.c they are implemented in this way).
Also, if you do the if ... else's like I showed above, you can avoid all the
goto's except
the ones in the non-path open case in case of failure.
Misha