]> git.sesse.net Git - vlc/blobdiff - modules/audio_output/alsa.c
Fixed a potential segfault
[vlc] / modules / audio_output / alsa.c
index 1dbc2c6fd340f0d53aae3ec14066ab5844d78737..80dc2ca180b2be8bd7b30f2469098bebe35285ee 100644 (file)
@@ -31,7 +31,7 @@
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
 #include <vlc_plugin.h>
 
 #include <errno.h>                                                 /* ENOMEM */
@@ -313,10 +313,7 @@ static int Open( vlc_object_t *p_this )
     /* Allocate structures */
     p_aout->output.p_sys = p_sys = malloc( sizeof( aout_sys_t ) );
     if( p_sys == NULL )
-    {
-        msg_Err( p_aout, "out of memory" );
         return VLC_ENOMEM;
-    }
     p_sys->b_playing = false;
     p_sys->start_date = 0;
     vlc_cond_init( p_aout, &p_sys->wait );
@@ -767,16 +764,16 @@ static int ALSAThread( aout_instance_t * p_aout )
 
     /* Wait for the exact time to start playing (avoids resampling) */
     vlc_mutex_lock( &p_sys->lock );
-    while( !p_sys->start_date && !p_aout->b_die )
+    while( !p_sys->start_date && vlc_object_alive (p_aout) )
         vlc_cond_wait( &p_sys->wait, &p_sys->lock );
     vlc_mutex_unlock( &p_sys->lock );
 
-    if( p_aout->b_die )
+    if( !vlc_object_alive (p_aout) )
        goto cleanup;
 
     mwait( p_sys->start_date - AOUT_PTS_TOLERANCE / 4 );
 
-    while ( !p_aout->b_die )
+    while ( vlc_object_alive (p_aout) )
     {
         ALSAFill( p_aout );
     }
@@ -879,7 +876,7 @@ static void ALSAFill( aout_instance_t * p_aout )
          * (stream is suspended and waiting for an application recovery) */
         msg_Dbg( p_aout, "entering in suspend mode, trying to resume..." );
 
-        while( !p_aout->b_die && !p_aout->p_libvlc->b_die &&
+        while( vlc_object_alive (p_aout) && vlc_object_alive (p_aout->p_libvlc) &&
                ( i_snd_rc = snd_pcm_resume( p_sys->p_snd_pcm ) ) == -EAGAIN )
         {
             msleep( 1000000 );