]> git.sesse.net Git - mlt/commit
sdl/consumer_sdl_audio.c: use mutex when changing refresh_count
authorMikko Rapeli <mikko.rapeli@iki.fi>
Wed, 1 Aug 2012 13:42:10 +0000 (15:42 +0200)
committerMikko Rapeli <mikko.rapeli@iki.fi>
Mon, 6 Aug 2012 16:37:28 +0000 (18:37 +0200)
commit531a4100a514134b8292881ca079e791adced9f4
tree4de8543b023232c66b250b37ad67d02030813ed3
parent7a1d6a41adfb5cfb4abe9587135aee5906f52d49
sdl/consumer_sdl_audio.c: use mutex when changing refresh_count

Fixes Coverity CID 709359: Data race condition (MISSING_LOCK)

Locking "self->refresh_mutex".
145                pthread_mutex_lock( &self->refresh_mutex );
consumer_sdl_s.refresh_count is being accessed with lock "self->refresh_mutex" held.
146                self->refresh_count = self->refresh_count <= 0 ? 1 : self->refresh_count + 1;
147                pthread_cond_broadcast( &self->refresh_cond );
148                pthread_mutex_unlock( &self->refresh_mutex );
...
Accessing variable "self->refresh_count" (consumer_sdl_s.refresh_count) requires the consumer_sdl_s.refresh_mutex lock.
478        self->refresh_count = 0;
...
Locking "self->refresh_mutex".
535                                pthread_mutex_lock( &self->refresh_mutex );
536                                if ( refresh == 0 && self->refresh_count <= 0 )
537                                {
538                                        consumer_play_video( self, frame );
539                                        pthread_cond_wait( &self->refresh_cond, &self->refresh_mutex );
540                                }
541                                mlt_frame_close( frame );
consumer_sdl_s.refresh_count is being accessed with lock "self->refresh_mutex" held.
542                                self->refresh_count --;
543                                pthread_mutex_unlock( &self->refresh_mutex );
src/modules/sdl/consumer_sdl_audio.c