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.
Yes I do not understand why this is not already in Roassal. Stef