I was able to resolve the problem in Roassal using session management.
Tx Kilon and Igor for your help.

Usman


On Tue, Dec 3, 2013 at 3:58 PM, kilon alios <kilon.al...@gmail.com> wrote:

> you dont have to wait for my example as i said checkSession is already the
> example
>
> checkSession
> session == Smalltalk session ifFalse: [
>  "just reset the surface"
> surface := nil.
> session := Smalltalk session.
>  ]
>
> as you can see here essentially we compare session if they differ then we
> know we need to reinitialize all our external resources in this example
> surface . Not that it assigns surfaces as nil but you will need to fully
> reinitialize the surface cause otherwise you will have a non existent
> surface still. In this class a nill surface is reinitialized by another
> method.
>
> Also I like to note here that Roassal Easel appear also not to check
> sessions and exhibits the known problem if image is stored with Easel open.
> Its something Roassal people would need to look at.
>
>
> On Tue, Dec 3, 2013 at 4:51 PM, Usman Bhatti <usman.bha...@gmail.com>wrote:
>
>>
>>
>>
>> On Tue, Dec 3, 2013 at 3:46 PM, kilon alios <kilon.al...@gmail.com>wrote:
>>
>>> 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.
>>> "
>>>
>>
>> Ok. Tx. That's very useful info. I'll have a look.
>>
>>
>>>
>>> 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 ?
>>>
>>
>> And if you add the example to Athens, please let me know.
>>
>>
>>>
>>>
>>> On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti <usman.bha...@gmail.com>wrote:
>>>
>>>>
>>>> On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko <siguc...@gmail.com>wrote:
>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 3 December 2013 14:18, Usman Bhatti <usman.bha...@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.bha...@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.
>>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to