[Spice-devel] [client v3 2/4] streaming: Don't crash if no frame was received before closing the stream
Victor Toso
lists at victortoso.com
Fri Aug 12 12:31:45 UTC 2016
Hi,
On Thu, Aug 11, 2016 at 12:21:59PM +0200, Francois Gouget wrote:
> Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
Acked-by: Victor Toso <victortoso at redhat.com>
> ---
>
> This could potentially happen if we detect a stream right before it
> ends. But it's mostly useful for the next patch.
>
> src/channel-display.c | 39 ++++++++++++++++++++-------------------
> 1 file changed, 20 insertions(+), 19 deletions(-)
>
> diff --git a/src/channel-display.c b/src/channel-display.c
> index b4c9ec0..22c54f2 100644
> --- a/src/channel-display.c
> +++ b/src/channel-display.c
> @@ -1434,8 +1434,6 @@ static void destroy_stream(SpiceChannel *channel, int id)
> {
> SpiceDisplayChannelPrivate *c = SPICE_DISPLAY_CHANNEL(channel)->priv;
> display_stream *st;
> - guint64 drops_duration_total = 0;
> - guint32 num_out_frames;
> int i;
>
> g_return_if_fail(c != NULL);
> @@ -1446,20 +1444,22 @@ static void destroy_stream(SpiceChannel *channel, int id)
> if (!st)
> return;
>
> - num_out_frames = st->num_input_frames - st->arrive_late_count - st->num_drops_on_playback;
> - CHANNEL_DEBUG(channel, "%s: id=%d #in-frames=%u out/in=%.2f "
> - "#drops-on-receive=%u avg-late-time(ms)=%.2f "
> - "#drops-on-playback=%u", __FUNCTION__,
> - id,
> - st->num_input_frames,
> - num_out_frames / (double)st->num_input_frames,
> - st->arrive_late_count,
> - st->arrive_late_count ? st->arrive_late_time / ((double)st->arrive_late_count): 0,
> - st->num_drops_on_playback);
> - if (st->num_drops_seqs) {
> - CHANNEL_DEBUG(channel, "%s: #drops-sequences=%u ==>", __FUNCTION__, st->num_drops_seqs);
> - }
> - for (i = 0; i < st->num_drops_seqs; i++) {
> + if (st->num_input_frames > 0) {
> + guint64 drops_duration_total = 0;
> + guint32 num_out_frames = st->num_input_frames - st->arrive_late_count - st->num_drops_on_playback;
> + CHANNEL_DEBUG(channel, "%s: id=%d #in-frames=%u out/in=%.2f "
> + "#drops-on-receive=%u avg-late-time(ms)=%.2f "
> + "#drops-on-playback=%u", __FUNCTION__,
> + id,
> + st->num_input_frames,
> + num_out_frames / (double)st->num_input_frames,
> + st->arrive_late_count,
> + st->arrive_late_count ? st->arrive_late_time / ((double)st->arrive_late_count): 0,
> + st->num_drops_on_playback);
> + if (st->num_drops_seqs) {
> + CHANNEL_DEBUG(channel, "%s: #drops-sequences=%u ==>", __FUNCTION__, st->num_drops_seqs);
> + }
> + for (i = 0; i < st->num_drops_seqs; i++) {
> drops_sequence_stats *stats = &g_array_index(st->drops_seqs_stats_arr,
> drops_sequence_stats,
> i);
> @@ -1468,9 +1468,10 @@ static void destroy_stream(SpiceChannel *channel, int id)
> stats->len,
> stats->start_mm_time - st->first_frame_mm_time,
> stats->duration);
> - }
> - if (st->num_drops_seqs) {
> - CHANNEL_DEBUG(channel, "%s: drops-total-duration=%"G_GUINT64_FORMAT" ==>", __FUNCTION__, drops_duration_total);
> + }
> + if (st->num_drops_seqs) {
> + CHANNEL_DEBUG(channel, "%s: drops-total-duration=%"G_GUINT64_FORMAT" ==>", __FUNCTION__, drops_duration_total);
> + }
> }
>
> g_array_free(st->drops_seqs_stats_arr, TRUE);
> --
> 2.8.1
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list