Tuesday, April 03, 2007

Update - Shared Memory IPC

OK, The windows porting layer of Screens now has the Shared Memory IPC (Inter Process Communication). It makes things a bit faster but the best change was to allow CoreObjectOpen and CoreObjectUpdate to write directly to the store and skipping the IPC. This makes it much faster however it will be much faster when I add the shared memory data source. I am going to have to wait a while before I can create a demo or set of nice screenshots... But Jacob I do like your idea. I wont able to do text because Screens does not have a text engine yet (I still have not decided which text engine I should do/support). So most of the demos or screenshots wont have any text in them. I am now going to work on the rest of the data source functionality which is mostly the API function CoreObjectSource. The idea of the data source is that if an object has a different data source then in the store itself like a shared memory allocation, when you read/write using CoreObjectRead/CoreObjectWrite, it will read from the data source (like shared memory) instead of from the store. This will allow layers to exist in shared memory without changing any of the 'user' code. I have not decided yet if I will allow to change the data source via user code but to make an object use shared memory, you will just call CoreObjectSetAsTemporary on an object and everything else is transparent. If you call CoreObjectNew with no parent (NULL), the object is created as default temporary and therefore the object is going to use shared memory. Once I finish implementing the shared memory data source, I will need to add an initialize function which will go through the entire object storage on startup and destroy all temporary objects (since thier handles dont exist anymore). The destructor method is not called on such objects but this case should only happen if Screens did not shut down correctly. When you shut down Screens correctly, it will find all temporary objects and call the destructor on them. This functionality should make layer drawing not just faster but easy to manage.

1 comment:

Anonymous said...

Having read the previous comments on showing what screens can do I agree about the demo, I think that would be really useful to show.