From 927c4d4aa45d79d6e0235a8f85b41f77c39d135b Mon Sep 17 00:00:00 2001
From: Shawn Hoffman <[EMAIL REDACTED]>
Date: Thu, 22 Dec 2022 00:12:03 -0800
Subject: [PATCH] fix string literal constness warnings
# Conflicts:
# src/video/winrt/SDL_winrtvideo.cpp
---
src/video/winrt/SDL_winrtgamebar.cpp | 2 +-
src/video/winrt/SDL_winrtvideo.cpp | 36 +++++++++++++++-------------
2 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/src/video/winrt/SDL_winrtgamebar.cpp b/src/video/winrt/SDL_winrtgamebar.cpp
index bd10f8d601a2..b0edc8c16781 100644
--- a/src/video/winrt/SDL_winrtgamebar.cpp
+++ b/src/video/winrt/SDL_winrtgamebar.cpp
@@ -78,7 +78,7 @@ static GUID IID_IGameBarStatics_ = { MAKELONG(0xA292, 0x1DB9), 0xCC78, 0x4173, {
*/
static IGameBarStatics_ *WINRT_GetGameBar()
{
- wchar_t *wClassName = L"Windows.Gaming.UI.GameBar";
+ const wchar_t *wClassName = L"Windows.Gaming.UI.GameBar";
HSTRING hClassName;
IActivationFactory *pActivationFactory = NULL;
IGameBarStatics_ *pGameBar = NULL;
diff --git a/src/video/winrt/SDL_winrtvideo.cpp b/src/video/winrt/SDL_winrtvideo.cpp
index 5551accf5aa2..ba5f82b502d1 100644
--- a/src/video/winrt/SDL_winrtvideo.cpp
+++ b/src/video/winrt/SDL_winrtvideo.cpp
@@ -30,16 +30,16 @@
/* Standard C++11 includes */
#include <functional>
-#include <string>
#include <sstream>
+#include <string>
using namespace std;
/* Windows includes */
#include <agile.h>
-#include <windows.graphics.display.h>
-#include <windows.system.display.h>
#include <dxgi.h>
#include <dxgi1_2.h>
+#include <windows.graphics.display.h>
+#include <windows.system.display.h>
using namespace Windows::ApplicationModel::Core;
using namespace Windows::Foundation;
using namespace Windows::Graphics::Display;
@@ -52,20 +52,20 @@ static const GUID SDL_IID_IDXGIFactory2 = { 0x50c83a1c, 0xe072, 0x4c48, { 0x87,
/* SDL includes */
extern "C" {
-#include "../SDL_sysvideo.h"
-#include "../SDL_pixels_c.h"
+#include "../../core/windows/SDL_windows.h"
#include "../../events/SDL_events_c.h"
#include "../../render/SDL_sysrender.h"
+#include "../SDL_pixels_c.h"
+#include "../SDL_sysvideo.h"
#include "SDL_winrtopengles.h"
-#include "../../core/windows/SDL_windows.h"
}
#include "../../core/winrt/SDL_winrtapp_direct3d.h"
#include "../../core/winrt/SDL_winrtapp_xaml.h"
-#include "SDL_winrtvideo_cpp.h"
#include "SDL_winrtevents_c.h"
#include "SDL_winrtgamebar_cpp.h"
#include "SDL_winrtmouse_c.h"
+#include "SDL_winrtvideo_cpp.h"
#define SDL_ENABLE_SYSWM_WINRT
#include <SDL3/SDL_syswm.h>
@@ -266,7 +266,6 @@ static int WINRT_AddDisplaysForOutput(_THIS, IDXGIAdapter1 *dxgiAdapter1, int ou
IDXGIOutput *dxgiOutput = NULL;
DXGI_OUTPUT_DESC dxgiOutputDesc;
SDL_VideoDisplay display;
- char *displayName = NULL;
UINT numModes;
DXGI_MODE_DESC *dxgiModes = NULL;
int functionResult = -1; /* -1 for failure, 0 for success */
@@ -304,7 +303,7 @@ static int WINRT_AddDisplaysForOutput(_THIS, IDXGIAdapter1 *dxgiAdapter1, int ou
*/
SDL_DisplayMode mode;
SDL_zero(mode);
- display.name = "Windows Simulator / Terminal Services Display";
+ display.name = SDL_strdup("Windows Simulator / Terminal Services Display");
mode.w = (dxgiOutputDesc.DesktopCoordinates.right - dxgiOutputDesc.DesktopCoordinates.left);
mode.h = (dxgiOutputDesc.DesktopCoordinates.bottom - dxgiOutputDesc.DesktopCoordinates.top);
mode.format = DXGI_FORMAT_B8G8R8A8_UNORM;
@@ -318,8 +317,7 @@ static int WINRT_AddDisplaysForOutput(_THIS, IDXGIAdapter1 *dxgiAdapter1, int ou
WIN_SetErrorFromHRESULT(__FUNCTION__ ", IDXGIOutput::FindClosestMatchingMode failed", hr);
goto done;
} else {
- displayName = WIN_StringToUTF8(dxgiOutputDesc.DeviceName);
- display.name = displayName;
+ display.name = WIN_StringToUTF8(dxgiOutputDesc.DeviceName);
WINRT_DXGIModeToSDLDisplayMode(&closestMatch, &display.desktop_mode);
display.current_mode = display.desktop_mode;
@@ -363,8 +361,8 @@ static int WINRT_AddDisplaysForOutput(_THIS, IDXGIAdapter1 *dxgiAdapter1, int ou
if (dxgiOutput) {
dxgiOutput->Release();
}
- if (displayName) {
- SDL_free(displayName);
+ if (display.name) {
+ SDL_free(display.name);
}
return functionResult;
}
@@ -408,7 +406,7 @@ static int WINRT_AddDisplaysForAdapter(_THIS, IDXGIFactory2 *dxgiFactory2, int a
CoreWindow ^ coreWin = CoreWindow::GetForCurrentThread();
SDL_zero(display);
SDL_zero(mode);
- display.name = "DXGI Display-detection Workaround";
+ display.name = SDL_strdup("DXGI Display-detection Workaround");
/* HACK: ApplicationView's VisibleBounds property, appeared, via testing, to
give a better approximation of display-size, than did CoreWindow's
@@ -432,8 +430,12 @@ static int WINRT_AddDisplaysForAdapter(_THIS, IDXGIFactory2 *dxgiFactory2, int a
mode.refresh_rate = 0; /* Display mode is unknown, so just fill in zero, as specified by SDL's header files */
display.desktop_mode = mode;
display.current_mode = mode;
- if ((SDL_AddDisplayMode(&display, &mode) < 0) ||
- (SDL_AddVideoDisplay(&display, SDL_FALSE) < 0)) {
+ bool error = SDL_AddDisplayMode(&display, &mode) < 0 ||
+ SDL_AddVideoDisplay(&display, SDL_FALSE) < 0;
+ if (display.name) {
+ SDL_free(display.name);
+ }
+ if (error) {
return SDL_SetError("Failed to apply DXGI Display-detection workaround");
}
}
@@ -803,7 +805,7 @@ int WINRT_GetWindowWMInfo(_THIS, SDL_Window *window, SDL_SysWMinfo *info)
static ABI::Windows::System::Display::IDisplayRequest *WINRT_CreateDisplayRequest(_THIS)
{
/* Setup a WinRT DisplayRequest object, usable for enabling/disabling screensaver requests */
- wchar_t *wClassName = L"Windows.System.Display.DisplayRequest";
+ const wchar_t *wClassName = L"Windows.System.Display.DisplayRequest";
HSTRING hClassName;
IActivationFactory *pActivationFactory = NULL;
IInspectable *pDisplayRequestRaw = nullptr;