Ignore existing surface size on Android

Seems to be a race condition here where it's not up to date.
This commit is contained in:
Connor McLaughlin 2020-09-19 13:04:32 +10:00
parent 3bdda39e1f
commit a7b85605e2
3 changed files with 14 additions and 3 deletions

View File

@ -155,6 +155,8 @@ void AndroidHostInterface::LoadSettings()
CommonHostInterface::LoadSettings(m_settings_interface); CommonHostInterface::LoadSettings(m_settings_interface);
CommonHostInterface::FixIncompatibleSettings(false); CommonHostInterface::FixIncompatibleSettings(false);
CommonHostInterface::UpdateInputMap(m_settings_interface); CommonHostInterface::UpdateInputMap(m_settings_interface);
g_settings.log_level = LOGLEVEL_INFO;
g_settings.log_to_debug = true;
} }
void AndroidHostInterface::UpdateInputMap() void AndroidHostInterface::UpdateInputMap()
@ -392,7 +394,7 @@ void AndroidHostInterface::OnRunningGameChanged()
void AndroidHostInterface::SurfaceChanged(ANativeWindow* surface, int format, int width, int height) void AndroidHostInterface::SurfaceChanged(ANativeWindow* surface, int format, int width, int height)
{ {
ReportFormattedMessage("SurfaceChanged %p %d %d %d", surface, format, width, height); Log_InfoPrintf("SurfaceChanged %p %d %d %d", surface, format, width, height);
if (m_surface == surface) if (m_surface == surface)
{ {
if (m_display) if (m_display)
@ -499,6 +501,8 @@ void AndroidHostInterface::ApplySettings(bool display_osd_messages)
Settings old_settings = std::move(g_settings); Settings old_settings = std::move(g_settings);
CommonHostInterface::LoadSettings(m_settings_interface); CommonHostInterface::LoadSettings(m_settings_interface);
CommonHostInterface::FixIncompatibleSettings(display_osd_messages); CommonHostInterface::FixIncompatibleSettings(display_osd_messages);
g_settings.log_level = LOGLEVEL_INFO;
g_settings.log_to_debug = true;
CheckForSettingsChanges(old_settings); CheckForSettingsChanges(old_settings);
} }

View File

@ -89,19 +89,24 @@ bool ContextEGL::ChangeSurface(const WindowInfo& new_wi)
void ContextEGL::ResizeSurface(u32 new_surface_width /*= 0*/, u32 new_surface_height /*= 0*/) void ContextEGL::ResizeSurface(u32 new_surface_width /*= 0*/, u32 new_surface_height /*= 0*/)
{ {
// This seems to race on Android...
#ifndef ANDROID
EGLint surface_width, surface_height; EGLint surface_width, surface_height;
if (eglQuerySurface(m_display, m_surface, EGL_WIDTH, &surface_width) && if (eglQuerySurface(m_display, m_surface, EGL_WIDTH, &surface_width) &&
eglQuerySurface(m_display, m_surface, EGL_HEIGHT, &surface_height)) eglQuerySurface(m_display, m_surface, EGL_HEIGHT, &surface_height))
{ {
m_wi.surface_width = static_cast<u32>(surface_width); m_wi.surface_width = static_cast<u32>(surface_width);
m_wi.surface_height = static_cast<u32>(surface_height); m_wi.surface_height = static_cast<u32>(surface_height);
return;
} }
else else
{ {
Log_ErrorPrintf("eglQuerySurface() failed: %d", eglGetError()); Log_ErrorPrintf("eglQuerySurface() failed: %d", eglGetError());
m_wi.surface_width = new_surface_width;
m_wi.surface_height = new_surface_height;
} }
#endif
m_wi.surface_width = new_surface_width;
m_wi.surface_height = new_surface_height;
} }
bool ContextEGL::SwapBuffers() bool ContextEGL::SwapBuffers()

View File

@ -333,7 +333,9 @@ bool SwapChain::CreateSwapChain()
// Determine the dimensions of the swap chain. Values of -1 indicate the size we specify here // Determine the dimensions of the swap chain. Values of -1 indicate the size we specify here
// determines window size? // determines window size?
VkExtent2D size = surface_capabilities.currentExtent; VkExtent2D size = surface_capabilities.currentExtent;
#ifndef ANDROID
if (size.width == UINT32_MAX) if (size.width == UINT32_MAX)
#endif
{ {
size.width = m_wi.surface_width; size.width = m_wi.surface_width;
size.height = m_wi.surface_height; size.height = m_wi.surface_height;