[vdr] Memory access error while attach player?
Klaus Schmidinger
Klaus.Schmidinger at cadsoft.de
Wed Dec 14 18:19:14 CET 2005
Patrick Fischer wrote:
>
>> You could remove the
>>
>> cControl::Attach();
>>
>> call from your code (this is done in VDR's main loop in the
>> foreground thread) and add a mutex to cControl that guards
>> all calls to its member functions.
>>
>> Klaus
>
>
> What did you mean by "add"? I can't find a mutex in cControl.
That's why I wrote "add" ;-)
> Did you mean this?: (myMutex is a private cMutex from cMyPlayer)
>
> bool cMyPlayer::start(const char *path)
> {
> cMutexLock MutexLock(&myMutex); cRecording *recording =
> Recordings.GetByName(path);
> if (recording) {
> cReplayControl::SetRecording(NULL, NULL);
> cControl::Shutdown();
> cResumeFile resume(recording->FileName());
> resume.Delete();
> cReplayControl::SetRecording(recording->FileName(),
> recording->Title());
> cControl::Launch(new cReplayControl);
> // cControl::Attach(); //will done in the foreground thread
> return true;
> }else
> return false;
> }
>
> In this case I only protect my own function. This will protect that my
> thread can't recall start until it is done. Thats OK.
> Or did you mean that I need to patch the cControl by adding a Mutex and
> protect all memberfunctions?
Yes.
> If I do so, will you add this patch to
> upcoming vdr versions? I don't want to patch all upcoming versions.
If it works, yes.
Klaus
More information about the vdr
mailing list