You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Fix unexpected crashes in notification
This commit is contained in:
@@ -637,7 +637,9 @@ void Control::_notification(int p_notification) {
|
||||
}
|
||||
} else {
|
||||
//is a regular root control or top_level
|
||||
data.RI = get_viewport()->_gui_add_root_control(this);
|
||||
Viewport *viewport = get_viewport();
|
||||
ERR_FAIL_COND(!viewport);
|
||||
data.RI = viewport->_gui_add_root_control(this);
|
||||
}
|
||||
|
||||
data.parent_canvas_item = get_parent_item();
|
||||
@@ -646,7 +648,9 @@ void Control::_notification(int p_notification) {
|
||||
data.parent_canvas_item->connect("item_rect_changed", callable_mp(this, &Control::_size_changed));
|
||||
} else {
|
||||
//connect viewport
|
||||
get_viewport()->connect("size_changed", callable_mp(this, &Control::_size_changed));
|
||||
Viewport *viewport = get_viewport();
|
||||
ERR_FAIL_COND(!viewport);
|
||||
viewport->connect("size_changed", callable_mp(this, &Control::_size_changed));
|
||||
}
|
||||
} break;
|
||||
case NOTIFICATION_EXIT_CANVAS: {
|
||||
@@ -655,7 +659,9 @@ void Control::_notification(int p_notification) {
|
||||
data.parent_canvas_item = nullptr;
|
||||
} else if (!is_set_as_top_level()) {
|
||||
//disconnect viewport
|
||||
get_viewport()->disconnect("size_changed", callable_mp(this, &Control::_size_changed));
|
||||
Viewport *viewport = get_viewport();
|
||||
ERR_FAIL_COND(!viewport);
|
||||
viewport->disconnect("size_changed", callable_mp(this, &Control::_size_changed));
|
||||
}
|
||||
|
||||
if (data.RI) {
|
||||
|
||||
Reference in New Issue
Block a user