Android: Fix crashes on screen rotation

This commit is contained in:
Henrik Rydgård 2023-10-09 18:24:43 +02:00
parent ef35cbbedb
commit 8c821893f1
3 changed files with 10 additions and 1 deletions

View file

@ -84,6 +84,7 @@ void FrameData::AcquireNextImage(VulkanContext *vulkan, FrameDataShared &shared)
WARN_LOG(G3D, "VK_SUBOPTIMAL_KHR returned - ignoring");
break;
case VK_ERROR_OUT_OF_DATE_KHR:
case VK_ERROR_SURFACE_LOST_KHR:
case VK_TIMEOUT:
case VK_NOT_READY:
// We do not set hasAcquired here!

View file

@ -186,8 +186,15 @@ void ManagedTexture::DeviceLost() {
void ManagedTexture::DeviceRestored(Draw::DrawContext *draw) {
INFO_LOG(G3D, "ManagedTexture::DeviceRestored(%s)", filename_.c_str());
_assert_(!texture_);
draw_ = draw;
_dbg_assert_(!texture_);
if (texture_) {
ERROR_LOG(G3D, "ManagedTexture: Unexpected - texture already present: %s", filename_.c_str());
return;
}
// Vulkan: Can't load textures before the first frame has started.
// Should probably try to lift that restriction again someday..
loadPending_ = true;

View file

@ -1450,6 +1450,7 @@ extern "C" bool JNICALL Java_org_ppsspp_ppsspp_NativeActivity_runVulkanRenderLoo
if (g_vulkanRenderLoopThread.joinable()) {
ERROR_LOG(G3D, "runVulkanRenderLoop: Already running");
return false;
}
ANativeWindow *wnd = _surf ? ANativeWindow_fromSurface(env, _surf) : nullptr;