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