}
}
-void QtCamViewfinderRendererMeeGo::paint(QPainter *painter) {
+bool QtCamViewfinderRendererMeeGo::needsNativePainting() {
+ return true;
+}
+
+void QtCamViewfinderRendererMeeGo::paint(const QMatrix4x4& matrix, const QRectF& viewport) {
QMutexLocker locker(&m_frameMutex);
if (m_frame == -1) {
return;
}
- painter->beginNativePainting();
-
if (m_needsInit) {
- calculateProjectionMatrix(painter->viewport());
+ calculateProjectionMatrix(viewport);
if (!eglCreateSyncKHR && m_conf->viewfinderUseFence()) {
eglCreateSyncKHR = (_PFNEGLCREATESYNCKHRPROC)eglGetProcAddress("eglCreateSyncKHR");
createProgram();
}
- paintFrame(painter, m_frame);
-
- painter->endNativePainting();
+ paintFrame(matrix, m_frame);
}
void QtCamViewfinderRendererMeeGo::resize(const QSizeF& size) {
}
if (!m_sink) {
- m_sink = gst_element_factory_make(m_conf->viewfinderSink().toAscii().data(),
+ m_sink = gst_element_factory_make(m_conf->viewfinderSink().toLatin1().data(),
"QtCamViewfinderRendererMeeGoSink");
if (!m_sink) {
qCritical() << "Failed to create" << m_conf->viewfinderSink();
g_object_add_toggle_ref(G_OBJECT(m_sink), (GToggleNotify)sink_notify, this);
}
- // Displa can be replaced with a null pointer.
- // We all know that the sink used for Harmattan ignores the x-display property ;-)
-
Display *d = QX11Info::display();
g_object_set(G_OBJECT(m_sink), "x-display", d, "use-framebuffer-memory", TRUE, NULL);
m_program->release();
}
-void QtCamViewfinderRendererMeeGo::paintFrame(QPainter *painter, int frame) {
+void QtCamViewfinderRendererMeeGo::paintFrame(const QMatrix4x4& matrix, int frame) {
EGLSyncKHR sync = 0;
if (frame == -1) {
m_program->bind();
m_program->setUniformValue("matrix", m_projectionMatrix);
- m_program->setUniformValue("matrixWorld", QMatrix4x4(painter->combinedTransform()));
+ m_program->setUniformValue("matrixWorld", matrix);
if (!meego_gst_video_texture_bind_frame(sink, GL_TEXTURE_EXTERNAL_OES, frame)) {
qDebug() << "Failed to bind frame";