Fixes ticket:103 (patch applied)
authorjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Mon, 27 Nov 2006 04:53:34 +0000 (04:53 +0000)
committerjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Mon, 27 Nov 2006 04:53:34 +0000 (04:53 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@4032 221aa14e-8319-0410-a670-987f0aec2ac5

gnuradio-core/src/lib/general/gr_throttle.cc

index 95c73c41c9b0f984eb3a212b39049cce7d0745b5..f8bbc184b5a02d3631f61d8f1045b03f598d5c30 100644 (file)
@@ -32,6 +32,9 @@
 #ifdef HAVE_TIME_H
 #include <time.h>
 #endif
+#if !defined(HAVE_NANOSLEEP) && defined(HAVE_SSLEEP)
+#include <windows.h>
+#endif
 
 
 #ifdef HAVE_NANOSLEEP
@@ -80,7 +83,7 @@ gr_throttle::work (int noutput_items,
   const char *in = (const char *) input_items[0];
   char *out = (char *) output_items[0];
 
-#if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_NANOSLEEP)
+#if defined(HAVE_GETTIMEOFDAY)
   //
   // If our average sample rate exceeds our target sample rate,
   // delay long enough to reduce to our target rate.
@@ -96,10 +99,14 @@ gr_throttle::work (int noutput_items,
   double actual_samples_per_sec = d_total_samples / t;
   if (actual_samples_per_sec > d_samples_per_sec){     // need to delay
     double delay = d_total_samples / d_samples_per_sec - t;
+#ifdef HAVE_NANOSLEEP
     struct timespec ts;
     ts.tv_sec = (time_t)floor(delay);
     ts.tv_nsec = (long)((delay - floor(delay)) * 1e9);
     gr_nanosleep(&ts);
+#elif HAVE_SSLEEP
+    Sleep( (DWORD)(delay*1000) );
+#endif
   }
 #endif