From 30a34d06c18bf0d41ae10a3c62a30ac2dbda5dd7 Mon Sep 17 00:00:00 2001 From: Pokechu22 Date: Sun, 16 Jan 2022 19:15:26 -0800 Subject: [PATCH 1/3] RenderBase: Add call to IMGUI_CHECKVERSION() --- Source/Core/VideoCommon/RenderBase.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index bdd585135b..861c69d985 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -971,6 +971,11 @@ void Renderer::RecordVideoMemory() bool Renderer::InitializeImGui() { + if (!IMGUI_CHECKVERSION()) + { + PanicAlertFmt("ImGui version check failed"); + return false; + } if (!ImGui::CreateContext()) { PanicAlertFmt("Creating ImGui context failed"); From 9e19d10f9d6f0115a03588993b89649885022677 Mon Sep 17 00:00:00 2001 From: Pokechu22 Date: Sun, 16 Jan 2022 19:19:45 -0800 Subject: [PATCH 2/3] Externals: Enable IMGUI_DISABLE_OBSOLETE_FUNCTIONS --- Externals/imgui/imconfig.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals/imgui/imconfig.h b/Externals/imgui/imconfig.h index 7082c55075..f255601704 100644 --- a/Externals/imgui/imconfig.h +++ b/Externals/imgui/imconfig.h @@ -27,7 +27,7 @@ //#define IMGUI_API __declspec( dllimport ) //---- Don't define obsolete functions/enums/behaviors. Consider enabling from time to time after updating to avoid using soon-to-be obsolete function/names. -//#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS +#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS //---- Disable all of Dear ImGui or don't implement standard windows. // It is very strongly recommended to NOT disable the demo windows during development. Please read comments in imgui_demo.cpp. From 72c7977c7227217f1454e1115ebfb987c4c7efc5 Mon Sep 17 00:00:00 2001 From: Pokechu22 Date: Sun, 16 Jan 2022 19:49:15 -0800 Subject: [PATCH 3/3] Externals: Use Common ASSERT for IM_ASSERT This does introduce a dependency on common and on fmt from imgui, but gives a better experience. --- Externals/imgui/CMakeLists.txt | 9 +++++++++ Externals/imgui/README.txt | 1 + Externals/imgui/imconfig.h | 5 +++-- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 Externals/imgui/README.txt diff --git a/Externals/imgui/CMakeLists.txt b/Externals/imgui/CMakeLists.txt index e3c3c8c99f..b3d48432a1 100644 --- a/Externals/imgui/CMakeLists.txt +++ b/Externals/imgui/CMakeLists.txt @@ -1,3 +1,7 @@ +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + set(SRCS imgui.cpp imgui_draw.cpp @@ -8,3 +12,8 @@ set(SRCS add_library(imgui STATIC ${SRCS}) target_include_directories(imgui PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") +target_link_libraries(imgui +PRIVATE + common + fmt::fmt +) diff --git a/Externals/imgui/README.txt b/Externals/imgui/README.txt new file mode 100644 index 0000000000..0380b1f3b8 --- /dev/null +++ b/Externals/imgui/README.txt @@ -0,0 +1 @@ +When updating, make sure to preserve changes to imconfig.h. Dolphin modifies it to use a custom assertion handler and to tweak settings. diff --git a/Externals/imgui/imconfig.h b/Externals/imgui/imconfig.h index f255601704..5cdc92ecaa 100644 --- a/Externals/imgui/imconfig.h +++ b/Externals/imgui/imconfig.h @@ -14,10 +14,11 @@ #pragma once +#include "Common/Assert.h" + //---- Define assertion handler. Defaults to calling assert(). // If your macro uses multiple statements, make sure is enclosed in a 'do { .. } while (0)' block so it can be used as a single statement. -//#define IM_ASSERT(_EXPR) MyAssert(_EXPR) -//#define IM_ASSERT(_EXPR) ((void)(_EXPR)) // Disable asserts +#define IM_ASSERT(_EXPR) ASSERT(_EXPR) //---- Define attributes of all API symbols declarations, e.g. for DLL under Windows // Using Dear ImGui via a shared library is not recommended, because of function call overhead and because we don't guarantee backward nor forward ABI compatibility.