From 3c83ef4939dd79ce1444756db20f649f83668db2 Mon Sep 17 00:00:00 2001
From: Connor McLaughlin <stenzek@gmail.com>
Date: Sat, 10 Apr 2021 14:59:59 +1000
Subject: [PATCH] NoGUI: Fail startup if font atlas creation fails

---
 src/duckstation-nogui/nogui_host_interface.cpp |  6 ++++--
 src/frontend-common/common_host_interface.cpp  | 10 ++++------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/duckstation-nogui/nogui_host_interface.cpp b/src/duckstation-nogui/nogui_host_interface.cpp
index 005860161..70fd3934c 100644
--- a/src/duckstation-nogui/nogui_host_interface.cpp
+++ b/src/duckstation-nogui/nogui_host_interface.cpp
@@ -114,7 +114,8 @@ bool NoGUIHostInterface::CreateDisplay()
   if (!m_display->CreateRenderDevice(wi.value(), g_settings.gpu_adapter, g_settings.gpu_use_debug_device,
                                      g_settings.gpu_threaded_presentation) ||
       !m_display->InitializeRenderDevice(GetShaderCacheBasePath(), g_settings.gpu_use_debug_device,
-                                         g_settings.gpu_threaded_presentation))
+                                         g_settings.gpu_threaded_presentation) ||
+      !CreateHostDisplayResources())
   {
     m_display->DestroyRenderDevice();
     m_display.reset();
@@ -125,7 +126,8 @@ bool NoGUIHostInterface::CreateDisplay()
   if (!CreateHostDisplayResources())
     Log_WarningPrint("Failed to create host display resources");
 
-  Log_InfoPrintf("Host display initialized at %ux%u resolution", m_display->GetWindowWidth(), m_display->GetWindowHeight());
+  Log_InfoPrintf("Host display initialized at %ux%u resolution", m_display->GetWindowWidth(),
+                 m_display->GetWindowHeight());
   return true;
 }
 
diff --git a/src/frontend-common/common_host_interface.cpp b/src/frontend-common/common_host_interface.cpp
index 88dd4c27d..c8c071584 100644
--- a/src/frontend-common/common_host_interface.cpp
+++ b/src/frontend-common/common_host_interface.cpp
@@ -517,11 +517,6 @@ void CommonHostInterface::CreateImGuiContext()
 
 bool CommonHostInterface::CreateHostDisplayResources()
 {
-  m_logo_texture = m_display->CreateTexture(APP_ICON_WIDTH, APP_ICON_HEIGHT, 1, 1, 1, HostDisplayPixelFormat::RGBA8,
-                                            APP_ICON_DATA, sizeof(u32) * APP_ICON_WIDTH, false);
-  if (!m_logo_texture)
-    Log_WarningPrintf("Failed to create logo texture");
-
   const float framebuffer_scale = m_display->GetWindowScale();
   ImGui::GetIO().DisplayFramebufferScale = ImVec2(framebuffer_scale, framebuffer_scale);
   ImGui::GetIO().DisplaySize.x = static_cast<float>(m_display->GetWindowWidth());
@@ -548,13 +543,16 @@ bool CommonHostInterface::CreateHostDisplayResources()
   if (!m_fullscreen_ui_enabled)
     ImGuiFullscreen::ResetFonts();
 
-  if (!m_display->UpdateImGuiFontTexture())
+  m_logo_texture = m_display->CreateTexture(APP_ICON_WIDTH, APP_ICON_HEIGHT, 1, 1, 1, HostDisplayPixelFormat::RGBA8,
+                                            APP_ICON_DATA, sizeof(u32) * APP_ICON_WIDTH, false);
+  if (!m_logo_texture || !m_display->UpdateImGuiFontTexture())
   {
     Log_ErrorPrintf("Failed to create ImGui font text");
     if (m_fullscreen_ui_enabled)
       FullscreenUI::Shutdown();
 
     m_display->DestroyImGuiContext();
+    m_logo_texture.reset();
     return false;
   }