speed-dreams-code/doc/tutorials/robot/torcs/faq/downloads/plib-1.6-scheduler.patch
torcs-ng 1935711a43 Import Initial
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@1 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 0f09d39edb936ebd87ab33a41da1326a84f415e2
Former-commit-id: 38d30950aa3367e9b8718cee602e206dbc360201
2008-09-14 16:25:25 +00:00

54 lines
1.9 KiB
Diff

Index: sl.h
===================================================================
RCS file: /cvsroot/plib/plib/src/sl/sl.h,v
retrieving revision 1.22
diff -u -p -r1.22 sl.h
--- sl.h 4 Jan 2003 02:55:55 -0000 1.22
+++ sl.h 16 May 2003 09:04:21 -0000
@@ -645,6 +645,7 @@ class slScheduler : public slDSP
float safety_margin ;
int mixer_buffer_size, mixer_gain ;
+ float seconds_per_buffer;
Uchar *mixer_buffer ;
Uchar *mixer_inputs [ SL_MAX_MIXERINPUTS + 1 ] ;
Index: slScheduler.cxx
===================================================================
RCS file: /cvsroot/plib/plib/src/sl/slScheduler.cxx,v
retrieving revision 1.9
diff -u -p -r1.9 slScheduler.cxx
--- slScheduler.cxx 2 Sep 2002 06:05:47 -0000 1.9
+++ slScheduler.cxx 16 May 2003 09:04:21 -0000
@@ -84,6 +84,10 @@ void slScheduler::initBuffers ()
setMaxConcurrent ( 0 );
mixer_buffer_size = getDriverBufferSize () ;
+ int div = 1;
+ if ( getStereo() ) div *= 2 ;
+ if ( getBps() == 16 ) div *= 2 ;
+ seconds_per_buffer = (float)mixer_buffer_size / ( div * getRate() ) ;
mixer_buffer = new Uchar [ mixer_buffer_size ] ;
memset ( mixer_buffer, 0x80, mixer_buffer_size ) ;
@@ -132,7 +136,7 @@ void slScheduler::realUpdate ( int dump_
int i ;
- while ( secondsUsed() <= safety_margin )
+ while ( secondsUsed() <= safety_margin && secondsRemaining() >= seconds_per_buffer )
{
slPlayer *psp [ SL_MAX_MIXERINPUTS ] ;
int pri [ SL_MAX_MIXERINPUTS ] ;
@@ -174,7 +178,9 @@ void slScheduler::realUpdate ( int dump_
( mypri > pri[lowest] )
)
{ /* Not enough room; get rid of someone */
- player[lowest] -> preempt ( mixer_buffer_size ) ;
+ if ( player[lowest] != NULL )
+ player[lowest] -> preempt ( mixer_buffer_size ) ;
+
psp[lowest] = player[i] ;
pri[lowest] = mypri ;
int j;