File tree Expand file tree Collapse file tree 3 files changed +26
-0
lines changed Expand file tree Collapse file tree 3 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -718,6 +718,27 @@ void OS::remove_logger(const Ref<Logger> &p_logger) {
718718 logger_bind->loggers .erase (p_logger);
719719}
720720
721+ void OS::remove_script_loggers (const ScriptLanguage *p_script) {
722+ if (logger_bind) {
723+ LocalVector<Ref<CoreBind::Logger>> to_remove;
724+ for (const Ref<CoreBind::Logger> &logger : logger_bind->loggers ) {
725+ if (logger.is_null ()) {
726+ continue ;
727+ }
728+ ScriptInstance *si = logger->get_script_instance ();
729+ if (!si) {
730+ continue ;
731+ }
732+ if (si->get_language () == p_script) {
733+ to_remove.push_back (logger);
734+ }
735+ }
736+ for (const Ref<CoreBind::Logger> &logger : to_remove) {
737+ logger_bind->loggers .erase (logger);
738+ }
739+ }
740+ }
741+
721742void OS::_bind_methods () {
722743 ClassDB::bind_method (D_METHOD (" get_entropy" , " size" ), &OS::get_entropy);
723744 ClassDB::bind_method (D_METHOD (" get_system_ca_certificates" ), &OS::get_system_ca_certificates);
Original file line number Diff line number Diff line change @@ -311,6 +311,7 @@ class OS : public Object {
311311
312312 void add_logger (const Ref<Logger> &p_logger);
313313 void remove_logger (const Ref<Logger> &p_logger);
314+ void remove_script_loggers (const ScriptLanguage *p_script);
314315
315316 static OS *get_singleton () { return singleton; }
316317
Original file line number Diff line number Diff line change 3131#include " script_language.h"
3232
3333#include " core/config/project_settings.h"
34+ #include " core/core_bind.h"
3435#include " core/debugger/engine_debugger.h"
3536#include " core/debugger/script_debugger.h"
3637#include " core/io/resource_loader.h"
@@ -330,6 +331,9 @@ void ScriptServer::finish_languages() {
330331 }
331332
332333 for (ScriptLanguage *E : langs_to_finish) {
334+ if (CoreBind::OS::get_singleton ()) {
335+ CoreBind::OS::get_singleton ()->remove_script_loggers (E); // Unregister loggers using this script language.
336+ }
333337 E->finish ();
334338 }
335339
You can’t perform that action at this time.
0 commit comments