Don't forget to call base class implementation
[harmattan/cameraplus] / declarative / videoplayer.cpp
index 7110d77..e6c3f6c 100644 (file)
@@ -28,6 +28,7 @@
 #include <QTimer>
 #include "qtcamviewfinderrenderer.h"
 #include <QPainter>
+#include <QMatrix4x4>
 
 #if defined(QT4)
 VideoPlayer::VideoPlayer(QDeclarativeItem *parent) :
@@ -68,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;
@@ -88,6 +95,12 @@ void VideoPlayer::componentComplete() {
 }
 
 void VideoPlayer::classBegin() {
+#if defined(QT4)
+  QDeclarativeItem::classBegin();
+#elif defined(QT5)
+  QQuickPaintedItem::classBegin();
+#endif
+
   m_bin = gst_element_factory_make ("playbin2", "VideoPlayerBin");
   if (!m_bin) {
     qmlInfo(this) << "Failed to create playbin2";
@@ -258,7 +271,17 @@ void VideoPlayer::paint(QPainter *painter) {
     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 {