diff --git a/app/musicmuster.py b/app/musicmuster.py index 8864f46..019705b 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -1123,33 +1123,15 @@ class Window(QMainWindow, Ui_MainWindow): # Restore volume if -3dB active if self.btnDrop3db.isChecked(): + log.debug("Reset -3db button") self.btnDrop3db.setChecked(False) - # Show closing volume graph - if track_sequence.now.fade_graph: - track_sequence.now.fade_graph.plot() - else: - log.error("No fade_graph") - # Play (new) current track if not track_sequence.now.path: log.error("No path for next track") return self.music.play(track_sequence.now.path, position) - # Note that track is playing - track_sequence.now.start() - self.playing = True - - # Disable play next controls - self.catch_return_key = True - - # Notify model - self.active_proxy_model().current_track_started() - - # Update headers - self.update_headers() - # Ensure 100% volume # For as-yet unknown reasons. sometimes the volume gets # reset to zero within 200mS or so of starting play. This @@ -1164,6 +1146,36 @@ class Window(QMainWindow, Ui_MainWindow): break sleep(0.1) + # TODO: remove sleep() calls - used to try to isolate bug #223 + # Show closing volume graph + sleep(1) + if track_sequence.now.fade_graph: + track_sequence.now.fade_graph.plot() + else: + log.error("No fade_graph") + + # Note that track is playing + sleep(1) + log.error("set track_sequence") + track_sequence.now.start() + self.playing = True + + # Disable play next controls + sleep(1) + log.error("catch return key") + self.catch_return_key = True + self.show_status_message("Play controls: Disabled", 0) + + # Notify model + sleep(1) + log.error("active_proxy_model().current_track_started()") + self.active_proxy_model().current_track_started() + + # Update headers + sleep(1) + log.error("update headers") + self.update_headers() + def preview(self) -> None: """ Preview selected or next track. We use a different mechanism to @@ -1477,6 +1489,7 @@ class Window(QMainWindow, Ui_MainWindow): # Enable controls self.catch_return_key = False + self.show_status_message("Play controls: Enabled", 0) def tab_change(self): """Called when active tab changed""" @@ -1557,6 +1570,7 @@ class Window(QMainWindow, Ui_MainWindow): if self.frame_silent.styleSheet() != css_silence: self.frame_silent.setStyleSheet(css_silence) self.catch_return_key = False + self.show_status_message("Play controls: Enabled", 0) # Set warning colour on time to silence box when fade starts elif time_to_fade <= 500: css_fade = f"background: {Config.COLOUR_WARNING_TIMER}" @@ -1569,6 +1583,7 @@ class Window(QMainWindow, Ui_MainWindow): f"background: {Config.COLOUR_WARNING_TIMER}" ) self.catch_return_key = False + self.show_status_message("Play controls: Enabled", 0) else: self.frame_silent.setStyleSheet("") self.frame_fade.setStyleSheet("") diff --git a/app/pipeclient.py b/app/pipeclient.py index 4ab7eb0..0169989 100755 --- a/app/pipeclient.py +++ b/app/pipeclient.py @@ -160,7 +160,7 @@ class PipeClient(): def _write_pipe_open(self) -> None: """Open _write_pipe.""" - self._write_pipe = open(WRITE_NAME, 'w', encoding='ascii') + self._write_pipe = open(WRITE_NAME, 'w') def _read_thread_start(self) -> None: """Start read_pipe thread.""" @@ -204,7 +204,7 @@ class PipeClient(): """Read FIFO in worker thread.""" # Thread will wait at this read until it connects. # Connection should occur as soon as _write_pipe has connected. - with open(READ_NAME, 'r', encoding='ascii') as read_pipe: + with open(READ_NAME, 'r') as read_pipe: message = '' pipe_ok = True while pipe_ok: diff --git a/app/playlistmodel.py b/app/playlistmodel.py index a91438d..6648202 100644 --- a/app/playlistmodel.py +++ b/app/playlistmodel.py @@ -2,11 +2,10 @@ from __future__ import annotations import obsws_python as obs # type: ignore import re -from dataclasses import dataclass from datetime import datetime, timedelta from enum import auto, Enum from operator import attrgetter -from pprint import pprint +from time import sleep from random import shuffle from typing import List, Optional @@ -273,14 +272,21 @@ class PlaylistModel(QAbstractTableModel): ) return + # TODO: remove sleep/log calls, used to debug #223 # Check for OBS scene change + sleep(1) + log.error("Call OBS scene change") self.obs_scene_change(row_number) with Session() as session: # Update Playdates in database + sleep(1) + log.error("update playdates") Playdates(session, track_sequence.now.track_id) # Mark track as played in playlist + sleep(1) + log.error("Mark track as played") plr = session.get(PlaylistRows, track_sequence.now.plr_id) if plr: plr.played = True @@ -289,6 +295,8 @@ class PlaylistModel(QAbstractTableModel): log.error(f"Can't retrieve plr, {track_sequence.now.plr_id=}") # Update track times + sleep(1) + log.error("Update track times") if prd: prd.start_time = track_sequence.now.start_time prd.end_time = track_sequence.now.end_time @@ -305,6 +313,8 @@ class PlaylistModel(QAbstractTableModel): # Find next track # Get all unplayed track rows + sleep(1) + log.error("Find next track") next_row = None unplayed_rows = self.get_unplayed_rows() if unplayed_rows: