[squeak-dev] How to force selection update in the debugger?

Bob Arning arning315 at comcast.net
Thu Nov 15 13:40:01 UTC 2012


If you want speed, then why not limit the visual updates to something 
you can see:

doStepSeveral

     | n t lastDisplay |
     t := [
         (n := 500) timesRepeat: [
             self doStep.
         ].
     ] timeToRun.
     Transcript show: t asString,' ms for ',n asString,' steps without 
display'; cr.

     t := [
         (n := 500) timesRepeat: [
             self doStep.
             self changed: #contentsSelection.
             World displayWorldSafely.
         ].
     ] timeToRun.
     Transcript show: t asString,' ms for ',n asString,' steps with 
display'; cr.

     lastDisplay := Time millisecondClockValue.
     t := [
         (n := 500) timesRepeat: [
             self doStep.
             (lastDisplay - Time millisecondClockValue) abs > 20 ifTrue: [
                 lastDisplay := Time millisecondClockValue.
                 self changed: #contentsSelection.
                 World displayWorldSafely.
             ].
         ].
     ] timeToRun.
     Transcript show: t asString,' ms for ',n asString,' steps with 
occasional display'; cr.

yields:

68 ms for 500 steps without display
4290 ms for 500 steps with display
101 ms for 500 steps with occasional display

Cheers,
Bob

On 11/15/12 3:16 AM, Eliot Miranda wrote:
> Hi Bob,
>
>    thanks, but no thanks <blush>.  I want to see the update as fast as 
> possible, even if it flickers like crazy.  I don't want to display the 
> whole world, just the text morph in question.
>
>
> On Wed, Nov 14, 2012 at 11:13 AM, Bob Arning <arning315 at comcast.net 
> <mailto:arning315 at comcast.net>> wrote:
>
>     This works for me:
>
>     doStepSeveral
>
>         10 timesRepeat: [
>             self doStep.
>             self changed: #contentsSelection.
>             World displayWorldSafely.
>             (Delay forMilliseconds: 100) wait.    "in case you want to
>     see each step"
>         ]
>
>
>     Cheers,
>     Bob
>
>     On 11/14/12 1:26 PM, Eliot Miranda wrote:
>>     Hi All,
>>
>>         I submitted a run until feature for the debugger to the
>>     Squeak inbox recently and would commit it to trunk except that
>>     I'd like the option of having the selection update on each step.
>>      But I can't see how to do that.  I *think* selection update is
>>     done with a callback here in Debugger>>contents:selection:
>>
>>
>>     Smalltalk isMorphic ifTrue:
>>     [World
>>     addAlarm: #changed:
>>     withArguments: #(contentsSelection)
>>     for: self
>>     at: (Time millisecondClockValue + 200)].
>>
>>     And I'm not sure how this causes the selection to update.  Is it
>>     part of text morph draw or a separate thing?  This is too
>>     convoluted to look through.  So perhaps someone can help e.  If I
>>     want the selection to redraw what's the minimum action necessary.
>>      This is as part of a loop that looks like
>>
>>     [self selectedContext == context
>>     and: [(value := receiver with: context executeMethod: method) ==
>>     false]] whileTrue:
>>     [self doStep].
>>
>>     i.e. after the doStep I'd like to force the code pane to update
>>     its selection.
>>
>>     AdvThanksance
>>     -- 
>>     best,
>>     Eliot
>>
>>
>>
>
>
>
>
>
>
>
> -- 
> best,
> Eliot
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20121115/b3ec37db/attachment.htm


More information about the Squeak-dev mailing list