early-access version 2535

main
pineappleEA 2022-03-09 03:48:53 +01:00
parent b4dd8f6d3e
commit 870c5bbb4e
5 changed files with 16 additions and 4 deletions

View File

@ -1,7 +1,7 @@
yuzu emulator early access
=============
This is the source code for early-access 2533.
This is the source code for early-access 2535.
## Legal Notice

View File

@ -326,7 +326,9 @@ struct System::Impl {
is_powered_on = false;
exit_lock = false;
gpu_core->NotifyShutdown();
if (gpu_core != nullptr) {
gpu_core->NotifyShutdown();
}
services.reset();
service_manager.reset();

View File

@ -42,11 +42,20 @@ public:
context.MakeCurrent();
}
~Scoped() {
context.DoneCurrent();
if (active) {
context.DoneCurrent();
}
}
/// In the event that context was destroyed before the Scoped is destroyed, this provides a
/// mechanism to prevent calling a destroyed object's method during the deconstructor
void Cancel() {
active = false;
}
private:
GraphicsContext& context;
bool active{true};
};
/// Calls MakeCurrent on the context and calls DoneCurrent when the scope for the returned value

View File

@ -312,7 +312,7 @@ public:
size = Common::AlignUp(size, Kernel::PageSize);
size += page_table.GetNumGuardPages() * Kernel::PageSize * 4;
auto is_region_available = [&](VAddr addr) {
const auto is_region_available = [&](VAddr addr) {
const auto end_addr = addr + size;
while (addr < end_addr) {
if (system.Memory().IsValidVirtualAddress(addr)) {

View File

@ -50,6 +50,7 @@ std::unique_ptr<Tegra::GPU> CreateGPU(Core::Frontend::EmuWindow& emu_window, Cor
gpu->BindRenderer(std::move(renderer));
return gpu;
} catch (const std::runtime_error& exception) {
scope.Cancel();
LOG_ERROR(HW_GPU, "Failed to initialize GPU: {}", exception.what());
return nullptr;
}