[colobot] 335/390: Provide usleep() in CSystemUtils interface

Didier Raboud odyx at moszumanska.debian.org
Fri Jun 12 14:22:01 UTC 2015


This is an automated email from the git hooks/post-receive script.

odyx pushed a commit to branch upstream/latest
in repository colobot.

commit d003247120e43853eacd5a6c32ed4bd80993a2f8
Author: Piotr Dziwinski <piotrdz at gmail.com>
Date:   Mon Apr 27 18:35:41 2015 +0200

    Provide usleep() in CSystemUtils interface
---
 src/app/app.cpp             | 11 +++++------
 src/app/system.h            |  3 +++
 src/app/system_linux.cpp    |  6 ++++++
 src/app/system_linux.h      |  2 ++
 src/app/system_macosx.cpp   |  6 ++++++
 src/app/system_macosx.h     |  3 +++
 src/app/system_other.cpp    |  4 ++++
 src/app/system_other.h      |  2 ++
 src/app/system_windows.cpp  | 11 +++++++++++
 src/app/system_windows.h    |  2 ++
 test/unit/app/system_mock.h |  1 +
 11 files changed, 45 insertions(+), 6 deletions(-)

diff --git a/src/app/app.cpp b/src/app/app.cpp
index b642cc0..5f98b4c 100644
--- a/src/app/app.cpp
+++ b/src/app/app.cpp
@@ -52,7 +52,6 @@
 
 #include <stdlib.h>
 #include <libintl.h>
-#include <unistd.h>
 #include <getopt.h>
 #include <localename.h>
 
@@ -169,7 +168,7 @@ CApplication::~CApplication()
 {
     delete m_private;
     m_private = nullptr;
-    
+
     delete m_input;
     m_input = nullptr;
 
@@ -394,7 +393,7 @@ ParseArgsStatus CApplication::ParseArguments(int argc, char *argv[])
                 std::string w, h;
                 std::getline(resolution, w, 'x');
                 std::getline(resolution, h, 'x');
-                
+
                 m_deviceConfig.size.x = atoi(w.c_str());
                 m_deviceConfig.size.y = atoi(h.c_str());
                 m_resolutionOverride = true;
@@ -539,7 +538,7 @@ bool CApplication::Create()
             m_exitCode = 4;
             return false;
         }
-        
+
         SDL_WM_SetCaption(m_windowTitle.c_str(), m_windowTitle.c_str());
     }
 
@@ -1009,7 +1008,7 @@ int CApplication::Run()
 
             if (m_lowCPU)
             {
-                usleep(20000); // should still give plenty of fps
+                GetSystemUtils()->Usleep(20000); // should still give plenty of fps
             }
         }
     }
@@ -1134,7 +1133,7 @@ Event CApplication::ProcessSystemEvent()
 
         event.active.gain = m_private->currentEvent.active.gain == 1;
     }
-    
+
     m_input->EventProcess(event);
 
     return event;
diff --git a/src/app/system.h b/src/app/system.h
index d52020b..327f60d 100644
--- a/src/app/system.h
+++ b/src/app/system.h
@@ -140,6 +140,9 @@ public:
 
     //! Returns the save dir location
     virtual std::string GetSaveDir();
+
+    //! Sleep for given amount of microseconds
+    virtual void Usleep(int usecs) = 0;
 };
 
 //! Global function to get CSystemUtils instance
diff --git a/src/app/system_linux.cpp b/src/app/system_linux.cpp
index 6fbfb05..1a1b76d 100644
--- a/src/app/system_linux.cpp
+++ b/src/app/system_linux.cpp
@@ -22,6 +22,7 @@
 #include "common/logger.h"
 
 #include <stdlib.h>
+#include <unistd.h>
 
 
 void CSystemUtilsLinux::Init()
@@ -123,3 +124,8 @@ std::string CSystemUtilsLinux::GetSaveDir()
 
     return savegameDir;
 }
+
+void CSystemUtilsLinux::Usleep(int usec)
+{
+    usleep(usec);
+}
diff --git a/src/app/system_linux.h b/src/app/system_linux.h
index d8654f9..b60954e 100644
--- a/src/app/system_linux.h
+++ b/src/app/system_linux.h
@@ -50,6 +50,8 @@ public:
 
     virtual std::string GetSaveDir() OVERRIDE;
 
+    virtual void Usleep(int usec) OVERRIDE;
+
 private:
     bool m_zenityAvailable;
 };
