Skip to content

Commit

Permalink
Fix unexpected crashes in notification
Browse files Browse the repository at this point in the history
  • Loading branch information
zaevi committed Oct 23, 2021
1 parent fe3d62f commit 924c207
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 3 deletions.
1 change: 1 addition & 0 deletions scene/2d/collision_polygon_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ void CollisionPolygon2D::_notification(int p_what) {
} break;

case NOTIFICATION_DRAW: {
ERR_FAIL_COND(!is_inside_tree());
if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
Expand Down
2 changes: 2 additions & 0 deletions scene/2d/collision_shape_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ void CollisionShape2D::_notification(int p_what) {

} break;
case NOTIFICATION_DRAW: {
ERR_FAIL_COND(!is_inside_tree());

if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
Expand Down
1 change: 1 addition & 0 deletions scene/2d/ray_cast_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ void RayCast2D::_notification(int p_what) {
} break;

case NOTIFICATION_DRAW: {
ERR_FAIL_COND(!is_inside_tree());
if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
Expand Down
12 changes: 9 additions & 3 deletions scene/gui/control.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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: {
Expand All @@ -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) {
Expand Down

0 comments on commit 924c207

Please sign in to comment.