From 88405c002c74a39c97eb425cd3a292337dcc6324 Mon Sep 17 00:00:00 2001
From: atraczyk <andreastraczyk@gmail.com>
Date: Wed, 22 Jun 2016 10:35:07 -0400
Subject: [PATCH] daemon: replace remaining usleep with sleep_for

Provide better cross platform compiler compliance by using c++11
standard library's std::this_thread::sleep_for.

Change-Id: Ib0ef9bec8336ae620315c05b53706e4605ab00fb
Tuleap: #794
---
 src/media/audio/jack/jacklayer.cpp        |  2 +-
 src/media/media_decoder.cpp               | 16 ++++------------
 src/media/video/test/test_shm.cpp         |  4 ++--
 src/media/video/test/test_video_input.cpp |  3 +--
 src/media/video/video_mixer.cpp           | 10 +++++-----
 5 files changed, 13 insertions(+), 22 deletions(-)

diff --git a/src/media/audio/jack/jacklayer.cpp b/src/media/audio/jack/jacklayer.cpp
index 5692b35b3f..f56e8cccd6 100644
--- a/src/media/audio/jack/jacklayer.cpp
+++ b/src/media/audio/jack/jacklayer.cpp
@@ -251,7 +251,7 @@ JackLayer::ringbuffer_worker()
             return;
 
         // FIXME this is all kinds of evil
-        usleep(20000);
+        std::this_thread::sleep_for(std::chrono::milliseconds(20));
 
         capture();
         playback();
diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp
index cd9f5b4a62..d1a3d71720 100644
--- a/src/media/media_decoder.cpp
+++ b/src/media/media_decoder.cpp
@@ -324,14 +324,10 @@ MediaDecoder::decode(VideoFrame& result)
         frame->format = (AVPixelFormat) correctPixFmt(frame->format);
         if (emulateRate_ and frame->pkt_pts != AV_NOPTS_VALUE) {
             auto frame_time = getTimeBase()*(frame->pkt_pts - avStream_->start_time);
-            auto target = startTime_ + frame_time.real() * 1000000;
+            auto target = startTime_ + static_cast<std::int64_t>(frame_time.real() * 1e6);
             auto now = av_gettime();
             if (target > now) {
-#if LIBAVUTIL_VERSION_CHECK(51, 34, 0, 61, 100)
-                av_usleep(target - now);
-#else
-                usleep(target - now);
-#endif
+                std::this_thread::sleep_for(std::chrono::milliseconds(target - now));
             }
         }
         return Status::FrameFinished;
@@ -379,14 +375,10 @@ MediaDecoder::decode(const AudioFrame& decodedFrame)
     if (frameFinished) {
         if (emulateRate_ and frame->pkt_pts != AV_NOPTS_VALUE) {
             auto frame_time = getTimeBase()*(frame->pkt_pts - avStream_->start_time);
-            auto target = startTime_ + frame_time.real() * 1000000;
+            auto target = startTime_ + static_cast<std::int64_t>(frame_time.real() * 1e6);
             auto now = av_gettime();
             if (target > now) {
-#if LIBAVUTIL_VERSION_CHECK(51, 34, 0, 61, 100)
-                av_usleep(target - now);
-#else
-                usleep(target - now);
-#endif
+                std::this_thread::sleep_for(std::chrono::milliseconds(target - now));
             }
         }
         return Status::FrameFinished;
diff --git a/src/media/video/test/test_shm.cpp b/src/media/video/test/test_shm.cpp
index 1c3ad80426..6512436766 100644
--- a/src/media/video/test/test_shm.cpp
+++ b/src/media/video/test/test_shm.cpp
@@ -49,7 +49,7 @@ sink_thread()
 
     while (!done) {
         sink.render(test_vec);
-        usleep(1000);
+        std::this_thread::sleep_for(std::chrono::milliseconds(1));
     }
     sink.stop();
     std::cerr << std::endl;
@@ -77,7 +77,7 @@ run_client()
     assert(dest.size() == test_data_str.size());
     while (not done and dest != test_data_str) {
         src.render(dest.data(), dest.size());
-        usleep(1000);
+        std::this_thread::sleep_for(std::chrono::milliseconds(1));
     }
     src.stop();
     std::cerr << "Got characters, exitting client process" << std::endl;
diff --git a/src/media/video/test/test_video_input.cpp b/src/media/video/test/test_video_input.cpp
index 5f7a57c4cc..732a0621d6 100644
--- a/src/media/video/test/test_video_input.cpp
+++ b/src/media/video/test/test_video_input.cpp
@@ -18,7 +18,6 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
  */
 
-#include <unistd.h> // for sleep
 #include "test_video_input.h"
 #include "video_input.h"
 #include "media_const.h"
@@ -33,7 +32,7 @@ void VideoInputTest::testInput()
     std::string resource = DRing::Media::VideoProtocolPrefix::DISPLAY + sep + std::string(getenv("DISPLAY") ? : ":0.0");
     VideoInput video;
     video.switchInput(resource);
-    usleep(10000);
+    std::this_thread::sleep_for(std::chrono::milliseconds(10));
 }
 
 }}} // namespace ring::video::test
diff --git a/src/media/video/video_mixer.cpp b/src/media/video/video_mixer.cpp
index 78a56d5f4b..48c914df32 100644
--- a/src/media/video/video_mixer.cpp
+++ b/src/media/video/video_mixer.cpp
@@ -44,7 +44,7 @@ private:
     std::mutex mutex_;
 };
 
-static constexpr const double FRAME_DURATION = 1/30.;
+static constexpr const auto FRAME_DURATION = std::chrono::duration<double>(1/30.);
 
 VideoMixer::VideoMixer(const std::string& id)
     : VideoGenerator::VideoGenerator()
@@ -122,10 +122,10 @@ void
 VideoMixer::process()
 {
     const auto now = std::chrono::system_clock::now();
-    const std::chrono::duration<double> diff = now - lastProcess_;
-    const double delay = FRAME_DURATION - diff.count();
-    if (delay > 0)
-        usleep(delay * 1e6);
+    const auto diff = now - lastProcess_;
+    const auto delay = FRAME_DURATION - diff;
+    if (delay.count() > 0)
+        std::this_thread::sleep_for(delay);
     lastProcess_ = now;
 
     VideoFrame& output = getNewFrame();
-- 
GitLab