mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-05-08 20:22:18 +00:00
Fixed crash if all displays have been disconnected
Fixes https://github.com/libsdl-org/SDL/issues/5867
This commit is contained in:
parent
12aa4d5653
commit
cb107bef58
|
@ -623,24 +623,24 @@ WIN_KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
static void WIN_CheckICMProfileChanged(SDL_Window* window)
|
static void WIN_CheckICMProfileChanged(SDL_Window* window)
|
||||||
{
|
{
|
||||||
SDL_VideoDisplay* display = SDL_GetDisplayForWindow(window);
|
SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
|
||||||
SDL_DisplayData* data = (SDL_DisplayData*)display->driverdata;
|
SDL_DisplayData *data = display ? (SDL_DisplayData*)display->driverdata : NULL;
|
||||||
static WCHAR currentIcmFileName[MAX_PATH] = { '\0' };
|
|
||||||
WCHAR icmFileName[MAX_PATH];
|
|
||||||
HDC hdc;
|
|
||||||
SDL_bool succeeded;
|
|
||||||
DWORD fileNameSize = MAX_PATH;
|
|
||||||
|
|
||||||
hdc = CreateDCW(data->DeviceName, NULL, NULL, NULL);
|
if (data) {
|
||||||
if (hdc) {
|
HDC hdc = CreateDCW(data->DeviceName, NULL, NULL, NULL);
|
||||||
succeeded = GetICMProfileW(hdc, &fileNameSize, icmFileName);
|
if (hdc) {
|
||||||
DeleteDC(hdc);
|
static WCHAR currentIcmFileName[MAX_PATH];
|
||||||
if (succeeded) {
|
WCHAR icmFileName[MAX_PATH];
|
||||||
|
DWORD fileNameSize = SDL_arraysize(icmFileName);
|
||||||
if (SDL_wcsncmp(currentIcmFileName, icmFileName, fileNameSize)) {
|
if (GetICMProfileW(hdc, &fileNameSize, icmFileName)) {
|
||||||
SDL_wcslcpy(currentIcmFileName, icmFileName, fileNameSize);
|
/* fileNameSize includes '\0' on return */
|
||||||
SDL_SendWindowEvent(window, SDL_WINDOWEVENT_ICCPROF_CHANGED, 0, 0);
|
fileNameSize *= sizeof(icmFileName[0]);
|
||||||
|
if (SDL_memcmp(currentIcmFileName, icmFileName, fileNameSize) != 0) {
|
||||||
|
SDL_memcpy(currentIcmFileName, icmFileName, fileNameSize);
|
||||||
|
SDL_SendWindowEvent(window, SDL_WINDOWEVENT_ICCPROF_CHANGED, 0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
DeleteDC(hdc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue