[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