Having messed around inside some datatype code I begin to wonder if there is any good in depth architecture description of it?
I mean, there are attributes to be set, asynchronous layout, notification and then rendering going on. The descriptions I found are some example code and very basic descriptions of how to do it, but I have yet to find an in depth description of how it is actually supposed to work. What are the roles, responsibilities, in which order does it happen, how to do proper locking and how does typical things happen over time?
I have looked at some code and even tried to address some issues in it, but it is hard to fully comprehend it. That is also based on object oriented programming does not help (as usual), as it is all about delegating and not explicitly expose how it works, which makes it hard to follow.
So far my idea is that changes somehow cause a layout (not sure how), which can be kicked off asynchronously internally, which sends a notification that is picked up by another object or more often the IDCMP in the main app, which does a RefreshDTObjects which translates to a rendering operation. Normally the layout and renderer have a semaphore to prevent simultaneous access, which I suppose are not to happen so often in reality as they are kind of chained together in sequence by these object messages, as otherwise the renderer could get blocked (holding a layer lock) waiting for the object semaphore when a slow layout is being done.
I may have misunderstood things above, a pointer to a good architecture description would probably be very helpful to me...