diff --git a/Common/MsgHandler.cpp b/Common/MsgHandler.cpp index b53d79d41a..f2ec4dcadd 100644 --- a/Common/MsgHandler.cpp +++ b/Common/MsgHandler.cpp @@ -24,9 +24,9 @@ #include "base/logging.h" #include "util/text/utf8.h" -bool MsgHandler(const char *caption, const char *text, bool yes_no, int Style); +bool MsgHandler(const char *caption, const char *text, const char *file, int line, bool yes_no, int Style); -bool MsgAlert(bool yes_no, int Style, const char* format, ...) { +bool MsgAlert(bool yes_no, int Style, const char *file, int line, const char* format, ...) { // Read message and write it to the log char buffer[2048]; static const char *captions[] = { @@ -42,10 +42,10 @@ bool MsgAlert(bool yes_no, int Style, const char* format, ...) { CharArrayFromFormatV(buffer, sizeof(buffer)-1, format, args); va_end(args); // Normal logging (will also log to Android log) - ERROR_LOG(SYSTEM, "%s: %s", caption, buffer); + ERROR_LOG(SYSTEM, "(%s:%d) %s: %s", file, line, caption, buffer); // Don't ignore questions, especially AskYesNo, PanicYesNo could be ignored if (Style == QUESTION || Style == CRITICAL) - return MsgHandler(caption, buffer, yes_no, Style); + return MsgHandler(caption, buffer, file, line, yes_no, Style); return true; } @@ -54,7 +54,7 @@ bool MsgAlert(bool yes_no, int Style, const char* format, ...) { #endif // Default non library dependent panic alert -bool MsgHandler(const char* caption, const char* text, bool yes_no, int Style) { +bool MsgHandler(const char* caption, const char* text, const char *file, int line, bool yes_no, int Style) { #if defined(USING_WIN_UI) int msgBoxStyle = MB_ICONINFORMATION; if (Style == QUESTION) msgBoxStyle = MB_ICONQUESTION; @@ -69,7 +69,7 @@ bool MsgHandler(const char* caption, const char* text, bool yes_no, int Style) { return false; #else // Will use android-log if available, printf if not. - ELOG("%s", text); + ELOG("(%s:%d) %s", file, line, text); return false; #endif } diff --git a/Common/MsgHandler.h b/Common/MsgHandler.h index ee28d8ea33..4f453172c9 100644 --- a/Common/MsgHandler.h +++ b/Common/MsgHandler.h @@ -25,13 +25,13 @@ enum MSG_TYPE { CRITICAL }; -bool MsgAlert(bool yes_no, int Style, const char* format, ...) +bool MsgAlert(bool yes_no, int Style, const char *file, int line, const char* format, ...) #ifdef __GNUC__ - __attribute__((format(printf, 3, 4))) + __attribute__((format(printf, 5, 6))) #endif ; -#define PanicAlert(...) MsgAlert(false, WARNING, __VA_ARGS__) +#define PanicAlert(...) MsgAlert(false, WARNING, __FILE__, __LINE__, __VA_ARGS__) // Used only for asserts. -#define PanicYesNo(...) MsgAlert(true, CRITICAL, __VA_ARGS__) +#define PanicYesNo(...) MsgAlert(true, CRITICAL, __FILE__, __LINE__, __VA_ARGS__) diff --git a/ext/native/thin3d/VulkanRenderManager.cpp b/ext/native/thin3d/VulkanRenderManager.cpp index 573f0ce6c5..e80cefaedb 100644 --- a/ext/native/thin3d/VulkanRenderManager.cpp +++ b/ext/native/thin3d/VulkanRenderManager.cpp @@ -1033,7 +1033,7 @@ void VulkanRenderManager::BeginSubmitFrame(int frame) { WLOG("VK_SUBOPTIMAL_KHR returned - ignoring"); outOfDateFrames_++; } else if (res == VK_ERROR_OUT_OF_DATE_KHR) { - WLOG("VK_ERROR_OUT_OF_DATE_KHR returned - not presenting"); + WLOG("VK_ERROR_OUT_OF_DATE_KHR returned - processing the frame, but not presenting"); frameData.skipSwap = true; outOfDateFrames_++; } else { @@ -1079,11 +1079,7 @@ void VulkanRenderManager::Submit(int frame, bool triggerFence) { submit_info.pCommandBuffers = cmdBufs; res = vkQueueSubmit(vulkan_->GetGraphicsQueue(), 1, &submit_info, VK_NULL_HANDLE); if (res == VK_ERROR_DEVICE_LOST) { -#ifdef _WIN32 - _assert_msg_(G3D, false, "Lost the Vulkan device! If this happens again, switch Graphics Backend from Vulkan to Direct3D11"); -#else - _assert_msg_(G3D, false, "Lost the Vulkan device! If this happens again, switch Graphics Backend from Vulkan to OpenGL"); -#endif + _assert_msg_(G3D, false, "Lost the Vulkan device in split submit! If this happens again, switch Graphics Backend away from Vulkan"); } else { _assert_msg_(G3D, res == VK_SUCCESS, "vkQueueSubmit failed (init)! result=%s", VulkanResultToString(res)); } @@ -1107,11 +1103,7 @@ void VulkanRenderManager::Submit(int frame, bool triggerFence) { } res = vkQueueSubmit(vulkan_->GetGraphicsQueue(), 1, &submit_info, triggerFence ? frameData.fence : VK_NULL_HANDLE); if (res == VK_ERROR_DEVICE_LOST) { -#ifdef _WIN32 - _assert_msg_(G3D, false, "Lost the Vulkan device! If this happens again, switch Graphics Backend from Vulkan to Direct3D11"); -#else - _assert_msg_(G3D, false, "Lost the Vulkan device! If this happens again, switch Graphics Backend from Vulkan to OpenGL"); -#endif + _assert_msg_(G3D, false, "Lost the Vulkan device in vkQueueSubmit! If this happens again, switch Graphics Backend away from Vulkan"); } else { _assert_msg_(G3D, res == VK_SUCCESS, "vkQueueSubmit failed (main, split=%d)! result=%s", (int)splitSubmit_, VulkanResultToString(res)); }