diff options
author | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2023-02-07 12:10:28 +0100 |
---|---|---|
committer | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2023-02-07 12:10:28 +0100 |
commit | 31a4a0002e566cbb28a2160fde1567eb75496cd0 (patch) | |
tree | fb15e60563452c6313e0698b6572dc72c17dacfa | |
parent | 2fdaf2919c03ab50f971f2d51616d4ee329d29af (diff) |
Pace debugger draw requests
-rw-r--r-- | editor/debugger/script_editor_debugger.cpp | 6 | ||||
-rw-r--r-- | editor/debugger/script_editor_debugger.h | 1 | ||||
-rw-r--r-- | servers/debugger/servers_debugger.cpp | 1 |
3 files changed, 7 insertions, 1 deletions
diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp index 32952a367d..304beec681 100644 --- a/editor/debugger/script_editor_debugger.cpp +++ b/editor/debugger/script_editor_debugger.cpp @@ -308,6 +308,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da String error = p_data[1]; bool has_stackdump = p_data[2]; breaked = true; + can_request_idle_draw = true; can_debug = can_continue; _update_buttons_state(); _set_reason_text(error, MESSAGE_ERROR); @@ -378,6 +379,8 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da vmem_total->set_tooltip_text(TTR("Bytes:") + " " + itos(total)); vmem_total->set_text(String::humanize_size(total)); + } else if (p_msg == "servers:drawn") { + can_request_idle_draw = true; } else if (p_msg == "stack_dump") { DebuggerMarshalls::ScriptStackDump stack; stack.deserialize(p_data); @@ -843,8 +846,9 @@ void ScriptEditorDebugger::_notification(int p_what) { msg.push_back(cam->get_far()); _put_msg("scene:override_camera_3D:transform", msg); } - if (breaked) { + if (breaked && can_request_idle_draw) { _put_msg("servers:draw", Array()); + can_request_idle_draw = false; } } diff --git a/editor/debugger/script_editor_debugger.h b/editor/debugger/script_editor_debugger.h index a0c420522a..1659bbee8d 100644 --- a/editor/debugger/script_editor_debugger.h +++ b/editor/debugger/script_editor_debugger.h @@ -155,6 +155,7 @@ private: bool breaked = false; bool can_debug = false; bool move_to_foreground = true; + bool can_request_idle_draw = false; bool live_debug; diff --git a/servers/debugger/servers_debugger.cpp b/servers/debugger/servers_debugger.cpp index c44f9a3a1b..75452be49b 100644 --- a/servers/debugger/servers_debugger.cpp +++ b/servers/debugger/servers_debugger.cpp @@ -409,6 +409,7 @@ Error ServersDebugger::_capture(void *p_user, const String &p_cmd, const Array & if (RenderingServer::get_singleton()->has_changed()) { RenderingServer::get_singleton()->draw(true, delta); } + EngineDebugger::get_singleton()->send_message("servers:drawn", Array()); } else if (p_cmd == "foreground") { singleton->last_draw_time = 0.0; DisplayServer::get_singleton()->window_move_to_foreground(); |