Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
tsfile: keep valgrind happy (fix memory leaks)
  • Loading branch information
perexg committed Dec 1, 2014
1 parent f63d16f commit bbed9a3
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 8 deletions.
3 changes: 3 additions & 0 deletions src/input/mpegts.h
Expand Up @@ -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 );

Expand Down
2 changes: 1 addition & 1 deletion src/input/mpegts/mpegts_mux.c
Expand Up @@ -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 )
{
Expand Down
14 changes: 8 additions & 6 deletions src/input/mpegts/tsfile/tsfile.c
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}
}
}
Expand All @@ -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);
}

Expand All @@ -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)
Expand Down
10 changes: 10 additions & 0 deletions src/input/mpegts/tsfile/tsfile_mux.c
Expand Up @@ -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 )
Expand All @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion src/input/mpegts/tsfile/tsfile_private.h
Expand Up @@ -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;

Expand Down

0 comments on commit bbed9a3

Please sign in to comment.