diff --git a/src/app/system_macosx.cpp b/src/app/system_macosx.cpp
index 208b4a7..ebd1846 100644
--- a/src/app/system_macosx.cpp
+++ b/src/app/system_macosx.cpp
@@ -22,6 +22,7 @@
 #include "common/logger.h"
 
 #include <stdlib.h>
+#include <unistd.h>
 
 // MacOS-specific headers
 #include <CoreFoundation/CFBundle.h>
@@ -106,3 +107,8 @@ std::string CSystemUtilsMacOSX::GetSaveDir()
 
     return savegameDir;
 }
+
+void CSystemUtilsMacOSX::Usleep(int usec)
+{
+    usleep(usec);
+}
diff --git a/src/app/system_macosx.h b/src/app/system_macosx.h
index f3d8734..a853ae4 100644
--- a/src/app/system_macosx.h
+++ b/src/app/system_macosx.h
@@ -33,6 +33,9 @@ public:
     virtual std::string GetDataPath() OVERRIDE;
     virtual std::string GetLangPath() OVERRIDE;
     virtual std::string GetSaveDir() OVERRIDE;
+
+    virtual void Usleep(int usec) OVERRIDE;
+
 private:
     std::string m_ASPath;
     std::string m_dataPath;
diff --git a/src/app/system_other.cpp b/src/app/system_other.cpp
index c21314c..bedeb23 100644
--- a/src/app/system_other.cpp
+++ b/src/app/system_other.cpp
@@ -40,3 +40,7 @@ long long int CSystemUtilsOther::TimeStampExactDiff(SystemTimeStamp* before, Sys
     return (after->sdlTicks - before->sdlTicks) * 1000000ll;
 }
 
+void CSystemUtilsOther::Usleep(int usec)
+{
+    SDL_Delay(usec / 1000); // close enough
+}
diff --git a/src/app/system_other.h b/src/app/system_other.h
index db2d0f3..862f63e 100644
--- a/src/app/system_other.h
+++ b/src/app/system_other.h
@@ -48,5 +48,7 @@ public:
     virtual void GetCurrentTimeStamp(SystemTimeStamp *stamp) OVERRIDE;
     virtual long long int GetTimeStampExactResolution() OVERRIDE;
     virtual long long TimeStampExactDiff(SystemTimeStamp *before, SystemTimeStamp *after) OVERRIDE;
+
+    virtual void Usleep(int usec) OVERRIDE;
 };
 
diff --git a/src/app/system_windows.cpp b/src/app/system_windows.cpp
index bc1fed9..e16b65a 100644
--- a/src/app/system_windows.cpp
+++ b/src/app/system_windows.cpp
@@ -130,3 +130,14 @@ std::string CSystemUtilsWindows::GetSaveDir()
 
     return savegameDir;
 }
+
+void CSystemUtilsWindows::Usleep(int usec)
+{
+   LARGE_INTEGER ft;
+   ft.QuadPart = -(10 * usec); // Convert to 100 nanosecond interval, negative value indicates relative time
+
+   HANDLE timer = CreateWaitableTimer(NULL, TRUE, NULL);
+   SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0);
+   WaitForSingleObject(timer, INFINITE);
+   CloseHandle(timer);
+}
diff --git a/src/app/system_windows.h b/src/app/system_windows.h
index 538cfda..e5141cb 100644
--- a/src/app/system_windows.h
+++ b/src/app/system_windows.h
@@ -48,6 +48,8 @@ public:
 
     virtual std::string GetSaveDir() OVERRIDE;
 
+    virtual void Usleep(int usec) OVERRIDE;
+
 public:
     static std::string UTF8_Encode(const std::wstring &wstr);
     static std::wstring UTF8_Decode(const std::string &str);
diff --git a/test/unit/app/system_mock.h b/test/unit/app/system_mock.h
index 2f2c464..ac7e590 100644
--- a/test/unit/app/system_mock.h
+++ b/test/unit/app/system_mock.h
@@ -63,4 +63,5 @@ public:
     MOCK_METHOD0(GetTimeStampExactResolution, long long());
     MOCK_METHOD3(TimeStampDiff, float(SystemTimeStamp *before, SystemTimeStamp *after, SystemTimeUnit unit));
     MOCK_METHOD2(TimeStampExactDiff, long long(SystemTimeStamp *before, SystemTimeStamp *after));
+    MOCK_METHOD1(Usleep, void(int usec));
 };

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git



More information about the Pkg-games-commits mailing list