Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c2240b12 authored by James Dong's avatar James Dong
Browse files

Don't call virtual functions in destructors for the writer classes

Have not found any concrete bugs related to these calls yet, but we should avoid
calling virtual functions in destructors, regardless.

Change-Id: I2d47b79d3fb2d29f418619bee83aa147d232a5d4
parent 3a29869d
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ struct AACWriter : public MediaWriter {
    virtual status_t addSource(const sp<MediaSource> &source);
    virtual bool reachedEOS();
    virtual status_t start(MetaData *params = NULL);
    virtual status_t stop();
    virtual status_t stop() { return reset(); }
    virtual status_t pause();

protected:
@@ -66,6 +66,7 @@ private:
    bool exceedsFileSizeLimit();
    bool exceedsFileDurationLimit();
    status_t writeAdtsHeader(uint32_t frameLength);
    status_t reset();

    DISALLOW_EVIL_CONSTRUCTORS(AACWriter);
};
+2 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ struct AMRWriter : public MediaWriter {
    virtual status_t addSource(const sp<MediaSource> &source);
    virtual bool reachedEOS();
    virtual status_t start(MetaData *params = NULL);
    virtual status_t stop();
    virtual status_t stop() { return reset(); }
    virtual status_t pause();

protected:
@@ -60,6 +60,7 @@ private:
    status_t threadFunc();
    bool exceedsFileSizeLimit();
    bool exceedsFileDurationLimit();
    status_t reset();

    AMRWriter(const AMRWriter &);
    AMRWriter &operator=(const AMRWriter &);
+2 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ struct MPEG2TSWriter : public MediaWriter {

    virtual status_t addSource(const sp<MediaSource> &source);
    virtual status_t start(MetaData *param = NULL);
    virtual status_t stop();
    virtual status_t stop() { return reset(); }
    virtual status_t pause();
    virtual bool reachedEOS();
    virtual status_t dump(int fd, const Vector<String16>& args);
@@ -78,6 +78,7 @@ private:
    void writeAccessUnit(int32_t sourceIndex, const sp<ABuffer> &buffer);

    ssize_t internalWrite(const void *data, size_t size);
    status_t reset();

    DISALLOW_EVIL_CONSTRUCTORS(MPEG2TSWriter);
};
+2 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ public:

    virtual status_t addSource(const sp<MediaSource> &source);
    virtual status_t start(MetaData *param = NULL);
    virtual status_t stop();
    virtual status_t stop() { return reset(); }
    virtual status_t pause();
    virtual bool reachedEOS();
    virtual status_t dump(int fd, const Vector<String16>& args);
@@ -184,6 +184,7 @@ private:
    void writeLongitude(int degreex10000);
    void sendSessionSummary();
    void release();
    status_t reset();

    MPEG4Writer(const MPEG4Writer &);
    MPEG4Writer &operator=(const MPEG4Writer &);
+2 −2
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ AACWriter::AACWriter(int fd)

AACWriter::~AACWriter() {
    if (mStarted) {
        stop();
        reset();
    }

    if (mFd != -1) {
@@ -152,7 +152,7 @@ status_t AACWriter::pause() {
    return OK;
}

status_t AACWriter::stop() {
status_t AACWriter::reset() {
    if (!mStarted) {
        return OK;
    }
Loading