You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Merge pull request #104907 from bruvzg/scr_ids
Cleanup and unify `DisplayServer` screen methods and documentation.
This commit is contained in:
@@ -1718,13 +1718,16 @@ int DisplayServerMacOS::get_primary_screen() const {
|
||||
|
||||
int DisplayServerMacOS::get_keyboard_focus_screen() const {
|
||||
const NSUInteger index = [[NSScreen screens] indexOfObject:[NSScreen mainScreen]];
|
||||
return (index == NSNotFound) ? 0 : index;
|
||||
return (index == NSNotFound) ? get_primary_screen() : index;
|
||||
}
|
||||
|
||||
Point2i DisplayServerMacOS::screen_get_position(int p_screen) const {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
p_screen = _get_screen_index(p_screen);
|
||||
int screen_count = get_screen_count();
|
||||
ERR_FAIL_INDEX_V(p_screen, screen_count, Point2i());
|
||||
|
||||
Point2i position = _get_native_screen_position(p_screen) - _get_screens_origin();
|
||||
// macOS native y-coordinate relative to _get_screens_origin() is negative,
|
||||
// Godot expects a positive value.
|
||||
@@ -1736,6 +1739,9 @@ Size2i DisplayServerMacOS::screen_get_size(int p_screen) const {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
p_screen = _get_screen_index(p_screen);
|
||||
int screen_count = get_screen_count();
|
||||
ERR_FAIL_INDEX_V(p_screen, screen_count, Size2i());
|
||||
|
||||
NSArray *screenArray = [NSScreen screens];
|
||||
if ((NSUInteger)p_screen < [screenArray count]) {
|
||||
// Note: Use frame to get the whole screen size.
|
||||
@@ -1750,6 +1756,9 @@ int DisplayServerMacOS::screen_get_dpi(int p_screen) const {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
p_screen = _get_screen_index(p_screen);
|
||||
int screen_count = get_screen_count();
|
||||
ERR_FAIL_INDEX_V(p_screen, screen_count, 72);
|
||||
|
||||
NSArray *screenArray = [NSScreen screens];
|
||||
if ((NSUInteger)p_screen < [screenArray count]) {
|
||||
NSDictionary *description = [[screenArray objectAtIndex:p_screen] deviceDescription];
|
||||
@@ -1771,6 +1780,9 @@ float DisplayServerMacOS::screen_get_scale(int p_screen) const {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
p_screen = _get_screen_index(p_screen);
|
||||
int screen_count = get_screen_count();
|
||||
ERR_FAIL_INDEX_V(p_screen, screen_count, 1.0f);
|
||||
|
||||
if (OS::get_singleton()->is_hidpi_allowed()) {
|
||||
NSArray<NSScreen *> *screens = NSScreen.screens;
|
||||
NSUInteger index = (NSUInteger)p_screen;
|
||||
@@ -1793,6 +1805,9 @@ Rect2i DisplayServerMacOS::screen_get_usable_rect(int p_screen) const {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
p_screen = _get_screen_index(p_screen);
|
||||
int screen_count = get_screen_count();
|
||||
ERR_FAIL_INDEX_V(p_screen, screen_count, Rect2i());
|
||||
|
||||
NSArray *screenArray = [NSScreen screens];
|
||||
if ((NSUInteger)p_screen < [screenArray count]) {
|
||||
const float scale = screen_get_max_scale();
|
||||
@@ -1849,7 +1864,9 @@ Color DisplayServerMacOS::screen_get_pixel(const Point2i &p_position) const {
|
||||
}
|
||||
|
||||
Ref<Image> DisplayServerMacOS::screen_get_image(int p_screen) const {
|
||||
ERR_FAIL_INDEX_V(p_screen, get_screen_count(), Ref<Image>());
|
||||
p_screen = _get_screen_index(p_screen);
|
||||
int screen_count = get_screen_count();
|
||||
ERR_FAIL_INDEX_V(p_screen, screen_count, Ref<Image>());
|
||||
|
||||
HashSet<CGWindowID> exclude_windows;
|
||||
for (HashMap<WindowID, WindowData>::ConstIterator E = windows.begin(); E; ++E) {
|
||||
@@ -1950,6 +1967,9 @@ float DisplayServerMacOS::screen_get_refresh_rate(int p_screen) const {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
p_screen = _get_screen_index(p_screen);
|
||||
int screen_count = get_screen_count();
|
||||
ERR_FAIL_INDEX_V(p_screen, screen_count, SCREEN_REFRESH_RATE_FALLBACK);
|
||||
|
||||
NSArray *screenArray = [NSScreen screens];
|
||||
if ((NSUInteger)p_screen < [screenArray count]) {
|
||||
NSDictionary *description = [[screenArray objectAtIndex:p_screen] deviceDescription];
|
||||
@@ -2144,7 +2164,7 @@ void DisplayServerMacOS::window_set_mouse_passthrough(const Vector<Vector2> &p_r
|
||||
|
||||
int DisplayServerMacOS::window_get_current_screen(WindowID p_window) const {
|
||||
_THREAD_SAFE_METHOD_
|
||||
ERR_FAIL_COND_V(!windows.has(p_window), -1);
|
||||
ERR_FAIL_COND_V(!windows.has(p_window), INVALID_SCREEN);
|
||||
const WindowData &wd = windows[p_window];
|
||||
|
||||
const NSUInteger index = [[NSScreen screens] indexOfObject:[wd.window_object screen]];
|
||||
@@ -2155,11 +2175,15 @@ void DisplayServerMacOS::window_set_current_screen(int p_screen, WindowID p_wind
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
ERR_FAIL_COND(!windows.has(p_window));
|
||||
WindowData &wd = windows[p_window];
|
||||
|
||||
p_screen = _get_screen_index(p_screen);
|
||||
int screen_count = get_screen_count();
|
||||
ERR_FAIL_INDEX(p_screen, screen_count);
|
||||
|
||||
if (window_get_current_screen(p_window) == p_screen) {
|
||||
return;
|
||||
}
|
||||
WindowData &wd = windows[p_window];
|
||||
|
||||
bool was_fullscreen = false;
|
||||
if (wd.fullscreen) {
|
||||
|
||||
Reference in New Issue
Block a user