[GPU] Don't bother redrawing the trace dump window
This commit is contained in:
parent
6b4e8ee19e
commit
f4a0dbac75
|
@ -127,7 +127,7 @@ bool TraceDump::Setup() {
|
||||||
exit(1);
|
exit(1);
|
||||||
});
|
});
|
||||||
loop_->on_quit.AddListener([&](xe::ui::UIEvent* e) { window_.reset(); });
|
loop_->on_quit.AddListener([&](xe::ui::UIEvent* e) { window_.reset(); });
|
||||||
window_->Resize(1920, 1200);
|
window_->Resize(1280, 720);
|
||||||
|
|
||||||
// Create the emulator but don't initialize so we can setup the window.
|
// Create the emulator but don't initialize so we can setup the window.
|
||||||
emulator_ = std::make_unique<Emulator>(L"");
|
emulator_ = std::make_unique<Emulator>(L"");
|
||||||
|
@ -149,23 +149,6 @@ bool TraceDump::Setup() {
|
||||||
});
|
});
|
||||||
|
|
||||||
player_ = std::make_unique<TracePlayer>(loop_.get(), graphics_system_);
|
player_ = std::make_unique<TracePlayer>(loop_.get(), graphics_system_);
|
||||||
|
|
||||||
window_->on_painting.AddListener([&](xe::ui::UIEvent* e) {
|
|
||||||
// Update titlebar status.
|
|
||||||
auto file_name = xe::find_name_from_path(trace_file_path_);
|
|
||||||
std::wstring title = std::wstring(L"Xenia GPU Trace Dump: ") + file_name;
|
|
||||||
if (player_->is_playing_trace()) {
|
|
||||||
int percent =
|
|
||||||
static_cast<int>(player_->playback_percent() / 10000.0 * 100.0);
|
|
||||||
title += xe::format_string(L" (%d%%)", percent);
|
|
||||||
}
|
|
||||||
window_->set_title(title);
|
|
||||||
|
|
||||||
// Continuous paint.
|
|
||||||
window_->Invalidate();
|
|
||||||
});
|
|
||||||
window_->Invalidate();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,8 +178,8 @@ int TraceDump::Run() {
|
||||||
// Breathe.
|
// Breathe.
|
||||||
});
|
});
|
||||||
|
|
||||||
xe::threading::Fence capture_fence;
|
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
auto capture_event = xe::threading::Event::CreateManualResetEvent(false);
|
||||||
loop_->PostDelayed(
|
loop_->PostDelayed(
|
||||||
[&]() {
|
[&]() {
|
||||||
// Capture.
|
// Capture.
|
||||||
|
@ -204,7 +187,7 @@ int TraceDump::Run() {
|
||||||
if (!raw_image) {
|
if (!raw_image) {
|
||||||
// Failed to capture anything.
|
// Failed to capture anything.
|
||||||
result = -1;
|
result = -1;
|
||||||
capture_fence.Signal();
|
capture_event->Set();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -216,17 +199,31 @@ int TraceDump::Run() {
|
||||||
static_cast<int>(raw_image->stride));
|
static_cast<int>(raw_image->stride));
|
||||||
|
|
||||||
result = 0;
|
result = 0;
|
||||||
capture_fence.Signal();
|
capture_event->Set();
|
||||||
},
|
},
|
||||||
50);
|
50);
|
||||||
|
|
||||||
capture_fence.Wait();
|
while (xe::threading::Wait(capture_event.get(), false,
|
||||||
|
std::chrono::milliseconds(1)) ==
|
||||||
|
xe::threading::WaitResult::kTimeout) {
|
||||||
|
// Update titlebar status.
|
||||||
|
auto file_name = xe::find_name_from_path(trace_file_path_);
|
||||||
|
std::wstring title = std::wstring(L"Xenia GPU Trace Dump: ") + file_name;
|
||||||
|
if (player_->is_playing_trace()) {
|
||||||
|
int percent =
|
||||||
|
static_cast<int>(player_->playback_percent() / 10000.0 * 100.0);
|
||||||
|
title += xe::format_string(L" (%d%%)", percent);
|
||||||
|
}
|
||||||
|
window_->set_title(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Profiler must exit before the window is closed.
|
||||||
|
Profiler::Shutdown();
|
||||||
|
|
||||||
// Wait until we are exited.
|
// Wait until we are exited.
|
||||||
loop_->Quit();
|
loop_->Quit();
|
||||||
loop_->AwaitQuit();
|
loop_->AwaitQuit();
|
||||||
|
|
||||||
Profiler::Shutdown();
|
|
||||||
window_.reset();
|
window_.reset();
|
||||||
loop_.reset();
|
loop_.reset();
|
||||||
player_.reset();
|
player_.reset();
|
||||||
|
|
Loading…
Reference in New Issue