dvb: close dvr device on each re-tune
This commit is contained in:
parent
dc160b9e48
commit
03e9f1179d
3 changed files with 21 additions and 12 deletions
|
@ -344,6 +344,8 @@ void dvb_adapter_start (th_dvb_adapter_t *tda);
|
|||
|
||||
void dvb_adapter_stop (th_dvb_adapter_t *tda);
|
||||
|
||||
void dvb_adapter_stop_dvr (th_dvb_adapter_t *tda);
|
||||
|
||||
void dvb_adapter_set_displayname(th_dvb_adapter_t *tda, const char *s);
|
||||
|
||||
void dvb_adapter_set_enabled(th_dvb_adapter_t *tda, int on);
|
||||
|
|
|
@ -713,6 +713,22 @@ dvb_adapter_start ( th_dvb_adapter_t *tda )
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
dvb_adapter_stop_dvr ( th_dvb_adapter_t *tda )
|
||||
{
|
||||
/* Stop DVR thread */
|
||||
if (tda->tda_dvr_pipe.rd != -1) {
|
||||
tvhlog(LOG_DEBUG, "dvb", "%s stopping thread", tda->tda_rootpath);
|
||||
int err = tvh_write(tda->tda_dvr_pipe.wr, "", 1);
|
||||
assert(!err);
|
||||
pthread_join(tda->tda_dvr_thread, NULL);
|
||||
close(tda->tda_dvr_pipe.rd);
|
||||
close(tda->tda_dvr_pipe.wr);
|
||||
tda->tda_dvr_pipe.rd = -1;
|
||||
tvhlog(LOG_DEBUG, "dvb", "%s stopped thread", tda->tda_rootpath);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
dvb_adapter_stop ( th_dvb_adapter_t *tda )
|
||||
{
|
||||
|
@ -729,18 +745,8 @@ dvb_adapter_stop ( th_dvb_adapter_t *tda )
|
|||
tda->tda_fe_fd = -1;
|
||||
}
|
||||
|
||||
/* Stop DVR thread */
|
||||
if (tda->tda_dvr_pipe.rd != -1) {
|
||||
tvhlog(LOG_DEBUG, "dvb", "%s stopping thread", tda->tda_rootpath);
|
||||
int err = tvh_write(tda->tda_dvr_pipe.wr, "", 1);
|
||||
assert(!err);
|
||||
pthread_join(tda->tda_dvr_thread, NULL);
|
||||
close(tda->tda_dvr_pipe.rd);
|
||||
close(tda->tda_dvr_pipe.wr);
|
||||
tda->tda_dvr_pipe.rd = -1;
|
||||
tvhlog(LOG_DEBUG, "dvb", "%s stopped thread", tda->tda_rootpath);
|
||||
}
|
||||
|
||||
dvb_adapter_stop_dvr(tda);
|
||||
|
||||
dvb_adapter_notify(tda);
|
||||
}
|
||||
|
||||
|
|
|
@ -282,6 +282,7 @@ dvb_fe_stop(th_dvb_mux_instance_t *tdmi, int retune)
|
|||
}
|
||||
|
||||
dvb_table_flush_all(tdmi);
|
||||
dvb_adapter_stop_dvr(tda);
|
||||
|
||||
assert(tdmi->tdmi_scan_queue == NULL);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue