1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-07 07:39:29 +02:00

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 "AudacityApp.h"
#include "AudacityException.h" #include "AudacityException.h"
#include "Mix.h" #include "Mix.h"
#include "MixerBoard.h"
#include "Resample.h" #include "Resample.h"
#include "RingBuffer.h" #include "RingBuffer.h"
#include "prefs/GUISettings.h" #include "prefs/GUISettings.h"
@ -2402,10 +2401,6 @@ void AudioIO::SetMeters()
if (mOutputMeter) if (mOutputMeter)
mOutputMeter->Reset(mRate, true); mOutputMeter->Reset(mRate, true);
MixerBoard* pMixerBoard = mOwningProject->GetMixerBoard();
if (pMixerBoard)
pMixerBoard->ResetMeters(true);
mUpdateMeters = true; mUpdateMeters = true;
} }
@ -2659,10 +2654,6 @@ void AudioIO::StopStream()
if (mOutputMeter) if (mOutputMeter)
mOutputMeter->Reset(mRate, false); mOutputMeter->Reset(mRate, false);
MixerBoard* pMixerBoard = mOwningProject->GetMixerBoard();
if (pMixerBoard)
pMixerBoard->ResetMeters(false);
mInputMeter.Release(); mInputMeter.Release();
mOutputMeter = NULL; mOutputMeter = NULL;
mOwningProject = NULL; mOwningProject = NULL;

View File

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

View File

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