OSDN Git Service

Don't call virtual function in destructor of SurfaceMediaSource
authorJames Dong <jdong@google.com>
Sat, 4 Feb 2012 14:19:50 +0000 (06:19 -0800)
committerJames Dong <jdong@google.com>
Mon, 6 Feb 2012 20:17:44 +0000 (12:17 -0800)
Change-Id: I3cbc2b1222335b61c814b5cdcfaefa495148b0ec

include/media/stagefright/SurfaceMediaSource.h
media/libstagefright/SurfaceMediaSource.cpp

index d0940bb..54baab6 100644 (file)
@@ -58,7 +58,7 @@ public:
 
     // For the MediaSource interface for use by StageFrightRecorder:
     virtual status_t start(MetaData *params = NULL);
-    virtual status_t stop();
+    virtual status_t stop() { return reset(); }
     virtual status_t read(
             MediaBuffer **buffer, const ReadOptions *options = NULL);
     virtual sp<MetaData> getFormat();
@@ -359,6 +359,8 @@ private:
     Condition mFrameAvailableCondition;
     Condition mFrameCompleteCondition;
 
+    status_t reset();
+
     // Avoid copying and equating and default constructor
     DISALLOW_IMPLICIT_CONSTRUCTORS(SurfaceMediaSource);
 };
index 2233d1b..d068381 100644 (file)
@@ -60,7 +60,7 @@ SurfaceMediaSource::SurfaceMediaSource(uint32_t bufW, uint32_t bufH) :
 SurfaceMediaSource::~SurfaceMediaSource() {
     ALOGV("SurfaceMediaSource::~SurfaceMediaSource");
     if (!mStopped) {
-        stop();
+        reset();
     }
 }
 
@@ -716,9 +716,9 @@ status_t SurfaceMediaSource::start(MetaData *params)
 }
 
 
-status_t SurfaceMediaSource::stop()
+status_t SurfaceMediaSource::reset()
 {
-    ALOGV("Stop");
+    ALOGV("Reset");
 
     Mutex::Autolock lock(mMutex);
     // TODO: Add waiting on mFrameCompletedCondition here?