[Pharo-dev] Roassal Bug related to Athens?

kilon alios kilon.alios at gmail.com
Tue Dec 3 09:46:28 EST 2013


You are correct but so is Igor. Managing external resources has to do with
VM and Nativeboost itself and not with Athens. This could happen with any
other library.

Session aware code is actually very easy to do and its explained
Athens-Tutorial package in AthensViewMorph>>checkSession . Its just 2 lines
of code.

In step2 method there is a relevant comment

"IMPORTANT NOTE:
the surface which we will create at this step will be used in later steps.
This means that if you resize the window (changing the view size), you may
need to recreate surface.
Also, since surface uses external resources, quitting an image and
restarting it, will also require to
create a new surface, because the one from previous session will be no
longer accessible.
"

but there is no mention to check the checkSession method for an example how
sessions can be handled. I think this deserves a separate step by itself
with a nice example. Igor you want me to give me commit rights to Athens
repo to add that myself ?


On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti <usman.bhatti at gmail.com> wrote:

>
> On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko <siguctua at gmail.com> wrote:
>
>>
>>
>>
>> On 3 December 2013 14:18, Usman Bhatti <usman.bhatti at gmail.com> wrote:
>>
>>> Igor,
>>>
>>> I had a look at Athens demo to understand how to manage sessions and
>>> surfaces because Roassal uses AthensSurface and there is a defensive
>>> mechanism in place in Roassal to initialize the surface in case it is not
>>> done. In the meantime, I have discovered that the red rectangle bug is
>>> present in Athens demos as well.
>>>
>>> So, to reproduce.
>>> AthensFlakeDemo new openInWorld
>>> save image
>>> open image
>>>
>>
>>> I tested in Moose 5.0.
>>>
>>> 1. Should I open a bug entry in Pharo?
>>>
>>> only if you intend to fix it. because this demo was not intended to be
>> 'fully featured, end-user compatible
>> and fool-proof demo'. it just a demo to show animation and discard it,
>> but if you insist this is a bug,
>> feel free to fix it.
>>
>
> Unfortunately, I wont have time for this. For me it would have been good,
> had Athens provided an example of session management as a good client so
> that example-oriented people like me could understand easily. Because,
> otherwise, I'll have to look at the code of NativeBoost and that adds to
> the level of complexity because I would do things with trial and error.
>
>
>>
>>
>>> 2. With my superficial knowledge of Athens, my guess is that the session
>>> management can be done in Athens so that Roassal (and other tools built on
>>> top of Athens) do not need to do it. May be it is the case already but the
>>> demos are not using it then.
>>>
>>> I disagree.
>>
> Because then, files can also open/close and delete themselves
>> automatically, so you will be left only to do reading and writing...
>> Resource management is an application-level responsibility, not framework
>> level.
>> I cannot predict in Athens, how often one wants to create/destroy or
>> (re)use surfaces, and therefore i cannot
>> create and dispose them when i see fit within framework.
>> Correct me if i wrong.
>>
>
> I think this doesn't compare to file handling because there are many types
> of operations possible on files and that are application-specific. Here
> resource management is actually exception-handling: I should not give to my
> client a surface that does not exist any more. Now, of course, if there is
> some application-level intelligence is involved, we cannot put that in the
> framework.
>
> But I would understand the absence of such a mechanism in the framework
> but then a tutorial should explain to novices/first-timers how to do it.
>
> Usman
>
>
>
>
>>
>>
>>> Usman
>>>
>>>
>>>
>>> On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti <usman.bhatti at gmail.com>wrote:
>>>
>>>> Hello Igor,
>>>>
>>>> Moose 5.0 is using Athens as default canvas for Roassal and we have bug
>>>> with Roassal that seems to be related to Athens.
>>>> http://code.google.com/p/moose-technology/issues/detail?id=1019
>>>>
>>>> I think it is related to the fact that we create a surface in the OS
>>>> with Athens and once we quit the image, the surface is destroyed as well.
>>>> So, when image is restarted with the visualization trying to use the
>>>> surface, we get the error.
>>>>
>>>> Could you point to what possibly can be done to avoid this error?
>>>> Merely checking the existence of an appropriate drawing surface in Athens
>>>> every time visualization is drawn, would it suffice?
>>>>
>>>> regards,
>>>>
>>>> Usman
>>>>
>>>
>>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20131203/9ad63ba7/attachment-0002.html>


More information about the Pharo-dev mailing list