Sunday, April 01, 2007

Update - Shared Memory

OK, I am writing alot of code to handle shared memory so that temporary objects dont flush data to the disk all the time. It was paintful to drag a rectangle on-screen and see the hard-drive spinning full speed. The tasks are as follows: 1. Replace the IPC (Inter Proccess Communication) file with a shared memory implementation of a fixed 4K size 2. Add data source functionality with functions CoreObjectSource and CoreObjectOffset 3. Add Shared Memory data source The idea is that I will expose to modules the actual file position of objects data stream so that the read and write data does not need to pass through the IPC. The functions were available anyway to modules so there should be no problem there and it will increase the speed of Screens hopefully. Once I finish adding the shared memory data source, I will able to create layer objects and not have to worry about managing thier memory through methods since it will be supported directly inside the kernel. Once that is done, I will re-evaluate the speed so that I can decide the drawing model once and for all. About the screenshots... The truth is that I dont know what to show in the screenshot since there isn't realy anything visible. Its mostly the platform code and currently only runs on windows. Any ideas what to display?

2 comments:

Jacob said...

Show a demo of what Screens could do, then show it on multiple OSs, such as Mac OS, Windows, Palm, PocketPC, or even the rumored OpenTV. That would be the kicker. :)

Jacob said...

In my last comment I mentioned doing a demo on all platforms. I realized this is a bad idea since it only runs on Windows currently.

Instead, why not show off the object-oriented nature of Screens? Make, say, a big half-transparent box with 4 smaller half-transparent boxes, all on top of a background. The big box "owns" the smaller boxes, so when you drag around the big box, all 4 would move with it, but then you can move the smaller boxes without affecting the big one. The big box could also have a "X" or "-" in the corner of every box. Clicking this button on the smaller boxes would only close the box you clicked, but clicking the close button on the big box would close the whole thing.

You could get even more complex by having text inside the boxes, and showing how the boxes can "communicate" with different drag-and-drop or click commands.

And that's just the start.... ;)