diff options
author | Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com> | 2012-03-09 14:51:07 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-12 04:38:44 +0100 |
commit | e2eaa283fb0494284304c12285c0d3c10086dfe6 (patch) | |
tree | 8d7b8da39e2edacf438590b06ce8fcf9f4fa2920 /src | |
parent | 10b006340191d14d33f7f6b7f94a6e13eb8acea5 (diff) | |
download | qtmultimedia-e2eaa283fb0494284304c12285c0d3c10086dfe6.tar.gz |
Don't request renderer control if null surface is set as video output.
QCamera and QMediaPlayer are likely to wait for valid
surface to be passed to the renderer control before startup, so after
player->setVideoOutput(nullSurface)
player will not start playback.
If the renderer control was already requested before for valid
surface it should be released when the null surface is assigned.
Change-Id: I3f78f2d82e61fae5f305874874c0ffbc4cb7dc1d
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/multimedia/camera/qcamera.cpp | 9 | ||||
-rw-r--r-- | src/multimedia/playback/qmediaplayer.cpp | 9 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp index 580808c03..bf9db9245 100644 --- a/src/multimedia/camera/qcamera.cpp +++ b/src/multimedia/camera/qcamera.cpp @@ -509,7 +509,14 @@ void QCamera::setViewfinder(QAbstractVideoSurface *surface) if (d->viewfinder) unbind(d->viewfinder); - d->viewfinder = bind(&d->surfaceViewfinder) ? &d->surfaceViewfinder : 0; + d->viewfinder = 0; + + if (surface && bind(&d->surfaceViewfinder)) + d->viewfinder = &d->surfaceViewfinder; + } else if (!surface) { + //unbind the surfaceViewfinder if null surface is set + unbind(&d->surfaceViewfinder); + d->viewfinder = 0; } } diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index f9b60f587..0ff341438 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -774,7 +774,14 @@ void QMediaPlayer::setVideoOutput(QAbstractVideoSurface *surface) if (d->videoOutput) unbind(d->videoOutput); - d->videoOutput = bind(&d->surfaceOutput) ? &d->surfaceOutput : 0; + d->videoOutput = 0; + + if (surface && bind(&d->surfaceOutput)) + d->videoOutput = &d->surfaceOutput; + } else if (!surface) { + //unbind the surfaceOutput if null surface is set + unbind(&d->surfaceOutput); + d->videoOutput = 0; } } |