Eine Frage noch an kls: Ich werde aus der Beschreibung der Funktion cControl::Control nicht klug.
QuoteDisplay MoreFixed a possible crash in case replay is started and stopped in rapid sequence, by
adding missing locking to cControl::Control(). The caller of this function must now
provide a cMutexLock which stays alive as long as the result of this call is used.
The old version of this function is still there for backwards compatibility with
plugins, because this problem appears to occur only under very rare circumstances.
Authors of plugins that use this function should switch to the new version, because
the old one is deprecated and will be removed in a future version.
The version numbers (both VDRVERSNUM and APIVERSNUM) have been bumped to 2.4.2, so
that plugins can detect the presence of the new cControl::Control().
Normalerweise schützt man eine kritische Ressource, die exklusiven Zugriff benötigt, wie etwa einen Datensatz während des Lesens oder Schreibens, mit einem Mutex. Das macht aber doch nur Sinn, wenn der Mutex im VDR global und für alle Zugriffe derselbe ist.
Die Funktion cControl::Control nutzt aber lokale Mutexe, in jedem Plugin entweder einen globalen oder einen lokalen in jeder aufrufenden Funktion.
Wenn ich die History ober richtig verstanden habe, dienen die Mutexe aber eher so etwas wie der "Entprellung"? Fragen über Fragen...
Danke für ein paar klärende Worte
Stefan