[mythtv] DisEqC and dvbchannel-v5.patch

Allan Stirling Dibblahmythml0015 at pendor.org
Thu Sep 8 12:22:21 UTC 2005


Allan Stirling wrote:
> Stuart Auchterlonie wrote:
> 
>> On Thu, Sep 08, 2005 at 12:04:10PM +0100, Allan Stirling wrote:
>>
>>> Daniel Kristjansson wrote:
>>>
>>>> Can you try the latest code?
>>>
>>>
>>> Err... Don't you mean to do something like this (Not a proper patch - 
>>> There's some other non-related cruft in my dvbchannel.cpp) :
>>>
>>> @@ -689,11 +785,12 @@
>>> {
>>>     fe_status_t status;
>>>
>>>     usleep(2000); // yield for 2 ms
>>>     ioctl(fd, FE_READ_STATUS, &status);
>>>     VERBOSE(VB_CHANNEL, toString(status));
>>> -
>>> -    return true;
>>> +    if (status&&FE_HAS_LOCK)
>>> +       return true;
>>> +    return false;
>>> }
>>
>>
>>
>> This shouldn't be here as the comments on that function say not
>> to block and wait for lock as that is the job of the signal monitor.
>>
>> That said, it probably should have a select loop with a smallish
>> timeout instead.
>>
> Err... It's still not blocking?
> 
>>
>>> /** \fn handle_diseq(int, const DVBTuning&, DVBDiSEqC*, bool)
>>> @@ -725,7 +822,8 @@
>>>                   "Setting Frontend tuning parameters failed.");
>>>             return false;
>>>         }
>>> -        wait_for_backend(fd_frontend);
>>> +        if (wait_for_backend(fd_frontend))
>>> +            havetuned=true;
>>>     }
>>
>>
>>
>> The way wait_for_backend is currently written havetuned would
>> always be set to true since wait for backend always returns true.
>>
> Uhuh. That'd be the first part of the patch, above ;)
> 
> Well, this works, the original code... Doesn't. How does it exit from 
> the loop when tuning was successful? havetuned is never set inside the 
> loop.
> 

Okay. Just looked again at the code (I should do this more before 
sending mail ;)

I'm now looking through dvbdiseqc.cpp to see where it should be (and 
isn't) setting havetuned.

Cheers,

Allan.


More information about the mythtv-dev mailing list