mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-31 14:29:14 +08:00
windows: Add property mapping displayID to HMONITOR. (#14494)
This commit is contained in:
@@ -665,6 +665,11 @@ extern SDL_DECLSPEC SDL_DisplayID SDLCALL SDL_GetPrimaryDisplay(void);
|
|||||||
* - `SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER`: the wl_output associated
|
* - `SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER`: the wl_output associated
|
||||||
* with the display
|
* with the display
|
||||||
*
|
*
|
||||||
|
* On Windows:
|
||||||
|
*
|
||||||
|
* - `SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER`: the monitor handle (HMONITOR)
|
||||||
|
* associated with the display
|
||||||
|
*
|
||||||
* \param displayID the instance ID of the display to query.
|
* \param displayID the instance ID of the display to query.
|
||||||
* \returns a valid property ID on success or 0 on failure; call
|
* \returns a valid property ID on success or 0 on failure; call
|
||||||
* SDL_GetError() for more information.
|
* SDL_GetError() for more information.
|
||||||
@@ -678,6 +683,7 @@ extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_GetDisplayProperties(SDL_Displa
|
|||||||
#define SDL_PROP_DISPLAY_HDR_ENABLED_BOOLEAN "SDL.display.HDR_enabled"
|
#define SDL_PROP_DISPLAY_HDR_ENABLED_BOOLEAN "SDL.display.HDR_enabled"
|
||||||
#define SDL_PROP_DISPLAY_KMSDRM_PANEL_ORIENTATION_NUMBER "SDL.display.KMSDRM.panel_orientation"
|
#define SDL_PROP_DISPLAY_KMSDRM_PANEL_ORIENTATION_NUMBER "SDL.display.KMSDRM.panel_orientation"
|
||||||
#define SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER "SDL.display.wayland.wl_output"
|
#define SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER "SDL.display.wayland.wl_output"
|
||||||
|
#define SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER "SDL.display.windows.hmonitor"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the name of a display in UTF-8 encoding.
|
* Get the name of a display in UTF-8 encoding.
|
||||||
|
|||||||
@@ -605,6 +605,9 @@ static void WIN_AddDisplay(SDL_VideoDevice *_this, HMONITOR hMonitor, const MONI
|
|||||||
internal->MonitorHandle = hMonitor;
|
internal->MonitorHandle = hMonitor;
|
||||||
internal->state = DisplayUnchanged;
|
internal->state = DisplayUnchanged;
|
||||||
|
|
||||||
|
SDL_PropertiesID props = SDL_GetDisplayProperties(_this->displays[i]->id);
|
||||||
|
SDL_SetPointerProperty(props, SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER, hMonitor);
|
||||||
|
|
||||||
if (!_this->setting_display_mode) {
|
if (!_this->setting_display_mode) {
|
||||||
SDL_VideoDisplay *existing_display = _this->displays[i];
|
SDL_VideoDisplay *existing_display = _this->displays[i];
|
||||||
SDL_Rect bounds;
|
SDL_Rect bounds;
|
||||||
@@ -665,6 +668,9 @@ static void WIN_AddDisplay(SDL_VideoDevice *_this, HMONITOR hMonitor, const MONI
|
|||||||
if (SDL_AddVideoDisplay(&display, false)) {
|
if (SDL_AddVideoDisplay(&display, false)) {
|
||||||
// The mode is owned by the video subsystem
|
// The mode is owned by the video subsystem
|
||||||
mode.internal = NULL;
|
mode.internal = NULL;
|
||||||
|
|
||||||
|
SDL_PropertiesID props = SDL_GetDisplayProperties(display.id);
|
||||||
|
SDL_SetPointerProperty(props, SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER, hMonitor);
|
||||||
} else {
|
} else {
|
||||||
SDL_free(displaydata);
|
SDL_free(displaydata);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user