diff options
author | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2022-02-06 17:18:44 +0100 |
---|---|---|
committer | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2022-02-06 17:36:48 +0100 |
commit | 65837973051e2aea43019fb5c20ec4a1debf0bcb (patch) | |
tree | d648156c1e697e46ef6d7a7957e0bea8d8a1c8f7 | |
parent | 87f4bbd6685fd6e2e43b05a6255ab360bd17dcf3 (diff) |
[Debugger] Move servers-related behaviours to ServersDebugger.
Forcing draw during debug break is now handled by ServersDebugger, and
only happens when the proper message is sent from the EditorDebugger
("servers:draw").
In a similar way, briging the window in foreground is now also handled
by ServersDebugger upon receiving "servers:foreground" which is sent by
the EditorDebugger when resuming from a break ("continue").
-rw-r--r-- | core/debugger/debugger_marshalls.h | 1 | ||||
-rw-r--r-- | core/debugger/remote_debugger.cpp | 12 | ||||
-rw-r--r-- | editor/debugger/script_editor_debugger.cpp | 4 | ||||
-rw-r--r-- | servers/debugger/servers_debugger.cpp | 16 | ||||
-rw-r--r-- | servers/debugger/servers_debugger.h | 3 |
5 files changed, 23 insertions, 13 deletions
diff --git a/core/debugger/debugger_marshalls.h b/core/debugger/debugger_marshalls.h index 1cf8daeac0..378c3af8aa 100644 --- a/core/debugger/debugger_marshalls.h +++ b/core/debugger/debugger_marshalls.h @@ -32,7 +32,6 @@ #define DEBUGGER_MARSHARLLS_H #include "core/object/script_language.h" -#include "servers/rendering_server.h" struct DebuggerMarshalls { struct ScriptStackVariable { diff --git a/core/debugger/remote_debugger.cpp b/core/debugger/remote_debugger.cpp index b9c494aaca..2fce23d003 100644 --- a/core/debugger/remote_debugger.cpp +++ b/core/debugger/remote_debugger.cpp @@ -444,11 +444,7 @@ void RemoteDebugger::debug(bool p_can_continue, bool p_is_error_breakpoint) { Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE); } - uint64_t loop_begin_usec = 0; - uint64_t loop_time_sec = 0; while (is_peer_connected()) { - loop_begin_usec = OS::get_singleton()->get_ticks_usec(); - flush_output(); peer->poll(); @@ -475,7 +471,6 @@ void RemoteDebugger::debug(bool p_can_continue, bool p_is_error_breakpoint) { } else if (command == "continue") { script_debugger->set_depth(-1); script_debugger->set_lines_left(-1); - DisplayServer::get_singleton()->window_move_to_foreground(); break; } else if (command == "break") { @@ -551,13 +546,6 @@ void RemoteDebugger::debug(bool p_can_continue, bool p_is_error_breakpoint) { OS::get_singleton()->delay_usec(10000); OS::get_singleton()->process_and_drop_events(); } - - // This is for the camera override to stay live even when the game is paused from the editor - loop_time_sec = (OS::get_singleton()->get_ticks_usec() - loop_begin_usec) / 1000000.0f; - RenderingServer::get_singleton()->sync(); - if (RenderingServer::get_singleton()->has_changed()) { - RenderingServer::get_singleton()->draw(true, loop_time_sec * Engine::get_singleton()->get_time_scale()); - } } send_message("debug_exit", Array()); diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp index 378ba5d7c8..cf5d8ca4ff 100644 --- a/editor/debugger/script_editor_debugger.cpp +++ b/editor/debugger/script_editor_debugger.cpp @@ -129,6 +129,7 @@ void ScriptEditorDebugger::debug_continue() { _clear_execution(); _put_msg("continue", Array()); + _put_msg("servers:foreground", Array()); } void ScriptEditorDebugger::update_tabs() { @@ -834,6 +835,9 @@ void ScriptEditorDebugger::_notification(int p_what) { msg.push_back(cam->get_far()); _put_msg("scene:override_camera_3D:transform", msg); } + if (breaked) { + _put_msg("servers:draw", Array()); + } } const uint64_t until = OS::get_singleton()->get_ticks_msec() + 20; diff --git a/servers/debugger/servers_debugger.cpp b/servers/debugger/servers_debugger.cpp index a0f415eb94..d1391937d9 100644 --- a/servers/debugger/servers_debugger.cpp +++ b/servers/debugger/servers_debugger.cpp @@ -395,8 +395,24 @@ void ServersDebugger::deinitialize() { Error ServersDebugger::_capture(void *p_user, const String &p_cmd, const Array &p_data, bool &r_captured) { ERR_FAIL_COND_V(!singleton, ERR_BUG); + r_captured = true; if (p_cmd == "memory") { singleton->_send_resource_usage(); + } else if (p_cmd == "draw") { // Forced redraw. + // For camera override to stay live when the game is paused from the editor. + double delta = 0.0; + if (singleton->last_draw_time) { + delta = (OS::get_singleton()->get_ticks_usec() - singleton->last_draw_time) / 1000000.0; + } + singleton->last_draw_time = OS::get_singleton()->get_ticks_usec(); + RenderingServer::get_singleton()->sync(); + if (RenderingServer::get_singleton()->has_changed()) { + RenderingServer::get_singleton()->draw(true, delta); + } + } else if (p_cmd == "foreground") { + singleton->last_draw_time = 0.0; + DisplayServer::get_singleton()->window_move_to_foreground(); + singleton->servers_profiler->skip_frame(); } else { r_captured = false; } diff --git a/servers/debugger/servers_debugger.h b/servers/debugger/servers_debugger.h index 3a020e0633..d1c55dc690 100644 --- a/servers/debugger/servers_debugger.h +++ b/servers/debugger/servers_debugger.h @@ -33,6 +33,8 @@ #include "core/debugger/debugger_marshalls.h" +#include "servers/rendering_server.h" + class ServersDebugger { public: // Memory usage @@ -108,6 +110,7 @@ private: class ServersProfiler; class VisualProfiler; + double last_draw_time = 0.0; Ref<ServersProfiler> servers_profiler; Ref<VisualProfiler> visual_profiler; |