diff --git a/tracker/action.go b/tracker/action.go index da7db8c..dcbe541 100644 --- a/tracker/action.go +++ b/tracker/action.go @@ -204,7 +204,7 @@ func (m *Model) Undo() Action { m.d = m.undoStack[len(m.undoStack)-1] m.undoStack = m.undoStack[:len(m.undoStack)-1] m.prevUndoKind = "" - (*Model)(m).send(m.d.Song.Copy()) + trySend(m.broker.ToPlayer, any(m.d.Song.Copy())) }, } } @@ -221,7 +221,7 @@ func (m *Model) Redo() Action { m.d = m.redoStack[len(m.redoStack)-1] m.redoStack = m.redoStack[:len(m.redoStack)-1] m.prevUndoKind = "" - (*Model)(m).send(m.d.Song.Copy()) + trySend(m.broker.ToPlayer, any(m.d.Song.Copy())) }, } } @@ -311,7 +311,7 @@ func (m *Model) PlayCurrentPos() Action { m.setPanic(false) m.setLoop(Loop{}) m.playing = true - m.send(StartPlayMsg{m.d.Cursor.SongPos}) + trySend(m.broker.ToPlayer, any(StartPlayMsg{m.d.Cursor.SongPos})) }, } } @@ -323,7 +323,7 @@ func (m *Model) PlaySongStart() Action { m.setPanic(false) m.setLoop(Loop{}) m.playing = true - m.send(StartPlayMsg{}) + trySend(m.broker.ToPlayer, any(StartPlayMsg{})) }, } } @@ -338,7 +338,7 @@ func (m *Model) PlaySelected() Action { r := l.listRange() newLoop := Loop{r.Start, r.End - r.Start} m.setLoop(newLoop) - m.send(StartPlayMsg{sointu.SongPos{OrderRow: r.Start, PatternRow: 0}}) + trySend(m.broker.ToPlayer, any(StartPlayMsg{sointu.SongPos{OrderRow: r.Start, PatternRow: 0}})) }, } } @@ -353,7 +353,7 @@ func (m *Model) PlayFromLoopStart() Action { return } m.playing = true - m.send(StartPlayMsg{sointu.SongPos{OrderRow: m.loop.Start, PatternRow: 0}}) + trySend(m.broker.ToPlayer, any(StartPlayMsg{sointu.SongPos{OrderRow: m.loop.Start, PatternRow: 0}})) }, } } @@ -368,7 +368,7 @@ func (m *Model) StopPlaying() Action { return } m.playing = false - (*Model)(m).send(IsPlayingMsg{false}) + trySend(m.broker.ToPlayer, any(IsPlayingMsg{false})) }, } } @@ -510,13 +510,13 @@ func (m *Model) completeAction(checkSave bool) { func (m *Model) setPanic(val bool) { if m.panic != val { m.panic = val - m.send(PanicMsg{val}) + trySend(m.broker.ToPlayer, any(PanicMsg{val})) } } func (m *Model) setLoop(newLoop Loop) { if m.loop != newLoop { m.loop = newLoop - m.send(newLoop) + trySend(m.broker.ToPlayer, any(newLoop)) } } diff --git a/tracker/bool.go b/tracker/bool.go index c4072a8..3c32b5a 100644 --- a/tracker/bool.go +++ b/tracker/bool.go @@ -72,7 +72,7 @@ func (m *IsRecording) Value() bool { return (*Model)(m).recording } func (m *IsRecording) setValue(val bool) { m.recording = val m.instrEnlarged = val - (*Model)(m).send(RecordingMsg{val}) + trySend(m.broker.ToPlayer, any(RecordingMsg{val})) } func (m *IsRecording) Enabled() bool { return true } @@ -84,9 +84,9 @@ func (m *Playing) setValue(val bool) { m.playing = val if m.playing { (*Model)(m).setPanic(false) - (*Model)(m).send(StartPlayMsg{m.d.Cursor.SongPos}) + trySend(m.broker.ToPlayer, any(StartPlayMsg{m.d.Cursor.SongPos})) } else { - (*Model)(m).send(IsPlayingMsg{val}) + trySend(m.broker.ToPlayer, any(IsPlayingMsg{val})) } } func (m *Playing) Enabled() bool { return m.playing || !m.instrEnlarged } diff --git a/tracker/model.go b/tracker/model.go index 316f8cb..67c1a5f 100644 --- a/tracker/model.go +++ b/tracker/model.go @@ -235,7 +235,7 @@ func (m *Model) change(kind string, t ChangeType, severity ChangeSeverity) func( m.updatePatternUseCount() m.d.Cursor.SongPos = m.d.Song.Score.Clamp(m.d.Cursor.SongPos) m.d.Cursor2.SongPos = m.d.Song.Score.Clamp(m.d.Cursor2.SongPos) - m.send(m.d.Song.Score.Copy()) + trySend(m.broker.ToPlayer, any(m.d.Song.Score.Copy())) } if m.changeType&PatchChange != 0 { m.fixIDCollisions() @@ -250,14 +250,14 @@ func (m *Model) change(kind string, t ChangeType, severity ChangeSeverity) func( m.d.UnitIndex2 = clamp(m.d.UnitIndex2, 0, unitCount-1) m.d.UnitSearching = false // if we change anything in the patch, reset the unit searching m.d.UnitSearchString = "" - m.send(m.d.Song.Patch.Copy()) + trySend(m.broker.ToPlayer, any(m.d.Song.Patch.Copy())) } if m.changeType&BPMChange != 0 { - m.send(BPMMsg{m.d.Song.BPM}) + trySend(m.broker.ToPlayer, any(BPMMsg{m.d.Song.BPM})) m.signalAnalyzer.SetBpm(m.d.Song.BPM) } if m.changeType&RowsPerBeatChange != 0 { - m.send(RowsPerBeatMsg{m.d.Song.RowsPerBeat}) + trySend(m.broker.ToPlayer, any(RowsPerBeatMsg{m.d.Song.RowsPerBeat})) } m.undoSkipCounter++ var limit int @@ -338,7 +338,7 @@ func (m *Model) UnmarshalRecovery(bytes []byte) { } } m.d.ChangedSinceRecovery = false - m.send(m.d.Song.Copy()) + trySend(m.broker.ToPlayer, any(m.d.Song.Copy())) m.updatePatternUseCount() } @@ -391,18 +391,18 @@ func (m *Model) Broker() *Broker { return m.broker } func (m *Model) TrackNoteOn(track int, note byte) (id NoteID) { id = NoteID{IsInstr: false, Track: track, Note: note, model: m} - m.send(NoteOnMsg{id}) + trySend(m.broker.ToPlayer, any(NoteOnMsg{id})) return id } func (m *Model) InstrNoteOn(instr int, note byte) (id NoteID) { id = NoteID{IsInstr: true, Instr: instr, Note: note, model: m} - m.send(NoteOnMsg{id}) + trySend(m.broker.ToPlayer, any(NoteOnMsg{id})) return id } func (n NoteID) NoteOff() { - n.model.send(NoteOffMsg{n}) + trySend(n.model.broker.ToPlayer, any(NoteOffMsg{n})) } func (m *Model) FindUnit(id int) (instrIndex, unitIndex int, err error) { @@ -434,11 +434,6 @@ func (m *Model) resetSong() { m.d.ChangedSinceSave = false } -// send sends a message to the player -func (m *Model) send(message interface{}) { - m.broker.ToPlayer <- message -} - func (m *Model) maxID() int { maxID := 0 for _, instr := range m.d.Song.Patch {