From: Steinar H. Gunderson Date: Fri, 23 Mar 2018 15:15:30 +0000 (+0100) Subject: Stop changing video rates unneededly; it causes frequent wakeups. X-Git-Url: https://git.sesse.net/?p=ultimatescore;a=commitdiff_plain;h=3c3a5c028bed3922840a2b5ad7ab861fca092582 Stop changing video rates unneededly; it causes frequent wakeups. --- diff --git a/nageru/ultimate.lua b/nageru/ultimate.lua index 844a89c..586b36d 100644 --- a/nageru/ultimate.lua +++ b/nageru/ultimate.lua @@ -693,6 +693,8 @@ function get_sbs_chain(signals, t, width, height, input_resolution) return sbs_chains[input0_type][overlay_enabled][input1_type][true] end +local last_rate = 0.0 + -- API ENTRY POINT -- Called every frame. Get the chain for displaying at input , -- where 0 is live, 1 is preview, 2 is the first channel to display @@ -746,12 +748,18 @@ function get_chain(num, t, width, height, signals) last_resolution = input_resolution -- Save some CPU time if we're not having SBS on live. + local new_rate if live_signal_num == SBS_SIGNAL_NUM or preview_signal_num == SBS_SIGNAL_NUM or transition_type == ZOOM_TRANSITION then - bg_video:change_rate(1.0) + new_rate = 1.0 else - bg_video:change_rate(0.0001) + new_rate = 0.0001 + end + if new_rate ~= last_rate then + -- Avoid waking up the video thread (which may be sleeping) if the rate is the same. + bg_video:change_rate(new_rate) + last_rate = new_rate end if num == 0 then -- Live.