diff --git a/core/object/message_queue.cpp b/core/object/message_queue.cpp index bb44f5f63..12b4943e0 100644 --- a/core/object/message_queue.cpp +++ b/core/object/message_queue.cpp @@ -251,8 +251,7 @@ void MessageQueue::statistics() { } int MessageQueue::get_max_buffer_usage() const { - // Note this may be better read_buffer, or a combination, depending when this is read. - return buffers[write_buffer].data.size(); + return _buffer_size_monitor.max_size_overall; } void MessageQueue::_call_function(Object *p_target, const StringName &p_func, const Variant *p_args, int p_argcount, bool p_show_error) { @@ -394,6 +393,7 @@ void MessageQueue::flush() { // keep track of the maximum used size, so we can downsize buffers when appropriate _buffer_size_monitor.max_size = MAX(buffer_data_size, _buffer_size_monitor.max_size); + _buffer_size_monitor.max_size_overall = MAX(buffer_data_size, _buffer_size_monitor.max_size_overall); // flip buffers, this is the only part that requires a lock SWAP(read_buffer, write_buffer); diff --git a/core/object/message_queue.h b/core/object/message_queue.h index ca839fbca..8319be774 100644 --- a/core/object/message_queue.h +++ b/core/object/message_queue.h @@ -69,6 +69,9 @@ class MessageQueue { struct BufferSizeMonitor { uint32_t max_size = 0; uint32_t flush_count = 0; + + // Only used for performance statistics. + uint32_t max_size_overall = 0; } _buffer_size_monitor; void _call_function(Object *p_target, const StringName &p_func, const Variant *p_args, int p_argcount, bool p_show_error); @@ -96,6 +99,7 @@ public: bool is_flushing() const; int get_max_buffer_usage() const; + int get_current_buffer_usage() const; MessageQueue(); ~MessageQueue();