diff --git a/lib/cyberarm_engine.rb b/lib/cyberarm_engine.rb index e74902f..ca80a55 100644 --- a/lib/cyberarm_engine.rb +++ b/lib/cyberarm_engine.rb @@ -69,6 +69,8 @@ require_relative "cyberarm_engine/ui/gui_state" require_relative "cyberarm_engine/builtin/intro_state" -at_exit do - StackProf.results("./_prof.txt") if RUBY_ENGINE != "mruby" && defined?(StackProf) +if RUBY_ENGINE != "mruby" && defined?(StackProf) + at_exit do + StackProf.results("./_stackprof.dmp") + end end diff --git a/lib/cyberarm_engine/ui/elements/container.rb b/lib/cyberarm_engine/ui/elements/container.rb index 95d878c..bf14e31 100644 --- a/lib/cyberarm_engine/ui/elements/container.rb +++ b/lib/cyberarm_engine/ui/elements/container.rb @@ -210,7 +210,7 @@ module CyberarmEngine end end - t = Gosu.milliseconds + # t = Gosu.milliseconds # Move children to parent after positioning @children.each do |child| child.x += (@x + @style.border_thickness_left) - style.margin_left @@ -224,7 +224,7 @@ module CyberarmEngine update_child_element_visibity(child) end - puts "TOOK: #{Gosu.milliseconds - t}ms to recalculate #{self.class}:0x#{object_id.to_s(16)}'s #{@children.count} children" if is_root? + # puts "TOOK: #{Gosu.milliseconds - t}ms to recalculate #{self.class}:0x#{object_id.to_s(16)}'s #{@children.count} children" if is_root? update_background diff --git a/lib/cyberarm_engine/ui/gui_state.rb b/lib/cyberarm_engine/ui/gui_state.rb index 96d9adc..35f2c13 100644 --- a/lib/cyberarm_engine/ui/gui_state.rb +++ b/lib/cyberarm_engine/ui/gui_state.rb @@ -54,27 +54,29 @@ module CyberarmEngine end def draw + # t = Gosu.milliseconds + # report_recalculate_time = @pending_recalculate_request || @pending_element_recalculate_requests.size.positive? + + StackProf.start(mode: :wall) if RUBY_ENGINE != "mruby" && defined?(StackProf) Stats.frame.start_timing(:gui_element_recalculate_requests) # puts "PENDING REQUESTS: #{@pending_element_recalculate_requests.size}" if @pending_element_recalculate_requests.size.positive? - @pending_recalculate_request = true if @pending_element_recalculate_requests.size.positive? - # @pending_element_recalculate_requests.each(&:recalculate) - @pending_element_recalculate_requests.clear + @pending_element_recalculate_requests.shift(&:recalculate) Stats.frame.end_timing(:gui_element_recalculate_requests) - if @pending_recalculate_request - Stats.frame.start_timing(:gui_recalculate) - - StackProf.start(mode: :wall) if RUBY_ENGINE != "mruby" && defined?(StackProf) - @root_container.recalculate - StackProf.stop if RUBY_ENGINE != "mruby" && defined?(StackProf) + Stats.frame.start_timing(:gui_recalculate) + while(@pending_recalculate_request) @pending_recalculate_request = false - Stats.frame.end_timing(:gui_recalculate) + @root_container.recalculate end + StackProf.stop if RUBY_ENGINE != "mruby" && defined?(StackProf) + Stats.frame.end_timing(:gui_recalculate) + # puts "TOOK: #{Gosu.milliseconds - t}ms to recalculate #{self.class}:0x#{object_id.to_s(16)}" if report_recalculate_time && Gosu.milliseconds - t > 0 + super if @menu