From c31a91230d48f4ed35ebd812d83a661f06f401e1 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 24 Aug 2014 12:41:07 +0200 Subject: demux: avoid unnecessary wakeups If a packet is appended to a stream, and there were already packets queued, nothing about the state changed, as far as the user (i.e. the player) is concerned. Thus no wakeup is needed. The pthread_cond_signal() call following this is not interesting - it will simply be a NOP if there are actually no waiters. --- demux/demux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demux/demux.c b/demux/demux.c index bb9363815e..f27b8d1855 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -318,7 +318,7 @@ int demux_add_packet(struct sh_stream *stream, demux_packet_t *dp) "[num=%zd size=%zd]\n", stream_type_name(stream->type), dp->len, dp->pts, dp->dts, dp->pos, ds->packs, ds->bytes); - if (ds->in->wakeup_cb) + if (ds->in->wakeup_cb && !ds->head->next) ds->in->wakeup_cb(ds->in->wakeup_cb_ctx); pthread_cond_signal(&in->wakeup); pthread_mutex_unlock(&in->lock); -- cgit v1.2.3