summaryrefslogtreecommitdiffstats
path: root/src/plugins/avfoundation/mediaplayer
diff options
context:
space:
mode:
authorFrank Osterfeld <frank.osterfeld@kdab.com>2015-02-24 22:40:55 +0100
committerYoann Lopes <yoann.lopes@theqtcompany.com>2015-02-25 15:39:03 +0000
commit4e07ff99f6ed49da3853c3f34cce393820105f1c (patch)
treee916f2695fca49a90d96d13d813ef4a290d290b2 /src/plugins/avfoundation/mediaplayer
parentb0f283b65e8dc9e9dbfe81b3fd58e8898cbb6676 (diff)
ios: Enable volume and mute functionality
AVPlayer::setVolume and setMute also exist on iOS, so no need to ifdef them to be OS X-only. As they require iOS 7.0, add runtime checks to ensure that the methods exist. Task-number: QTBUG-39240 Change-Id: I10810705cef8e5d8c18e4c79a15fa06425ea57f9 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com> Reviewed-by: James Turner <james.turner@kdab.com>
Diffstat (limited to 'src/plugins/avfoundation/mediaplayer')
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
index 8b87be87d..005c00a18 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
@@ -719,14 +719,17 @@ void AVFMediaPlayerSession::setVolume(int volume)
if (m_volume == volume)
return;
- m_volume = volume;
-
-#if defined(Q_OS_OSX)
AVPlayer *player = [(AVFMediaPlayerSessionObserver*)m_observer player];
- if (player) {
- [[(AVFMediaPlayerSessionObserver*)m_observer player] setVolume:m_volume / 100.0f];
+ if (!player)
+ return;
+
+ if (![player respondsToSelector:@selector(setVolume:)]) {
+ qWarning("%s not implemented, requires iOS 7 or later", Q_FUNC_INFO);
+ return;
}
-#endif
+
+ [player setVolume:m_volume / 100.0f];
+ m_volume = volume;
Q_EMIT volumeChanged(m_volume);
}
@@ -739,10 +742,19 @@ void AVFMediaPlayerSession::setMuted(bool muted)
if (m_muted == muted)
return;
+ AVPlayer *player = [(AVFMediaPlayerSessionObserver*)m_observer player];
+ if (!player)
+ return;
+
+ // iOS: setMuted exists since iOS 7.0, thus check if it exists
+ if (![player respondsToSelector:@selector(setMuted:)]) {
+ qWarning("%s not implemented, requires iOS 7 or later", Q_FUNC_INFO);
+ return;
+ }
+
+ [player setMuted:m_muted];
m_muted = muted;
-#if defined(Q_OS_OSX)
- [[(AVFMediaPlayerSessionObserver*)m_observer player] setMuted:m_muted];
-#endif
+
Q_EMIT mutedChanged(muted);
}