Displays are now referenced by instance ID instead of index

This commit is contained in:
Sam Lantinga
2023-01-29 13:30:55 -08:00
parent 758c0dd6d8
commit 22c69bccdf
157 changed files with 1620 additions and 1589 deletions

View File

@@ -194,7 +194,7 @@ static void WIN_AdjustWindowRectWithStyle(SDL_Window *window, DWORD style, BOOL
static void WIN_AdjustWindowRect(SDL_Window *window, int *x, int *y, int *width, int *height, SDL_bool use_current)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
HWND hwnd = data->hwnd;
DWORD style;
BOOL menu;
@@ -210,7 +210,7 @@ static void WIN_AdjustWindowRect(SDL_Window *window, int *x, int *y, int *width,
static void WIN_SetWindowPositionInternal(_THIS, SDL_Window *window, UINT flags)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
HWND hwnd = data->hwnd;
HWND top;
int x, y;
@@ -278,7 +278,7 @@ static int WIN_GetScalingDPIForHWND(const SDL_VideoData *videodata, HWND hwnd)
static int SetupWindowData(_THIS, SDL_Window *window, HWND hwnd, HWND parent, SDL_bool created)
{
SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata;
SDL_VideoData *videodata = _this->driverdata;
SDL_WindowData *data;
/* Allocate the window data */
@@ -438,7 +438,7 @@ static int SetupWindowData(_THIS, SDL_Window *window, HWND hwnd, HWND parent, SD
static void CleanupWindowData(_THIS, SDL_Window *window)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
if (data) {
SDL_DelHintCallback(SDL_HINT_MOUSE_RELATIVE_MODE_CENTER, WIN_MouseRelativeModeCenterChanged, data);
@@ -613,7 +613,7 @@ int WIN_CreateWindowFrom(_THIS, SDL_Window *window, const void *data)
void WIN_SetWindowTitle(_THIS, SDL_Window *window)
{
#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
HWND hwnd = ((SDL_WindowData *)window->driverdata)->hwnd;
HWND hwnd = window->driverdata->hwnd;
LPTSTR title = WIN_UTF8ToString(window->title);
SetWindowText(hwnd, title);
SDL_free(title);
@@ -623,7 +623,7 @@ void WIN_SetWindowTitle(_THIS, SDL_Window *window)
void WIN_SetWindowIcon(_THIS, SDL_Window *window, SDL_Surface *icon)
{
#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
HWND hwnd = ((SDL_WindowData *)window->driverdata)->hwnd;
HWND hwnd = window->driverdata->hwnd;
HICON hicon = NULL;
BYTE *icon_bmp;
int icon_len, mask_len, row_len, y;
@@ -693,7 +693,7 @@ void WIN_SetWindowSize(_THIS, SDL_Window *window)
int WIN_GetWindowBordersSize(_THIS, SDL_Window *window, int *top, int *left, int *bottom, int *right)
{
#if defined(__XBOXONE__) || defined(__XBOXSERIES__)
HWND hwnd = ((SDL_WindowData *)window->driverdata)->hwnd;
HWND hwnd = window->driverdata->hwnd;
RECT rcClient;
/* rcClient stores the size of the inner window, while rcWindow stores the outer size relative to the top-left
@@ -707,7 +707,7 @@ int WIN_GetWindowBordersSize(_THIS, SDL_Window *window, int *top, int *left, int
return 0;
#else /*!defined(__XBOXONE__) && !defined(__XBOXSERIES__)*/
HWND hwnd = ((SDL_WindowData *)window->driverdata)->hwnd;
HWND hwnd = window->driverdata->hwnd;
RECT rcClient, rcWindow;
POINT ptDiff;
@@ -759,7 +759,7 @@ int WIN_GetWindowBordersSize(_THIS, SDL_Window *window, int *top, int *left, int
void WIN_GetWindowSizeInPixels(_THIS, SDL_Window *window, int *w, int *h)
{
const SDL_WindowData *data = ((SDL_WindowData *)window->driverdata);
const SDL_WindowData *data = window->driverdata;
HWND hwnd = data->hwnd;
RECT rect;
@@ -778,7 +778,7 @@ void WIN_ShowWindow(_THIS, SDL_Window *window)
HWND hwnd;
int nCmdShow;
hwnd = ((SDL_WindowData *)window->driverdata)->hwnd;
hwnd = window->driverdata->hwnd;
nCmdShow = SDL_GetHintBoolean(SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN, SDL_FALSE) ? SW_SHOWNA : SW_SHOW;
style = GetWindowLong(hwnd, GWL_EXSTYLE);
if (style & WS_EX_NOACTIVATE) {
@@ -789,7 +789,7 @@ void WIN_ShowWindow(_THIS, SDL_Window *window)
void WIN_HideWindow(_THIS, SDL_Window *window)
{
HWND hwnd = ((SDL_WindowData *)window->driverdata)->hwnd;
HWND hwnd = window->driverdata->hwnd;
ShowWindow(hwnd, SW_HIDE);
}
@@ -810,7 +810,7 @@ void WIN_RaiseWindow(_THIS, SDL_Window *window)
DWORD dwMyID = 0u;
DWORD dwCurID = 0u;
HWND hwnd = ((SDL_WindowData *)window->driverdata)->hwnd;
HWND hwnd = window->driverdata->hwnd;
if (bForce) {
hCurWnd = GetForegroundWindow();
dwMyID = GetCurrentThreadId();
@@ -831,7 +831,7 @@ void WIN_RaiseWindow(_THIS, SDL_Window *window)
void WIN_MaximizeWindow(_THIS, SDL_Window *window)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
HWND hwnd = data->hwnd;
data->expected_resize = SDL_TRUE;
ShowWindow(hwnd, SW_MAXIMIZE);
@@ -840,13 +840,13 @@ void WIN_MaximizeWindow(_THIS, SDL_Window *window)
void WIN_MinimizeWindow(_THIS, SDL_Window *window)
{
HWND hwnd = ((SDL_WindowData *)window->driverdata)->hwnd;
HWND hwnd = window->driverdata->hwnd;
ShowWindow(hwnd, SW_MINIMIZE);
}
void WIN_SetWindowBordered(_THIS, SDL_Window *window, SDL_bool bordered)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
HWND hwnd = data->hwnd;
DWORD style;
@@ -862,7 +862,7 @@ void WIN_SetWindowBordered(_THIS, SDL_Window *window, SDL_bool bordered)
void WIN_SetWindowResizable(_THIS, SDL_Window *window, SDL_bool resizable)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
HWND hwnd = data->hwnd;
DWORD style;
@@ -875,7 +875,7 @@ void WIN_SetWindowResizable(_THIS, SDL_Window *window, SDL_bool resizable)
void WIN_SetWindowAlwaysOnTop(_THIS, SDL_Window *window, SDL_bool on_top)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
HWND hwnd = data->hwnd;
if (on_top) {
SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
@@ -886,7 +886,7 @@ void WIN_SetWindowAlwaysOnTop(_THIS, SDL_Window *window, SDL_bool on_top)
void WIN_RestoreWindow(_THIS, SDL_Window *window)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
HWND hwnd = data->hwnd;
data->expected_resize = SDL_TRUE;
ShowWindow(hwnd, SW_RESTORE);
@@ -899,8 +899,8 @@ void WIN_RestoreWindow(_THIS, SDL_Window *window)
void WIN_SetWindowFullscreen(_THIS, SDL_Window *window, SDL_VideoDisplay *display, SDL_bool fullscreen)
{
#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
SDL_DisplayData *displaydata = (SDL_DisplayData *)display->driverdata;
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_DisplayData *displaydata = display->driverdata;
SDL_WindowData *data = window->driverdata;
HWND hwnd = data->hwnd;
MONITORINFO minfo;
DWORD style;
@@ -983,9 +983,8 @@ void WIN_SetWindowFullscreen(_THIS, SDL_Window *window, SDL_VideoDisplay *displa
#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
void WIN_UpdateWindowICCProfile(SDL_Window *window, SDL_bool send_event)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
SDL_DisplayData *displaydata = display ? (SDL_DisplayData *)display->driverdata : NULL;
SDL_WindowData *data = window->driverdata;
SDL_DisplayData *displaydata = SDL_GetDisplayDriverDataForWindow(window);
if (displaydata) {
HDC hdc = CreateDCW(displaydata->DeviceName, NULL, NULL, NULL);
@@ -1013,7 +1012,7 @@ void WIN_UpdateWindowICCProfile(SDL_Window *window, SDL_bool send_event)
void *
WIN_GetWindowICCProfile(_THIS, SDL_Window *window, size_t *size)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
char *filename_utf8;
void *iccProfileData = NULL;
@@ -1032,7 +1031,7 @@ WIN_GetWindowICCProfile(_THIS, SDL_Window *window, size_t *size)
static void WIN_GrabKeyboard(SDL_Window *window)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
HMODULE module;
if (data->keyboard_hook) {
@@ -1066,7 +1065,7 @@ static void WIN_GrabKeyboard(SDL_Window *window)
void WIN_UngrabKeyboard(SDL_Window *window)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
if (data->keyboard_hook) {
UnhookWindowsHookEx(data->keyboard_hook);
@@ -1192,7 +1191,7 @@ void SDL_HelperWindowDestroy(void)
#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
void WIN_OnWindowEnter(_THIS, SDL_Window *window)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
if (data == NULL || !data->hwnd) {
/* The window wasn't fully initialized */
@@ -1206,7 +1205,7 @@ void WIN_OnWindowEnter(_THIS, SDL_Window *window)
void WIN_UpdateClipCursor(SDL_Window *window)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
SDL_WindowData *data = window->driverdata;
SDL_Mouse *mouse = SDL_GetMouse();
RECT rect, clipped_rect;
@@ -1307,7 +1306,7 @@ int WIN_SetWindowOpacity(_THIS, SDL_Window *window, float opacity)
#if defined(__XBOXONE__) || defined(__XBOXSERIES__)
return -1;
#else
const SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
const SDL_WindowData *data = window->driverdata;
HWND hwnd = data->hwnd;
const LONG style = GetWindowLong(hwnd, GWL_EXSTYLE);
@@ -1345,7 +1344,7 @@ int WIN_SetWindowOpacity(_THIS, SDL_Window *window, float opacity)
*/
void WIN_ClientPointToSDL(const SDL_Window *window, int *x, int *y)
{
const SDL_WindowData *data = ((SDL_WindowData *)window->driverdata);
const SDL_WindowData *data = window->driverdata;
const SDL_VideoData *videodata = data->videodata;
if (!videodata->dpi_scaling_enabled) {
@@ -1358,7 +1357,7 @@ void WIN_ClientPointToSDL(const SDL_Window *window, int *x, int *y)
void WIN_ClientPointToSDLFloat(const SDL_Window *window, LONG x, LONG y, float *xOut, float *yOut)
{
const SDL_WindowData *data = ((SDL_WindowData *)window->driverdata);
const SDL_WindowData *data = window->driverdata;
const SDL_VideoData *videodata = data->videodata;
if (videodata->dpi_scaling_enabled) {
@@ -1377,7 +1376,7 @@ void WIN_ClientPointToSDLFloat(const SDL_Window *window, LONG x, LONG y, float *
*/
void WIN_ClientPointFromSDL(const SDL_Window *window, int *x, int *y)
{
const SDL_WindowData *data = ((SDL_WindowData *)window->driverdata);
const SDL_WindowData *data = window->driverdata;
const SDL_VideoData *videodata = data->videodata;
if (!videodata->dpi_scaling_enabled) {
@@ -1390,7 +1389,7 @@ void WIN_ClientPointFromSDL(const SDL_Window *window, int *x, int *y)
void WIN_ClientPointFromSDLFloat(const SDL_Window *window, float x, float y, LONG *xOut, LONG *yOut)
{
const SDL_WindowData *data = ((SDL_WindowData *)window->driverdata);
const SDL_WindowData *data = window->driverdata;
const SDL_VideoData *videodata = data->videodata;
if (videodata->dpi_scaling_enabled) {
@@ -1405,7 +1404,7 @@ void WIN_ClientPointFromSDLFloat(const SDL_Window *window, float x, float y, LON
#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
void WIN_AcceptDragAndDrop(SDL_Window *window, SDL_bool accept)
{
const SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
const SDL_WindowData *data = window->driverdata;
DragAcceptFiles(data->hwnd, accept ? TRUE : FALSE);
}
@@ -1415,7 +1414,7 @@ int WIN_FlashWindow(_THIS, SDL_Window *window, SDL_FlashOperation operation)
SDL_zero(desc);
desc.cbSize = sizeof(desc);
desc.hwnd = ((SDL_WindowData *)window->driverdata)->hwnd;
desc.hwnd = window->driverdata->hwnd;
switch (operation) {
case SDL_FLASH_CANCEL:
desc.dwFlags = FLASHW_STOP;