The basic idea behind what I did is this:
- Move to a Document Type manager - using abstract factories, each document type (think Part, Assembly, Visualization, etc) registers themselves and passes a factory. Then when anyone asks the Wildcat kernel (also a new class) for a document of a particular type it can then create it.
- Move to a core OpenGL context - when the kernel starts it creates its own OpenGL context which can then be used to see what the capabilities of the graphics card are much more easily. This core context is now shared with each document thus greatly reducing document creation time and graphics memory overhead. Big improvements should come from this.
- Building on 1 & 2 - once I moved to this new kernel arrangement I was able to clear a lot of cruft out and clean up the platform independent side of things. This obviously has a direct impact on the platform specific code and that is what is going to take some clean up work. But that is for tomorrow!
Hope some of this makes sense. These are things I have wanted to do for a while and the nearly daily emails asking if such and such a graphics card is supported finally put me over the edge and I decided to just jump in and do it.
Check back in next week and hopefully things will be back up and running fully.