1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-03-06 14:35:32 +01:00

New attached structure ProjectAudioIO handles tokens and meters

This commit is contained in:
Paul Licameli
2019-06-02 13:30:56 -04:00
parent 20ed57082f
commit 1f4202c878
27 changed files with 169 additions and 109 deletions

View File

@@ -199,9 +199,6 @@ class AUDACITY_DLL_API AudacityProject final : public wxFrame,
void SetPlayRegionLocked(bool value) { mLockPlayRegion = value; }
wxString GetProjectName() const;
int GetAudioIOToken() const;
bool IsAudioActive() const;
void SetAudioIOToken(int token);
bool IsActive() override;
@@ -371,11 +368,6 @@ public:
bool TP_ScrollUpDown(int delta) override;
void TP_HandleResize() override;
MeterPanel *GetPlaybackMeter();
void SetPlaybackMeter(MeterPanel *playback);
MeterPanel *GetCaptureMeter();
void SetCaptureMeter(MeterPanel *capture);
const wxString &GetStatus() const { return mLastMainStatusMessage; }
void SetStatus(const wxString &msg);
@@ -484,10 +476,6 @@ private:
bool mShownOnce{ false };
// Project owned meters
MeterPanel *mPlaybackMeter{};
MeterPanel *mCaptureMeter{};
public:
bool mbBusyImporting{ false }; // used to fix bug 584
int mBatchMode{ 0 };// 0 means not, >0 means in batch mode.
@@ -500,8 +488,6 @@ private:
void ResetTimerRecordCancelled(){mTimerRecordCanceled=false;}
private:
int mAudioIOToken{ -1 };
bool mIsDeleting{ false };
public:
@@ -599,6 +585,35 @@ inline const wxFrame *FindProjectFrame( const AudacityProject *project ) {
return project ? &GetProjectFrame( *project ) : nullptr;
}
class ProjectAudioIO final
: public ClientData::Base
{
public:
static ProjectAudioIO &Get( AudacityProject &project );
static const ProjectAudioIO &Get( const AudacityProject &project );
explicit ProjectAudioIO( AudacityProject &project );
~ProjectAudioIO();
int GetAudioIOToken() const;
bool IsAudioActive() const;
void SetAudioIOToken(int token);
MeterPanel *GetPlaybackMeter();
void SetPlaybackMeter(MeterPanel *playback);
MeterPanel *GetCaptureMeter();
void SetCaptureMeter(MeterPanel *capture);
private:
AudacityProject &mProject;
// Project owned meters
MeterPanel *mPlaybackMeter{};
MeterPanel *mCaptureMeter{};
int mAudioIOToken{ -1 };
};
AudioIOStartStreamOptions DefaultPlayOptions( AudacityProject &project );
AudioIOStartStreamOptions DefaultSpeedPlayOptions( AudacityProject &project );