libgeneric-pc/dmx.cpp: add default timeout to NIT scan, copy from libarmbox dmx

Origin commit data
------------------
Branch: master
Commit: c054fe1273
Author: Jacek Jendrzej <overx300@gmail.com>
Date: 2021-06-29 (Tue, 29 Jun 2021)


------------------
No further description and justification available within origin commit message!

------------------
This commit was generated by Migit
This commit is contained in:
Jacek Jendrzej
2021-06-29 15:10:00 +02:00
committed by vanhofen
parent cdcad98655
commit da56022195

View File

@@ -201,10 +201,18 @@ int cDemux::Read(unsigned char *buff, int len, int timeout)
ufds.events = POLLIN | POLLPRI | POLLERR;
ufds.revents = 0;
if (timeout > 0)
/* hack: if the frontend loses and regains lock, the demuxer often will not
* return from read(), so as a "emergency exit" for e.g. NIT scan, set a (long)
* timeout here */
int to = timeout;
if (dmx_type == DMX_PSI_CHANNEL && timeout <= 0){
to = 60 * 1000;
}
if (to > 0)
{
retry:
rc = ::poll(&ufds, 1, timeout);
rc = ::poll(&ufds, 1, to);
if (!rc)
return 0; // timeout
else if (rc < 0)