summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarko A. Niemelä <marko.a.niemela@nokia.com>2011-05-12 10:43:41 +0300
committerMarko A. Niemelä <marko.a.niemela@nokia.com>2011-05-12 10:43:41 +0300
commitb066db1567969427d65100256cd3679d1f1dcbce (patch)
treedf8f736174f2cc519becf7bacc9bebf36170d063
parentc20013d07ed50d1cd65a5d527e6197bfe9a643a5 (diff)
parentdf120ca52f2af5b453a88c2146f8382a793fdfbf (diff)
Merge commit 'refs/merge-requests/2' of git@gitorious.org:qt-labs/qml1-shadersplugin into merge-requests/2
-rw-r--r--src/shadereffectitem.cpp13
-rw-r--r--src/shadereffectitem.h2
2 files changed, 15 insertions, 0 deletions
diff --git a/src/shadereffectitem.cpp b/src/shadereffectitem.cpp
index 33b26b6..a32168e 100644
--- a/src/shadereffectitem.cpp
+++ b/src/shadereffectitem.cpp
@@ -210,6 +210,8 @@ ShaderEffectItem::ShaderEffectItem(QDeclarativeItem *parent)
, m_respectsOpacity(false)
, m_checkedViewportUpdateMode(false)
, m_checkedOpenGL(false)
+ , m_checkedShaderPrograms(false)
+ , m_hasShaderPrograms(false)
, m_mirrored(false)
, m_defaultVertexShader(true)
{
@@ -389,6 +391,17 @@ void ShaderEffectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *
const QGLContext *context = QGLContext::currentContext();
if (context) {
+ if (!m_checkedShaderPrograms) {
+ m_hasShaderPrograms = QGLShaderProgram::hasOpenGLShaderPrograms(context);
+ m_checkedShaderPrograms = true;
+
+ if (!m_hasShaderPrograms)
+ qWarning() << "ShaderEffectItem::paint - Shader programs are not supported";
+ }
+
+ if ( !m_hasShaderPrograms )
+ return;
+
checkViewportUpdateMode();
painter->save();
painter->beginNativePainting();
diff --git a/src/shadereffectitem.h b/src/shadereffectitem.h
index 83fbaea..1d27543 100644
--- a/src/shadereffectitem.h
+++ b/src/shadereffectitem.h
@@ -139,6 +139,8 @@ private:
bool m_respectsOpacity : 1;
bool m_checkedViewportUpdateMode : 1;
bool m_checkedOpenGL : 1;
+ bool m_checkedShaderPrograms : 1;
+ bool m_hasShaderPrograms : 1;
bool m_mirrored : 1;
bool m_defaultVertexShader : 1;
};