summaryrefslogtreecommitdiff
path: root/editor/debugger/editor_debugger_node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/debugger/editor_debugger_node.cpp')
-rw-r--r--editor/debugger/editor_debugger_node.cpp44
1 files changed, 35 insertions, 9 deletions
diff --git a/editor/debugger/editor_debugger_node.cpp b/editor/debugger/editor_debugger_node.cpp
index fba86f2954..825883cffe 100644
--- a/editor/debugger/editor_debugger_node.cpp
+++ b/editor/debugger/editor_debugger_node.cpp
@@ -31,9 +31,12 @@
#include "editor_debugger_node.h"
#include "editor/debugger/editor_debugger_tree.h"
+#include "editor/debugger/script_editor_debugger.h"
#include "editor/editor_log.h"
#include "editor/editor_node.h"
#include "editor/plugins/script_editor_plugin.h"
+#include "scene/gui/menu_button.h"
+#include "scene/gui/tab_container.h"
template <typename Func>
void _for_all(TabContainer *p_node, const Func &p_func) {
@@ -49,7 +52,6 @@ EditorDebuggerNode *EditorDebuggerNode::singleton = NULL;
EditorDebuggerNode::EditorDebuggerNode() {
if (!singleton)
singleton = this;
- server.instance();
add_constant_override("margin_left", -EditorNode::get_singleton()->get_gui_base()->get_stylebox("BottomPanelDebuggerOverride", "EditorStyles")->get_margin(MARGIN_LEFT));
add_constant_override("margin_right", -EditorNode::get_singleton()->get_gui_base()->get_stylebox("BottomPanelDebuggerOverride", "EditorStyles")->get_margin(MARGIN_RIGHT));
@@ -179,10 +181,9 @@ Error EditorDebuggerNode::start() {
EditorNode::get_singleton()->make_bottom_panel_item_visible(this);
}
- int remote_port = (int)EditorSettings::get_singleton()->get("network/debug/remote_port");
- const Error err = server->listen(remote_port);
+ server = Ref<EditorDebuggerServer>(EditorDebuggerServer::create_default());
+ const Error err = server->start();
if (err != OK) {
- EditorNode::get_log()->add_message(String("Error listening on port ") + itos(remote_port), EditorLog::MSG_TYPE_ERROR);
return err;
}
set_process(true);
@@ -191,9 +192,10 @@ Error EditorDebuggerNode::start() {
}
void EditorDebuggerNode::stop() {
- if (server->is_listening()) {
+ if (server.is_valid()) {
server->stop();
EditorNode::get_log()->add_message("--- Debugging process stopped ---", EditorLog::MSG_TYPE_EDITOR);
+ server.unref();
}
// Also close all debugging sessions.
_for_all(tabs, [&](ScriptEditorDebugger *dbg) {
@@ -231,9 +233,14 @@ void EditorDebuggerNode::_notification(int p_what) {
break;
}
- if (p_what != NOTIFICATION_PROCESS || !server->is_listening())
+ if (p_what != NOTIFICATION_PROCESS || !server.is_valid())
return;
+ if (!server.is_valid() || !server->is_active()) {
+ stop();
+ return;
+ }
+
// Errors and warnings
int error_count = 0;
int warning_count = 0;
@@ -293,9 +300,8 @@ void EditorDebuggerNode::_notification(int p_what) {
if (tabs->get_tab_count() <= 4) { // Max 4 debugging sessions active.
debugger = _add_debugger();
} else {
- // We already have too many sessions, disconnecting new clients to prevent it from hanging.
- // (Not keeping a reference to the connection will disconnect it)
- server->take_connection();
+ // We already have too many sessions, disconnecting new clients to prevent them from hanging.
+ server->take_connection()->close();
return; // Can't add, stop here.
}
}
@@ -462,6 +468,26 @@ void EditorDebuggerNode::reload_scripts() {
});
}
+void EditorDebuggerNode::debug_next() {
+ get_default_debugger()->debug_next();
+}
+
+void EditorDebuggerNode::debug_step() {
+ get_default_debugger()->debug_step();
+}
+
+void EditorDebuggerNode::debug_break() {
+ get_default_debugger()->debug_break();
+}
+
+void EditorDebuggerNode::debug_continue() {
+ get_default_debugger()->debug_continue();
+}
+
+String EditorDebuggerNode::get_var_value(const String &p_var) const {
+ return get_default_debugger()->get_var_value(p_var);
+}
+
// LiveEdit/Inspector
void EditorDebuggerNode::request_remote_tree() {
get_current_debugger()->request_remote_tree();