diff options
author | Sergio Ahumada <sergio.ahumada@digia.com> | 2013-08-05 10:38:25 +0200 |
---|---|---|
committer | Sergio Ahumada <sergio.ahumada@digia.com> | 2013-08-05 10:38:25 +0200 |
commit | 06eab796bafa48c9e1a7e6c389bec84b8f42bd49 (patch) | |
tree | 0db18767a303250e13d8291748595912d73be9e6 | |
parent | ab29837c0efd4c07e17bbc8a4e49a592218d924a (diff) | |
parent | 2838a99c5abc78cb6ff1b4d4c5872ea4ddd5147e (diff) |
Merge branch 'stable' into dev
Conflicts:
.qmake.conf
Change-Id: Id3427cb1a80956ba61373313c21b4b9aa007ea54
-rw-r--r-- | examples/multimedia/declarative-camera/CameraButton.qml (renamed from examples/multimediawidgets/declarative-camera/CameraButton.qml) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/CameraPropertyButton.qml (renamed from examples/multimediawidgets/declarative-camera/CameraPropertyButton.qml) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/CameraPropertyPopup.qml (renamed from examples/multimediawidgets/declarative-camera/CameraPropertyPopup.qml) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/FocusButton.qml (renamed from examples/multimediawidgets/declarative-camera/FocusButton.qml) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/PhotoCaptureControls.qml (renamed from examples/multimediawidgets/declarative-camera/PhotoCaptureControls.qml) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/PhotoPreview.qml (renamed from examples/multimediawidgets/declarative-camera/PhotoPreview.qml) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/VideoCaptureControls.qml (renamed from examples/multimediawidgets/declarative-camera/VideoCaptureControls.qml) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/VideoPreview.qml (renamed from examples/multimediawidgets/declarative-camera/VideoPreview.qml) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/ZoomControl.qml (renamed from examples/multimediawidgets/declarative-camera/ZoomControl.qml) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/declarative-camera.pro (renamed from examples/multimediawidgets/declarative-camera/declarative-camera.pro) | 2 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/declarative-camera.qml (renamed from examples/multimediawidgets/declarative-camera/declarative-camera.qml) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/declarative-camera.qmlproject (renamed from examples/multimediawidgets/declarative-camera/declarative-camera.qmlproject) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/declarative-camera.qrc (renamed from examples/multimediawidgets/declarative-camera/declarative-camera.qrc) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/doc/images/qml-camera.png (renamed from examples/multimediawidgets/declarative-camera/doc/images/qml-camera.png) | bin | 28409 -> 28409 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/doc/src/declarative-camera.qdoc (renamed from examples/multimediawidgets/declarative-camera/doc/src/declarative-camera.qdoc) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/images/camera_auto_mode.png (renamed from examples/multimediawidgets/declarative-camera/images/camera_auto_mode.png) | bin | 778 -> 778 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/camera_camera_setting.png (renamed from examples/multimediawidgets/declarative-camera/images/camera_camera_setting.png) | bin | 717 -> 717 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/camera_flash_auto.png (renamed from examples/multimediawidgets/declarative-camera/images/camera_flash_auto.png) | bin | 1119 -> 1119 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/camera_flash_fill.png (renamed from examples/multimediawidgets/declarative-camera/images/camera_flash_fill.png) | bin | 610 -> 610 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/camera_flash_off.png (renamed from examples/multimediawidgets/declarative-camera/images/camera_flash_off.png) | bin | 717 -> 717 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/camera_flash_redeye.png (renamed from examples/multimediawidgets/declarative-camera/images/camera_flash_redeye.png) | bin | 945 -> 945 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/camera_white_balance_cloudy.png (renamed from examples/multimediawidgets/declarative-camera/images/camera_white_balance_cloudy.png) | bin | 625 -> 625 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/camera_white_balance_flourescent.png (renamed from examples/multimediawidgets/declarative-camera/images/camera_white_balance_flourescent.png) | bin | 554 -> 554 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/camera_white_balance_incandescent.png (renamed from examples/multimediawidgets/declarative-camera/images/camera_white_balance_incandescent.png) | bin | 600 -> 600 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/camera_white_balance_sunny.png (renamed from examples/multimediawidgets/declarative-camera/images/camera_white_balance_sunny.png) | bin | 587 -> 587 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/toolbutton.png (renamed from examples/multimediawidgets/declarative-camera/images/toolbutton.png) | bin | 2550 -> 2550 bytes | |||
-rw-r--r-- | examples/multimedia/declarative-camera/images/toolbutton.sci (renamed from examples/multimediawidgets/declarative-camera/images/toolbutton.sci) | 0 | ||||
-rw-r--r-- | examples/multimedia/declarative-camera/qmlcamera.cpp (renamed from examples/multimediawidgets/declarative-camera/qmlcamera.cpp) | 0 | ||||
-rw-r--r-- | examples/multimedia/multimedia.pro | 3 | ||||
-rw-r--r-- | examples/multimedia/video/qmlvideo/main.cpp | 10 | ||||
-rw-r--r-- | examples/multimedia/video/qmlvideo/qml/qmlvideo/FileBrowser.qml | 9 | ||||
-rw-r--r-- | examples/multimediawidgets/multimediawidgets.pro | 5 | ||||
-rw-r--r-- | qtmultimedia.pro | 2 | ||||
-rw-r--r-- | src/multimedia/audio/qsoundeffect_pulse_p.cpp | 54 | ||||
-rw-r--r-- | src/multimedia/audio/qsoundeffect_pulse_p.h | 1 | ||||
-rw-r--r-- | src/multimediawidgets/doc/src/qtmultimediawidgets-index.qdoc | 1 |
36 files changed, 62 insertions, 25 deletions
diff --git a/examples/multimediawidgets/declarative-camera/CameraButton.qml b/examples/multimedia/declarative-camera/CameraButton.qml index b0353b4c3..b0353b4c3 100644 --- a/examples/multimediawidgets/declarative-camera/CameraButton.qml +++ b/examples/multimedia/declarative-camera/CameraButton.qml diff --git a/examples/multimediawidgets/declarative-camera/CameraPropertyButton.qml b/examples/multimedia/declarative-camera/CameraPropertyButton.qml index 033f73415..033f73415 100644 --- a/examples/multimediawidgets/declarative-camera/CameraPropertyButton.qml +++ b/examples/multimedia/declarative-camera/CameraPropertyButton.qml diff --git a/examples/multimediawidgets/declarative-camera/CameraPropertyPopup.qml b/examples/multimedia/declarative-camera/CameraPropertyPopup.qml index 130de95f4..130de95f4 100644 --- a/examples/multimediawidgets/declarative-camera/CameraPropertyPopup.qml +++ b/examples/multimedia/declarative-camera/CameraPropertyPopup.qml diff --git a/examples/multimediawidgets/declarative-camera/FocusButton.qml b/examples/multimedia/declarative-camera/FocusButton.qml index b3966f249..b3966f249 100644 --- a/examples/multimediawidgets/declarative-camera/FocusButton.qml +++ b/examples/multimedia/declarative-camera/FocusButton.qml diff --git a/examples/multimediawidgets/declarative-camera/PhotoCaptureControls.qml b/examples/multimedia/declarative-camera/PhotoCaptureControls.qml index 991a46e14..991a46e14 100644 --- a/examples/multimediawidgets/declarative-camera/PhotoCaptureControls.qml +++ b/examples/multimedia/declarative-camera/PhotoCaptureControls.qml diff --git a/examples/multimediawidgets/declarative-camera/PhotoPreview.qml b/examples/multimedia/declarative-camera/PhotoPreview.qml index 34b272dc6..34b272dc6 100644 --- a/examples/multimediawidgets/declarative-camera/PhotoPreview.qml +++ b/examples/multimedia/declarative-camera/PhotoPreview.qml diff --git a/examples/multimediawidgets/declarative-camera/VideoCaptureControls.qml b/examples/multimedia/declarative-camera/VideoCaptureControls.qml index e178ff15c..e178ff15c 100644 --- a/examples/multimediawidgets/declarative-camera/VideoCaptureControls.qml +++ b/examples/multimedia/declarative-camera/VideoCaptureControls.qml diff --git a/examples/multimediawidgets/declarative-camera/VideoPreview.qml b/examples/multimedia/declarative-camera/VideoPreview.qml index 597b5b8c7..597b5b8c7 100644 --- a/examples/multimediawidgets/declarative-camera/VideoPreview.qml +++ b/examples/multimedia/declarative-camera/VideoPreview.qml diff --git a/examples/multimediawidgets/declarative-camera/ZoomControl.qml b/examples/multimedia/declarative-camera/ZoomControl.qml index 1bfda7500..1bfda7500 100644 --- a/examples/multimediawidgets/declarative-camera/ZoomControl.qml +++ b/examples/multimedia/declarative-camera/ZoomControl.qml diff --git a/examples/multimediawidgets/declarative-camera/declarative-camera.pro b/examples/multimedia/declarative-camera/declarative-camera.pro index 5fb0a1b51..71d4f68b0 100644 --- a/examples/multimediawidgets/declarative-camera/declarative-camera.pro +++ b/examples/multimedia/declarative-camera/declarative-camera.pro @@ -6,6 +6,6 @@ QT += quick qml multimedia SOURCES += qmlcamera.cpp RESOURCES += declarative-camera.qrc -target.path = $$[QT_INSTALL_EXAMPLES]/multimediawidgets/declarative-camera +target.path = $$[QT_INSTALL_EXAMPLES]/multimedia/declarative-camera INSTALLS += target diff --git a/examples/multimediawidgets/declarative-camera/declarative-camera.qml b/examples/multimedia/declarative-camera/declarative-camera.qml index 3e7ed4c25..3e7ed4c25 100644 --- a/examples/multimediawidgets/declarative-camera/declarative-camera.qml +++ b/examples/multimedia/declarative-camera/declarative-camera.qml diff --git a/examples/multimediawidgets/declarative-camera/declarative-camera.qmlproject b/examples/multimedia/declarative-camera/declarative-camera.qmlproject index 53f5ecb8d..53f5ecb8d 100644 --- a/examples/multimediawidgets/declarative-camera/declarative-camera.qmlproject +++ b/examples/multimedia/declarative-camera/declarative-camera.qmlproject diff --git a/examples/multimediawidgets/declarative-camera/declarative-camera.qrc b/examples/multimedia/declarative-camera/declarative-camera.qrc index d99b86c0c..d99b86c0c 100644 --- a/examples/multimediawidgets/declarative-camera/declarative-camera.qrc +++ b/examples/multimedia/declarative-camera/declarative-camera.qrc diff --git a/examples/multimediawidgets/declarative-camera/doc/images/qml-camera.png b/examples/multimedia/declarative-camera/doc/images/qml-camera.png Binary files differindex 0cd61f0a0..0cd61f0a0 100644 --- a/examples/multimediawidgets/declarative-camera/doc/images/qml-camera.png +++ b/examples/multimedia/declarative-camera/doc/images/qml-camera.png diff --git a/examples/multimediawidgets/declarative-camera/doc/src/declarative-camera.qdoc b/examples/multimedia/declarative-camera/doc/src/declarative-camera.qdoc index 02e77854c..02e77854c 100644 --- a/examples/multimediawidgets/declarative-camera/doc/src/declarative-camera.qdoc +++ b/examples/multimedia/declarative-camera/doc/src/declarative-camera.qdoc diff --git a/examples/multimediawidgets/declarative-camera/images/camera_auto_mode.png b/examples/multimedia/declarative-camera/images/camera_auto_mode.png Binary files differindex f168296cf..f168296cf 100644 --- a/examples/multimediawidgets/declarative-camera/images/camera_auto_mode.png +++ b/examples/multimedia/declarative-camera/images/camera_auto_mode.png diff --git a/examples/multimediawidgets/declarative-camera/images/camera_camera_setting.png b/examples/multimedia/declarative-camera/images/camera_camera_setting.png Binary files differindex 7b993eee9..7b993eee9 100644 --- a/examples/multimediawidgets/declarative-camera/images/camera_camera_setting.png +++ b/examples/multimedia/declarative-camera/images/camera_camera_setting.png diff --git a/examples/multimediawidgets/declarative-camera/images/camera_flash_auto.png b/examples/multimedia/declarative-camera/images/camera_flash_auto.png Binary files differindex fb5cc40ec..fb5cc40ec 100644 --- a/examples/multimediawidgets/declarative-camera/images/camera_flash_auto.png +++ b/examples/multimedia/declarative-camera/images/camera_flash_auto.png diff --git a/examples/multimediawidgets/declarative-camera/images/camera_flash_fill.png b/examples/multimedia/declarative-camera/images/camera_flash_fill.png Binary files differindex 7bc5949ac..7bc5949ac 100644 --- a/examples/multimediawidgets/declarative-camera/images/camera_flash_fill.png +++ b/examples/multimedia/declarative-camera/images/camera_flash_fill.png diff --git a/examples/multimediawidgets/declarative-camera/images/camera_flash_off.png b/examples/multimedia/declarative-camera/images/camera_flash_off.png Binary files differindex 3c5db10cc..3c5db10cc 100644 --- a/examples/multimediawidgets/declarative-camera/images/camera_flash_off.png +++ b/examples/multimedia/declarative-camera/images/camera_flash_off.png diff --git a/examples/multimediawidgets/declarative-camera/images/camera_flash_redeye.png b/examples/multimedia/declarative-camera/images/camera_flash_redeye.png Binary files differindex 534a087df..534a087df 100644 --- a/examples/multimediawidgets/declarative-camera/images/camera_flash_redeye.png +++ b/examples/multimedia/declarative-camera/images/camera_flash_redeye.png diff --git a/examples/multimediawidgets/declarative-camera/images/camera_white_balance_cloudy.png b/examples/multimedia/declarative-camera/images/camera_white_balance_cloudy.png Binary files differindex 243b699e7..243b699e7 100644 --- a/examples/multimediawidgets/declarative-camera/images/camera_white_balance_cloudy.png +++ b/examples/multimedia/declarative-camera/images/camera_white_balance_cloudy.png diff --git a/examples/multimediawidgets/declarative-camera/images/camera_white_balance_flourescent.png b/examples/multimedia/declarative-camera/images/camera_white_balance_flourescent.png Binary files differindex 032efe1d1..032efe1d1 100644 --- a/examples/multimediawidgets/declarative-camera/images/camera_white_balance_flourescent.png +++ b/examples/multimedia/declarative-camera/images/camera_white_balance_flourescent.png diff --git a/examples/multimediawidgets/declarative-camera/images/camera_white_balance_incandescent.png b/examples/multimedia/declarative-camera/images/camera_white_balance_incandescent.png Binary files differindex 98f906741..98f906741 100644 --- a/examples/multimediawidgets/declarative-camera/images/camera_white_balance_incandescent.png +++ b/examples/multimedia/declarative-camera/images/camera_white_balance_incandescent.png diff --git a/examples/multimediawidgets/declarative-camera/images/camera_white_balance_sunny.png b/examples/multimedia/declarative-camera/images/camera_white_balance_sunny.png Binary files differindex d7d5c9a36..d7d5c9a36 100644 --- a/examples/multimediawidgets/declarative-camera/images/camera_white_balance_sunny.png +++ b/examples/multimedia/declarative-camera/images/camera_white_balance_sunny.png diff --git a/examples/multimediawidgets/declarative-camera/images/toolbutton.png b/examples/multimedia/declarative-camera/images/toolbutton.png Binary files differindex 11310013e..11310013e 100644 --- a/examples/multimediawidgets/declarative-camera/images/toolbutton.png +++ b/examples/multimedia/declarative-camera/images/toolbutton.png diff --git a/examples/multimediawidgets/declarative-camera/images/toolbutton.sci b/examples/multimedia/declarative-camera/images/toolbutton.sci index 9e4f96530..9e4f96530 100644 --- a/examples/multimediawidgets/declarative-camera/images/toolbutton.sci +++ b/examples/multimedia/declarative-camera/images/toolbutton.sci diff --git a/examples/multimediawidgets/declarative-camera/qmlcamera.cpp b/examples/multimedia/declarative-camera/qmlcamera.cpp index bf74831a3..bf74831a3 100644 --- a/examples/multimediawidgets/declarative-camera/qmlcamera.cpp +++ b/examples/multimedia/declarative-camera/qmlcamera.cpp diff --git a/examples/multimedia/multimedia.pro b/examples/multimedia/multimedia.pro index bacbba984..449cb150f 100644 --- a/examples/multimedia/multimedia.pro +++ b/examples/multimedia/multimedia.pro @@ -13,8 +13,9 @@ qtHaveModule(widgets) { audiooutput \ } -qtHaveModule(gui):qtHaveModule(qml) { +qtHaveModule(quick) { SUBDIRS += \ + declarative-camera \ declarative-radio \ video } diff --git a/examples/multimedia/video/qmlvideo/main.cpp b/examples/multimedia/video/qmlvideo/main.cpp index 81c38d240..a14684ff7 100644 --- a/examples/multimedia/video/qmlvideo/main.cpp +++ b/examples/multimedia/video/qmlvideo/main.cpp @@ -129,13 +129,11 @@ int main(int argc, char *argv[]) rootObject, SLOT(qmlFramePainted())); #endif - QUrl videoPath; const QStringList moviesLocation = QStandardPaths::standardLocations(QStandardPaths::MoviesLocation); - if (moviesLocation.isEmpty()) { - QUrl appPath(QString("file://%1").arg(app.applicationDirPath())); - videoPath = appPath.resolved(QUrl("./")); - } else - videoPath = QString("file://%1").arg(moviesLocation.first()); + const QUrl videoPath = + QUrl::fromLocalFile(moviesLocation.isEmpty() ? + app.applicationDirPath() : + moviesLocation.front()); viewer.rootContext()->setContextProperty("videoPath", videoPath); QMetaObject::invokeMethod(rootObject, "init"); diff --git a/examples/multimedia/video/qmlvideo/qml/qmlvideo/FileBrowser.qml b/examples/multimedia/video/qmlvideo/qml/qmlvideo/FileBrowser.qml index 18b7b0e09..b3e82c8d2 100644 --- a/examples/multimedia/video/qmlvideo/qml/qmlvideo/FileBrowser.qml +++ b/examples/multimedia/video/qmlvideo/qml/qmlvideo/FileBrowser.qml @@ -101,7 +101,10 @@ Rectangle { Rectangle { id: wrapper function launch() { - var path = "file://" + filePath; + var path = "file://"; + if (filePath.length > 2 && filePath[1] === ':') // Windows drive logic, see QUrl::fromLocalFile() + path += '/'; + path += filePath; if (folders.isFolder(index)) down(path); else @@ -306,7 +309,7 @@ Rectangle { MouseArea { id: upRegion; anchors.centerIn: parent width: 56 height: 56 - onClicked: if (folders.parentFolder != "") up() + onClicked: up() } states: [ State { @@ -352,6 +355,8 @@ Rectangle { function up() { var path = folders.parentFolder; + if (path.toString().length === 0 || path.toString() === 'file:') + return; if (folders == folders1) { view = view2 folders = folders2; diff --git a/examples/multimediawidgets/multimediawidgets.pro b/examples/multimediawidgets/multimediawidgets.pro index d8990cdc3..001a78d50 100644 --- a/examples/multimediawidgets/multimediawidgets.pro +++ b/examples/multimediawidgets/multimediawidgets.pro @@ -9,8 +9,3 @@ qtHaveModule(widgets) { player \ customvideosurface } - -qtHaveModule(gui):qtHaveModule(qml) { - disabled:SUBDIRS += declarative-camera -} - diff --git a/qtmultimedia.pro b/qtmultimedia.pro index 593dff24f..d285c3cbc 100644 --- a/qtmultimedia.pro +++ b/qtmultimedia.pro @@ -7,7 +7,7 @@ win32 { qtCompileTest(directshow) qtCompileTest(wmsdk) qtCompileTest(wmp) - qtCompileTest(wmf) + contains(QT_CONFIG, wmf-backend): qtCompileTest(wmf) qtCompileTest(evr) } else:mac { qtCompileTest(avfoundation) diff --git a/src/multimedia/audio/qsoundeffect_pulse_p.cpp b/src/multimedia/audio/qsoundeffect_pulse_p.cpp index b3318ec94..328a3b0b3 100644 --- a/src/multimedia/audio/qsoundeffect_pulse_p.cpp +++ b/src/multimedia/audio/qsoundeffect_pulse_p.cpp @@ -147,9 +147,20 @@ public: Q_SIGNALS: void contextReady(); + void contextFailed(); void volumeChanged(); -private: +private Q_SLOTS: + void onContextFailed() + { + release(); + + // Try to reconnect later + QTimer::singleShot(30000, this, SLOT(prepare())); + + emit contextFailed(); + } + void prepare() { m_vol = PA_VOLUME_NORM; @@ -196,12 +207,23 @@ private: m_prepared = true; } +private: void release() { - if (!m_prepared) return; - pa_context_unref(m_context); - pa_threaded_mainloop_stop(m_mainLoop); - pa_threaded_mainloop_free(m_mainLoop); + if (!m_prepared) + return; + + if (m_context) { + pa_context_unref(m_context); + m_context = 0; + } + + if (m_mainLoop) { + pa_threaded_mainloop_stop(m_mainLoop); + pa_threaded_mainloop_free(m_mainLoop); + m_mainLoop = 0; + } + m_prepared = false; } @@ -221,6 +243,9 @@ private: #endif QMetaObject::invokeMethod(self, "contextReady", Qt::QueuedConnection); break; + case PA_CONTEXT_FAILED: + QMetaObject::invokeMethod(self, "onContextFailed", Qt::QueuedConnection); + break; default: break; } @@ -511,7 +536,8 @@ void QSoundEffectPrivate::updateVolume() PulseDaemonLocker locker; pa_cvolume volume; volume.channels = m_pulseSpec.channels; - pa_operation_unref(pa_context_set_sink_input_volume(pulseDaemon()->context(), m_sinkInputId, pulseDaemon()->calcVolume(&volume, m_volume), setvolume_callback, m_ref->getRef())); + if (pulseDaemon()->context()) + pa_operation_unref(pa_context_set_sink_input_volume(pulseDaemon()->context(), m_sinkInputId, pulseDaemon()->calcVolume(&volume, m_volume), setvolume_callback, m_ref->getRef())); Q_ASSERT(pa_cvolume_valid(&volume)); #ifdef QT_PA_DEBUG qDebug() << this << "updateVolume =" << pa_cvolume_max(&volume); @@ -535,7 +561,8 @@ void QSoundEffectPrivate::updateMuted() if (m_sinkInputId < 0) return; PulseDaemonLocker locker; - pa_operation_unref(pa_context_set_sink_input_mute(pulseDaemon()->context(), m_sinkInputId, m_muted, setmuted_callback, m_ref->getRef())); + if (pulseDaemon()->context()) + pa_operation_unref(pa_context_set_sink_input_mute(pulseDaemon()->context(), m_sinkInputId, m_muted, setmuted_callback, m_ref->getRef())); #ifdef QT_PA_DEBUG qDebug() << this << "updateMuted = " << m_muted; #endif @@ -705,7 +732,7 @@ void QSoundEffectPrivate::sampleReady() } #endif } else { - if (pa_context_get_state(pulseDaemon()->context()) != PA_CONTEXT_READY) { + if (!pulseDaemon()->context() || pa_context_get_state(pulseDaemon()->context()) != PA_CONTEXT_READY) { connect(pulseDaemon(), SIGNAL(contextReady()), SLOT(contextReady())); return; } @@ -741,6 +768,7 @@ void QSoundEffectPrivate::unloadPulseStream() pa_stream_disconnect(m_pulseStream); pa_stream_unref(m_pulseStream); disconnect(pulseDaemon(), SIGNAL(volumeChanged()), this, SLOT(updateVolume())); + disconnect(pulseDaemon(), SIGNAL(contextFailed()), this, SLOT(contextFailed())); m_pulseStream = 0; m_reloadCategory = false; // category will be reloaded when we connect anyway } @@ -895,6 +923,9 @@ void QSoundEffectPrivate::createPulseStream() qDebug() << this << "createPulseStream"; #endif + if (!pulseDaemon()->context()) + return; + pa_proplist *propList = pa_proplist_new(); if (m_category.isNull()) { // Meant to be one of the strings "video", "music", "game", "event", "phone", "animation", "production", "a11y", "test" @@ -906,6 +937,7 @@ void QSoundEffectPrivate::createPulseStream() pa_proplist_free(propList); connect(pulseDaemon(), SIGNAL(volumeChanged()), this, SLOT(updateVolume())); + connect(pulseDaemon(), SIGNAL(contextFailed()), this, SLOT(contextFailed())); if (stream == 0) { qWarning("QSoundEffect(pulseaudio): Failed to create stream"); @@ -947,6 +979,12 @@ void QSoundEffectPrivate::contextReady() createPulseStream(); } +void QSoundEffectPrivate::contextFailed() +{ + unloadPulseStream(); + connect(pulseDaemon(), SIGNAL(contextReady()), this, SLOT(contextReady())); +} + void QSoundEffectPrivate::stream_write_callback(pa_stream *s, size_t length, void *userdata) { Q_UNUSED(length); diff --git a/src/multimedia/audio/qsoundeffect_pulse_p.h b/src/multimedia/audio/qsoundeffect_pulse_p.h index e43bd2fdf..4dc58f0b6 100644 --- a/src/multimedia/audio/qsoundeffect_pulse_p.h +++ b/src/multimedia/audio/qsoundeffect_pulse_p.h @@ -111,6 +111,7 @@ private Q_SLOTS: void sampleReady(); void uploadSample(); void contextReady(); + void contextFailed(); void underRun(); void prepare(); void streamReady(); diff --git a/src/multimediawidgets/doc/src/qtmultimediawidgets-index.qdoc b/src/multimediawidgets/doc/src/qtmultimediawidgets-index.qdoc index 07fa63205..e722f4cb3 100644 --- a/src/multimediawidgets/doc/src/qtmultimediawidgets-index.qdoc +++ b/src/multimediawidgets/doc/src/qtmultimediawidgets-index.qdoc @@ -57,7 +57,6 @@ QT += multimediawidgets \section2 Examples \list -\li \l{QML Camera Example} \li \l{Camera Example} \li \l{Media Player Example} \li \l{Video Graphics Item Example} |