Commit 7bcbdf38 authored by Arvo Jarve's avatar Arvo Jarve Committed by Mauro Carvalho Chehab

V4L/DVB (9345): Add event with changed status only

Signed-off-by: default avatarArvo Jarve <arvo@softshark.ee>
Signed-off-by: default avatarManu Abraham <manu@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent c59e7870
...@@ -601,27 +601,33 @@ static int dvb_frontend_thread(void *data) ...@@ -601,27 +601,33 @@ static int dvb_frontend_thread(void *data)
* requesting a search with a new set of parameters * requesting a search with a new set of parameters
*/ */
if (fepriv->algo_status & DVBFE_ALGO_SEARCH_AGAIN) { if (fepriv->algo_status & DVBFE_ALGO_SEARCH_AGAIN) {
if (fe->ops.search) if (fe->ops.search) {
fepriv->algo_status = fe->ops.search(fe, &fepriv->parameters); fepriv->algo_status = fe->ops.search(fe, &fepriv->parameters);
/* We did do a search as was requested, the flags are /* We did do a search as was requested, the flags are
* now unset as well and has the flags wrt to search. * now unset as well and has the flags wrt to search.
*/ */
} else {
fepriv->algo_status &= ~DVBFE_ALGO_SEARCH_AGAIN; fepriv->algo_status &= ~DVBFE_ALGO_SEARCH_AGAIN;
}
} }
/* Track the carrier if the search was successful */ /* Track the carrier if the search was successful */
if (fepriv->algo_status == DVBFE_ALGO_SEARCH_SUCCESS) { if (fepriv->algo_status == DVBFE_ALGO_SEARCH_SUCCESS) {
if (fepriv->algo_status & DVBFE_ALGO_SEARCH_SUCCESS)
dprintk("%s: status = DVBFE_ALGO_SEARCH_SUCCESS\n", __func__);
if (fepriv->algo_status & DVBFE_ALGO_SEARCH_FAILED)
fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN;
fe->ops.read_status(fe, &s);
dvb_frontend_add_event(fe, s); /* update event list */
fepriv->status = s;
if (fe->ops.track) if (fe->ops.track)
fe->ops.track(fe, &fepriv->parameters); fe->ops.track(fe, &fepriv->parameters);
} else {
fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN;
fepriv->delay = HZ / 2;
}
fe->ops.read_status(fe, &s);
if (s != fepriv->status) {
dvb_frontend_add_event(fe, s); /* update event list */
fepriv->status = s;
if (!(s & FE_HAS_LOCK)) {
fepriv->delay = HZ / 10;
fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN;
} else {
fepriv->delay = 60 * HZ;
}
} }
break; break;
default: default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment