Module: Termfront::AdaptiveRenderRate

Defined in:
lib/termfront/adaptive_render_rate.rb

Constant Summary collapse

OVER_BUDGET_RATIO =
0.85
UNDER_BUDGET_RATIO =
0.5
DOWNSHIFT_FRAMES =
30
UPSHIFT_FRAMES =
60

Class Method Summary collapse

Class Method Details

.current_dtObject



15
16
17
# File 'lib/termfront/adaptive_render_rate.rb', line 15

def current_dt
  @current_dt
end

.observe(spent) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/termfront/adaptive_render_rate.rb', line 19

def observe(spent)
  if spent > Config::FRAME_DT * OVER_BUDGET_RATIO
    @over_budget_count += 1
    @under_budget_count = 0
    if @over_budget_count >= DOWNSHIFT_FRAMES && @current_dt < Config::RENDER_DT_LOW
      @current_dt = Config::RENDER_DT_LOW
    end
  elsif spent < Config::FRAME_DT * UNDER_BUDGET_RATIO
    @under_budget_count += 1
    @over_budget_count = 0
    if @under_budget_count >= UPSHIFT_FRAMES && @current_dt > Config::RENDER_DT
      @current_dt = Config::RENDER_DT
    end
  end
end

.reset!Object



35
36
37
38
39
# File 'lib/termfront/adaptive_render_rate.rb', line 35

def reset!
  @current_dt = Config::RENDER_DT
  @over_budget_count = 0
  @under_budget_count = 0
end