Skip to content

Commit 241d45d

Browse files
committed
Merge pull request godotengine#92731 from bruvzg/vp_oversmpling_upd
Force canvas item update on oversampling change.
2 parents 2f26842 + 9fb9660 commit 241d45d

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

scene/main/viewport.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -975,7 +975,7 @@ void Viewport::update_canvas_items() {
975975
_update_canvas_items(this);
976976
}
977977

978-
void Viewport::_set_size(const Size2i &p_size, const Size2i &p_size_2d_override, bool p_allocated) {
978+
bool Viewport::_set_size(const Size2i &p_size, const Size2i &p_size_2d_override, bool p_allocated) {
979979
Transform2D stretch_transform_new = Transform2D();
980980
if (is_size_2d_override_stretch_enabled() && p_size_2d_override.width > 0 && p_size_2d_override.height > 0) {
981981
Size2 scale = Size2(p_size) / Size2(p_size_2d_override);
@@ -984,7 +984,7 @@ void Viewport::_set_size(const Size2i &p_size, const Size2i &p_size_2d_override,
984984

985985
Size2i new_size = p_size.maxi(2);
986986
if (size == new_size && size_allocated == p_allocated && stretch_transform == stretch_transform_new && p_size_2d_override == size_2d_override) {
987-
return;
987+
return false;
988988
}
989989

990990
size = new_size;
@@ -1027,6 +1027,7 @@ void Viewport::_set_size(const Size2i &p_size, const Size2i &p_size_2d_override,
10271027
sw->set_size(new_rect.size);
10281028
}
10291029
}
1030+
return true;
10301031
}
10311032

10321033
Size2i Viewport::_get_size() const {

scene/main/viewport.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ class Viewport : public Node {
475475
void _propagate_world_2d_changed(Node *p_node);
476476

477477
protected:
478-
void _set_size(const Size2i &p_size, const Size2i &p_size_2d_override, bool p_allocated);
478+
bool _set_size(const Size2i &p_size, const Size2i &p_size_2d_override, bool p_allocated);
479479

480480
Size2i _get_size() const;
481481
Size2i _get_size_2d_override() const;

scene/main/window.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,7 +1096,7 @@ void Window::_update_viewport_size() {
10961096
Size2i final_size;
10971097
Size2i final_size_override;
10981098
Rect2i attach_to_screen_rect(Point2i(), size);
1099-
float font_oversampling = 1.0;
1099+
double font_oversampling = 1.0;
11001100
window_transform = Transform2D();
11011101

11021102
if (content_scale_stretch == Window::CONTENT_SCALE_STRETCH_INTEGER) {
@@ -1215,7 +1215,7 @@ void Window::_update_viewport_size() {
12151215
}
12161216

12171217
bool allocate = is_inside_tree() && visible && (window_id != DisplayServer::INVALID_WINDOW_ID || embedder != nullptr);
1218-
_set_size(final_size, final_size_override, allocate);
1218+
bool ci_updated = _set_size(final_size, final_size_override, allocate);
12191219

12201220
if (window_id != DisplayServer::INVALID_WINDOW_ID) {
12211221
RenderingServer::get_singleton()->viewport_attach_to_screen(get_viewport_rid(), attach_to_screen_rect, window_id);
@@ -1227,11 +1227,16 @@ void Window::_update_viewport_size() {
12271227
if (!use_font_oversampling) {
12281228
font_oversampling = 1.0;
12291229
}
1230-
if (TS->font_get_global_oversampling() != font_oversampling) {
1230+
if (!Math::is_equal_approx(TS->font_get_global_oversampling(), font_oversampling)) {
12311231
TS->font_set_global_oversampling(font_oversampling);
1232+
ci_updated = false;
12321233
}
12331234
}
12341235

1236+
if (!ci_updated) {
1237+
update_canvas_items();
1238+
}
1239+
12351240
notification(NOTIFICATION_WM_SIZE_CHANGED);
12361241

12371242
if (embedder) {

0 commit comments

Comments
 (0)