I was waiting for others to chime in, but they can do that on the issue
once code is there to review. I'd say its worth pushing it through to that
point at least. If you do it, I'll review and then we can call for a second
reviewer.
Actually, semantically the following may be better...
DelayWaitTimeout>>waitOnCompletion:onTimeout:
called from...
Semaphore>>waitTimeoutSeconds:onCompletion:onTimeout:
cheers -ben
On Tue, Apr 28, 2015 at 8:12 PM, Andrei Chis <[email protected]>
wrote:
> I made an issue:
> https://pharo.fogbugz.com/f/cases/15422/SHTextStyler-styleInBackgroundProcess-should-not-set-the-text-if-styling-process-was-terminated
>
> Then do we add waitTimeoutSeconds:ifSignalled:ifTimedOut: to the Semaphore
> class?
>
> On Mon, Apr 27, 2015 at 6:33 PM, Andrei Chis <[email protected]>
> wrote:
>
>> That would work for me. Styling the text if the process doing the styling
>> did not finish or is stuck does not feel as the right thing to do.
>>
>> On Mon, Apr 27, 2015 at 6:25 PM, Ben Coman <[email protected]> wrote:
>>
>>>
>>>
>>> On Mon, Apr 27, 2015 at 8:41 PM, Andrei Chis <[email protected]
>>> > wrote:
>>>
>>>> Hi,
>>>>
>>>> In the glamour debugger that we use in moose we are now having the
>>>> following problem:
>>>> - the selection of a PluggableTextMorph is, quite randomly , changed
>>>> during styling.
>>>>
>>>> If I revert the fix for issue 15240
>>>> <https://pharo.fogbugz.com/f/cases/15240> then it works ok.
>>>> Also if I change in SHTextStyler>>#styleInBackgroundProcess: from
>>>>
>>>> sem waitTimeoutSeconds: 5.
>>>> view ifNotNil: [ view stylerStyledInBackground: text ]
>>>>
>>>> to:
>>>>
>>>> (sem waitTimeoutSeconds: 5) ifFalse: [
>>>> view ifNotNil: [ view stylerStyledInBackground: text ] ]
>>>>
>>>> it works ok. In the second snippet we only do the styling if the styler
>>>> completed.
>>>>
>>>>
>>>> If I look at the senders of styleInBackgroundProcess: there is another
>>>> strange issue.
>>>> First PluggableTextMorph>>#setText: calls either style:
>>>> or styleInBackgroundProcess:, depending in the size of the text.
>>>> Then, PluggableTextMorph>>#setText:
>>>> calls PluggableTextMorph>>#setTextBasic:, which calls
>>>> PluggableTextMorph>>#hasUnacceptedEdits: which in turn
>>>> calls again styleInBackgroundProcess:.
>>>> So when you set the text if the size of the text is small Shout will
>>>> try to style the text with and without a background process. If you call
>>>> hasUnacceptedEdits:
>>>> manually when initializing the morph then three processes will be
>>>> started for doing the styling.
>>>>
>>>> Removing the calls to styleInBackgroundProcess: from
>>>> PluggableTextMorph>>#hasUnacceptedEdits: and
>>>> PluggableTextMorph>>#basicHasUnacceptedEdits:.
>>>> also solves the problem with the changing selection.
>>>>
>>>> Cheers,
>>>> Andrei
>>>>
>>>
>>> Perhaps we should have...
>>>
>>> sem
>>> waitTimeoutSeconds: 5
>>> ifSignalled: [ view ifNotNil: [ view stylerStyledInBackground:
>>> text ] ]
>>> ifTimedOut: [ "do nothing" ].
>>>
>>> cheers -ben
>>>
>>
>>
>