mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 13:51:41 +00:00
ec6babfeb0
This makes the sample time more "strongly typed" by using a variant-style class instead of a raw TimeStamp. The sample time can come from different sources (vsync, testing, Now()) and it is useful to save that information as we pass around the sample time. It would have been helpful with some of the debugging I did recently, and it also is needed for the next patch. Differential Revision: https://phabricator.services.mozilla.com/D86244
76 lines
2.0 KiB
C++
76 lines
2.0 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "SampleTime.h"
|
|
|
|
namespace mozilla {
|
|
namespace layers {
|
|
|
|
SampleTime::SampleTime() : mType(eNull) {}
|
|
|
|
/*static*/
|
|
SampleTime SampleTime::FromVsync(const TimeStamp& aTime) {
|
|
MOZ_ASSERT(!aTime.IsNull());
|
|
return SampleTime(eVsync, aTime);
|
|
}
|
|
|
|
/*static*/
|
|
SampleTime SampleTime::FromNow() { return SampleTime(eNow, TimeStamp::Now()); }
|
|
|
|
/*static*/
|
|
SampleTime SampleTime::FromTest(const TimeStamp& aTime) {
|
|
MOZ_ASSERT(!aTime.IsNull());
|
|
return SampleTime(eTest, aTime);
|
|
}
|
|
|
|
bool SampleTime::IsNull() const { return mType == eNull; }
|
|
|
|
SampleTime::TimeType SampleTime::Type() const { return mType; }
|
|
|
|
const TimeStamp& SampleTime::Time() const { return mTime; }
|
|
|
|
bool SampleTime::operator==(const SampleTime& aOther) const {
|
|
return mTime == aOther.mTime;
|
|
}
|
|
|
|
bool SampleTime::operator!=(const SampleTime& aOther) const {
|
|
return !(*this == aOther);
|
|
}
|
|
|
|
bool SampleTime::operator<(const SampleTime& aOther) const {
|
|
return mTime < aOther.mTime;
|
|
}
|
|
|
|
bool SampleTime::operator<=(const SampleTime& aOther) const {
|
|
return mTime <= aOther.mTime;
|
|
}
|
|
|
|
bool SampleTime::operator>(const SampleTime& aOther) const {
|
|
return mTime > aOther.mTime;
|
|
}
|
|
|
|
bool SampleTime::operator>=(const SampleTime& aOther) const {
|
|
return mTime >= aOther.mTime;
|
|
}
|
|
|
|
SampleTime SampleTime::operator+(const TimeDuration& aDuration) const {
|
|
return SampleTime(mType, mTime + aDuration);
|
|
}
|
|
|
|
SampleTime SampleTime::operator-(const TimeDuration& aDuration) const {
|
|
return SampleTime(mType, mTime - aDuration);
|
|
}
|
|
|
|
TimeDuration SampleTime::operator-(const SampleTime& aOther) const {
|
|
return mTime - aOther.mTime;
|
|
}
|
|
|
|
SampleTime::SampleTime(TimeType aType, const TimeStamp& aTime)
|
|
: mType(aType), mTime(aTime) {}
|
|
|
|
} // namespace layers
|
|
} // namespace mozilla
|