Compare commits

..

1 Commits

Author SHA1 Message Date
DeaTh-G 12f2e6a42a implement fix for potential window size crash 2026-02-03 17:53:29 +01:00
7 changed files with 20 additions and 17 deletions
-2
View File
@@ -351,8 +351,6 @@ if (UNLEASHED_RECOMP_FLATPAK)
"GAME_INSTALL_DIRECTORY=\"/var/data\"" "GAME_INSTALL_DIRECTORY=\"/var/data\""
) )
endif() endif()
target_compile_definitions(UnleashedRecomp PRIVATE $<$<CONFIG:Debug>:UNLEASHED_RECOMP_DEBUG=1>)
find_package(CURL REQUIRED) find_package(CURL REQUIRED)
+5 -5
View File
@@ -3145,7 +3145,7 @@ static GuestTexture* CreateTexture(uint32_t width, uint32_t height, uint32_t dep
g_textureDescriptorSet->setTexture(texture->descriptorIndex, texture->texture, RenderTextureLayout::SHADER_READ, texture->textureView.get()); g_textureDescriptorSet->setTexture(texture->descriptorIndex, texture->texture, RenderTextureLayout::SHADER_READ, texture->textureView.get());
#ifdef UNLEASHED_RECOMP_DEBUG #ifdef _DEBUG
texture->texture->setName(fmt::format("Texture {:X}", g_memory.MapVirtual(texture))); texture->texture->setName(fmt::format("Texture {:X}", g_memory.MapVirtual(texture)));
#endif #endif
@@ -3162,7 +3162,7 @@ static GuestBuffer* CreateVertexBuffer(uint32_t length)
auto buffer = g_userHeap.AllocPhysical<GuestBuffer>(ResourceType::VertexBuffer); auto buffer = g_userHeap.AllocPhysical<GuestBuffer>(ResourceType::VertexBuffer);
buffer->buffer = g_device->createBuffer(RenderBufferDesc::VertexBuffer(length, GetBufferHeapType(), RenderBufferFlag::INDEX)); buffer->buffer = g_device->createBuffer(RenderBufferDesc::VertexBuffer(length, GetBufferHeapType(), RenderBufferFlag::INDEX));
buffer->dataSize = length; buffer->dataSize = length;
#ifdef UNLEASHED_RECOMP_DEBUG #ifdef _DEBUG
buffer->buffer->setName(fmt::format("Vertex Buffer {:X}", g_memory.MapVirtual(buffer))); buffer->buffer->setName(fmt::format("Vertex Buffer {:X}", g_memory.MapVirtual(buffer)));
#endif #endif
return buffer; return buffer;
@@ -3175,7 +3175,7 @@ static GuestBuffer* CreateIndexBuffer(uint32_t length, uint32_t, uint32_t format
buffer->dataSize = length; buffer->dataSize = length;
buffer->format = ConvertFormat(format); buffer->format = ConvertFormat(format);
buffer->guestFormat = format; buffer->guestFormat = format;
#ifdef UNLEASHED_RECOMP_DEBUG #ifdef _DEBUG
buffer->buffer->setName(fmt::format("Index Buffer {:X}", g_memory.MapVirtual(buffer))); buffer->buffer->setName(fmt::format("Index Buffer {:X}", g_memory.MapVirtual(buffer)));
#endif #endif
return buffer; return buffer;
@@ -3213,7 +3213,7 @@ static GuestSurface* CreateSurface(uint32_t width, uint32_t height, uint32_t for
surface->descriptorIndex = g_textureDescriptorAllocator.allocate(); surface->descriptorIndex = g_textureDescriptorAllocator.allocate();
g_textureDescriptorSet->setTexture(surface->descriptorIndex, surface->textureHolder.get(), RenderTextureLayout::SHADER_READ, surface->textureView.get()); g_textureDescriptorSet->setTexture(surface->descriptorIndex, surface->textureHolder.get(), RenderTextureLayout::SHADER_READ, surface->textureView.get());
#ifdef UNLEASHED_RECOMP_DEBUG #ifdef _DEBUG
surface->texture->setName(fmt::format("{} {:X}", desc.flags & RenderTextureFlag::RENDER_TARGET ? "Render Target" : "Depth Stencil", g_memory.MapVirtual(surface))); surface->texture->setName(fmt::format("{} {:X}", desc.flags & RenderTextureFlag::RENDER_TARGET ? "Render Target" : "Depth Stencil", g_memory.MapVirtual(surface)));
#endif #endif
@@ -5857,7 +5857,7 @@ static void MakePictureData(GuestPictureData* pictureData, uint8_t* data, uint32
if (LoadTexture(texture, data, dataSize, {})) if (LoadTexture(texture, data, dataSize, {}))
{ {
#ifdef UNLEASHED_RECOMP_DEBUG #ifdef _DEBUG
texture.texture->setName(reinterpret_cast<char*>(g_memory.Translate(pictureData->name + 2))); texture.texture->setName(reinterpret_cast<char*>(g_memory.Translate(pictureData->name + 2)));
#endif #endif
XXH64_hash_t hash = XXH3_64bits(data, dataSize); XXH64_hash_t hash = XXH3_64bits(data, dataSize);
+1 -1
View File
@@ -203,7 +203,7 @@ uint32_t XamShowMessageBoxUI(uint32_t dwUserIndex, be<uint16_t>* wszTitle, be<ui
{ {
*pResult = cButtons ? cButtons - 1 : 0; *pResult = cButtons ? cButtons - 1 : 0;
#if UNLEASHED_RECOMP_DEBUG #if _DEBUG
assert("XamShowMessageBoxUI encountered!" && false); assert("XamShowMessageBoxUI encountered!" && false);
#elif _WIN32 #elif _WIN32
// This code is Win32-only as it'll most likely crash, misbehave or // This code is Win32-only as it'll most likely crash, misbehave or
+4 -4
View File
@@ -11,7 +11,7 @@
#define LOG_WARNING(str) LOG_IMPL(Warning, __func__, str) #define LOG_WARNING(str) LOG_IMPL(Warning, __func__, str)
#define LOG_ERROR(str) LOG_IMPL(Error, __func__, str) #define LOG_ERROR(str) LOG_IMPL(Error, __func__, str)
#if UNLEASHED_RECOMP_DEBUG #if _DEBUG
#define LOG_UTILITY(str) LOG_IMPL(Utility, __func__, str) #define LOG_UTILITY(str) LOG_IMPL(Utility, __func__, str)
#else #else
#define LOG_UTILITY(str) #define LOG_UTILITY(str)
@@ -21,7 +21,7 @@
#define LOGF_WARNING(str, ...) LOGF_IMPL(Warning, __func__, str, __VA_ARGS__) #define LOGF_WARNING(str, ...) LOGF_IMPL(Warning, __func__, str, __VA_ARGS__)
#define LOGF_ERROR(str, ...) LOGF_IMPL(Error, __func__, str, __VA_ARGS__) #define LOGF_ERROR(str, ...) LOGF_IMPL(Error, __func__, str, __VA_ARGS__)
#if UNLEASHED_RECOMP_DEBUG #if _DEBUG
#define LOGF_UTILITY(str, ...) LOGF_IMPL(Utility, __func__, str, __VA_ARGS__) #define LOGF_UTILITY(str, ...) LOGF_IMPL(Utility, __func__, str, __VA_ARGS__)
#else #else
#define LOGF_UTILITY(str, ...) #define LOGF_UTILITY(str, ...)
@@ -33,7 +33,7 @@
#define LOGN_WARNING(str) LOG_IMPL(Warning, "*", str) #define LOGN_WARNING(str) LOG_IMPL(Warning, "*", str)
#define LOGN_ERROR(str) LOG_IMPL(Error, "*", str) #define LOGN_ERROR(str) LOG_IMPL(Error, "*", str)
#if UNLEASHED_RECOMP_DEBUG #if _DEBUG
#define LOGN_UTILITY(str) LOG_IMPL(Utility, "*", str) #define LOGN_UTILITY(str) LOG_IMPL(Utility, "*", str)
#else #else
#define LOGN_UTILITY(str) #define LOGN_UTILITY(str)
@@ -43,7 +43,7 @@
#define LOGFN_WARNING(str, ...) LOGF_IMPL(Warning, "*", str, __VA_ARGS__) #define LOGFN_WARNING(str, ...) LOGF_IMPL(Warning, "*", str, __VA_ARGS__)
#define LOGFN_ERROR(str, ...) LOGF_IMPL(Error, "*", str, __VA_ARGS__) #define LOGFN_ERROR(str, ...) LOGF_IMPL(Error, "*", str, __VA_ARGS__)
#if UNLEASHED_RECOMP_DEBUG #if _DEBUG
#define LOGFN_UTILITY(str, ...) LOGF_IMPL(Utility, "*", str, __VA_ARGS__) #define LOGFN_UTILITY(str, ...) LOGF_IMPL(Utility, "*", str, __VA_ARGS__)
#else #else
#define LOGFN_UTILITY(str, ...) #define LOGFN_UTILITY(str, ...)
+1 -1
View File
@@ -3,7 +3,7 @@
#define UNLEASHED_RECOMP_VERSION_BIN @WIN32_VERSION_BINARY@ #define UNLEASHED_RECOMP_VERSION_BIN @WIN32_VERSION_BINARY@
#define UNLEASHED_RECOMP_VERSION_STR "@WIN32_VERSION_STRING@" #define UNLEASHED_RECOMP_VERSION_STR "@WIN32_VERSION_STRING@"
#ifdef UNLEASHED_RECOMP_DEBUG #ifdef _DEBUG
#define UNLEASHED_RECOMP_FILE_FLAGS VS_FF_DEBUG #define UNLEASHED_RECOMP_FILE_FLAGS VS_FF_DEBUG
#else #else
#define UNLEASHED_RECOMP_FILE_FLAGS 0 #define UNLEASHED_RECOMP_FILE_FLAGS 0
+8 -3
View File
@@ -1255,9 +1255,14 @@ static void DrawConfigOptions()
case 3: // VIDEO case 3: // VIDEO
{ {
DrawConfigOption(rowCount++, yOffset, &Config::WindowSize, auto displayModeCount = (int32_t)GameWindow::GetDisplayModes().size();
!Config::Fullscreen, &Localise("Options_Desc_NotAvailableFullscreen"), auto canChangeWindowSize = !Config::Fullscreen && displayModeCount > 1;
0, 0, (int32_t)GameWindow::GetDisplayModes().size() - 1, false); auto windowSizeReason = &Localise("Options_Desc_NotAvailableFullscreen");
if (!Config::Fullscreen && displayModeCount <= 1)
windowSizeReason = &Localise("Options_Desc_NotAvailableHardware");
DrawConfigOption(rowCount++, yOffset, &Config::WindowSize, canChangeWindowSize, windowSizeReason, 0, 0, displayModeCount - 1, false);
auto displayCount = GameWindow::GetDisplayCount(); auto displayCount = GameWindow::GetDisplayCount();
auto canChangeMonitor = Config::Fullscreen && displayCount > 1; auto canChangeMonitor = Config::Fullscreen && displayCount > 1;
+1 -1
View File
@@ -817,7 +817,7 @@ void Config::Load()
{ {
def->ReadValue(toml); def->ReadValue(toml);
#if UNLEASHED_RECOMP_DEBUG #if _DEBUG
LOGFN_UTILITY("{} (0x{:X})", def->GetDefinition().c_str(), (intptr_t)def->GetValue()); LOGFN_UTILITY("{} (0x{:X})", def->GetDefinition().c_str(), (intptr_t)def->GetValue());
#endif #endif
} }