qtmobility/plugins/multimedia/qt7/qt7movievideowidget.mm
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
--- a/qtmobility/plugins/multimedia/qt7/qt7movievideowidget.mm	Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/plugins/multimedia/qt7/qt7movievideowidget.mm	Wed Jun 23 19:08:38 2010 +0300
@@ -80,7 +80,8 @@
 
     void initializeGL()
     {
-        glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+        QColor bgColor = palette().color(QPalette::Background);
+        glClearColor(bgColor.redF(), bgColor.greenF(), bgColor.blueF(), bgColor.alphaF());
     }
 
     void resizeGL(int w, int h)
@@ -206,7 +207,6 @@
     }
 }
 
-
 bool QT7MovieVideoWidget::createVisualContext()
 {
 #ifdef QUICKTIME_C_API_AVAILABLE
@@ -218,7 +218,19 @@
     CGLPixelFormatObj cglPixelFormat = static_cast<CGLPixelFormatObj>([nsglPixelFormat CGLPixelFormatObj]);
 
     CFTypeRef keys[] = { kQTVisualContextOutputColorSpaceKey };
-    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
+    CGColorSpaceRef colorSpace = NULL;
+    CMProfileRef sysprof = NULL;
+
+    // Get the Systems Profile for the main display
+    if (CMGetSystemProfile(&sysprof) == noErr) {
+        // Create a colorspace with the systems profile
+        colorSpace = CGColorSpaceCreateWithPlatformColorSpace(sysprof);
+        CMCloseProfile(sysprof);
+    }
+
+    if (!colorSpace)
+        colorSpace = CGColorSpaceCreateDeviceRGB();
+
     CFDictionaryRef textureContextAttributes = CFDictionaryCreate(kCFAllocatorDefault,
                                                                   (const void **)keys,
                                                                   (const void **)&colorSpace, 1,
@@ -263,7 +275,7 @@
         return;
     }
 
-    NSSize size = [[(QTMovie*)m_movie attributeForKey:@"QTMovieCurrentSizeAttribute"] sizeValue];
+    NSSize size = [[(QTMovie*)m_movie attributeForKey:@"QTMovieNaturalSizeAttribute"] sizeValue];
     m_nativeSize = QSize(size.width, size.height);
     m_videoWidget->setNativeSize(m_nativeSize);
 
@@ -275,10 +287,6 @@
     m_displayLink->start();
 }
 
-void QT7MovieVideoWidget::setEnabled(bool)
-{
-}
-
 void QT7MovieVideoWidget::setMovie(void *movie)
 {
     if (m_movie == movie)
@@ -297,6 +305,14 @@
     setupVideoOutput();
 }
 
+void QT7MovieVideoWidget::updateNaturalSize(const QSize &newSize)
+{
+    if (m_nativeSize != newSize) {
+        m_nativeSize = newSize;
+        setupVideoOutput();
+    }
+}
+
 bool QT7MovieVideoWidget::isFullScreen() const
 {
     return m_fullscreen;