Merge pull request #83096 from bruvzg/macos_leak
[macOS] Use occlusionState instead of isOnActiveSpace to determine when window is drawable.
This commit is contained in:
commit
b6c351cc62
|
@ -119,6 +119,7 @@ public:
|
||||||
bool is_popup = false;
|
bool is_popup = false;
|
||||||
bool mpass = false;
|
bool mpass = false;
|
||||||
bool focused = false;
|
bool focused = false;
|
||||||
|
bool is_visible = true;
|
||||||
|
|
||||||
Rect2i parent_safe_rect;
|
Rect2i parent_safe_rect;
|
||||||
};
|
};
|
||||||
|
|
|
@ -3562,14 +3562,14 @@ bool DisplayServerMacOS::window_is_focused(WindowID p_window) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DisplayServerMacOS::window_can_draw(WindowID p_window) const {
|
bool DisplayServerMacOS::window_can_draw(WindowID p_window) const {
|
||||||
return (window_get_mode(p_window) != WINDOW_MODE_MINIMIZED) && [windows[p_window].window_object isOnActiveSpace];
|
return windows[p_window].is_visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DisplayServerMacOS::can_any_window_draw() const {
|
bool DisplayServerMacOS::can_any_window_draw() const {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
for (const KeyValue<WindowID, WindowData> &E : windows) {
|
for (const KeyValue<WindowID, WindowData> &E : windows) {
|
||||||
if ((window_get_mode(E.key) != WINDOW_MODE_MINIMIZED) && [E.value.window_object isOnActiveSpace]) {
|
if (E.value.is_visible) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -356,4 +356,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)windowDidChangeOcclusionState:(NSNotification *)notification {
|
||||||
|
DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton();
|
||||||
|
if (!ds || !ds->has_window(window_id)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DisplayServerMacOS::WindowData &wd = ds->get_window(window_id);
|
||||||
|
wd.is_visible = ([wd.window_object occlusionState] & NSWindowOcclusionStateVisible) && [wd.window_object isVisible];
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
Loading…
Reference in New Issue