tsfile: keep valgrind happy (fix memory leaks)
This commit is contained in:
parent
f63d16f605
commit
bbed9a309e
5 changed files with 23 additions and 8 deletions
|
@ -739,6 +739,9 @@ mpegts_service_t *mpegts_mux_find_service(mpegts_mux_t *ms, uint16_t sid);
|
|||
(struct type*)mpegts_mux_instance_create0(calloc(1, sizeof(struct type)),\
|
||||
&type##_class, uuid,\
|
||||
mi, mm);
|
||||
|
||||
void mpegts_mux_instance_delete ( mpegts_mux_instance_t *mmi );
|
||||
|
||||
int mpegts_mux_instance_start
|
||||
( mpegts_mux_instance_t **mmiptr );
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ const idclass_t mpegts_mux_instance_class =
|
|||
.ic_perm_def = ACCESS_ADMIN
|
||||
};
|
||||
|
||||
static void
|
||||
void
|
||||
mpegts_mux_instance_delete
|
||||
( mpegts_mux_instance_t *mmi )
|
||||
{
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
* Globals
|
||||
*/
|
||||
pthread_mutex_t tsfile_lock;
|
||||
mpegts_network_t tsfile_network;
|
||||
mpegts_network_t *tsfile_network;
|
||||
tsfile_input_list_t tsfile_inputs;
|
||||
|
||||
extern const idclass_t mpegts_service_class;
|
||||
|
@ -70,18 +70,19 @@ void tsfile_init ( int tuners )
|
|||
pthread_mutex_init(&tsfile_lock, NULL);
|
||||
|
||||
/* Shared network */
|
||||
mpegts_network_create0(&tsfile_network, &mpegts_network_class, NULL,
|
||||
tsfile_network = calloc(1, sizeof(*tsfile_network));
|
||||
mpegts_network_create0(tsfile_network, &mpegts_network_class, NULL,
|
||||
"TSfile Network", NULL);
|
||||
tsfile_network.mn_create_service = tsfile_network_create_service;
|
||||
tsfile_network->mn_create_service = tsfile_network_create_service;
|
||||
|
||||
/* IPTV like setup */
|
||||
if (tuners <= 0) {
|
||||
mi = tsfile_input_create(0);
|
||||
mpegts_input_add_network((mpegts_input_t*)mi, &tsfile_network);
|
||||
mpegts_input_add_network((mpegts_input_t*)mi, tsfile_network);
|
||||
} else {
|
||||
for (i = 0; i < tuners; i++) {
|
||||
mi = tsfile_input_create(i+1);
|
||||
mpegts_input_add_network((mpegts_input_t*)mi, &tsfile_network);
|
||||
mpegts_input_add_network((mpegts_input_t*)mi, tsfile_network);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -100,6 +101,7 @@ tsfile_done ( void )
|
|||
mpegts_input_delete((mpegts_input_t*)mi, 0);
|
||||
// doesn't close the pipe!
|
||||
}
|
||||
mpegts_network_class_delete(&mpegts_network_class, 1);
|
||||
pthread_mutex_unlock(&global_lock);
|
||||
}
|
||||
|
||||
|
@ -125,7 +127,7 @@ void tsfile_add_file ( const char *path )
|
|||
tvhtrace("tsfile", "add file %s (uuid:%s)", path, uuid);
|
||||
|
||||
/* Create logical instance */
|
||||
mm = tsfile_mux_create(uuid, &tsfile_network);
|
||||
mm = tsfile_mux_create(uuid, tsfile_network);
|
||||
|
||||
/* Create physical instance (for each tuner) */
|
||||
LIST_FOREACH(mi, &tsfile_inputs, tsi_link)
|
||||
|
|
|
@ -22,6 +22,15 @@
|
|||
extern const idclass_t mpegts_mux_class;
|
||||
extern const idclass_t mpegts_mux_instance_class;
|
||||
|
||||
static void
|
||||
tsfile_mux_instance_delete( mpegts_mux_instance_t *_mmi )
|
||||
{
|
||||
tsfile_mux_instance_t *mmi = (tsfile_mux_instance_t *)_mmi;
|
||||
|
||||
free(mmi->mmi_tsfile_path);
|
||||
mpegts_mux_instance_delete(_mmi);
|
||||
}
|
||||
|
||||
tsfile_mux_instance_t *
|
||||
tsfile_mux_instance_create
|
||||
( const char *path, mpegts_input_t *mi, mpegts_mux_t *mm )
|
||||
|
@ -32,6 +41,7 @@ tsfile_mux_instance_create
|
|||
#undef tsfile_mux_instance_class
|
||||
mmi->mmi_tsfile_path = strdup(path);
|
||||
mmi->mmi_tsfile_pcr_pid = MPEGTS_PID_NONE;
|
||||
mmi->mmi_delete = tsfile_mux_instance_delete;
|
||||
tvhtrace("tsfile", "mmi created %p path %s", mmi, mmi->mmi_tsfile_path);
|
||||
return mmi;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ typedef LIST_HEAD(,tsfile_input) tsfile_input_list_t;
|
|||
/*
|
||||
* Globals
|
||||
*/
|
||||
extern mpegts_network_t tsfile_network;
|
||||
extern mpegts_network_t *tsfile_network;
|
||||
extern tsfile_input_list_t tsfile_inputs;
|
||||
extern pthread_mutex_t tsfile_lock;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue