mirror of
https://github.com/vcmi/vcmi.git
synced 2025-02-01 12:57:51 +02:00
fix tutorial video
This commit is contained in:
parent
3115894307
commit
2abfaa0853
@ -327,6 +327,11 @@ bool CVideoInstance::videoEnded()
|
||||
return getCurrentFrame() == nullptr;
|
||||
}
|
||||
|
||||
CVideoInstance::CVideoInstance()
|
||||
: startTimeInitialized(false), deactivationStartTimeHandling(false)
|
||||
{
|
||||
}
|
||||
|
||||
CVideoInstance::~CVideoInstance()
|
||||
{
|
||||
sws_freeContext(sws);
|
||||
@ -391,8 +396,11 @@ void CVideoInstance::tick(uint32_t msPassed)
|
||||
if(videoEnded())
|
||||
throw std::runtime_error("Video already ended!");
|
||||
|
||||
if(startTime == std::chrono::steady_clock::time_point())
|
||||
if(!startTimeInitialized)
|
||||
{
|
||||
startTime = std::chrono::steady_clock::now();
|
||||
startTimeInitialized = true;
|
||||
}
|
||||
|
||||
auto nowTime = std::chrono::steady_clock::now();
|
||||
double difference = std::chrono::duration_cast<std::chrono::milliseconds>(nowTime - startTime).count() / 1000.0;
|
||||
@ -410,17 +418,18 @@ void CVideoInstance::tick(uint32_t msPassed)
|
||||
|
||||
void CVideoInstance::activate()
|
||||
{
|
||||
if(deactivationStartTime != std::chrono::steady_clock::time_point())
|
||||
if(deactivationStartTimeHandling)
|
||||
{
|
||||
auto pauseDuration = std::chrono::steady_clock::now() - deactivationStartTime;
|
||||
startTime += pauseDuration;
|
||||
deactivationStartTime = std::chrono::steady_clock::time_point();
|
||||
deactivationStartTimeHandling = false;
|
||||
}
|
||||
}
|
||||
|
||||
void CVideoInstance::deactivate()
|
||||
{
|
||||
deactivationStartTime = std::chrono::steady_clock::now();
|
||||
deactivationStartTimeHandling = true;
|
||||
}
|
||||
|
||||
struct FFMpegFormatDescription
|
||||
|
@ -78,6 +78,8 @@ class CVideoInstance final : public IVideoInstance, public FFMpegStream
|
||||
Point dimensions;
|
||||
|
||||
/// video playback start time point
|
||||
bool startTimeInitialized;
|
||||
bool deactivationStartTimeHandling;
|
||||
std::chrono::steady_clock::time_point startTime;
|
||||
std::chrono::steady_clock::time_point deactivationStartTime;
|
||||
|
||||
@ -86,6 +88,7 @@ class CVideoInstance final : public IVideoInstance, public FFMpegStream
|
||||
const int MAX_FRAMESKIP = 5;
|
||||
|
||||
public:
|
||||
CVideoInstance();
|
||||
~CVideoInstance();
|
||||
|
||||
void openVideo();
|
||||
|
Loading…
x
Reference in New Issue
Block a user