diff options
author | Jonas Rabbe <jonas.rabbe@nokia.com> | 2011-12-09 11:45:11 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-13 01:22:28 +0100 |
commit | 4f3294930af1ea4350bc8dd5225afd17591f16cd (patch) | |
tree | 9d941147930f09cf568884030783a0a4dbaff11e /src/plugins | |
parent | 9d526fca670ba90c8ad433f60bd94f9b9975e18d (diff) |
Fix X11 and QPA compilation problems
The X11 buffer pool was using outdated APIs, and as the 'qpa'
configuration value is being removed, it caused the X11 code
to be pulled in, and therefore cause compilation failures.
Change-Id: I5fdaed854c6525716fccca44b5fbd0b850880cb9
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinservice.cpp | 2 | ||||
-rw-r--r-- | src/plugins/gstreamer/gstreamer.pro | 4 | ||||
-rw-r--r-- | src/plugins/gstreamer/mediacapture/qgstreamercaptureservice.cpp | 2 | ||||
-rw-r--r-- | src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.cpp | 2 | ||||
-rw-r--r-- | src/plugins/gstreamer/qgstreamervideooverlay.cpp | 6 | ||||
-rw-r--r-- | src/plugins/gstreamer/qgstreamervideooverlay.h | 4 | ||||
-rw-r--r-- | src/plugins/gstreamer/qgstreamervideowindow.cpp | 5 | ||||
-rw-r--r-- | src/plugins/gstreamer/qgstreamervideowindow.h | 4 | ||||
-rw-r--r-- | src/plugins/gstreamer/qx11videosurface.cpp | 51 | ||||
-rw-r--r-- | src/plugins/gstreamer/qx11videosurface.h | 8 |
10 files changed, 38 insertions, 50 deletions
diff --git a/src/plugins/gstreamer/camerabin/camerabinservice.cpp b/src/plugins/gstreamer/camerabin/camerabinservice.cpp index f0aaca7b9..e230d40f9 100644 --- a/src/plugins/gstreamer/camerabin/camerabinservice.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinservice.cpp @@ -114,7 +114,7 @@ CameraBinService::CameraBinService(const QString &service, QObject *parent): m_videoRenderer = new QGstreamerVideoRenderer(this); #endif -#if defined(Q_WS_X11) && !defined(QT_NO_XVIDEO) +#ifdef HAVE_XVIDEO #ifdef Q_WS_MAEMO_6 m_videoWindow = new QGstreamerVideoWindow(this, "omapxvsink"); diff --git a/src/plugins/gstreamer/gstreamer.pro b/src/plugins/gstreamer/gstreamer.pro index 28becfb5b..2cc0a0ee8 100644 --- a/src/plugins/gstreamer/gstreamer.pro +++ b/src/plugins/gstreamer/gstreamer.pro @@ -68,7 +68,9 @@ SOURCES += \ gstvideoconnector.c \ -!win32:!contains(QT_CONFIG,embedded):!mac:!simulator:!contains(QT_CONFIG, qpa) { +contains(config_test_xvideo, yes) { + DEFINES += HAVE_XVIDEO + LIBS += -lXv -lX11 -lXext HEADERS += \ diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercaptureservice.cpp b/src/plugins/gstreamer/mediacapture/qgstreamercaptureservice.cpp index f10fd58a7..f1516885a 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamercaptureservice.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreamercaptureservice.cpp @@ -100,7 +100,7 @@ QGstreamerCaptureService::QGstreamerCaptureService(const QString &service, QObje m_videoRenderer = new QGstreamerVideoRenderer(this); -#if defined(Q_WS_X11) && !defined(QT_NO_XVIDEO) +#ifdef HAVE_XVIDEO m_videoWindow = new QGstreamerVideoOverlay(this); m_videoWidgetControl = new QGstreamerVideoWidgetControl(this); #endif diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.cpp index 7175c4da3..c5c860778 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.cpp +++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.cpp @@ -82,7 +82,7 @@ QGstreamerPlayerService::QGstreamerPlayerService(QObject *parent): m_videoRenderer = new QGstreamerVideoRenderer(this); #endif -#if defined(Q_WS_X11) && !defined(QT_NO_XVIDEO) +#ifdef HAVE_XVIDEO #ifdef Q_WS_MAEMO_6 m_videoWindow = new QGstreamerVideoWindow(this, "omapxvsink"); diff --git a/src/plugins/gstreamer/qgstreamervideooverlay.cpp b/src/plugins/gstreamer/qgstreamervideooverlay.cpp index f19ef6a83..32253b4dc 100644 --- a/src/plugins/gstreamer/qgstreamervideooverlay.cpp +++ b/src/plugins/gstreamer/qgstreamervideooverlay.cpp @@ -44,9 +44,7 @@ #include <qvideosurfaceformat.h> -#include <private/qx11videosurface_p.h> - -#ifndef QT_NO_XVIDEO +#include <qx11videosurface.h> QGstreamerVideoOverlay::QGstreamerVideoOverlay(QObject *parent) : QVideoWindowControl(parent) @@ -228,5 +226,3 @@ void QGstreamerVideoOverlay::setScaledDisplayRect() break; }; } - -#endif //QT_NO_XVIDEO diff --git a/src/plugins/gstreamer/qgstreamervideooverlay.h b/src/plugins/gstreamer/qgstreamervideooverlay.h index 3aebb77ad..e48ad03c3 100644 --- a/src/plugins/gstreamer/qgstreamervideooverlay.h +++ b/src/plugins/gstreamer/qgstreamervideooverlay.h @@ -51,8 +51,6 @@ class QAbstractVideoSurface; QT_END_NAMESPACE class QX11VideoSurface; -#if defined(Q_WS_X11) && !defined(QT_NO_XVIDEO) - QT_BEGIN_NAMESPACE class QGstreamerVideoOverlay : public QVideoWindowControl, public QGstreamerVideoRendererInterface @@ -116,6 +114,4 @@ private: QT_END_NAMESPACE -#endif //QT_NO_XVIDEO - #endif diff --git a/src/plugins/gstreamer/qgstreamervideowindow.cpp b/src/plugins/gstreamer/qgstreamervideowindow.cpp index 1c475bd55..dad5e2860 100644 --- a/src/plugins/gstreamer/qgstreamervideowindow.cpp +++ b/src/plugins/gstreamer/qgstreamervideowindow.cpp @@ -48,9 +48,6 @@ #include <gst/interfaces/xoverlay.h> #include <gst/interfaces/propertyprobe.h> - -#ifndef QT_NO_XVIDEO - /* QGstreamerVideoWindow is similar to QGstreamerVideoOverlay, but uses xvimagesink like gstreamer element instead of QX11VideoSurface. @@ -347,5 +344,3 @@ GstElement *QGstreamerVideoWindow::videoSink() { return m_videoSink; } - -#endif //QT_NO_XVIDEO diff --git a/src/plugins/gstreamer/qgstreamervideowindow.h b/src/plugins/gstreamer/qgstreamervideowindow.h index ba533aa91..3c940c370 100644 --- a/src/plugins/gstreamer/qgstreamervideowindow.h +++ b/src/plugins/gstreamer/qgstreamervideowindow.h @@ -52,8 +52,6 @@ class QAbstractVideoSurface; QT_END_NAMESPACE class QX11VideoSurface; -#if defined(Q_WS_X11) && !defined(QT_NO_XVIDEO) - QT_BEGIN_NAMESPACE class QGstreamerVideoWindow : public QVideoWindowControl, @@ -131,6 +129,4 @@ private: QT_END_NAMESPACE -#endif //QT_NO_XVIDEO - #endif diff --git a/src/plugins/gstreamer/qx11videosurface.cpp b/src/plugins/gstreamer/qx11videosurface.cpp index f12be3e1b..fcff30a19 100644 --- a/src/plugins/gstreamer/qx11videosurface.cpp +++ b/src/plugins/gstreamer/qx11videosurface.cpp @@ -41,11 +41,10 @@ #include <QtCore/qvariant.h> #include <QtCore/qdebug.h> -#include <QtWidgets/qx11info_x11.h> +#include <QtGui/qguiapplication.h> +#include <QtGui/qplatformnativeinterface_qpa.h> #include <qvideosurfaceformat.h> -#ifndef QT_NO_XVIDEO - #include "qx11videosurface.h" Q_DECLARE_METATYPE(XvImage*); @@ -149,10 +148,10 @@ QX11VideoSurface::QX11VideoSurface(QObject *parent) QX11VideoSurface::~QX11VideoSurface() { if (m_gc) - XFreeGC(QX11Info::display(), m_gc); + XFreeGC(display(), m_gc); if (m_portId != 0) - XvUngrabPort(QX11Info::display(), m_portId, 0); + XvUngrabPort(display(), m_portId, 0); } WId QX11VideoSurface::winId() const @@ -171,12 +170,12 @@ void QX11VideoSurface::setWinId(WId id) XFree(m_image); if (m_gc) { - XFreeGC(QX11Info::display(), m_gc); + XFreeGC(display(), m_gc); m_gc = 0; } if (m_portId != 0) - XvUngrabPort(QX11Info::display(), m_portId, 0); + XvUngrabPort(display(), m_portId, 0); m_supportedPixelFormats.clear(); m_formatIds.clear(); @@ -186,7 +185,7 @@ void QX11VideoSurface::setWinId(WId id) if (m_winId && findPort()) { querySupportedFormats(); - m_gc = XCreateGC(QX11Info::display(), m_winId, 0, 0); + m_gc = XCreateGC(display(), m_winId, 0, 0); if (m_image) { m_image = 0; @@ -271,13 +270,13 @@ void QX11VideoSurface::setSaturation(int saturation) int QX11VideoSurface::getAttribute(const char *attribute, int minimum, int maximum) const { if (m_portId != 0) { - Display *display = QX11Info::display(); + Display *disp = display(); - Atom atom = XInternAtom(display, attribute, True); + Atom atom = XInternAtom(disp, attribute, True); int value = 0; - XvGetPortAttribute(display, m_portId, atom, &value); + XvGetPortAttribute(disp, m_portId, atom, &value); return redistribute(value, minimum, maximum, -100, 100); } else { @@ -288,12 +287,12 @@ int QX11VideoSurface::getAttribute(const char *attribute, int minimum, int maxim void QX11VideoSurface::setAttribute(const char *attribute, int value, int minimum, int maximum) { if (m_portId != 0) { - Display *display = QX11Info::display(); + Display *disp = display(); - Atom atom = XInternAtom(display, attribute, True); + Atom atom = XInternAtom(disp, attribute, True); XvSetPortAttribute( - display, m_portId, atom, redistribute(value, -100, 100, minimum, maximum)); + disp, m_portId, atom, redistribute(value, -100, 100, minimum, maximum)); } } @@ -330,7 +329,7 @@ bool QX11VideoSurface::start(const QVideoSurfaceFormat &format) setError(UnsupportedFormatError); } else { XvImage *image = XvCreateImage( - QX11Info::display(), + display(), m_portId, xvFormatId, 0, @@ -403,7 +402,7 @@ bool QX11VideoSurface::present(const QVideoFrame &frame) //qDebug() << "copy frame"; XvPutImage( - QX11Info::display(), + display(), m_portId, m_winId, m_gc, @@ -424,7 +423,7 @@ bool QX11VideoSurface::present(const QVideoFrame &frame) //qDebug() << "render directly"; if (img) XvShmPutImage( - QX11Info::display(), + display(), m_portId, m_winId, m_gc, @@ -450,19 +449,27 @@ bool QX11VideoSurface::present(const QVideoFrame &frame) } } +Display *QX11VideoSurface::display() const +{ + QWindow *window = QGuiApplication::focusWindow(); + Display *display = (Display *)QGuiApplication::platformNativeInterface()->nativeResourceForWindow("Display", window); + + return display; +} + bool QX11VideoSurface::findPort() { unsigned int count = 0; XvAdaptorInfo *adaptors = 0; bool portFound = false; - if (XvQueryAdaptors(QX11Info::display(), m_winId, &count, &adaptors) == Success) { + if (XvQueryAdaptors(display(), m_winId, &count, &adaptors) == Success) { for (unsigned int i = 0; i < count && !portFound; ++i) { if (adaptors[i].type & XvImageMask) { m_portId = adaptors[i].base_id; for (unsigned int j = 0; j < adaptors[i].num_ports && !portFound; ++j, ++m_portId) - portFound = XvGrabPort(QX11Info::display(), m_portId, 0) == Success; + portFound = XvGrabPort(display(), m_portId, 0) == Success; } } XvFreeAdaptorInfo(adaptors); @@ -475,7 +482,7 @@ void QX11VideoSurface::querySupportedFormats() { int count = 0; if (XvImageFormatValues *imageFormats = XvListImageFormats( - QX11Info::display(), m_portId, &count)) { + display(), m_portId, &count)) { const int rgbCount = sizeof(qt_xvRgbLookup) / sizeof(XvFormatRgb); const int yuvCount = sizeof(qt_xvYuvLookup) / sizeof(XvFormatYuv); @@ -509,7 +516,7 @@ void QX11VideoSurface::querySupportedFormats() m_hueRange = qMakePair(0, 0); m_saturationRange = qMakePair(0, 0); - if (XvAttribute *attributes = XvQueryPortAttributes(QX11Info::display(), m_portId, &count)) { + if (XvAttribute *attributes = XvQueryPortAttributes(display(), m_portId, &count)) { for (int i = 0; i < count; ++i) { if (qstrcmp(attributes[i].name, "XV_BRIGHTNESS") == 0) m_brightnessRange = qMakePair(attributes[i].min_value, attributes[i].max_value); @@ -525,5 +532,3 @@ void QX11VideoSurface::querySupportedFormats() } } -#endif //QT_NO_XVIDEO - diff --git a/src/plugins/gstreamer/qx11videosurface.h b/src/plugins/gstreamer/qx11videosurface.h index 846d5fc88..e128d7439 100644 --- a/src/plugins/gstreamer/qx11videosurface.h +++ b/src/plugins/gstreamer/qx11videosurface.h @@ -45,8 +45,6 @@ #include <QtWidgets/qwidget.h> #include <qabstractvideosurface.h> -#ifndef QT_NO_XVIDEO - #include <X11/Xlib.h> #include <X11/extensions/Xv.h> #include <X11/extensions/Xvlib.h> @@ -89,7 +87,9 @@ public: bool present(const QVideoFrame &frame); -private: +private: + Display *display() const; + WId m_winId; XvPortID m_portId; GC m_gc; @@ -114,6 +114,4 @@ private: QT_END_NAMESPACE -#endif //QT_NO_XVIDEO - #endif |