<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        Hi Dave,<div><br></div><div>no worries. Makes one even think about having such synchronization queues for all processes in Squeak. At least, it is a nice thought experiment on inter-process communiction in Squeak.</div><div><br></div><div>Best,</div><div>Marcel</div><div class="mb_sig"></div>
                                        
                                        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 17.09.2020 16:37:57 schrieb David T. Lewis <lewis@mail.msen.com>:</p><div style="font-family:Arial,Helvetica,sans-serif">Thanks Eliot for noticing and thanks Marcel for fixing it.<br><br>Just to put the blame where it belongs - the multiple queue issue<br>is an error that was introduced by me in ST80-dtl.54 more than 10 years<br>ago. The mistake was mine, Marcel only fixed it.<br><br>I simply can't imagine what I was thinking when I left the queue<br>an Controller instance variable. Maybe it was a mindless copy from<br>the old DeferredActionStandardSystemController but ugh, what was<br>I thinking?!?<br><br>Sorry,<br>Dave<br><br><br>On Thu, Sep 17, 2020 at 01:34:40PM +0200, Marcel Taeumel wrote:<br>> Hi Eliot.<br>> <br>> See??ST80-mt.259. Both MVC and Morphic projects now have the same behavior regarding deferred messages. Each kind of project has its own, single queue.<br>> <br>> Best,<br>> Marcel<br>> Am 17.09.2020 13:06:52 schrieb Marcel Taeumel <marcel.taeumel@hpi.de>:<br>> Hi Eliot.<br>> <br>> >??inside Controller>>processDeferredActions and have Controller>>controlActivity read<br>> <br>> This would produce an endless recursion. But one could check with #== to avoid that. :-)<br>> <br>> >??Shouldn???t there in fact be a single SharedQueue for deferred actions?<br>> <br>> Agreed. This would be a next step, now that we can see that this is actually happening. Might have been by accident so far.<br>> <br>> ??>??Is this bug in Morphic too?<br>> <br>> No, in Morphic, there is only single queue for all Morphic projects. It's a class variable in WorldState.<br>> <br>> Best,<br>> Marcel<br>> Am 17.09.2020 12:56:30 schrieb Eliot Miranda <eliot.miranda@gmail.com>:<br>> Hi Marcel,<br>> <br>> > On Sep 17, 2020, at 12:15 AM, commits@source.squeak.org wrote:<br>> ><br>> > ???Marcel Taeumel uploaded a new version of ST80 to project The Trunk:<br>> > http://source.squeak.org/trunk/ST80-mt.258.mcz<br>> ><br>> > ==================== Summary ====================<br>> ><br>> > Name: ST80-mt.258<br>> > Author: mt<br>> > Time: 17 September 2020, 9:15:53.534726 am<br>> > UUID: c7ff9de0-a71a-4646-a639-211d94848498<br>> > Ancestors: ST80-mt.257<br>> ><br>> > Fixes processing of deferred actions in MVC.<br>> ><br>> > Note that windows in MVC delegate control to their sub-controllers, however, remaining the active controller from the project's world perspective (i.e. the controller manager). Thus, we have to process two deferred-action queues in for most cases. For example, the text field in a workspace involves a PluggableTextController, embedded in a StandardSystemController. Any do-it like "Project current addDeferredUIMessage: [...]" will add the message to the StandardSystemController's queue.<br>> ><br>> > =============== Diff against ST80-mt.257 ===============<br>> ><br>> > Item was changed:<br>> > ----- Method: Controller>>controlActivity (in category 'control defaults') -----<br>> > controlActivity<br>> > "Pass control to the next control level (that is, to the Controller of a<br>> > subView of the receiver's view) if possible. It is sent by<br>> > Controller|controlLoop each time through the main control loop. It should<br>> > be redefined in a subclass if some other action is needed."<br>> ><br>> > + self processDeferredActions.<br>> > + Project current world activeController processDeferredActions.<br>> > - [self deferredActionQueue isEmpty]<br>> > - whileFalse: [deferredActionQueue next value].<br>> > self controlToNextLevel!<br>> ><br>> > Item was added:<br>> > + ----- Method: Controller>>processDeferredActions (in category 'control defaults') -----<br>> > + processDeferredActions<br>> > +<br>> > + [self deferredActionQueue isEmpty]<br>> > + whileFalse: [deferredActionQueue next value].!<br>> ><br>> > Item was changed:<br>> > ----- Method: ParagraphEditor>>normalActivity (in category 'controlling') -----<br>> > normalActivity<br>> > self processKeyboard.<br>> > + self processMouseButtons.<br>> > + super normalActivity.<br>> > + !<br>> > - self processMouseButtons!<br>> <br>> first regarding the fix, wouldn???t it make more sense to put<br>> <br>> Project current world activeController processDeferredActions.<br>> <br>> inside Controller>>processDeferredActions and have Controller>>controlActivity read<br>> <br>> Controller|controlLoop each time through the main control loop. It should<br>> be redefined in a subclass if some other action is needed."<br>> <br>> self processDeferredActions.<br>> self controlToNextLevel<br>> <br>> ?<br>> <br>> Second, doesn???t the two queue solution introduce a serious bug? Doesn???t it reorder deferred actions depending on which queue the action gets added to? Shouldn???t there in fact be a single SharedQueue for deferred actions? Is this bug in Morphic too?<br>> <br>> _,,,^..^,,,_ (phone)<br>> <br><br>> <br><br><br></eliot.miranda@gmail.com></marcel.taeumel@hpi.de></div></blockquote></div>