X-Git-Url: https://git.sesse.net/?p=ultimatescore;a=blobdiff_plain;f=nageru%2Fultimate.lua;h=586b36d7223cb0b29fc6de1d24dd85aa4d45fa55;hp=844a89c5ebd4e0d1c388b747d4c026b3822d9b32;hb=3c3a5c028bed3922840a2b5ad7ab861fca092582;hpb=5d032bd8dcbaf7f22cbd628c4f39450ed1b01280 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.