DBG_DEFAULT_CHANNEL(UserDisplay);
BOOL gbBaseVideo = 0;
+static PPROCESSINFO gpFullscreen = NULL;
static const PWCHAR KEY_VIDEO = L"\\Registry\\Machine\\HARDWARE\\DEVICEMAP\\VIDEO";
return Status;
}
+VOID
+UserUpdateFullscreen(
+ DWORD flags)
+{
+ if (flags & CDS_FULLSCREEN)
+ gpFullscreen = gptiCurrent->ppi;
+ else
+ gpFullscreen = NULL;
+}
+
LONG
APIENTRY
UserChangeDisplaySettings(
goto leave;
}
+ UserUpdateFullscreen(flags);
+
/* Update the system metrics */
InitMetrics();
return lResult;
}
+VOID
+UserDisplayNotifyShutdown(
+ PPROCESSINFO ppiCurrent)
+{
+ if (ppiCurrent == gpFullscreen)
+ {
+ UserChangeDisplaySettings(NULL, NULL, 0, NULL);
+ if (gpFullscreen)
+ ERR("Failed to restore display mode!\n");
+ }
+}
+
LONG
APIENTRY
NtUserChangeDisplaySettings(
return Status;
}
+VOID
+UserDisplayNotifyShutdown(PPROCESSINFO ppiCurrent);
+
NTSTATUS
NTAPI
ExitThreadCallback(PETHREAD Thread)
gptiForeground = NULL;
}
+ /* Restore display mode when we are the last thread, and we changed the display mode */
+ if (ppiCurrent->cThreads == 0)
+ UserDisplayNotifyShutdown(ppiCurrent);
+
+
// Fixes CORE-6384 & CORE-7030.
/* if (ptiLastInput == ptiCurrent)
{