diff options
Diffstat (limited to 'src/plugins/android/src/common/qandroidvideorendercontrol.cpp')
-rw-r--r-- | src/plugins/android/src/common/qandroidvideorendercontrol.cpp | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/src/plugins/android/src/common/qandroidvideorendercontrol.cpp b/src/plugins/android/src/common/qandroidvideorendercontrol.cpp index 55f71d735..b737e8a42 100644 --- a/src/plugins/android/src/common/qandroidvideorendercontrol.cpp +++ b/src/plugins/android/src/common/qandroidvideorendercontrol.cpp @@ -122,20 +122,8 @@ QAndroidVideoRendererControl::QAndroidVideoRendererControl(QObject *parent) QAndroidVideoRendererControl::~QAndroidVideoRendererControl() { - if (m_surfaceTexture) { - m_surfaceTexture->callMethod<void>("release"); - delete m_surfaceTexture; - m_surfaceTexture = 0; - } - if (m_androidSurface) { - m_androidSurface->callMethod<void>("release"); - delete m_androidSurface; - m_androidSurface = 0; - } - if (m_surfaceHolder) { - delete m_surfaceHolder; - m_surfaceHolder = 0; - } + clearSurfaceTexture(); + if (m_glDeleter) m_glDeleter->deleteLater(); } @@ -202,6 +190,24 @@ bool QAndroidVideoRendererControl::initSurfaceTexture() return m_surfaceTexture != 0; } +void QAndroidVideoRendererControl::clearSurfaceTexture() +{ + if (m_surfaceTexture) { + m_surfaceTexture->callMethod<void>("release"); + delete m_surfaceTexture; + m_surfaceTexture = 0; + } + if (m_androidSurface) { + m_androidSurface->callMethod<void>("release"); + delete m_androidSurface; + m_androidSurface = 0; + } + if (m_surfaceHolder) { + delete m_surfaceHolder; + m_surfaceHolder = 0; + } +} + jobject QAndroidVideoRendererControl::surfaceHolder() { if (!initSurfaceTexture()) @@ -245,6 +251,11 @@ void QAndroidVideoRendererControl::stop() m_nativeSize = QSize(); } +void QAndroidVideoRendererControl::reset() +{ + clearSurfaceTexture(); +} + void QAndroidVideoRendererControl::onFrameAvailable() { if (!m_nativeSize.isValid() || !m_surface) |