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

Commit a67d5388 authored by Andreas Huber's avatar Andreas Huber
Browse files

remote destructors are not synchronously executed by the binder...

parent 6608bd0d
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@

#include "include/AwesomePlayer.h"

#include <binder/IPCThreadState.h>
#include <media/stagefright/AudioPlayer.h>
#include <media/stagefright/DataSource.h>
#include <media/stagefright/FileSource.h>
@@ -313,6 +314,12 @@ void AwesomePlayer::initRenderer_l() {
        CHECK(meta->findInt32(kKeyWidth, &decodedWidth));
        CHECK(meta->findInt32(kKeyHeight, &decodedHeight));

        mVideoRenderer.clear();

        // Must ensure that mVideoRenderer's destructor is actually executed
        // before creating a new one.
        IPCThreadState::self()->flushCommands();

        mVideoRenderer =
            mClient.interface()->createRenderer(
                    mISurface, component,
@@ -530,6 +537,12 @@ void AwesomePlayer::onEvent(int32_t code) {
                return;
            }

            if (mVideoBuffer->range_length() == 0) {
                mVideoBuffer->release();
                mVideoBuffer = NULL;
                continue;
            }

            break;
        }
    }