There is a wrong condition in an almost never-taken branch of BitBltSimulation>>lockSurfaces (when src=dst):
isWarping ifFalse:[ "When warping we always need the entire surface for the source" sourceBits _ self cCode:'fn(sourceHandle, &sourcePitch, 0,0, sourceWidth, sourceHeight)'. ] ifTrue:[ "Otherwise use overlapping area" l _ sx min: dx. r _ (sx max: dx) + bbW. t _ sy min: dy. b _ (sy max: sy) + bbH. sourceBits _ self cCode:'fn(sourceHandle, &sourcePitch, l, t, r-l, b-t)'. ].
As the comments indicate, the condition is reversed. Please include attached fix in VMMaker.
- Bert -
Yup. Small but important fix - if this ever hits you you're dead in the water. Thanks for finding it!
Cheers, - Andreas
Bert Freudenberg wrote:
There is a wrong condition in an almost never-taken branch of BitBltSimulation>>lockSurfaces (when src=dst):
isWarping ifFalse:[ "When warping we always need the entire surface for
the source" sourceBits _ self cCode:'fn(sourceHandle, &sourcePitch, 0,0, sourceWidth, sourceHeight)'. ] ifTrue:[ "Otherwise use overlapping area" l _ sx min: dx. r _ (sx max: dx) + bbW. t _ sy min: dy. b _ (sy max: sy) + bbH. sourceBits _ self cCode:'fn(sourceHandle, &sourcePitch, l, t, r-l, b-t)'. ].
As the comments indicate, the condition is reversed. Please include attached fix in VMMaker.
- Bert -
vm-dev@lists.squeakfoundation.org