Properly handle the case where QtWidgets is not available.

It does use a config test for now, just to make it clearer.  The Mac
backend currently requires widgets, but most of the others should work
without it (just not supporting QVideoWidget/WindowControl).

The QVideoDeviceControl interface was modified to remove the QIcon
usage - it was never implemented.

Unfortunately even the QML examples need widgets for the wrapper
application, and will need to be ported to QtGui based wrapper.

Change-Id: I8a55ad5cf09ab51749510bf16f49de0bd3f0bcdb
Reviewed-by: Ling Hu <ling.hu@nokia.com>
This commit is contained in:
Michael Goddard
2012-01-05 17:22:19 +10:00
committed by Qt by Nokia
parent bc7d964a05
commit c97f5f8c2e
45 changed files with 243 additions and 160 deletions

View File

@@ -46,7 +46,7 @@
#include "directshowmetadatacontrol.h"
#include "directshowplayercontrol.h"
#include "directshowvideorenderercontrol.h"
#ifndef Q_WS_SIMULATOR
#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR)
#include "vmr9videowindowcontrol.h"
#endif
@@ -83,7 +83,7 @@ DirectShowPlayerService::DirectShowPlayerService(QObject *parent)
, m_playerControl(0)
, m_metaDataControl(0)
, m_videoRendererControl(0)
#ifndef Q_WS_SIMULATOR
#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR)
, m_videoWindowControl(0)
#endif
, m_audioEndpointControl(0)
@@ -144,7 +144,7 @@ DirectShowPlayerService::~DirectShowPlayerService()
delete m_audioEndpointControl;
delete m_metaDataControl;
delete m_videoRendererControl;
#ifndef Q_WS_SIMULATOR
#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR)
delete m_videoWindowControl;
#endif
@@ -161,7 +161,7 @@ QMediaControl *DirectShowPlayerService::requestControl(const char *name)
} else if (qstrcmp(name, QMetaDataReaderControl_iid) == 0) {
return m_metaDataControl;
} else if (qstrcmp(name, QVideoRendererControl_iid) == 0) {
#ifndef Q_WS_SIMULATOR
#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR)
if (!m_videoRendererControl && !m_videoWindowControl) {
#else
if (!m_videoRendererControl) {
@@ -173,7 +173,7 @@ QMediaControl *DirectShowPlayerService::requestControl(const char *name)
return m_videoRendererControl;
}
#ifndef Q_WS_SIMULATOR
#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR)
} else if (qstrcmp(name, QVideoWindowControl_iid) == 0) {
if (!m_videoRendererControl && !m_videoWindowControl) {
m_videoWindowControl = new Vmr9VideoWindowControl;
@@ -198,7 +198,7 @@ void DirectShowPlayerService::releaseControl(QMediaControl *control)
delete m_videoRendererControl;
m_videoRendererControl = 0;
#ifndef Q_WS_SIMULATOR
#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR)
} else if (control == m_videoWindowControl) {
setVideoOutput(0);

View File

@@ -59,7 +59,7 @@ class DirectShowAudioEndpointControl;
class DirectShowMetaDataControl;
class DirectShowPlayerControl;
class DirectShowVideoRendererControl;
#ifndef Q_WS_SIMULATOR
#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR)
class Vmr9VideoWindowControl;
#endif
@@ -180,7 +180,7 @@ private:
DirectShowPlayerControl *m_playerControl;
DirectShowMetaDataControl *m_metaDataControl;
DirectShowVideoRendererControl *m_videoRendererControl;
#ifndef Q_WS_SIMULATOR
#if defined(HAVE_WIDGETS) && !defined(Q_WS_SIMULATOR)
Vmr9VideoWindowControl *m_videoWindowControl;
#endif
DirectShowAudioEndpointControl *m_audioEndpointControl;

View File

@@ -35,11 +35,11 @@ SOURCES += \
$$PWD/mediasamplevideobuffer.cpp \
$$PWD/videosurfacefilter.cpp
!simulator {
HEADERS += \
contains(config_test_widgets, yes):!simulator {
HEADERS += \
$$PWD/vmr9videowindowcontrol.h
SOURCES += \
SOURCES += \
$$PWD/vmr9videowindowcontrol.cpp
}