Made the player more responsive by increasing loops per second and by implementing a update flag which forces a redraw when certain keybinds are pressed.

This commit is contained in:
Tristan Ferrua
2021-04-19 17:23:38 +00:00
parent 9b89c06f64
commit 3a9b60e96f

View File

@ -29,6 +29,9 @@ if "mpd" not in config.sections():
player_config = config["player"] player_config = config["player"]
mpd_config = config["mpd"] mpd_config = config["mpd"]
# FPS
FPS = 20
# Image ratio # Image ratio
# Change this to match the (width, height) of your font. # Change this to match the (width, height) of your font.
IMAGERATIO = (player_config.getint("font_width", 11), IMAGERATIO = (player_config.getint("font_width", 11),
@ -107,6 +110,9 @@ class Player:
# Ueberzug placement # Ueberzug placement
self.art_placement = None self.art_placement = None
# Update needed flag
self.update_needed = False
def fitText(self): def fitText(self):
""" """
@ -297,9 +303,11 @@ class Player:
if keyChar == ">": if keyChar == ">":
self.client.next() self.client.next()
self.update_needed = True
elif keyChar == "<": elif keyChar == "<":
self.client.previous() self.client.previous()
self.update_needed = True
elif keyChar == "p": elif keyChar == "p":
self.client.pause() self.client.pause()
@ -316,6 +324,7 @@ class Player:
elif keyChar == "h": elif keyChar == "h":
self.help = not self.help self.help = not self.help
self.cleared = False self.cleared = False
self.update_needed = True
key = self.stdscr.getch() key = self.stdscr.getch()
@ -517,7 +526,7 @@ class Player:
s = time.perf_counter() s = time.perf_counter()
self.handleKeypress() self.handleKeypress()
if i == 0: if i == 0 or self.update_needed:
# Checko for window size update # Checko for window size update
self.updateWindowSize() self.updateWindowSize()
@ -528,12 +537,14 @@ class Player:
self.hideAlbumArt() self.hideAlbumArt()
self.drawHelp() self.drawHelp()
self.update_needed = False
e = time.perf_counter() e = time.perf_counter()
sleeptime = abs(0.1 - (e-s)) sleeptime = abs(1/FPS - (e-s))
time.sleep(sleeptime) time.sleep(sleeptime)
i = (i + 1) % 10 i = (i + 1) % FPS
except KeyboardInterrupt: except KeyboardInterrupt:
error = False error = False