[Vm-dev] Primitive 126 | Its problems and its future :-)

Marcel Taeumel marcel.taeumel at hpi.de
Thu Apr 28 07:40:14 UTC 2022

Hi Tim --

> Given that this flag appears to be ignored in Mac code,
> how is it involved in the window dragging?

The image always tries to set this flag to "true", the primitive
126 never fails. So the image assumes that deferred
updating is supported.

After drawing all morphs onto Display, the patch under the
HandMorph is then saved. Then the HandMorph (and the
submorphs/windows it is dragging) will be drawn onto
Display. Then that saved patch will be restored BUT without
telling the VM via primitive 127.

Then the image is done and tells the VM to show everything
on the video buffer. Without proper support of primitive 126,
the VM platform code starts reading the displayBits directly
only then. That is, without deferred updating, that saved patch
under the HandMorph is already restored when the graphics
backend starts reading the displayBits.

That's why the entire thing becomes invisible. Does not
affect HandMorph without dragging anything because
we show a hardware cursor then.

Dragging via Morphic halo is also not affected because
the hardware cursor will still be used and the morph
directly be moved.

The entire thing is a performance optimization because
the HandMorph caches the pixels of the submorphs it drags.

Am 27.04.2022 23:49:51 schrieb tim Rowledge <tim at rowledge.org>:

Please let's talk live on this; email is crap for debating this sort of thing and far too often just gets everyone cross.

Whilst it's certainly true that the prim 126 has failed to return any useful flag value since at least 1998 (the earliest mention I have in email/source) it *does* set a value that is freely available to platform specific code. Mind you, the value is not initialised by default, which could cause much fun.

The only platform code I see that does reference it is Windows in ioForceDisplayUpdate(). Many platform versions of that do nothing, others actually move bits.

Given that this flag appears to be ignored in Mac code, how is it involved in the window dragging?

tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
Strange OpCodes: XYZZY: Branch and Play Adventure

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20220428/38cdfa74/attachment-0001.html>

More information about the Vm-dev mailing list