[PD-cvs] pd/portaudio/pa_unix pa_unix_hostapis.c, 1.8, 1.9 pa_unix_util.c, 1.8, 1.9

Miller Puckette millerpuckette at users.sourceforge.net
Mon May 30 05:04:14 CEST 2005


Update of /cvsroot/pure-data/pd/portaudio/pa_unix
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1508/pd/portaudio/pa_unix

Modified Files:
	pa_unix_hostapis.c pa_unix_util.c 
Log Message:
Remembered to update all the edited files.  Should now be in sync... will
have to test it though.



Index: pa_unix_util.c
===================================================================
RCS file: /cvsroot/pure-data/pd/portaudio/pa_unix/pa_unix_util.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** pa_unix_util.c	18 May 2005 04:28:44 -0000	1.8
--- pa_unix_util.c	30 May 2005 03:04:12 -0000	1.9
***************
*** 32,41 ****
  
   
  #include <unistd.h>
  #include <stdlib.h>
  #include <sys/time.h>
  
  #include "pa_util.h"
! 
  
  /*
--- 32,44 ----
  
   
+ #include <pthread.h>
  #include <unistd.h>
  #include <stdlib.h>
  #include <sys/time.h>
+ #include <assert.h>
+ #include <string.h> /* For memset */
  
  #include "pa_util.h"
! #include "pa_unix_util.h"
  
  /*
***************
*** 107,110 ****
      struct timeval tv;
      gettimeofday( &tv, NULL );
!     return (PaTime) tv.tv_usec / 1000000 + (PaTime) tv.tv_sec;
  }
--- 110,175 ----
      struct timeval tv;
      gettimeofday( &tv, NULL );
!     return (PaTime) tv.tv_usec / 1000000. + tv.tv_sec;
! }
! 
! PaError PaUtil_InitializeThreading( PaUtilThreading *threading )
! {
!     (void) paUtilErr_;
!     return paNoError;
  }
+ 
+ void PaUtil_TerminateThreading( PaUtilThreading *threading )
+ {
+ }
+ 
+ PaError PaUtil_StartThreading( PaUtilThreading *threading, void *(*threadRoutine)(void *), void *data )
+ {
+     pthread_create( &threading->callbackThread, NULL, threadRoutine, data );
+     return paNoError;
+ }
+ 
+ PaError PaUtil_CancelThreading( PaUtilThreading *threading, int wait, PaError *exitResult )
+ {
+     PaError result = paNoError;
+     void *pret;
+ 
+     if( exitResult )
+         *exitResult = paNoError;
+ 
+     /* Only kill the thread if it isn't in the process of stopping (flushing adaptation buffers) */
+     if( !wait )
+         pthread_cancel( threading->callbackThread );   /* XXX: Safe to call this if the thread has exited on its own? */
+     pthread_join( threading->callbackThread, &pret );
+ 
+ #ifdef PTHREAD_CANCELED
+     if( pret && PTHREAD_CANCELED != pret )
+ #else
+     /* !wait means the thread may have been canceled */
+     if( pret && wait )
+ #endif
+     {
+         if( exitResult )
+             *exitResult = *(PaError *) pret;
+         free( pret );
+     }
+ 
+     return result;
+ }
+ 
+ /*
+ static void *CanaryFunc( void *userData )
+ {
+     const unsigned intervalMsec = 1000;
+     PaUtilThreading *th = (PaUtilThreading *) userData;
+ 
+     while( 1 )
+     {
+         th->canaryTime = PaUtil_GetTime();
+ 
+         pthread_testcancel();
+         Pa_Sleep( intervalMsec );
+     }
+ 
+     pthread_exit( NULL );
+ }
+ */






More information about the Pd-cvs mailing list