From 123f19a2b8c9a50e1f29febada33d16a1c9c996a Mon Sep 17 00:00:00 2001
From: Benjamin Otte <otte@gnome.org>
Date: Tue, 13 Oct 2009 22:53:43 +0200
Subject: [PATCH 08/12] [gtk] Use hw-accelerated buffers

The code creates a similar surface to the root window. Other cairo code
still uses an image surface.
This patch makes <canvas> hw-accelerated.
---
 .../platform/graphics/cairo/ImageBufferCairo.cpp   |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp b/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
index 9f0a3a0..e5ed3ee 100644
--- a/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
+++ b/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
@@ -76,9 +76,18 @@ ImageBuffer::ImageBuffer(const IntSize& size, ImageColorSpace imageColorSpace, b
     , m_size(size)
 {
     success = false;  // Make early return mean error.
+#if PLATFORM(GTK)
+    cairo_t *tmp = gdk_cairo_create (gdk_get_default_root_window ());
+    m_data.m_surface = cairo_surface_create_similar(cairo_get_target (tmp),
+                                                    CAIRO_CONTENT_COLOR_ALPHA,
+                                                    size.width(),
+                                                    size.height());
+    cairo_destroy (tmp);
+#else
     m_data.m_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32,
                                                   size.width(),
                                                   size.height());
+#endif
     if (cairo_surface_status(m_data.m_surface) != CAIRO_STATUS_SUCCESS)
         return;  // create will notice we didn't set m_initialized and fail.
 
-- 
1.6.3.3

