Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: vdr-1.3.18 and dxr3 pause mode fixed - why vdr callsPlayVideo like mad in pause? [was Re: vdr 1.3.18 cCondWait::SleepMs]



On Mon, 2005-01-17 at 01:25 +0100, Luca Olivetti wrote:

> > Well, sorry, I thought it was working because I tested only for short 
> > pauses (1-2 seconds) and it seemed to work in those conditions. The last 
> > patch is obviously *very* wrong.
> > 
> > Now, I noticed a stranger thing: if you press the red button, enter a 
> > time and the down arrow it will show a still picture, and if you press 
> > down again it will go out of pause with no problem.

I had noticed that jumping between marks with 7 and 9 gave a pause which
could be exited from too!

> I think I fixed it: in dxr3device.c, PlayVideo should return -1 instead 
> of 0 in freeze mode, i.e. instead of
> 
>      if ((m_DemuxDevice.GetDemuxMode() == DXR3_DEMUX_TRICK_MODE &&
>                  m_DemuxDevice.GetTrickState() == DXR3_FREEZE) || 
> cDxr3Interface::Instance().IsExternalReleased())
>          {
>                  // Why is here so a huge time waster?
>          //usleep(1000000);
>          return 0;
>      }
> 
> it should be
> 
> 
>       if ((m_DemuxDevice.GetDemuxMode() == DXR3_DEMUX_TRICK_MODE &&
>                  m_DemuxDevice.GetTrickState() == DXR3_FREEZE) || 
> cDxr3Interface::Instance().IsExternalReleased())
>          {
>                  // Why is here so a huge time waster?
>          //usleep(1000000);
>          return -1;
>      }
> 
> 
> Since this method in dxr3device.c hasn't changed there's probably 
> something different in vdr that triggered this race condition (the 
> LOCK_THREAD in cDvbPlayer::Play would fail with the return 0 in vdr-1.3.18).
> I don't know if PlayAudio should return also -1 under the same condition.
> What I really don't understand is why vdr is calling PlayVideo like mad 
> in pause mode (and expecting a -1 as a result), anyway now it works.

I was looking at that last night and never got round to trying -1 as a
return value. Looking in device.h, -1 is meant to signify an error
condition! Still, if it works...

;)

Will try this evening.

Cheers,

Laz





Home | Main Index | Thread Index