[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").
This commit is contained in:
parent
87f4bbd668
commit
6583797305
5 changed files with 23 additions and 13 deletions
|
@ -32,7 +32,6 @@
|
|||
#define DEBUGGER_MARSHARLLS_H
|
||||
|
||||
#include "core/object/script_language.h"
|
||||
#include "servers/rendering_server.h"
|
||||
|
||||
struct DebuggerMarshalls {
|
||||
struct ScriptStackVariable {
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue