Skip to content

Commit

Permalink
gstreamer playback: fix possible segfaults
Browse files Browse the repository at this point in the history
  • Loading branch information
TangoCash committed Nov 7, 2017
1 parent 17f98cc commit b4dfa39
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions libarmbox/playback_gst.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,8 @@ GstBusSyncReply Gst_bus_call(GstBus *bus, GstMessage *msg, gpointer user_data)
lt_info_c("%s:%s - /tmp/.id3coverart %d bytes written\n", FILENAME, __FUNCTION__, ret);
}
}
gst_tag_list_unref(tags);
if (tags)
gst_tag_list_unref(tags);
lt_debug_c( "%s:%s - GST_MESSAGE_INFO: update info tags\n", FILENAME, __FUNCTION__); //FIXME: how shall playback handle this event???
break;
}
Expand Down Expand Up @@ -461,7 +462,8 @@ void cPlayback::Close(void)
// disconnect sync handler callback
GstBus * bus = gst_pipeline_get_bus(GST_PIPELINE (m_gst_playbin));
gst_bus_set_sync_handler(bus, NULL, NULL, NULL);
gst_object_unref(bus);
if (bus)
gst_object_unref(bus);
lt_info( "%s:%s - GST bus handler closed\n", FILENAME, __FUNCTION__);
}

Expand Down Expand Up @@ -520,7 +522,8 @@ bool cPlayback::Start(char *filename, int /*vpid*/, int /*vtype*/, int /*apid*/,
mAudioStream = 0;
init_jump = -1;

gst_tag_list_unref(m_stream_tags);
if (m_stream_tags)
gst_tag_list_unref(m_stream_tags);
m_stream_tags = NULL;

unlink("/tmp/.id3coverart");
Expand Down Expand Up @@ -594,7 +597,8 @@ bool cPlayback::Start(char *filename, int /*vpid*/, int /*vtype*/, int /*apid*/,
//gstbus handler
GstBus * bus = gst_pipeline_get_bus( GST_PIPELINE(m_gst_playbin) );
gst_bus_set_sync_handler(bus, Gst_bus_call, NULL, NULL);
gst_object_unref(bus);
if (bus)
gst_object_unref(bus);

first = true;

Expand Down Expand Up @@ -899,7 +903,8 @@ void cPlayback::FindAllPids(int *apids, unsigned int *ac3flags, unsigned int *nu
g_signal_emit_by_name (m_gst_playbin, "get-audio-pad", i, &pad);

GstCaps * caps = gst_pad_get_current_caps(pad);
gst_object_unref(pad);
if (pad)
gst_object_unref(pad);

if (!caps)
continue;
Expand Down Expand Up @@ -941,7 +946,8 @@ void cPlayback::FindAllPids(int *apids, unsigned int *ac3flags, unsigned int *nu
//return atPCM;
ac3flags[i] = 0;

gst_caps_unref(caps);
if (caps)
gst_caps_unref(caps);

//(ac3flags[i] > 2) ? ac3flags[i] = 1 : ac3flags[i] = 0;

Expand Down

0 comments on commit b4dfa39

Please sign in to comment.