Mixerboard uses events to detect start and stop of playback

This commit is contained in:
Paul Licameli 2018-02-05 21:52:20 -05:00
parent 1fc4c5724e
commit 723cecbeac
3 changed files with 14 additions and 11 deletions

View File

@ -447,7 +447,6 @@ TimeTrack and AudioIOListener and whether the playback is looped.
#include "AudacityApp.h"
#include "AudacityException.h"
#include "Mix.h"
#include "MixerBoard.h"
#include "Resample.h"
#include "RingBuffer.h"
#include "prefs/GUISettings.h"
@ -2402,10 +2401,6 @@ void AudioIO::SetMeters()
if (mOutputMeter)
mOutputMeter->Reset(mRate, true);
MixerBoard* pMixerBoard = mOwningProject->GetMixerBoard();
if (pMixerBoard)
pMixerBoard->ResetMeters(true);
mUpdateMeters = true;
}
@ -2659,10 +2654,6 @@ void AudioIO::StopStream()
if (mOutputMeter)
mOutputMeter->Reset(mRate, false);
MixerBoard* pMixerBoard = mOwningProject->GetMixerBoard();
if (pMixerBoard)
pMixerBoard->ResetMeters(false);
mInputMeter.Release();
mOutputMeter = NULL;
mOwningProject = NULL;

View File

@ -925,6 +925,11 @@ MixerBoard::MixerBoard(AudacityProject* pProject,
mProject->GetTracks()->Bind(EVT_TRACKLIST_TRACK_DATA_CHANGE,
&MixerBoard::OnTrackChanged,
this);
wxTheApp->Connect(EVT_AUDIOIO_PLAYBACK,
wxCommandEventHandler(MixerBoard::OnStartStop),
NULL,
this);
}
@ -1361,6 +1366,13 @@ void MixerBoard::OnTrackSetChanged(wxEvent &evt)
Refresh();
}
void MixerBoard::OnStartStop(wxCommandEvent &evt)
{
evt.Skip();
bool start = evt.GetInt();
ResetMeters( start );
}
// class MixerBoardFrame
BEGIN_EVENT_TABLE(MixerBoardFrame, wxFrame)

View File

@ -214,13 +214,12 @@ public:
void RefreshTrackClusters(bool bEraseBackground = true);
void ResizeTrackClusters();
void ResetMeters(const bool bResetClipping);
void UpdateMeters(const double t1, const bool bLoopedPlay);
void UpdateWidth();
private:
void ResetMeters(const bool bResetClipping);
void RemoveTrackCluster(size_t nIndex);
void MakeButtonBitmap( wxMemoryDC & dc, wxBitmap & bitmap,
wxRect & bev, const wxString & str, bool up );
@ -235,6 +234,7 @@ private:
void OnTimer(wxCommandEvent &event);
void OnTrackSetChanged(wxEvent &event);
void OnTrackChanged(TrackListEvent &event);
void OnStartStop(wxCommandEvent &event);
public:
// mute & solo button images: Create once and store on MixerBoard for use in all MixerTrackClusters.