summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-04-29 14:19:29 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-04-29 14:19:29 +0200
commitcb324a50c920b275ef6c04162712b1a6f19bbe8d (patch)
treebf2e6f0565599154ad39996bf9f69515a584b1aa /src
parentf23a7f9da4958527a7fe762f82fa7fc28e8f0adf (diff)
parent20fa4834478ec211c3d4fbcd4066f01cc2024285 (diff)
Merge remote-tracking branch 'origin/stable' into dev
Diffstat (limited to 'src')
-rw-r--r--src/gsttools/qgstreamervideorenderer.cpp4
-rw-r--r--src/imports/multimedia/multimedia.pro2
-rw-r--r--src/multimedia/doc/qtmultimedia.qdocconf30
-rw-r--r--src/multimedia/doc/src/multimedia.qdoc64
-rw-r--r--src/multimedia/doc/src/qtmultimedia-cpp.qdoc12
-rw-r--r--src/multimedia/doc/src/qtmultimedia-index.qdoc39
-rw-r--r--src/multimedia/gsttools_headers/qgstreamervideorenderer_p.h3
-rw-r--r--src/multimediawidgets/doc/qtmultimediawidgets.qdocconf26
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayersession.h1
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm18
-rw-r--r--src/plugins/blackberry/bbserviceplugin.cpp8
-rw-r--r--src/plugins/blackberry/blackberry.pro6
-rw-r--r--src/plugins/blackberry/camera/bbcamerasession.cpp4
-rw-r--r--src/plugins/blackberry/common/windowgrabber.cpp24
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinsession.cpp2
-rw-r--r--src/plugins/qnx/audio/audio.pro6
16 files changed, 145 insertions, 104 deletions
diff --git a/src/gsttools/qgstreamervideorenderer.cpp b/src/gsttools/qgstreamervideorenderer.cpp
index 4bc92a18c..5b0b0d7dd 100644
--- a/src/gsttools/qgstreamervideorenderer.cpp
+++ b/src/gsttools/qgstreamervideorenderer.cpp
@@ -90,7 +90,7 @@ void QGstreamerVideoRenderer::setSurface(QAbstractVideoSurface *surface)
m_videoSink = 0;
if (m_surface) {
- disconnect(m_surface, SIGNAL(supportedFormatsChanged()),
+ disconnect(m_surface.data(), SIGNAL(supportedFormatsChanged()),
this, SLOT(handleFormatChange()));
}
@@ -99,7 +99,7 @@ void QGstreamerVideoRenderer::setSurface(QAbstractVideoSurface *surface)
m_surface = surface;
if (m_surface) {
- connect(m_surface, SIGNAL(supportedFormatsChanged()),
+ connect(m_surface.data(), SIGNAL(supportedFormatsChanged()),
this, SLOT(handleFormatChange()));
}
diff --git a/src/imports/multimedia/multimedia.pro b/src/imports/multimedia/multimedia.pro
index f05f3126a..d738dd4f2 100644
--- a/src/imports/multimedia/multimedia.pro
+++ b/src/imports/multimedia/multimedia.pro
@@ -1,7 +1,5 @@
QT += qml quick network multimedia-private qtmultimediaquicktools-private
-LIBS += -L$$QT.multimedia.libs
-
HEADERS += \
qdeclarativeaudio_p.h \
qdeclarativemediametadata_p.h \
diff --git a/src/multimedia/doc/qtmultimedia.qdocconf b/src/multimedia/doc/qtmultimedia.qdocconf
index 7d26cb5c0..e9c3b4480 100644
--- a/src/multimedia/doc/qtmultimedia.qdocconf
+++ b/src/multimedia/doc/qtmultimedia.qdocconf
@@ -1,6 +1,6 @@
include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
-project = qtmultimedia
+project = QtMultimedia
description = Qt Multimedia Documentation
url = http://qt-project.org/doc/qt-$QT_VER/qtmultimedia
version = $QT_VERSION
@@ -12,22 +12,22 @@ version = $QT_VERSION
# Defines the name of the project. You cannot use operators (+, =, -) in
# the name. Properties for this project are set using a qhp.<projectname>.property
# format.
-qhp.projects = qtmultimedia
-qhp.qtmultimedia.file = qtmultimedia.qhp
-qhp.qtmultimedia.namespace = org.qt-project.qtmultimedia.$QT_VERSION_TAG
-qhp.qtmultimedia.indexTitle = Qt Multimedia
-qhp.qtmultimedia.virtualFolder = qtmultimedia
+qhp.projects = QtMultimedia
+qhp.QtMultimedia.file = qtmultimedia.qhp
+qhp.QtMultimedia.namespace = org.qt-project.qtmultimedia.$QT_VERSION_TAG
+qhp.QtMultimedia.indexTitle = Qt Multimedia
+qhp.QtMultimedia.virtualFolder = qtmultimedia
# For listing child nodes in Qt Creator or Assistant.
-qhp.qtmultimedia.subprojects = classes qmltypes
-qhp.qtmultimedia.subprojects.classes.title = C++ Classes
-qhp.qtmultimedia.subprojects.classes.indexTitle = Qt Multimedia C++ Classes
-qhp.qtmultimedia.subprojects.classes.selectors = class fake:headerfile
-qhp.qtmultimedia.subprojects.classes.sortPages = true
-qhp.qtmultimedia.subprojects.qmltypes.title = QML Types
-qhp.qtmultimedia.subprojects.qmltypes.indexTitle = Qt Multimedia QML Types
-qhp.qtmultimedia.subprojects.qmltypes.selectors = fake:qmlclass
-qhp.qtmultimedia.subprojects.qmltypes.sortPages = true
+qhp.QtMultimedia.subprojects = classes qmltypes
+qhp.QtMultimedia.subprojects.classes.title = C++ Classes
+qhp.QtMultimedia.subprojects.classes.indexTitle = Qt Multimedia C++ Classes
+qhp.QtMultimedia.subprojects.classes.selectors = class fake:headerfile
+qhp.QtMultimedia.subprojects.classes.sortPages = true
+qhp.QtMultimedia.subprojects.qmltypes.title = QML Types
+qhp.QtMultimedia.subprojects.qmltypes.indexTitle = Qt Multimedia QML Types
+qhp.QtMultimedia.subprojects.qmltypes.selectors = fake:qmlclass
+qhp.QtMultimedia.subprojects.qmltypes.sortPages = true
exampledirs += ../../../examples/multimedia \
snippets
diff --git a/src/multimedia/doc/src/multimedia.qdoc b/src/multimedia/doc/src/multimedia.qdoc
index 6e3606044..d53967e6b 100644
--- a/src/multimedia/doc/src/multimedia.qdoc
+++ b/src/multimedia/doc/src/multimedia.qdoc
@@ -27,40 +27,37 @@
/*!
\page multimediaoverview.html
-\title Qt Multimedia Overview
+\title Multimedia
\brief A set of APIs for working with audio, video, radio and camera devices.
\ingroup technology-apis
+Multimedia support in Qt is provided by the \l{Qt Multimedia} module. The Qt
+Multimedia module provides a rich feature set that enables you to easily take
+advantage of a platform's multimedia capabilities such as media playback and
+the use of camera and radio devices.
-\section1 Overview
-
-Multimedia support in Qt is provided by the Qt Multimedia module. The
-Qt Multimedia module provides a rich feature set that enables you to easily
-take advantage of a platforms multimedia capabilites and hardware. This
-ranges from the playback and recording of audio and video content to the use
-of available devices like cameras and radios.
-
-\section2 Features
+\section1 Features
Here are some examples of what can be done with Qt Multimedia APIs:
\list
\li Access raw audio devices for input and output
\li Play low latency sound effects
-\li Play media files in playlists (like compressed audio, or video files)
+\li Play media files in playlists (such as compressed audio or video files)
\li Record audio and compress it
-\li Tune and listen to radio stations, and receive radio program information
+\li Tune and listen to radio stations
\li Use a camera, including viewfinder, image capture, and movie recording
\li Play 3D positional audio with \l {Positional Audio} {QtAudioEngine}
\li Decode audio media files into memory for processing
\li Accessing video frames or audio buffers as they are played or recorded
\endlist
-\section2 Multimedia Components
+\section1 Multimedia Components
-All of these tasks can be broadly broken down into four main areas. More information
-(including background information and class references) are available here:
+Qt's multimedia APIs are categorized into four main components. More
+information (including background information and class references) is
+available here:
\list
\li \l {Audio Overview}
@@ -69,8 +66,9 @@ All of these tasks can be broadly broken down into four main areas. More inform
\li \l {Radio Overview}
\endlist
-\section2 Multimedia Recipes
-For some quick recipes for specific tasks, look at the overviews above and consult this table:
+\section1 Multimedia Recipes
+
+For some quick recipes, look at the overviews above and consult this table:
\table 70%
\header
@@ -85,7 +83,8 @@ For some quick recipes for specific tasks, look at the overviews above and consu
\li QSoundEffect
\row
\li Playing low latency audio
- \li \l{multimedia/audiooutput}{audioinput}, \l{multimedia/spectrum}{spectrum}
+ \li \l{multimedia/audiooutput}{audioinput},
+ \l{multimedia/spectrum}{spectrum}
\li
\li QAudioOutput
\row
@@ -95,7 +94,8 @@ For some quick recipes for specific tasks, look at the overviews above and consu
\li QMediaPlayer
\row
\li Accessing raw audio input data
- \li \l{multimedia/spectrum}{spectrum}, \l {multimedia/audioinput}{audioinput}
+ \li \l{multimedia/spectrum}{spectrum},
+ \l {multimedia/audioinput}{audioinput}
\li
\li QAudioInput
\row
@@ -138,12 +138,14 @@ For some quick recipes for specific tasks, look at the overviews above and consu
\li QCamera, QAbstractVideoSurface, QVideoFrame
\row
\li Capturing photos
- \li \l {Camera Example}{camera}, \l {multimediawidgets/declarative-camera}{declarative-camera}
+ \li \l {Camera Example}{camera},
+ \l {multimediawidgets/declarative-camera}{declarative-camera}
\li \l Camera
\li QCamera, QCameraImageCapture
\row
\li Capturing movies
- \li \l {Camera Example}{camera}, \l {multimediawidgets/declarative-camera}{declarative-camera}
+ \li \l {Camera Example}{camera},
+ \l {multimediawidgets/declarative-camera}{declarative-camera}
\li \l Camera
\li QCamera, QMediaRecorder
\row
@@ -156,26 +158,26 @@ For some quick recipes for specific tasks, look at the overviews above and consu
\section1 Limitations
-In many cases the Qt Multimedia APIs build upon the multimedia framework of the underlying system.
-This can mean that support for various codec or containers can vary between machines,
-depending on what the end user has installed.
+The Qt Multimedia APIs build upon the multimedia framework of the underlying
+platform. This can mean that support for various codecs or containers can vary
+between machines, depending on what the end user has installed.
\section1 Advanced Usage
-For developers wishing to access some platform specific settings,
-or to port the Qt Multimedia APIs to a new platform or technology,
-see \l{Multimedia Backend Development}.
+For developers wishing to access some platform specific settings, or to port the
+Qt Multimedia APIs to a new platform or technology, see \l{Multimedia Backend
+Development}.
\section1 Changes from Previous Versions
-If you've previously used Qt Multimedia in Qt 4.x, or used Qt Multimedia Kit in Qt Mobility, please see
-\l {Changes in Qt Multimedia} for more information on what has changed, and what you might need to
-change when porting code.
+If you previously used Qt Multimedia in Qt 4, or used Qt Multimedia Kit in
+Qt Mobility, please see \l {Changes in Qt Multimedia} for more information on
+what changed, and what you might need to change when porting code.
\section1 Reference Documentation
\section2 QML Types
-The following types are accessed by using:
+The QML types are accessed by using:
\code
import QtMultimedia 5.0
\endcode
diff --git a/src/multimedia/doc/src/qtmultimedia-cpp.qdoc b/src/multimedia/doc/src/qtmultimedia-cpp.qdoc
index 3405143e5..a821088d8 100644
--- a/src/multimedia/doc/src/qtmultimedia-cpp.qdoc
+++ b/src/multimedia/doc/src/qtmultimedia-cpp.qdoc
@@ -30,10 +30,12 @@
\title Qt Multimedia C++ Classes
\ingroup modules
- \brief The \l {Qt Multimedia} module provides audio, video, radio and camera functionality.
+ \brief The \l {Qt Multimedia} module provides audio, video, radio and camera
+ functionality.
- The C++ classes provide more control over the multimedia content than the QML alternatives.
- If your application is serving complex use cases such as decoding media files, accessing video or audio buffers,
- use the C++ alternative. For more details about the complex audio, video, and camera use cases supported by the C++
- classes, refer to \l {Qt Multimedia Overview}.
+ The C++ classes provide more control over the multimedia content than the
+ QML alternatives. If your application is serving complex use cases such as
+ decoding media files, accessing video or audio buffers, use the C++
+ alternative. For more details about the complex audio, video, and camera use
+ cases supported by the C++ classes, refer to \l {Qt Multimedia Overview}.
*/
diff --git a/src/multimedia/doc/src/qtmultimedia-index.qdoc b/src/multimedia/doc/src/qtmultimedia-index.qdoc
index 7dfa02575..417c0c494 100644
--- a/src/multimedia/doc/src/qtmultimedia-index.qdoc
+++ b/src/multimedia/doc/src/qtmultimedia-index.qdoc
@@ -28,37 +28,46 @@
/*!
\page qtmultimedia-index.html
\title Qt Multimedia
- \brief The Qt Multimedia module provides APIs for audio, video, radio and camera-related functionality.
+ \brief The Qt Multimedia module provides APIs for audio, video, radio, and
+ camera-related functionality.
- Qt Multimedia is an essential module that provides a rich set of QML types and C++ classes to handle multimedia content. It also provides necessary APIs to access the camera and radio functionality.
+ Qt Multimedia is an essential module that provides a rich set of QML types
+ and C++ classes to handle multimedia content. It also provides necessary
+ APIs to access the camera and radio functionality.
- The \l{Qt Multimedia Widgets} module provides widget based multimedia classes.
+ The \l{Qt Multimedia Widgets} module provides widget based multimedia
+ classes.
- \section1 Getting started
+ \section1 Getting Started
- The QML types can be imported into your applciation using the following import statement in your \c {.qml} file.
+ The QML types can be imported into your applciation using the following
+ import statement in your \c {.qml} file.
\code
import QtMultimedia 5.0
\endcode
- If you intend to use the C++ classes in your application, include the C++ definitions using the following directive:
+ If you intend to use the C++ classes in your application, include the C++
+ definitions using the following directive:
\code
#include <QtMultimedia>
\endcode
- \note If you are using a few classes from this module, we recommend including those specific classes only instead of the module.
+ \note If you are using a few classes from this module, we recommend
+ including those specific classes only instead of the module.
- To link against the corresponding C++ libraries, add the following to your \c {qmake} project file:
+ To link against the corresponding C++ libraries, add the following to your
+ \c {qmake} project file:
\code
QT += multimedia
\endcode
- \section1 QML types and C++ classes
+ \section1 QML Types and C++ Classes
- The following is a list of important QML types and C++ classes provided by this module:
+ The following is a list of important QML types and C++ classes provided by
+ this module:
\table
\header
@@ -72,13 +81,15 @@
\li Access camera viewfinder frames
\row
\li MediaPlayer
- \li Add media playback functionality to a scene. It is same as Audio type, but can be used for video playback with the VideoOutput type.
+ \li Add media playback functionality to a scene. It is same as Audio type,
+ but can be used for video playback with the VideoOutput type.
\row
\li \l {QtMultimedia5::Radio}{Radio}
\li Access radio functionality
\row
\li \l {QtMultimedia5::Video}{Video}
- \li Add Video playback functionality to a scene. It uses MediaPlayer and VideoOutput types to provide video playback functionality.
+ \li Add Video playback functionality to a scene. It uses MediaPlayer and
+ VideoOutput types to provide video playback functionality.
\endtable
\table
@@ -105,11 +116,11 @@
\li Control video data.
\endtable
- \section1 Related information
+ \section1 Related Information
\section2 Guides
\list
- \li \l{Qt Multimedia Overview}
+ \li \l Multimedia - overview of multimedia support in Qt
\li \l{Audio Overview}
\li \l{Positional Audio}
\li \l{Video Overview}
diff --git a/src/multimedia/gsttools_headers/qgstreamervideorenderer_p.h b/src/multimedia/gsttools_headers/qgstreamervideorenderer_p.h
index b7121e0b5..42ce913ec 100644
--- a/src/multimedia/gsttools_headers/qgstreamervideorenderer_p.h
+++ b/src/multimedia/gsttools_headers/qgstreamervideorenderer_p.h
@@ -44,6 +44,7 @@
#include <qvideorenderercontrol.h>
#include <private/qvideosurfacegstsink_p.h>
+#include <qabstractvideosurface.h>
#include "qgstreamervideorendererinterface_p.h"
@@ -74,7 +75,7 @@ private slots:
private:
QVideoSurfaceGstSink *m_videoSink;
- QAbstractVideoSurface *m_surface;
+ QPointer<QAbstractVideoSurface> m_surface;
};
QT_END_NAMESPACE
diff --git a/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf b/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf
index a25ee1a1d..305590f7b 100644
--- a/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf
+++ b/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf
@@ -1,6 +1,6 @@
include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
-project = qtmultimediawidgets
+project = QtMultimediaWidgets
description = Qt Multimedia Widgets Documentation
url = http://qt-project.org/doc/qt-$QT_VER/qtmultimediawidgets
version = $QT_VERSION
@@ -12,22 +12,18 @@ version = $QT_VERSION
# Defines the name of the project. You cannot use operators (+, =, -) in
# the name. Properties for this project are set using a qhp.<projectname>.property
# format.
-qhp.projects = qtmultimediawidgets
-qhp.qtmultimediawidgets.file = qtmultimediawidgets.qhp
-qhp.qtmultimediawidgets.namespace = org.qt-project.qtmultimediawidgets.$QT_VERSION_TAG
-qhp.qtmultimediawidgets.indexTitle = Qt Multimedia
-qhp.qtmultimediawidgets.virtualFolder = qtmultimediawidgets
+qhp.projects = QtMultimediaWidgets
+qhp.QtMultimediaWidgets.file = qtmultimediawidgets.qhp
+qhp.QtMultimediaWidgets.namespace = org.qt-project.qtmultimediawidgets.$QT_VERSION_TAG
+qhp.QtMultimediaWidgets.indexTitle = Qt Multimedia Widgets
+qhp.QtMultimediaWidgets.virtualFolder = qtmultimediawidgets
# For listing child nodes in Qt Creator or Assistant.
-qhp.qtmultimediawidgets.subprojects = classes qmltypes
-qhp.qtmultimediawidgets.subprojects.classes.title = C++ Classes
-qhp.qtmultimediawidgets.subprojects.classes.indexTitle = Qt Multimedia Widgets C++ Classes
-qhp.qtmultimediawidgets.subprojects.classes.selectors = class fake:headerfile
-qhp.qtmultimediawidgets.subprojects.classes.sortPages = true
-qhp.qtmultimediawidgets.subprojects.qmltypes.title = QML Types
-qhp.qtmultimediawidgets.subprojects.qmltypes.indexTitle = Qt Multimedia Widgets QML Types
-qhp.qtmultimediawidgets.subprojects.qmltypes.selectors = fake:qmlclass
-qhp.qtmultimediawidgets.subprojects.qmltypes.sortPages = true
+qhp.QtMultimediaWidgets.subprojects = classes
+qhp.QtMultimediaWidgets.subprojects.classes.title = C++ Classes
+qhp.QtMultimediaWidgets.subprojects.classes.indexTitle = Qt Multimedia Widgets C++ Classes
+qhp.QtMultimediaWidgets.subprojects.classes.selectors = class fake:headerfile
+qhp.QtMultimediaWidgets.subprojects.classes.sortPages = true
exampledirs += ../../../examples/multimediawidgets \
snippets
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.h b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.h
index 8c0db289a..58a2d84c9 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.h
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.h
@@ -103,6 +103,7 @@ public Q_SLOTS:
void processEOS();
void processLoadStateChange();
void processPositionChange();
+ void processMediaLoadError();
void processCurrentItemChanged();
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
index 9a1808491..7af6f4394 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
@@ -283,7 +283,7 @@ static void *AVFMediaPlayerSessionObserverCurrentItemObservationContext = &AVFMe
-(void) assetFailedToPrepareForPlayback:(NSError *)error
{
Q_UNUSED(error)
- //TODO: Let the session know that the assest failed to prepare for playback
+ QMetaObject::invokeMethod(m_session, "processMediaLoadError", Qt::AutoConnection);
#ifdef QT_DEBUG_AVF
qDebug() << Q_FUNC_INFO;
qDebug() << [[error localizedDescription] UTF8String];
@@ -357,7 +357,7 @@ static void *AVFMediaPlayerSessionObserverCurrentItemObservationContext = &AVFMe
else if (context == AVFMediaPlayerSessionObserverCurrentItemObservationContext)
{
AVPlayerItem *newPlayerItem = [change objectForKey:NSKeyValueChangeNewKey];
- if (m_playerItem != newPlayerItem);
+ if (m_playerItem != newPlayerItem)
{
m_playerItem = newPlayerItem;
@@ -799,13 +799,6 @@ void AVFMediaPlayerSession::processLoadStateChange()
[[(AVFMediaPlayerSessionObserver*)m_observer player] setRate:m_rate];
[[(AVFMediaPlayerSessionObserver*)m_observer player] play];
}
-
- } else {
- Q_EMIT error(QMediaPlayer::FormatError, tr("Failed to load media"));
- Q_EMIT mediaStatusChanged(m_mediaStatus = QMediaPlayer::InvalidMedia);
- Q_EMIT stateChanged(m_state = QMediaPlayer::StoppedState);
-
- return;
}
if (newStatus != m_mediaStatus)
@@ -817,6 +810,13 @@ void AVFMediaPlayerSession::processPositionChange()
Q_EMIT positionChanged(position());
}
+void AVFMediaPlayerSession::processMediaLoadError()
+{
+ Q_EMIT error(QMediaPlayer::FormatError, tr("Failed to load media"));
+ Q_EMIT mediaStatusChanged(m_mediaStatus = QMediaPlayer::InvalidMedia);
+ Q_EMIT stateChanged(m_state = QMediaPlayer::StoppedState);
+}
+
void AVFMediaPlayerSession::processCurrentItemChanged()
{
#ifdef QT_DEBUG_AVF
diff --git a/src/plugins/blackberry/bbserviceplugin.cpp b/src/plugins/blackberry/bbserviceplugin.cpp
index 90364f3f8..0a9abd71d 100644
--- a/src/plugins/blackberry/bbserviceplugin.cpp
+++ b/src/plugins/blackberry/bbserviceplugin.cpp
@@ -40,9 +40,11 @@
****************************************************************************/
#include "bbserviceplugin.h"
+#ifndef Q_OS_BLACKBERRY_TABLET
#include "bbcameraservice.h"
-#include "bbmediaplayerservice.h"
#include "bbvideodeviceselectorcontrol.h"
+#endif
+#include "bbmediaplayerservice.h"
#include <QDebug>
@@ -54,8 +56,10 @@ BbServicePlugin::BbServicePlugin()
QMediaService *BbServicePlugin::create(const QString &key)
{
+#ifndef Q_OS_BLACKBERRY_TABLET
if (key == QLatin1String(Q_MEDIASERVICE_CAMERA))
return new BbCameraService();
+#endif
if (key == QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER))
return new BbMediaPlayerService();
@@ -102,7 +106,9 @@ QString BbServicePlugin::deviceDescription(const QByteArray &service, const QByt
void BbServicePlugin::updateDevices() const
{
+#ifndef Q_OS_BLACKBERRY_TABLET
BbVideoDeviceSelectorControl::enumerateDevices(&m_cameraDevices, &m_cameraDescriptions);
+#endif
if (m_cameraDevices.isEmpty()) {
qWarning() << "No camera devices found";
diff --git a/src/plugins/blackberry/blackberry.pro b/src/plugins/blackberry/blackberry.pro
index 806f20333..5684645fb 100644
--- a/src/plugins/blackberry/blackberry.pro
+++ b/src/plugins/blackberry/blackberry.pro
@@ -11,7 +11,11 @@ HEADERS += bbserviceplugin.h
SOURCES += bbserviceplugin.cpp
include(common/common.pri)
-include(camera/camera.pri)
+
+!blackberry-playbook {
+ include(camera/camera.pri)
+}
+
include(mediaplayer/mediaplayer.pri)
OTHER_FILES += blackberry_mediaservice.json
diff --git a/src/plugins/blackberry/camera/bbcamerasession.cpp b/src/plugins/blackberry/camera/bbcamerasession.cpp
index d2eb62278..24e0a3796 100644
--- a/src/plugins/blackberry/camera/bbcamerasession.cpp
+++ b/src/plugins/blackberry/camera/bbcamerasession.cpp
@@ -335,7 +335,7 @@ static void imageCaptureImageCallback(camera_handle_t handle, camera_buffer_t *b
QMetaObject::invokeMethod(data->session, "imageCaptureError", Qt::QueuedConnection,
Q_ARG(int, data->requestId),
Q_ARG(QCameraImageCapture::Error, QCameraImageCapture::FormatError),
- Q_ARG(QString, QObject::tr("Camera provides image in unsupported format")));
+ Q_ARG(QString, BbCameraSession::tr("Camera provides image in unsupported format")));
return;
}
@@ -344,7 +344,7 @@ static void imageCaptureImageCallback(camera_handle_t handle, camera_buffer_t *b
QImage image;
const bool ok = image.loadFromData(rawData, "JPG");
if (!ok) {
- const QString errorMessage = QObject::tr("Could not load JPEG data from frame");
+ const QString errorMessage = BbCameraSession::tr("Could not load JPEG data from frame");
// We are inside a worker thread here, so emit error signal inside the main thread
QMetaObject::invokeMethod(data->session, "imageCaptureError", Qt::QueuedConnection,
Q_ARG(int, data->requestId),
diff --git a/src/plugins/blackberry/common/windowgrabber.cpp b/src/plugins/blackberry/common/windowgrabber.cpp
index d02e022aa..db070d8e5 100644
--- a/src/plugins/blackberry/common/windowgrabber.cpp
+++ b/src/plugins/blackberry/common/windowgrabber.cpp
@@ -87,6 +87,30 @@ void WindowGrabber::start()
{
int result = 0;
+#ifdef Q_OS_BLACKBERRY_TABLET
+
+ // HACK: On the Playbook, screen_read_window() will fail for invisible windows.
+ // To workaround this, make the window visible again, but set a global
+ // alpha of less than 255. The global alpha makes the window completely invisible
+ // (due to a bug?), but screen_read_window() will work again.
+
+ errno = 0;
+ int val = 200; // anything less than 255
+ result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_GLOBAL_ALPHA, &val);
+ if (result != 0) {
+ qWarning() << "WindowGrabber: unable to set global alpha:" << strerror(errno);
+ return;
+ }
+
+ errno = 0;
+ val = 1;
+ result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_VISIBLE, &val);
+ if (result != 0) {
+ qWarning() << "WindowGrabber: unable to make window visible:" << strerror(errno);
+ return;
+ }
+#endif
+
result = screen_create_context(&m_screenContext, SCREEN_APPLICATION_CONTEXT);
if (result != 0) {
qWarning() << "WindowGrabber: cannot create screen context:" << strerror(errno);
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
index f58bea205..2e5c53a4d 100644
--- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
@@ -672,7 +672,7 @@ void CameraBinSession::updateBusyStatus(GObject *o, GParamSpec *p, gpointer d)
Q_UNUSED(p);
CameraBinSession *session = reinterpret_cast<CameraBinSession *>(d);
- bool idle = false;
+ gboolean idle = false;
g_object_get(o, "idle", &idle, NULL);
bool busy = !idle;
diff --git a/src/plugins/qnx/audio/audio.pro b/src/plugins/qnx/audio/audio.pro
index c38b09b79..35ddf73de 100644
--- a/src/plugins/qnx/audio/audio.pro
+++ b/src/plugins/qnx/audio/audio.pro
@@ -3,9 +3,8 @@ QT += multimedia-private
CONFIG += no_private_qt_headers_warning
PLUGIN_TYPE = audio
-
load(qt_plugin)
-DESTDIR = $$QT.multimedia.plugins/$${PLUGIN_TYPE}
+
LIBS += -lasound
HEADERS += qnxaudioplugin.h \
@@ -21,6 +20,3 @@ SOURCES += qnxaudioplugin.cpp \
qnxaudioutils.cpp
OTHER_FILES += qnx_audio.json
-
-target.path += $$[QT_INSTALL_PLUGINS]/$${PLUGIN_TYPE}
-INSTALLS += target