From 1bc8c5f84c346d7de1796c9eb1eb549fb7958482 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Tue, 24 Feb 2009 09:56:11 +0000 Subject: [PATCH] added close function for audio interface (this is a preliminary solution for switching off the audio interface when not connected, a better solution would be to implement a stop function but this does not work with our current buffer initialization scheme) --- linux/sound.h | 5 ++--- src/soundbase.cpp | 10 +++++----- src/soundbase.h | 1 + windows/sound.h | 3 +-- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/linux/sound.h b/linux/sound.h index 30df9570..da821f32 100755 --- a/linux/sound.h +++ b/linux/sound.h @@ -78,9 +78,8 @@ public: virtual void Init() { InitRecording(); InitPlayback(); } virtual bool Read ( CVector& psData ); virtual bool Write ( CVector& psData ); + virtual void Close(); - void Close(); - protected: void InitRecording(); void InitPlayback(); @@ -106,7 +105,7 @@ protected: virtual void Init() { printf ( "no sound!" ); } virtual bool Read ( CVector& psData ) { printf ( "no sound!" ); return false; } virtual bool Write ( CVector& psData ) { printf ( "no sound!" ); return false; } - void Close() {} + virtual void Close() {} #endif }; diff --git a/src/soundbase.cpp b/src/soundbase.cpp index 36796974..f9a9e871 100755 --- a/src/soundbase.cpp +++ b/src/soundbase.cpp @@ -37,16 +37,16 @@ void CSoundBase::Start() void CSoundBase::Stop() { - -// TODO stop audio interface (previously done in Close function which is -// now unused!!!!!!!!!!! - - // set flag so that thread can leave the main loop bRun = false; // give thread some time to terminate wait ( 5000 ); + + +// TODO stop audio interface (previously done in Close function, we +// better should implement a stop function in derived sound classes + Close(); } void CSoundBase::run() diff --git a/src/soundbase.h b/src/soundbase.h index f3f94753..8fc9e827 100755 --- a/src/soundbase.h +++ b/src/soundbase.h @@ -44,6 +44,7 @@ public: virtual void Start(); virtual void Stop(); bool IsRunning() const { return bRun; } + virtual void Close() = 0; protected: // function pointer to callback function diff --git a/windows/sound.h b/windows/sound.h index 3ccca0e7..ec242069 100755 --- a/windows/sound.h +++ b/windows/sound.h @@ -62,6 +62,7 @@ public: virtual void Init(); virtual bool Read ( CVector& psData ); virtual bool Write ( CVector& psData ); + virtual void Close(); int GetNumDev() { return lNumDevs; } std::string GetDeviceName ( const int iDiD ) { return cDriverNames[iDiD]; } @@ -74,8 +75,6 @@ public: void SetInNumBuf ( const int iNewNum ); int GetInNumBuf(); - void Close(); - protected: bool LoadAndInitializeFirstValidDriver(); std::string LoadAndInitializeDriver ( int iIdx );