]> git.mxchange.org Git - simgear.git/blobdiff - src/slScheduler.cxx
Added point3d.hxx to replace cheezy fgPoint3d struct.
[simgear.git] / src / slScheduler.cxx
index d0b4f5b1027beb3f6580d6733541a44d3b0c340f..5fe4caa91d4589a74519b938c11e17baa8c6fb0e 100644 (file)
@@ -1,6 +1,8 @@
 
 #include "sl.h"
 
+char *__slPendingError = NULL ;
+
 slScheduler *slScheduler::current = NULL ;
 
 void slScheduler::init ()
@@ -48,7 +50,8 @@ void slScheduler::init ()
 
 void slScheduler::initBuffers ()
 {
-  if ( not_working () ) return ;
+  if ( not_working () )
+    return ;
 
   delete mixer_buffer ;
   delete spare_buffer0 ;
@@ -117,11 +120,17 @@ void slScheduler::mixBuffer ( slSamplePlayer *spa, slSamplePlayer *spb,
 
 void slScheduler::realUpdate ( int dump_first )
 {
-  int i ;
-
   if ( not_working () )
     return ;
 
+  if ( __slPendingError != NULL )
+  {
+    fprintf ( stderr, "%s", __slPendingError ) ;
+    exit ( 1 ) ;
+  }
+
+  int i ;
+
   while ( secondsUsed() <= safety_margin )
   {
     slSamplePlayer *psp [ 3 ] ;
@@ -201,6 +210,9 @@ void slScheduler::realUpdate ( int dump_first )
 
 void slScheduler::addCallBack ( slCallBack c, slSample *s, slEvent e, int m )
 {
+  if ( not_working () )
+    return ;
+
   if ( num_pending_callbacks >= SL_MAX_CALLBACKS )
   {
     fprintf ( stderr, "slScheduler: Too many pending callback events!\n" ) ;
@@ -217,6 +229,9 @@ void slScheduler::addCallBack ( slCallBack c, slSample *s, slEvent e, int m )
 
 void slScheduler::flushCallBacks ()
 {
+  if ( not_working () )
+    return ;
+
   /*
     Execute all the callbacks that we accumulated
     in this iteration.