diff options
| author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2014-08-06 12:07:59 +0200 |
|---|---|---|
| committer | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2014-08-06 18:28:45 +0200 |
| commit | f0c216a887850d14e42116bcac55a9a7a87ae298 (patch) | |
| tree | 53069534e6222d808d2c2611c5983698201bd472 /Source/WebKit/qt/WidgetSupport | |
| parent | 81905b2cdab344e33550abd571046e65816cb416 (diff) | |
| download | qtwebkit-f0c216a887850d14e42116bcac55a9a7a87ae298.tar.gz | |
Support QOpenGLWidget for accelerated compositing
This patch enables the use of QOpenGLWidget for the same role
QGLWidget can be used to enable accelerated compositing in QtWebKit.
Change-Id: I7ac5c00c3a4b411637544128fc5d805781b9da4d
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'Source/WebKit/qt/WidgetSupport')
| -rw-r--r-- | Source/WebKit/qt/WidgetSupport/PageClientQt.cpp | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp b/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp index 411bd65f0..8333a59cc 100644 --- a/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp +++ b/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp @@ -31,6 +31,9 @@ #ifdef QT_OPENGL_LIB #include <QGLWidget> #endif +#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) +#include <QOpenGLWidget> +#endif #if USE(ACCELERATED_COMPOSITING) #include "TextureMapper.h" @@ -181,15 +184,26 @@ void PageClientQGraphicsWidget::repaintViewport() bool PageClientQGraphicsWidget::makeOpenGLContextCurrentIfAvailable() { -#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER_GL) && defined(QT_OPENGL_LIB) +#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER_GL) QGraphicsView* graphicsView = firstGraphicsView(); if (graphicsView && graphicsView->viewport()) { - QGLWidget* glWidget = qobject_cast<QGLWidget*>(graphicsView->viewport()); - if (glWidget) { + QWidget *widget = graphicsView->viewport(); +#if defined(QT_OPENGL_LIB) + if (widget->inherits("QGLWidget")) { + + QGLWidget* glWidget = static_cast<QGLWidget*>(widget); // The GL context belonging to the QGLWidget viewport must be current when TextureMapper is being created. glWidget->makeCurrent(); return true; } +#endif +#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) + if (widget->inherits("QOpenGLWidget")) { + QOpenGLWidget *qoglWidget = static_cast<QOpenGLWidget*>(widget); + qoglWidget->makeCurrent(); + return true; + } +#endif } #endif return false; @@ -197,12 +211,22 @@ bool PageClientQGraphicsWidget::makeOpenGLContextCurrentIfAvailable() QOpenGLContext* PageClientQGraphicsWidget::openGLContextIfAvailable() { -#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER_GL) && defined(QT_OPENGL_LIB) +#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER_GL) QGraphicsView* graphicsView = firstGraphicsView(); if (graphicsView && graphicsView->viewport()) { - QGLWidget* glWidget = qobject_cast<QGLWidget*>(graphicsView->viewport()); - if (glWidget) + QWidget *widget = graphicsView->viewport(); +#if defined(QT_OPENGL_LIB) + if (widget->inherits("QGLWidget")) { + QGLWidget* glWidget = static_cast<QGLWidget*>(widget); return glWidget->context()->contextHandle(); + } +#endif +#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) + if (widget->inherits("QOpenGLWidget")) { + QOpenGLWidget *qoglWidget = static_cast<QOpenGLWidget*>(widget); + return qoglWidget->context(); + } +#endif } #endif return 0; |
