Fix (workaround) volume going to zero after track starts

This commit is contained in:
Keith Edmunds 2023-04-14 11:12:13 +01:00
parent 8a6812e405
commit 4a927084c9
2 changed files with 39 additions and 24 deletions

View File

@ -130,7 +130,7 @@ class Music:
return status
def set_volume(self, volume, set_default=True):
def set_volume(self, volume=None, set_default=True):
"""Set maximum volume used for player"""
if not self.player:
@ -139,6 +139,9 @@ class Music:
if set_default:
self.max_volume = volume
if volume is None:
volume = Config.VOLUME_VLC_DEFAULT
self.player.audio_set_volume(volume)
def stop(self) -> float:

View File

@ -301,6 +301,29 @@ class Window(QMainWindow, Ui_MainWindow):
self.timer.start(Config.TIMER_MS)
self.connect_signals_slots()
def about(self) -> None:
"""Get git tag and database name"""
try:
git_tag = str(
subprocess.check_output(
['git', 'describe'], stderr=subprocess.STDOUT
)
).strip('\'b\\n')
except subprocess.CalledProcessError as exc_info:
git_tag = str(exc_info.output)
with Session() as session:
if session.bind:
dbname = session.bind.engine.url.database
QMessageBox.information(
self,
"About",
f"MusicMuster {git_tag}\n\nDatabase: {dbname}",
QMessageBox.StandardButton.Ok
)
def cart_configure(self, cart: Carts, btn: CartButton) -> None:
"""Configure button with cart data"""
@ -821,29 +844,6 @@ class Window(QMainWindow, Ui_MainWindow):
self.stop_playing(fade=True)
def about(self) -> None:
"""Get git tag and database name"""
try:
git_tag = str(
subprocess.check_output(
['git', 'describe'], stderr=subprocess.STDOUT
)
).strip('\'b\\n')
except subprocess.CalledProcessError as exc_info:
git_tag = str(exc_info.output)
with Session() as session:
if session.bind:
dbname = session.bind.engine.url.database
QMessageBox.information(
self,
"About",
f"MusicMuster {git_tag}\n\nDatabase: {dbname}",
QMessageBox.StandardButton.Ok
)
def get_one_track(self, session: scoped_session) -> Optional[Tracks]:
"""Show dialog box to select one track and return it to caller"""
@ -1234,6 +1234,18 @@ class Window(QMainWindow, Ui_MainWindow):
# Play (new) current track
self.current_track.start()
self.music.play(self.current_track.path, position)
# For as-yet unknown reasons. sometimes the volume gets
# reset to zero within 200mS or so of starting play. This
# only happened since moving to Debian 12, which uses
# Pipewire for sound (which may be irrelevant).
for _ in range(3):
if self.music.player:
volume = self.music.player.audio_get_volume()
if volume < 10:
self.music.set_volume()
log.error(f"Reset from {volume=}")
break
sleep(0.1)
# Tell database to record it as played
Playdates(session, self.current_track.track_id)