diff options
author | Glenn Kasten <gkasten@google.com> | 2012-04-25 13:44:49 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2012-07-16 11:57:11 -0700 |
commit | d96c5724818fb47917bb5e7abe37799735e1ec0e (patch) | |
tree | e7cc73da27068c8c770e53fe0ed00bf7276aea5f /services/audioflinger/AudioFlinger.h | |
parent | dcda3b325f465aa6ec2be11db1c56c8a5e867f33 (diff) | |
download | frameworks_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.h | 10 |
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); }; |