[Base] Clock state now unaltered by threading.

- Removed tick and time values from ThreadSavedState.
- Removed affiliated get/set code from Save and Restore.
- Removed dangerous SetGuestTickCount method.
This commit is contained in:
Joel Linn 2019-11-20 18:47:34 +01:00 committed by Rick Gibbed
parent d6ce72ddc9
commit 7e244e0488
3 changed files with 3 additions and 24 deletions

View File

@ -126,13 +126,6 @@ uint32_t Clock::QueryGuestUptimeMillis() {
std::numeric_limits<uint32_t>::max()));
}
void Clock::SetGuestTickCount(uint64_t tick_count) {
std::lock_guard<std::mutex> lock(tick_mutex_);
last_host_tick_count_ = Clock::QueryHostTickCount();
last_guest_tick_count_ = tick_count;
}
void Clock::SetGuestSystemTime(uint64_t system_time) {
// Query the filetime offset to calculate a new base time.
auto guest_system_time_offset = QueryGuestSystemTimeOffset();

View File

@ -2,7 +2,7 @@
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2015 Ben Vanik. All rights reserved. *
* Copyright 2019 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
@ -47,9 +47,7 @@ class Clock {
// Queries the milliseconds since the guest began, accounting for scaling.
static uint32_t QueryGuestUptimeMillis();
// Sets the guest tick count for the current thread.
static void SetGuestTickCount(uint64_t tick_count);
// Sets the system time for the current thread.
// Sets the system time of the guest.
static void SetGuestSystemTime(uint64_t system_time);
// Scales a time duration in milliseconds, from guest time.

View File

@ -2,7 +2,7 @@
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2013 Ben Vanik. All rights reserved. *
* Copyright 2019 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
@ -821,10 +821,6 @@ struct ThreadSavedState {
bool is_main_thread; // Is this the main thread?
bool is_running;
// Clock settings (invalid if not running)
uint64_t tick_count_;
uint64_t system_time_;
uint32_t apc_head;
uint32_t tls_static_address;
uint32_t tls_dynamic_address;
@ -893,10 +889,6 @@ bool XThread::Save(ByteStream* stream) {
state.stack_alloc_size = stack_alloc_size_;
if (running_) {
state.tick_count_ = Clock::QueryGuestTickCount();
state.system_time_ =
Clock::QueryGuestSystemTime() - Clock::guest_system_time_base();
// Context information
auto context = thread_state_->context();
state.context.lr = context->lr;
@ -1006,10 +998,6 @@ object_ref<XThread> XThread::Restore(KernelState* kernel_state,
// Profiler needs to know about the thread.
xe::Profiler::ThreadEnter(thread->name().c_str());
// Setup the time now that we're in the thread.
Clock::SetGuestTickCount(state.tick_count_);
Clock::SetGuestSystemTime(state.system_time_);
current_xthread_tls_ = thread;
current_thread_ = thread;