You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-30 18:30:54 +00:00
Merge pull request #113656 from deralmas/gray-goo-scenario
Wayland: Work around window scale ambiguity
This commit is contained in:
@@ -1228,6 +1228,15 @@ Size2i DisplayServerWayland::window_get_size_with_decorations(DisplayServer::Win
|
||||
return windows[p_window_id].rect.size;
|
||||
}
|
||||
|
||||
float DisplayServerWayland::window_get_scale(WindowID p_window_id) const {
|
||||
MutexLock mutex_lock(wayland_thread.mutex);
|
||||
|
||||
const WaylandThread::WindowState *ws = wayland_thread.window_get_state(p_window_id);
|
||||
ERR_FAIL_NULL_V(ws, 1);
|
||||
|
||||
return wayland_thread.window_state_get_scale_factor(ws);
|
||||
}
|
||||
|
||||
void DisplayServerWayland::window_set_mode(WindowMode p_mode, DisplayServer::WindowID p_window_id) {
|
||||
MutexLock mutex_lock(wayland_thread.mutex);
|
||||
|
||||
|
||||
@@ -290,6 +290,8 @@ public:
|
||||
virtual Size2i window_get_size(WindowID p_window_id = MAIN_WINDOW_ID) const override;
|
||||
virtual Size2i window_get_size_with_decorations(WindowID p_window_id = MAIN_WINDOW_ID) const override;
|
||||
|
||||
virtual float window_get_scale(WindowID p_window_id = MAIN_WINDOW_ID) const override;
|
||||
|
||||
virtual void window_set_mode(WindowMode p_mode, WindowID p_window_id = MAIN_WINDOW_ID) override;
|
||||
virtual WindowMode window_get_mode(WindowID p_window_id = MAIN_WINDOW_ID) const override;
|
||||
|
||||
|
||||
@@ -3435,7 +3435,7 @@ int WaylandThread::window_state_get_preferred_buffer_scale(WindowState *p_ws) {
|
||||
return max_size;
|
||||
}
|
||||
|
||||
double WaylandThread::window_state_get_scale_factor(WindowState *p_ws) {
|
||||
double WaylandThread::window_state_get_scale_factor(const WindowState *p_ws) {
|
||||
ERR_FAIL_NULL_V(p_ws, 1);
|
||||
|
||||
if (p_ws->fractional_scale > 0) {
|
||||
@@ -3972,6 +3972,10 @@ WaylandThread::WindowState *WaylandThread::window_get_state(DisplayServer::Windo
|
||||
return windows.getptr(p_window_id);
|
||||
}
|
||||
|
||||
const WaylandThread::WindowState *WaylandThread::window_get_state(DisplayServer::WindowID p_window_id) const {
|
||||
return windows.getptr(p_window_id);
|
||||
}
|
||||
|
||||
void WaylandThread::beep() const {
|
||||
if (registry.xdg_system_bell) {
|
||||
xdg_system_bell_v1_ring(registry.xdg_system_bell, nullptr);
|
||||
|
||||
@@ -1079,7 +1079,7 @@ public:
|
||||
void seat_state_echo_keys(SeatState *p_ss);
|
||||
|
||||
static int window_state_get_preferred_buffer_scale(WindowState *p_ws);
|
||||
static double window_state_get_scale_factor(WindowState *p_ws);
|
||||
static double window_state_get_scale_factor(const WindowState *p_ws);
|
||||
static void window_state_update_size(WindowState *p_ws, int p_width, int p_height);
|
||||
|
||||
static Vector2i scale_vector2i(const Vector2i &p_vector, double p_amount);
|
||||
@@ -1100,6 +1100,7 @@ public:
|
||||
|
||||
struct wl_surface *window_get_wl_surface(DisplayServer::WindowID p_window_id) const;
|
||||
WindowState *window_get_state(DisplayServer::WindowID p_window_id);
|
||||
const WindowState *window_get_state(DisplayServer::WindowID p_window_id) const;
|
||||
|
||||
void window_start_resize(DisplayServer::WindowResizeEdge p_edge, DisplayServer::WindowID p_window);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user