On Tue, Dec 3, 2013 at 3:46 PM, kilon alios <[email protected]> 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 <[email protected]>wrote: > >> >> On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko <[email protected]> wrote: >> >>> >>> >>> >>> On 3 December 2013 14:18, Usman Bhatti <[email protected]> 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 <[email protected]>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. >>> >> >> >
