for (i = 0; i < base->programs->len; i++) {
MpegTSBaseProgram *program = g_ptr_array_index (base->programs, i);
- if (program->program_number == program_number)
+ if (program->program_number == program_number) {
+#if GLIB_CHECK_VERSION(2, 58, 0)
return g_ptr_array_steal_index (base->programs, i);
+#else
+ program->recycle = TRUE;
+ g_ptr_array_remove_index (base->programs, i);
+ return program;
+#endif
+ }
}
return NULL;
{
GList *tmp;
+ if (program->recycle) {
+ program->recycle = FALSE;
+ return;
+ }
+
if (program->pmt) {
gst_mpegts_section_unref (program->section);
program->pmt = NULL;