> @@ -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