[squeak-dev] The Trunk: Morphic-mt.1955.mcz

Robert Kearns robkearns at gmail.com
Wed Apr 13 11:40:12 UTC 2022


unsubscribe

On Thu, 31 Mar 2022 at 08:27, <commits at source.squeak.org> wrote:

> Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
> http://source.squeak.org/trunk/Morphic-mt.1955.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-mt.1955
> Author: mt
> Time: 31 March 2022, 9:26:46.023388 am
> UUID: 905714e6-1f97-484f-8891-07064d9af418
> Ancestors: Morphic-mt.1954
>
> Make #disableDeferredUpdates an actual pragma-based preference. Users
> should be able to enable this when a VM's graphics backend is flickering on
> some platform or when dragging within Morphic is invisible.
>
> Note that primitive 126 never fails (for boolean arguments) at the moment.
> So we cannot know if the graphics backend does actually support that extra
> display buffer.
>
> You can observe the effect of this preference by inspecting "Project
> current world canvas" and on which kind of form it is drawing.
>
> =============== Diff against Morphic-mt.1954 ===============
>
> Item was changed:
> + ----- Method: WorldState class>>disableDeferredUpdates (in category
> 'preferences') -----
> - ----- Method: WorldState class>>disableDeferredUpdates (in category
> 'accessing') -----
>   disableDeferredUpdates
> +       <preference: 'Disable deferred updates (Morphic only)'
> +               categoryList: #(Morphic Performance Graphics)
> +               description: 'When enabled, use an extra image-side buffer
> for compositing screen contents.
> +               When deferred updating is used, Morphic performs
> double-buffered screen updates by telling the VM to de-couple the Display
> from the hardware display buffer, drawing directly into the Display, and
> then forcing the changed regions of the Display to be copied to the screen.
> This saves both time (an extra BitBlt is avoided) and space (an extra
> display buffer is avoided). However, on platforms on which the Display
> points directly to the hardware screen buffer, deferred updating can''t be
> used. In this case, the drawing should be composited into an offscreen
> FormCanvas and then copied to the hardware display buffer.
> +               Enable this preference when morphs become invisible while
> dragging them in the world or when you see ugly flashing while the layers
> of the drawing are assembled.'
> +               type: #Boolean>
> -
>         ^DisableDeferredUpdates ifNil: [DisableDeferredUpdates := false]
>   !
>
> Item was changed:
> + ----- Method: WorldState class>>disableDeferredUpdates: (in category
> 'preferences') -----
> + disableDeferredUpdates: aBooleanOrNil
> +
> +       DisableDeferredUpdates = aBooleanOrNil ifTrue: [^ self].
> +       DisableDeferredUpdates := aBooleanOrNil ifNil: [false].
> +       Project allMorphicProjects do: [:ea | ea world canvas: nil].!
> - ----- Method: WorldState class>>disableDeferredUpdates: (in category
> 'accessing') -----
> - disableDeferredUpdates: aBoolean
> -       "If the argument is true, disable deferred screen updating."
> -       "Details: When deferred updating is used, Morphic performs
> double-buffered screen updates by telling the VM to de-couple the Display
> from the hardware display buffer, drawing directly into the Display, and
> then forcing the changed regions of the Display to be copied to the screen.
> This saves both time (an extra BitBlt is avoided) and space (an extra
> display buffer is avoided). However, on platforms on which the Display
> points directly to the hardware screen buffer, deferred updating can't be
> used (you'd see ugly flashing as the layers of the drawing were assembled).
> In this case, the drawing is composited into an offscreen FormCanvas  and
> then copied to the hardware display buffer."
> -
> -       DisableDeferredUpdates := aBoolean.
> -       Project current isMorphic ifTrue: [Project currentWorld canvas:
> nil].!
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220413/7b8fc461/attachment.html>


More information about the Squeak-dev mailing list