Added NoTouchFocus quirk
[harmattan/cameraplus] / declarative / videoplayer.cpp
index 8b6310a..ce311a2 100644 (file)
@@ -28,6 +28,7 @@
 #include <QTimer>
 #include "qtcamviewfinderrenderer.h"
 #include <QPainter>
+#include <QMatrix4x4>
 
 #if defined(QT4)
 VideoPlayer::VideoPlayer(QDeclarativeItem *parent) :
@@ -50,6 +51,12 @@ VideoPlayer::VideoPlayer(QQuickItem *parent) :
 #if defined(QT4)
   setFlag(QGraphicsItem::ItemHasNoContents, false);
 #endif
+
+#if defined(QT5)
+  setRenderTarget(QQuickPaintedItem::FramebufferObject);
+  setSmooth(false);
+  setAntialiasing(false);
+#endif
 }
 
 VideoPlayer::~VideoPlayer() {
@@ -62,6 +69,12 @@ VideoPlayer::~VideoPlayer() {
 }
 
 void VideoPlayer::componentComplete() {
+#if defined(QT4)
+  QDeclarativeItem::componentComplete();
+#elif defined(QT5)
+  QQuickPaintedItem::componentComplete();
+#endif
+
   if (!m_config) {
     qmlInfo(this) << "CameraConfig not set";
     return;
@@ -239,16 +252,30 @@ void VideoPlayer::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
 
   Q_UNUSED(widget);
   Q_UNUSED(option);
+
+  painter->fillRect(boundingRect(), Qt::black);
+
 #elif defined(QT5)
 void VideoPlayer::paint(QPainter *painter) {
+  painter->fillRect(contentsBoundingRect(), Qt::black);
+
 #endif
-  painter->fillRect(boundingRect(), Qt::black);
 
   if (!m_renderer) {
     return;
   }
 
-  m_renderer->paint(painter);
+  bool needsNativePainting = m_renderer->needsNativePainting();
+
+  if (needsNativePainting) {
+    painter->beginNativePainting();
+  }
+
+  m_renderer->paint(QMatrix4x4(painter->combinedTransform()), painter->viewport());
+
+  if (needsNativePainting) {
+    painter->endNativePainting();
+  }
 }
 
 VideoPlayer::State VideoPlayer::state() const {