aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2015-04-03 20:27:27 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2015-04-03 20:27:27 +0200
commitfe9648fa1cdc8f9cf5216a88fadb8b96604047fd (patch)
tree011b7956b38a08b771d349866f9fabc0d5689fc9
parent0d9371a00c47991e9f62053b649d39e9504680d8 (diff)
downloadusdx-fe9648fa1cdc8f9cf5216a88fadb8b96604047fd.tar.gz
usdx-fe9648fa1cdc8f9cf5216a88fadb8b96604047fd.tar.xz
usdx-fe9648fa1cdc8f9cf5216a88fadb8b96604047fd.zip
base/time: Replaces by std::chrono.
-rw-r--r--src/base/time.cpp40
-rw-r--r--src/base/time.hpp54
-rw-r--r--src/base/timestamp.cpp9
-rw-r--r--src/base/timestamp.hpp6
-rw-r--r--src/menu/mouse_event.cpp8
-rw-r--r--src/menu/software_mouse_pointer.cpp2
-rw-r--r--src/menu/timer.cpp2
-rw-r--r--src/menu/timer.hpp7
-rw-r--r--test/base/timestamp.cpp10
-rw-r--r--test/menu/application.cpp2
10 files changed, 24 insertions, 116 deletions
diff --git a/src/base/time.cpp b/src/base/time.cpp
deleted file mode 100644
index bbfb4330..00000000
--- a/src/base/time.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * UltraStar Deluxe - Karaoke Game
- *
- * UltraStar Deluxe is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#include "time.hpp"
-#include <SDL/SDL.h>
-
-#define SDL_CORRECTION_RATIO 1000.0f
-
-namespace usdx
-{
- Time::Time(void)
- {
- }
-
- float Time::get_time()
- {
- return SDL_GetTicks() / SDL_CORRECTION_RATIO;
- }
-}
diff --git a/src/base/time.hpp b/src/base/time.hpp
deleted file mode 100644
index a10449f6..00000000
--- a/src/base/time.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * UltraStar Deluxe - Karaoke Game
- *
- * UltraStar Deluxe is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef TIME_HPP
-#define TIME_HPP
-
-namespace usdx
-{
- /**
- * Simple static-only wrapper class to get a time. This time does not need
- * to correspond to the real clock. It should only be a changing number,
- * that change at the same speed like the real clock. The current
- * implementation uses SDL and returns the milliseconds since initialization
- * of the library.
- */
- class Time
- {
- protected:
- /**
- * Protected constructor. This class currently contains only static
- methods. So there should no need to create an instance of it.
- */
- Time(void);
-
- public:
- /**
- * Returns the current "time" as milliseconds.
- */
- static float get_time();
- };
-}
-
-#endif
diff --git a/src/base/timestamp.cpp b/src/base/timestamp.cpp
index 1e86a8d4..c92ef99c 100644
--- a/src/base/timestamp.cpp
+++ b/src/base/timestamp.cpp
@@ -23,22 +23,21 @@
*/
#include "timestamp.hpp"
-#include "time.hpp"
namespace usdx
{
Timestamp::Timestamp(void)
- : time(Time::get_time())
+ : time(std::chrono::steady_clock::now())
{
}
- bool Timestamp::since(float duration) const
+ bool Timestamp::since(std::chrono::milliseconds duration) const
{
- return Time::get_time() < (time + duration);
+ return std::chrono::steady_clock::now() < (time + duration);
}
void Timestamp::update(void)
{
- time = Time::get_time();
+ time = std::chrono::steady_clock::now();
}
}
diff --git a/src/base/timestamp.hpp b/src/base/timestamp.hpp
index e6fc5247..095d5fa2 100644
--- a/src/base/timestamp.hpp
+++ b/src/base/timestamp.hpp
@@ -25,6 +25,8 @@
#ifndef TIMESTAMP_HPP
#define TIMESTAMP_HPP
+#include <chrono>
+
namespace usdx
{
/**
@@ -37,7 +39,7 @@ namespace usdx
/**
* internal storage of the point of time represented by the timestamp instance
*/
- float time;
+ std::chrono::steady_clock::time_point time;
public:
/**
@@ -52,7 +54,7 @@ namespace usdx
* @return true, if the elapsed time is less than the given duration,
* otherwise false
*/
- bool since(float duration) const;
+ bool since(std::chrono::milliseconds duration) const;
/**
* Update the stored point of time to the current time.
diff --git a/src/menu/mouse_event.cpp b/src/menu/mouse_event.cpp
index 814e179c..3f4104a0 100644
--- a/src/menu/mouse_event.cpp
+++ b/src/menu/mouse_event.cpp
@@ -25,7 +25,6 @@
#include <cstddef>
#include "mouse_event.hpp"
-#include "base/time.hpp"
namespace usdx
{
@@ -49,16 +48,17 @@ namespace usdx
{
if (direction == UP) {
if (this->direction == DOWN) {
- if (time.since(5000))
+ if (time.since(std::chrono::milliseconds{5000}))
return CLICK;
}
else if (this->direction == CLICK) {
- if (time.since(5000))
+ if (time.since(std::chrono::milliseconds{5000}))
return DBL_CLICK;
}
}
else if (direction == DOWN) {
- if (this->direction == CLICK && time.since(5000))
+ if (this->direction == CLICK &&
+ time.since(std::chrono::milliseconds{5000}))
return CLICK;
}
}
diff --git a/src/menu/software_mouse_pointer.cpp b/src/menu/software_mouse_pointer.cpp
index 39ee1318..2708917c 100644
--- a/src/menu/software_mouse_pointer.cpp
+++ b/src/menu/software_mouse_pointer.cpp
@@ -34,7 +34,7 @@ namespace usdx
SoftwareMousePointer::SoftwareMousePointer(Container* parent, EventManager* event_manager)
: DrawableControl(parent), color(255,255,255,100), down(false)
{
- fade_inactive = new Timer(this, 2, true);
+ fade_inactive = new Timer(this, std::chrono::seconds{2}, true);
this->vertices[0] = 0.0f;
this->vertices[1] = 40.0f;
diff --git a/src/menu/timer.cpp b/src/menu/timer.cpp
index 567860c2..884b8548 100644
--- a/src/menu/timer.cpp
+++ b/src/menu/timer.cpp
@@ -26,7 +26,7 @@
namespace usdx
{
- Timer::Timer(Control* owner, float duration, bool init) :
+ Timer::Timer(Control* owner, std::chrono::milliseconds duration, bool init) :
Control(owner), duration(duration), ready(init), last_update()
{
}
diff --git a/src/menu/timer.hpp b/src/menu/timer.hpp
index d2cd700b..fc595dc7 100644
--- a/src/menu/timer.hpp
+++ b/src/menu/timer.hpp
@@ -25,7 +25,8 @@
#ifndef TIMER_HPP
#define TIMER_HPP
-#include <stdint.h>
+#include <chrono>
+
#include "control.hpp"
#include "base/timestamp.hpp"
@@ -34,13 +35,13 @@ namespace usdx
class Timer : public Control
{
private:
- float duration;
+ std::chrono::milliseconds duration;
bool ready;
Timestamp last_update;
public:
- Timer(Control*, float, bool = false);
+ Timer(Control*, std::chrono::milliseconds, bool = false);
virtual ~Timer();
void update(void);
diff --git a/test/base/timestamp.cpp b/test/base/timestamp.cpp
index 2d8e6caf..23ea3b04 100644
--- a/test/base/timestamp.cpp
+++ b/test/base/timestamp.cpp
@@ -22,11 +22,11 @@
*
*/
+#include <thread>
#include "base/timestamp.hpp"
#include <cppunit/extensions/HelperMacros.h>
#include <log4cpp/Category.hh>
-#include <boost/thread/thread.hpp>
namespace usdx
{
@@ -49,15 +49,15 @@ namespace usdx
void testWaitShorter()
{
Timestamp t;
- boost::this_thread::sleep(boost::posix_time::milliseconds(500));
- CPPUNIT_ASSERT_EQUAL(t.since(0.6), true);
+ std::this_thread::sleep_for(std::chrono::milliseconds{500});
+ CPPUNIT_ASSERT_EQUAL(t.since(std::chrono::milliseconds{600}), true);
}
void testWaitLonger()
{
Timestamp t;
- boost::this_thread::sleep(boost::posix_time::milliseconds(500));
- CPPUNIT_ASSERT_EQUAL(t.since(0.4), false);
+ std::this_thread::sleep_for(std::chrono::milliseconds{500});
+ CPPUNIT_ASSERT_EQUAL(t.since(std::chrono::milliseconds{400}), false);
}
};
diff --git a/test/menu/application.cpp b/test/menu/application.cpp
index 8a14644a..24156998 100644
--- a/test/menu/application.cpp
+++ b/test/menu/application.cpp
@@ -48,7 +48,7 @@ namespace usdx
Application app;
app.quit();
CPPUNIT_ASSERT_EQUAL(false, app.is_running());
- CPPUNIT_ASSERT_EQUAL(true, t.since(0.2));
+ CPPUNIT_ASSERT_EQUAL(true, t.since(std::chrono::milliseconds{200}));
}
void testNewInstance()