[Cuis-dev] VectorGrahicsPlugin Troubles (WAS: Re: A few tweaks to preferences)

Gerald Klix cuis.01 at klix.ch
Sat Aug 21 11:35:34 PDT 2021


Dave,

please look below.

On 8/21/21 8:10 PM, David T. Lewis via Cuis-dev wrote:
> On Sat, Aug 21, 2021 at 02:54:52PM -0300, Juan Vuletich via Cuis-dev wrote:
>> Thanks Gerald!
>>
>> Luckily, in this case, the crash.dmp pointed straight to a clear bug in
>> the code. In most other cases, any primitive that modifies an array also
>> gets the array as argument (even if passed before). This is in case the
>> GC moves it around. But when I added contour, somehow I forgot about
>> this. #primResetContourTop:bottom: doesn't pass the contour array as
>> argument, and therefore could produce an invalid access after GC.
>>
>> This will require changes to the plugin and new VMs.
>>
> 
> I'll be watching for updates :-)
> 
> One suggestion - consider adding some kind of #primitivePluginVersion
> to VectorEnginePlugin, possibly just answering an integer. If the
> VectorGraphics version requires a compatible plugin version, you
> can test for it in advance from the image.
I can remember that I asked that question, too. I was pointed to:
VectorEngineWithPlugin>>#pluginApiVersion

--- snip ---
pluginApiVersion
	"
	VectorEngineWithPlugin isPluginAvailable
	Semantic version numbering in a single SmallInteger:
	Version numbers 1 to 99 are backwards compatible. When incompatibility 
is needed. jump straight to 101.
	Version numbers 101 to 199 are backwards compatible. When 
incompatibility is needed. jump straight to 201.
	And so.
	Note: this is Api version, not package version. If no Api change, Api 
version doesn't change, regardless of changes in the Plugin or Smalltalk 
code.
	See senders and implementors.
	"
	<primitive: 'pluginApiVersion' module: 'VectorEnginePlugin'>

	^ 0
--- snap ---
The clever semantic version scheme is not used, yet.>
> Dave
> 
> 
>> I'll be working on this in the next few days. Please stay tuned.
>>
>> Thanks,
>>
>> On 8/21/2021 2:24 PM, Gerald Klix via Cuis-dev wrote:
>>> Alas I had another SegFault, that happened after a 2h pause
>>> after testing your changes, I wanted to change the screen size
>>> in Haver (with no background image).
>>>
>>> I attached the crash.dmp-file. It is probably not that helpful,
>>> I stripped the VM and its plugins.
>>>
>>>
>>> HTH,
>>>
>>> Gerald
>>>
>>>
>>>
>>> On 8/21/21 7:18 PM, Juan Vuletich via Cuis-dev wrote:
>>>> On 8/20/2021 11:56 PM, Phil B via Cuis-dev wrote:
>>>>> Juan,
>>>>>
>>>>> On Fri, Aug 20, 2021 at 10:34 PM Juan Vuletich via Cuis-dev
>>>>> <cuis-dev at lists.cuis.st <mailto:cuis-dev at lists.cuis.st>> wrote:
>>>>>
>>>>>     Thanks Gerald. I have experienced occasional crashes when zooming
>>>>>     heavy
>>>>>     windows, but this surely makes it more likely to happen. I can't
>>>>>     test it
>>>>>     right now (I need Windows or Linux), but I thought of a possible
>>>>>     reason
>>>>>     for the problem. If many drag-the-scale-handle events are
>>>>>     processed in
>>>>>     the same Morphic cycle, and processing each takes too much time,
>>>>> next
>>>>>     cycle will take longer, so it will process even more of those
>>>>>     events (if
>>>>>     generated at a constant rate by an insisting user). The growth is
>>>>>     exponential, with no bound. So this is guaranteed to end badly!
>>>>>
>>>>>
>>>>> Yes, this can be an issue with non-VG Morphic too if one isn't
>>>>> careful.  I've run into it with everything from scrolling to mouse
>>>>> moves to dragging etc.  VG likely just makes it a more frequent
>>>>> issue given the overhead of the increased drawing time per frame.
>>>>>
>>>>>
>>>>>     I just pushed an update that limits the processing of
>>>>>     MouseMoveEvents to
>>>>>     just one per cycle. The other kinds of events are much less
>>>>> likely to
>>>>>     cause this kind of problems (although not completely
>>>>> impossible), and
>>>>>     are (as usual) processed until the event queue is empty.
>>>>>
>>>>>
>>>>> Please don't discard events like this.  It will have an impact on
>>>>> sensitivity/resolution which is already not great.  Can we do some
>>>>> combination of coalescing and/or more selectively discarding them
>>>>> instead?
>>>>
>>>> The point is to improve sensitivity to user actions. Slowing down the
>>>> Morphic cycle, reducing fps, to process events that won't give
>>>> feedback to the user until the next cycle is what makes it worse. The
>>>> way to improve is to give the user feedback as quickly as possible.
>>>>
>>>>>
>>>>>
>>>>>     Please try again with this updates if you have the chance. It may
>>>>>     help.
>>>>>
>>>>>     Thanks,
>>>>>
>>>>>     --     Juan Vuletich
>>>>>     www.cuis-smalltalk.org <http://www.cuis-smalltalk.org>
>>>>>     https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
>>>>>     https://github.com/jvuletich
>>>>>     https://www.linkedin.com/in/juan-vuletich-75611b3
>>>>>     @JuanVuletich
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Phil
>>>>
>>>>
>>>>
>>
>>
>> -- 
>> Juan Vuletich
>> www.cuis-smalltalk.org
>> https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
>> https://github.com/jvuletich
>> https://www.linkedin.com/in/juan-vuletich-75611b3
>> @JuanVuletich
>>
>> -- 
>> Cuis-dev mailing list
>> Cuis-dev at lists.cuis.st
>> https://lists.cuis.st/mailman/listinfo/cuis-dev


More information about the Cuis-dev mailing list