summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/HTMLCanvasElement.cpp
diff options
context:
space:
mode:
authorKonstantin Tokarev <annulen@yandex.ru>2017-01-27 08:36:56 +0300
committerKonstantin Tokarev <annulen@yandex.ru>2017-02-02 12:31:42 +0000
commit6b406688a4020916ba2966e6e5252d9c1385970f (patch)
tree65af619b76adb44fee03f2e496a2e4dc5c455dd8 /Source/WebCore/html/HTMLCanvasElement.cpp
parent46167faa61861b01a0e4e8e774da9febc3c2956e (diff)
downloadqtwebkit-6b406688a4020916ba2966e6e5252d9c1385970f.tar.gz
Imported WebKit commit bdab88b903fe1a254c80af20161183976670cd3b
Change-Id: Idc1156f4a64df4e7d89e90d4e03451f004c8ae6d Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Source/WebCore/html/HTMLCanvasElement.cpp')
-rw-r--r--Source/WebCore/html/HTMLCanvasElement.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/Source/WebCore/html/HTMLCanvasElement.cpp b/Source/WebCore/html/HTMLCanvasElement.cpp
index e88911b7a..8ea5b0381 100644
--- a/Source/WebCore/html/HTMLCanvasElement.cpp
+++ b/Source/WebCore/html/HTMLCanvasElement.cpp
@@ -52,6 +52,10 @@
#include <runtime/JSCInlines.h>
#include <runtime/JSLock.h>
+#if PLATFORM(QT)
+#include "QWebPageClient.h"
+#endif
+
#if ENABLE(WEBGL)
#include "WebGLContextAttributes.h"
#include "WebGLRenderingContextBase.h"
@@ -667,7 +671,17 @@ void HTMLCanvasElement::createImageBuffer() const
RenderingMode renderingMode = shouldAccelerate(bufferSize) ? Accelerated : Unaccelerated;
- setImageBuffer(ImageBuffer::create(size(), renderingMode));
+#if PLATFORM(QT) && ENABLE(ACCELERATED_2D_CANVAS)
+ if (renderingMode == Accelerated) {
+ QWebPageClient* client = document().page()->chrome().platformPageClient();
+ // The WebKit2 Chrome does not have a pageclient.
+ QOpenGLContext* context = client ? client->openGLContextIfAvailable() : 0;
+ setImageBuffer(ImageBuffer::createCompatibleBuffer(size(), 1.0f, ColorSpaceDeviceRGB, context));
+ } else
+#endif
+ {
+ setImageBuffer(ImageBuffer::create(size(), renderingMode));
+ }
if (!m_imageBuffer)
return;
m_imageBuffer->context().setShadowsIgnoreTransforms(true);