OXYGENHUB
◆ main openmsx / src / SpeedManager.cc
1.2 KiB · C++ · last changed chore(): initial commit 1 month ago source blame history raw
1
#include "SpeedManager.hh"
2
3
namespace openmsx {
4
5
// class SpeedManager:
6
7
SpeedManager::SpeedManager(CommandController& commandController)
8
	: speedSetting(commandController, "speed",
9
	       "controls the emulation speed: higher is faster, 100 is normal",
10
	       100.0, 0.01, 10000.0, Setting::Save::NO)
11
	, fastforwardSpeedSetting(commandController, "fastforwardspeed",
12
	       "controls the emulation speed in fastforward mode: "
13
		   "higher is faster, 100 is normal speed",
14
	       2000.0, 0.01, 10000.0)
15
	, fastforwardSetting(commandController, "fastforward",
16
	       "select emulation speed:\n"
17
	       " on -> fastforward speed ('fastforwardspeed' setting)\n"
18
	       " off -> normal speed ('speed' setting)",
19
	       false, Setting::Save::NO)
20
{
21
	speedSetting.attach(*this);
22
	fastforwardSpeedSetting.attach(*this);
23
	fastforwardSetting.attach(*this);
24
}
25
26
SpeedManager::~SpeedManager()
27
{
28
	fastforwardSetting.detach(*this);
29
	fastforwardSpeedSetting.detach(*this);
30
	speedSetting.detach(*this);
31
}
32
33
void SpeedManager::updateSpeed()
34
{
35
	speed = (fastforwardSetting.getBoolean() ? fastforwardSpeedSetting : speedSetting)
36
	        .getDouble() * (1.0 / 100.0);
37
	notify();
38
}
39
40
void SpeedManager::update(const Setting& /*setting*/) noexcept
41
{
42
	updateSpeed();
43
}
44
45
} // namespace openmsx