I think I have it fixed now.  Basically I quit trying to figure out
exactly what was colliding when with what and instead learned QMutex and
used it to lock AlsaDriver against being re-entered.

I haven't been able to make my 72-note crash-demo crash any more, and all
the functionality seems to be there.  So hopefully that was it.

Right now the code's a mess of my old fixes that didn't work, but I will
clean it up and push it.  Thanks for being patient.


Just to document what I've done: I've mutex-protected two functions,
processMidiOut and startClocksApproved.  I can't protect startClocks
itself, because it's called internally too.  Right now it's relying on the
good graces of RosegardenSequencer to call it with no collision.

ISTM for this to work right it should completely separate AlsaDriver's
entry points from internal calls, never call entry points internally, and
protect exactly the entry points.  But that's for later; I will push just
the fix.

        Tom Breton (Tehom)



------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel

Reply via email to