summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/AudioFlinger.h
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-04-25 13:44:49 -0700
committerGlenn Kasten <gkasten@google.com>2012-07-16 11:57:11 -0700
commitd96c5724818fb47917bb5e7abe37799735e1ec0e (patch)
treee7cc73da27068c8c770e53fe0ed00bf7276aea5f /services/audioflinger/AudioFlinger.h
parentdcda3b325f465aa6ec2be11db1c56c8a5e867f33 (diff)
downloadframeworks_av-d96c5724818fb47917bb5e7abe37799735e1ec0e.zip
frameworks_av-d96c5724818fb47917bb5e7abe37799735e1ec0e.tar.gz
frameworks_av-d96c5724818fb47917bb5e7abe37799735e1ec0e.tar.bz2
Don't call virtual methods in destructor
The result of calling virtual methods from a destructor is undefined. Change-Id: I0fd4a19626e5ae564a60b753315b5f6c4b8d1f2c
Diffstat (limited to 'services/audioflinger/AudioFlinger.h')
-rw-r--r--services/audioflinger/AudioFlinger.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index a6fd0a0..fa1ad93 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -844,7 +844,7 @@ private:
int frameCount,
const sp<IMemory>& sharedBuffer,
int sessionId);
- ~TimedTrack();
+ virtual ~TimedTrack();
class TimedBuffer {
public:
@@ -1494,6 +1494,9 @@ private:
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags);
private:
const sp<RecordThread::RecordTrack> mRecordTrack;
+
+ // for use from destructor
+ void stop_nonvirtual();
};
//--- Audio Effect Management
@@ -1887,7 +1890,7 @@ mutable Mutex mLock; // mutex for process, commands and handl
public:
AudioHwDevice(const char *moduleName, audio_hw_device_t *hwDevice) :
mModuleName(strdup(moduleName)), mHwDevice(hwDevice){}
- ~AudioHwDevice() { free((void *)mModuleName); }
+ /*virtual*/ ~AudioHwDevice() { free((void *)mModuleName); }
const char *moduleName() const { return mModuleName; }
audio_hw_device_t *hwDevice() const { return mHwDevice; }
@@ -1964,6 +1967,9 @@ mutable Mutex mLock; // mutex for process, commands and handl
private:
sp<Client> registerPid_l(pid_t pid); // always returns non-0
+ // for use from destructor
+ status_t closeOutput_nonvirtual(audio_io_handle_t output);
+ status_t closeInput_nonvirtual(audio_io_handle_t input);
};