1935711a43
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
54 lines
1.9 KiB
Diff
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;
|
|
|