summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2010-03-24 06:37:17 (GMT)
committerMartin Jones <martin.jones@nokia.com>2010-03-24 06:37:17 (GMT)
commit122d5a977887408d10ccaf93ee1792c1aadef46a (patch)
tree7e9d1fad2cd591ca72992e82408e448806f52fc7
parent87de0a1af772189f0c2a9aeedb98d806b6a869c1 (diff)
parent2fccc31367b207cff68de063d9f3d55a993cde42 (diff)
downloadQt-122d5a977887408d10ccaf93ee1792c1aadef46a.zip
Qt-122d5a977887408d10ccaf93ee1792c1aadef46a.tar.gz
Qt-122d5a977887408d10ccaf93ee1792c1aadef46a.tar.bz2
Merge branch '4.7' of ../qt-4.7 into 4.7
Conflicts: tests/auto/declarative/qdeclarativedom/data/importlib/sublib/qmldir
-rw-r--r--src/multimedia/video/qabstractvideobuffer.cpp2
-rw-r--r--src/multimedia/video/qabstractvideobuffer.h2
-rw-r--r--src/plugins/mediaservices/qt7/qt7movieviewoutput.h1
-rw-r--r--src/plugins/mediaservices/qt7/qt7movieviewoutput.mm32
4 files changed, 33 insertions, 4 deletions
diff --git a/src/multimedia/video/qabstractvideobuffer.cpp b/src/multimedia/video/qabstractvideobuffer.cpp
index 465a1e7..e9d30d0 100644
--- a/src/multimedia/video/qabstractvideobuffer.cpp
+++ b/src/multimedia/video/qabstractvideobuffer.cpp
@@ -71,6 +71,8 @@ QT_BEGIN_NAMESPACE
\value NoHandle The buffer has no handle, its data can only be accessed by mapping the buffer.
\value GLTextureHandle The handle of the buffer is an OpenGL texture ID.
+ \value XvShmImageHandle The handle contains pointer to shared memory XVideo image.
+ \value CoreImageHandle The handle contains pointer to Mac OS X CIImage.
\value UserHandle Start value for user defined handle types.
\sa handleType()
diff --git a/src/multimedia/video/qabstractvideobuffer.h b/src/multimedia/video/qabstractvideobuffer.h
index 4ffa46f..a8389db 100644
--- a/src/multimedia/video/qabstractvideobuffer.h
+++ b/src/multimedia/video/qabstractvideobuffer.h
@@ -61,6 +61,8 @@ public:
{
NoHandle,
GLTextureHandle,
+ XvShmImageHandle,
+ CoreImageHandle,
UserHandle = 1000
};
diff --git a/src/plugins/mediaservices/qt7/qt7movieviewoutput.h b/src/plugins/mediaservices/qt7/qt7movieviewoutput.h
index 31a0314..49049ad 100644
--- a/src/plugins/mediaservices/qt7/qt7movieviewoutput.h
+++ b/src/plugins/mediaservices/qt7/qt7movieviewoutput.h
@@ -100,6 +100,7 @@ private:
void *m_movie;
void *m_movieView;
+ bool m_layouted;
WId m_winId;
QRect m_displayRect;
diff --git a/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm b/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm
index d8dbf9b..8e4dd9b 100644
--- a/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm
+++ b/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm
@@ -154,6 +154,7 @@ QT7MovieViewOutput::QT7MovieViewOutput(QObject *parent)
:QT7VideoWindowControl(parent),
m_movie(0),
m_movieView(0),
+ m_layouted(false),
m_winId(0),
m_fullscreen(false),
m_aspectRatioMode(Qt::KeepAspectRatio),
@@ -166,6 +167,8 @@ QT7MovieViewOutput::QT7MovieViewOutput(QObject *parent)
QT7MovieViewOutput::~QT7MovieViewOutput()
{
+ [(QTMovieView*)m_movieView release];
+ [(QTMovie*)m_movie release];
}
void QT7MovieViewOutput::setupVideoOutput()
@@ -186,6 +189,7 @@ void QT7MovieViewOutput::setupVideoOutput()
[(QTMovieView*)m_movieView setMovie:(QTMovie*)m_movie];
[(NSView *)m_winId addSubview:(QTMovieView*)m_movieView];
+ m_layouted = true;
setDisplayRect(m_displayRect);
}
@@ -196,8 +200,21 @@ void QT7MovieViewOutput::setEnabled(bool)
void QT7MovieViewOutput::setMovie(void *movie)
{
- m_movie = movie;
- setupVideoOutput();
+ if (m_movie != movie) {
+ if (m_movie) {
+ if (m_movieView)
+ [(QTMovieView*)m_movieView setMovie:nil];
+
+ [(QTMovie*)m_movie release];
+ }
+
+ m_movie = movie;
+
+ if (m_movie)
+ [(QTMovie*)m_movie retain];
+
+ setupVideoOutput();
+ }
}
void QT7MovieViewOutput::updateNaturalSize(const QSize &newSize)
@@ -215,8 +232,15 @@ WId QT7MovieViewOutput::winId() const
void QT7MovieViewOutput::setWinId(WId id)
{
- m_winId = id;
- setupVideoOutput();
+ if (m_winId != id) {
+ if (m_movieView && m_layouted) {
+ [(QTMovieView*)m_movieView removeFromSuperview];
+ m_layouted = false;
+ }
+
+ m_winId = id;
+ setupVideoOutput();
+ }
}
QRect QT7MovieViewOutput::displayRect() const