service: try to fix the service_restart START/STOP msg mismatch
This commit is contained in:
parent
44633b8f74
commit
3ba0ae6e62
3 changed files with 17 additions and 15 deletions
|
@ -1124,7 +1124,7 @@ int
|
|||
dvb_pmt_callback
|
||||
(mpegts_table_t *mt, const uint8_t *ptr, int len, int tableid)
|
||||
{
|
||||
int r, sect, last, ver, had_components;
|
||||
int r, sect, last, ver;
|
||||
uint16_t sid;
|
||||
mpegts_mux_t *mm = mt->mt_mux;
|
||||
mpegts_service_t *s;
|
||||
|
@ -1143,11 +1143,10 @@ dvb_pmt_callback
|
|||
/* Process */
|
||||
tvhdebug("pmt", "sid %04X (%d)", sid, sid);
|
||||
pthread_mutex_lock(&s->s_stream_mutex);
|
||||
had_components = !!TAILQ_FIRST(&s->s_components);
|
||||
r = psi_parse_pmt(mt->mt_mux, s, ptr, len);
|
||||
pthread_mutex_unlock(&s->s_stream_mutex);
|
||||
if (r)
|
||||
service_restart((service_t*)s, had_components);
|
||||
service_restart((service_t*)s);
|
||||
|
||||
/* Finish */
|
||||
return dvb_table_end(mt, st, sect);
|
||||
|
@ -2373,7 +2372,7 @@ psi_parse_pmt
|
|||
update&PMT_UPDATE_CAID_DELETED ? ", CAID deleted":"",
|
||||
update&PMT_REORDERED ? ", PIDs reordered":"");
|
||||
|
||||
service_request_save((service_t*)t, 0);
|
||||
service_request_save((service_t*)t, 1);
|
||||
|
||||
// Only restart if something that our clients worry about did change
|
||||
if(update & ~(PMT_UPDATE_NEW_CA_STREAM |
|
||||
|
|
|
@ -1153,19 +1153,22 @@ service_set_streaming_status_flags_(service_t *t, int set)
|
|||
* (i.e. an AC3 stream disappears, etc)
|
||||
*/
|
||||
void
|
||||
service_restart(service_t *t, int had_components)
|
||||
service_restart(service_t *t)
|
||||
{
|
||||
int had_components;
|
||||
|
||||
pthread_mutex_lock(&t->s_stream_mutex);
|
||||
|
||||
if(had_components) {
|
||||
streaming_pad_deliver(&t->s_streaming_pad,
|
||||
streaming_msg_create_code(SMT_STOP,
|
||||
SM_CODE_SOURCE_RECONFIGURED));
|
||||
}
|
||||
had_components = TAILQ_FIRST(&t->s_filt_components) != NULL;
|
||||
|
||||
service_build_filter(t);
|
||||
|
||||
if(TAILQ_FIRST(&t->s_filt_components) != NULL) {
|
||||
if (had_components)
|
||||
streaming_pad_deliver(&t->s_streaming_pad,
|
||||
streaming_msg_create_code(SMT_STOP,
|
||||
SM_CODE_SOURCE_RECONFIGURED));
|
||||
|
||||
streaming_pad_deliver(&t->s_streaming_pad,
|
||||
streaming_msg_create_data(SMT_START,
|
||||
service_build_stream_start(t)));
|
||||
|
@ -1255,7 +1258,7 @@ service_request_save(service_t *t, int restart)
|
|||
TAILQ_INSERT_TAIL(&pending_save_queue, t, s_ps_link);
|
||||
service_ref(t);
|
||||
pthread_cond_signal(&pending_save_cond);
|
||||
} else if(restart) {
|
||||
} else if (restart) {
|
||||
t->s_ps_onqueue = 2; // upgrade to restart too
|
||||
}
|
||||
|
||||
|
@ -1291,6 +1294,7 @@ service_saver(void *aux)
|
|||
{
|
||||
service_t *t;
|
||||
int restart;
|
||||
|
||||
pthread_mutex_lock(&pending_save_mutex);
|
||||
|
||||
while(tvheadend_running) {
|
||||
|
@ -1310,9 +1314,8 @@ service_saver(void *aux)
|
|||
|
||||
if(t->s_status != SERVICE_ZOMBIE)
|
||||
t->s_config_save(t);
|
||||
if(t->s_status == SERVICE_RUNNING && restart) {
|
||||
service_restart(t, 1);
|
||||
}
|
||||
if(t->s_status == SERVICE_RUNNING && restart)
|
||||
service_restart(t);
|
||||
service_unref(t);
|
||||
|
||||
pthread_mutex_unlock(&global_lock);
|
||||
|
|
|
@ -546,7 +546,7 @@ service_reset_streaming_status_flags(service_t *t, int flag)
|
|||
struct streaming_start;
|
||||
struct streaming_start *service_build_stream_start(service_t *t);
|
||||
|
||||
void service_restart(service_t *t, int had_components);
|
||||
void service_restart(service_t *t);
|
||||
|
||||
void service_stream_destroy(service_t *t, elementary_stream_t *st);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue