Minimize update to Qt reported display's refresh rate

update_throttling
Tyler Goodlet 2021-05-25 06:56:18 -04:00
parent e623c58754
commit 9e367432fd
1 changed files with 19 additions and 5 deletions

View File

@ -937,7 +937,7 @@ async def test_bed(
i += 1 i += 1
_quote_throttle_rate = 60 # Hz _quote_throttle_rate: int = 60 # Hz
async def chart_from_quotes( async def chart_from_quotes(
@ -1019,7 +1019,7 @@ async def chart_from_quotes(
now = time.time() now = time.time()
period = now - last period = now - last
if period <= 1/_quote_throttle_rate: if period <= 1/_quote_throttle_rate - 0.001:
# faster then display refresh rate # faster then display refresh rate
# print(f'quote too fast: {1/period}') # print(f'quote too fast: {1/period}')
continue continue
@ -1110,7 +1110,8 @@ async def chart_from_quotes(
last_mx, last_mn = mx, mn last_mx, last_mn = mx, mn
last = now # set time of last graphics update
last = now
async def spawn_fsps( async def spawn_fsps(
@ -1293,7 +1294,7 @@ async def run_fsp(
now = time.time() now = time.time()
period = now - last period = now - last
# if period <= 1/30: # if period <= 1/30:
if period <= 1/_quote_throttle_rate: if period <= 1/_quote_throttle_rate - 0.001:
# faster then display refresh rate # faster then display refresh rate
# print(f'quote too fast: {1/period}') # print(f'quote too fast: {1/period}')
continue continue
@ -1322,6 +1323,7 @@ async def run_fsp(
# update graphics # update graphics
chart.update_curve_from_array(fsp_func_name, array) chart.update_curve_from_array(fsp_func_name, array)
# set time of last graphics update
last = now last = now
@ -1531,10 +1533,22 @@ async def _async_main(
Provision the "main" widget with initial symbol data and root nursery. Provision the "main" widget with initial symbol data and root nursery.
""" """
chart_app = widgets['main'] chart_app = widgets['main']
# attempt to configure DPI aware font size # attempt to configure DPI aware font size
_font.configure_to_dpi(current_screen()) screen = current_screen()
# configure graphics update throttling based on display refresh rate
global _quote_throttle_rate
_quote_throttle_rate = min(
round(screen.refreshRate()),
_quote_throttle_rate,
)
log.info(f'Set graphics update rate to {_quote_throttle_rate} Hz')
# configure global DPI aware font size
_font.configure_to_dpi(screen)
async with trio.open_nursery() as root_n: async with trio.open_nursery() as root_n: