As of 2d7105d, there can be flickering or invisible Morphic dragging if no image-side composition buffer is used.

In Squeak, that composition buffer is either already used or can be activated for older images by hand via:

PasteUpMorph disableDeferredUpdates: true.
Project allMorphicProjects do: [:ea | ea world canvas: nil].

Also see:

For the macOS --metal backend, one might actually implement that extra video buffer here:

And then read from that buffer and not the displayBits here:

...but only if the deferDisplayUpdates flag is false again.

NOTE THAT the old approach to always commit content from displayBits to the graphics backend entailed a serious performance regression as it slows down the interpreter loop to a maximum of 60 FPS, regardless of other stuff waiting in the image side. That is, primitives 127 and 231 were awfully slow and blocking on macOS. At least that got better in 2d7105d

Another, more flexible, approach would be to fix primitive 126 to actually fail if a certain graphics backend does not support deferred updates. This might work if platform-specific code would be able to let that primitive fail. See:

This would work for recent versions of Cuis. However, the existing code in older Squeak images did not correctly invalidate the canvas and thus was not even able to flip between image-side and vm-side composition buffer for different results of primitive 126. Thus, such a fix would also only work from here on for future versions of Squeak and Cuis.

Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <OpenSmalltalk/opensmalltalk-vm/issues/>