<div dir="ltr">Hi Nicolas,<div><br></div><div> also...<br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 13, 2016 at 1:27 AM, <span dir="ltr"><<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
Nicolas Cellier uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-nice.1988.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/<wbr>VMMaker/VMMaker.oscog-nice.<wbr>1988.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-nice.1988<br>
Author: nice<br>
Time: 13 November 2016, 10:26:14.021969 am<br>
UUID: 01ed55f2-205d-441f-b4f6-<wbr>4a8607b3327d<br>
Ancestors: VMMaker.oscog-nice.1987<br>
<br>
Fix inlining problem of shortPrintContext: - a side effect was eliminated on stack flavour.<br>
<br>
Fix prototype of unlockSurfaceFn after recent platforms source file revision.<br></blockquote><div>...</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Item was changed:<br>
----- Method: BitBltSimulation>><wbr>unlockSurfaces (in category 'surface support') -----<br>
unlockSurfaces<br>
"Unlock the bits of any OS surfaces."<br>
"See the comment in lockSurfaces. Similar rules apply. That is, the area provided in ioUnlockSurface can be used to determine the dirty region after drawing. If a source is unlocked, then the area will be (0,0,0,0) to indicate that no portion is dirty."<br>
| sourceHandle destHandle destLocked fn |<br>
+ <var: #fn declareC:'int (*fn)(int, int, int, int, int)'><br>
- <var: #fn declareC:'sqInt (*fn)(sqInt, sqInt, sqInt, sqInt, sqInt)'><br>
hasSurfaceLock ifTrue:[<br>
unlockSurfaceFn = 0 ifTrue:[self loadSurfacePlugin ifFalse:[^nil]].<br>
+ fn := self cCoerce: unlockSurfaceFn to: 'int (*)(int, int, int, int, int)'.<br>
- fn := self cCoerce: unlockSurfaceFn to: 'sqInt (*)(sqInt, sqInt, sqInt, sqInt, sqInt)'.<br>
destLocked := false.<br>
destHandle := interpreterProxy fetchPointer: FormBitsIndex ofObject: destForm.<br>
(interpreterProxy isIntegerObject: destHandle) ifTrue:[<br>
destHandle := interpreterProxy integerValueOf: destHandle.<br>
"The destBits are always assumed to be dirty"<br>
self cCode:'fn(destHandle, affectedL, affectedT, affectedR-affectedL, affectedB-affectedT)'.<br>
destBits := destPitch := 0.<br>
destLocked := true.<br>
].<br>
noSource ifFalse:[<br>
sourceHandle := interpreterProxy fetchPointer: FormBitsIndex ofObject: sourceForm.<br>
(interpreterProxy isIntegerObject: sourceHandle) ifTrue:[<br>
sourceHandle := interpreterProxy integerValueOf: sourceHandle.<br>
"Only unlock sourceHandle if different from destHandle"<br>
(destLocked and:[sourceHandle = destHandle])<br>
ifFalse:[self cCode: 'fn(sourceHandle, 0, 0, 0, 0)'].<br>
sourceBits := sourcePitch := 0.<br>
].<br>
].<br>
hasSurfaceLock := false.<br>
self cCode: [] inSmalltalk:<br>
[self touch: fn.<br>
interpreterProxy displayObject = destForm ifTrue:<br>
[interpreterProxy getDeferDisplayUpdates "for some reason this is true..."<br>
ifTrue:<br>
[interpreterProxy fullDisplayUpdate]<br>
ifFalse:<br>
[interpreterProxy fullDisplayUpdate]]].<br>
].!<br></blockquote><div><br></div><div>why are you making the first argument int instead of usqIntptr_t? The first argument is an arbitrary handle and that means it could be a pointer, right? And so could be 64-bits, right?</div></div><br><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div></div>