Browse Source

Fix crash when deleting Camera2D and Viewport assigned to it

Haoyu Qiu 3 years ago
parent
commit
0f18f225ee
1 changed files with 3 additions and 2 deletions
  1. 3 2
      scene/2d/camera_2d.cpp

+ 3 - 2
scene/2d/camera_2d.cpp

@@ -259,12 +259,13 @@ void Camera2D::_notification(int p_what) {
 
 		} break;
 		case NOTIFICATION_EXIT_TREE: {
+			const bool viewport_valid = !custom_viewport || ObjectDB::get_instance(custom_viewport_id);
 			if (is_current()) {
-				if (viewport && !(custom_viewport && !ObjectDB::get_instance(custom_viewport_id))) {
+				if (viewport && viewport_valid) {
 					viewport->set_canvas_transform(Transform2D());
 				}
 			}
-			if (viewport) {
+			if (viewport && viewport_valid) {
 				viewport->disconnect("size_changed", this, "_update_scroll");
 			}
 			remove_from_group(group_name);