Merge pull request #4022 from zhaowenlan1779/port-yuzu-837

Port yuzu-emu/yuzu#837 from yuzu
This commit is contained in:
Merry 2018-08-01 15:01:17 +01:00 committed by GitHub
commit 6a9e18a49a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 10 deletions

View file

@ -301,11 +301,11 @@ std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeTimer::GetChildren() const {
const auto& timer = static_cast<const Kernel::Timer&>(object); const auto& timer = static_cast<const Kernel::Timer&>(object);
list.push_back(std::make_unique<WaitTreeText>( list.push_back(std::make_unique<WaitTreeText>(
tr("reset type = %1").arg(GetResetTypeQString(timer.reset_type)))); tr("reset type = %1").arg(GetResetTypeQString(timer.GetResetType()))));
list.push_back( list.push_back(
std::make_unique<WaitTreeText>(tr("initial delay = %1").arg(timer.initial_delay))); std::make_unique<WaitTreeText>(tr("initial delay = %1").arg(timer.GetInitialDelay())));
list.push_back( list.push_back(
std::make_unique<WaitTreeText>(tr("interval delay = %1").arg(timer.interval_delay))); std::make_unique<WaitTreeText>(tr("interval delay = %1").arg(timer.GetIntervalDelay())));
return list; return list;
} }

View file

@ -981,8 +981,9 @@ static ResultCode ClearEvent(Handle handle) {
/// Creates a timer /// Creates a timer
static ResultCode CreateTimer(Handle* out_handle, u32 reset_type) { static ResultCode CreateTimer(Handle* out_handle, u32 reset_type) {
SharedPtr<Timer> timer = Timer::Create(static_cast<ResetType>(reset_type)); SharedPtr<Timer> timer =
timer->name = Common::StringFromFormat("timer-%08x", Core::CPU().GetReg(14)); Timer::Create(static_cast<ResetType>(reset_type),
Common::StringFromFormat("timer-%08x", Core::CPU().GetReg(14)));
CASCADE_RESULT(*out_handle, g_handle_table.Create(std::move(timer))); CASCADE_RESULT(*out_handle, g_handle_table.Create(std::move(timer)));
LOG_TRACE(Kernel_SVC, "called reset_type=0x{:08X} : created handle=0x{:08X}", reset_type, LOG_TRACE(Kernel_SVC, "called reset_type=0x{:08X} : created handle=0x{:08X}", reset_type,

View file

@ -32,13 +32,17 @@ public:
return HANDLE_TYPE; return HANDLE_TYPE;
} }
ResetType reset_type; ///< The ResetType of this timer ResetType GetResetType() const {
return reset_type;
}
bool signaled; ///< Whether the timer has been signaled or not u64 GetInitialDelay() const {
std::string name; ///< Name of timer (optional) return initial_delay;
}
u64 initial_delay; ///< The delay until the timer fires for the first time u64 GetIntervalDelay() const {
u64 interval_delay; ///< The delay until the timer fires after the first time return interval_delay;
}
bool ShouldWait(Thread* thread) const override; bool ShouldWait(Thread* thread) const override;
void Acquire(Thread* thread) override; void Acquire(Thread* thread) override;
@ -67,6 +71,14 @@ private:
Timer(); Timer();
~Timer() override; ~Timer() override;
ResetType reset_type; ///< The ResetType of this timer
u64 initial_delay; ///< The delay until the timer fires for the first time
u64 interval_delay; ///< The delay until the timer fires after the first time
bool signaled; ///< Whether the timer has been signaled or not
std::string name; ///< Name of timer (optional)
/// Handle used as userdata to reference this object when inserting into the CoreTiming queue. /// Handle used as userdata to reference this object when inserting into the CoreTiming queue.
Handle callback_handle; Handle callback_handle;
}; };