Finally I found some time to look at some cinelerra bugs. Cinelerra use quite some own things (which is natural since the cinelerra codebase predates the C++ standard).
I believe the code complexity could be lowered by replacing some things with standard or defacto-standard libs rather fixing the problems in cinelerra's ad-hoc implementations. I give it a try and start using the C++ stdlib and few sane parts of boost. I'll just try the next few days to get something fixed and then we'll see how it turns out. But I would like to hear opinions from the other developers which parts of cinelerra should be improved this way. I am fully aware that this can lead to a big intrusive change. But making cinelerra easier to maintain and more stable is really worth the efforts imo. Some short list where I am working on: Remove the Garbage collector in favor of boost::shared_ptr, the GC has some nasty bugs, partially together with threads. By replacing ALL Asset* with boost::shared_ptr<Asset> these should be fixed on expanse of some performance. Manage Assets in std::vector<boost::shared_ptr> / std::list<boost::shared_ptr>. When this works then refactor some uses of the shared_ptr to using references instead, this will regain most of the performance loss from above. When still not fscked up, then refactor the arrays/lists to hold normal pointers (or boost::ptr_vector/ptr_list) with clear ownership semantic. Maybe add some debugging allocator which tracks per-thread ownership of objects, aiding in finding complicated bugs. Maybe apply the above steps to other classes (File, EDL, etc...). Maybe add some pooled allocator which could improve performance even more. Christian _______________________________________________ Cinelerra mailing list Cinelerra@skolelinux.no https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra