rtpbin: only reconsider once for BYE

When iterating the sources of a BYE packet, don't signal a reconsideration for
each of them but signal after we handled all sources.
This commit is contained in:
Wim Taymans 2009-07-27 12:43:02 +02:00
parent a20d86f1f5
commit 7bd35cb8c7

View file

@ -1711,6 +1711,7 @@ rtp_session_process_bye (RTPSession * sess, GstRTCPPacket * packet,
{
guint count, i;
gchar *reason;
gboolean reconsider = FALSE;
reason = gst_rtcp_packet_bye_get_reason (packet);
GST_DEBUG ("got BYE packet (reason: %s)", GST_STR_NULL (reason));
@ -1769,11 +1770,9 @@ rtp_session_process_bye (RTPSession * sess, GstRTCPPacket * packet,
sess->next_rtcp_check_time += arrival->time;
RTP_SESSION_UNLOCK (sess);
/* notify app of reconsideration */
if (sess->callbacks.reconsider)
sess->callbacks.reconsider (sess, sess->reconsider_user_data);
RTP_SESSION_LOCK (sess);
/* mark pending reconsider. We only want to signal the reconsideration
* once after we handled all the source in the bye packet */
reconsider = TRUE;
}
}
@ -1784,6 +1783,13 @@ rtp_session_process_bye (RTPSession * sess, GstRTCPPacket * packet,
g_object_unref (source);
}
if (reconsider) {
RTP_SESSION_UNLOCK (sess);
/* notify app of reconsideration */
if (sess->callbacks.reconsider)
sess->callbacks.reconsider (sess, sess->reconsider_user_data);
RTP_SESSION_LOCK (sess);
}
g_free (reason);
}