Fix #1643 - dvb: close dvr device on each re-tune
This commit is contained in:
parent
a0a7539a73
commit
55ed28cb53
3 changed files with 21 additions and 12 deletions
|
@ -346,6 +346,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);
|
||||
|
|
|
@ -715,6 +715,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 )
|
||||
{
|
||||
|
@ -731,18 +747,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);
|
||||
}
|
||||
|
||||
|
|
|
@ -285,6 +285,7 @@ dvb_fe_stop(th_dvb_mux_instance_t *tdmi, int retune)
|
|||
dvb_mux_save(tdmi);
|
||||
}
|
||||
|
||||
dvb_adapter_stop_dvr(tda);
|
||||
dvb_table_flush_all(tdmi);
|
||||
|
||||
assert(tdmi->tdmi_scan_queue == NULL);
|
||||
|
|
Loading…
Add table
Reference in a new issue