http://bugs.cinelerra.org/show_bug.cgi?id=210





------- Additional Comments From [EMAIL PROTECTED]  2006-06-05 14:52 -------
I've acutally lately done investigation of why cinelerra locks up so often.

There cannot be no simple fix. When each window runs its own thread and
sometimes needs to call "procedure" from other window it has to "lock the
window" (actually  all its data structures) first in order not to cause data
corruption.

And since all the threads are running concurently, it is not a rare thing that
we get a deadlock, since they want to lock eachother's data in order to do
something. The most trivial example is a big paste-job in main window (a lot of
edits, and just press "v" multiple times, so cinelerra will work for a few
seconds)  and trying to drag a clip from asset window to main window. The moment
clip comes to main window, main window and asset window both lock up.

There is only one proper fix for this: instead of calling into other
windows/threads, we have to have a message passing/event triggering mechanism
which means that the threads process requests from other threads passively, when
they are free. 

However such mechanism is non-trivial to implement, since it also has to keep
the pointer reference counters in order to free resources when all events are
delievered.

... it is non-trivial, but not really too much work not to be done, this message
passing is also a prerequisite for porting to any other graphical library. Since
when you have a message passing in place, you can change things window by window
... probably starting with resources window...






------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

_______________________________________________
Cinelerra mailing list
[email protected]
https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra

Reply via email to