summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp')
-rw-r--r--Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp b/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
index 9ee8a94..1d5d492 100644
--- a/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
+++ b/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
@@ -37,7 +37,9 @@
#include "MIMETypeRegistry.h"
#include "NotImplemented.h"
#include "Pattern.h"
+#include "PlatformContextCairo.h"
#include "PlatformString.h"
+#include "RefPtrCairo.h"
#include <cairo.h>
#include <wtf/Vector.h>
@@ -66,6 +68,7 @@ namespace WebCore {
ImageBufferData::ImageBufferData(const IntSize& size)
: m_surface(0)
+ , m_platformContext(0)
{
}
@@ -80,9 +83,9 @@ ImageBuffer::ImageBuffer(const IntSize& size, ColorSpace, RenderingMode, bool& s
if (cairo_surface_status(m_data.m_surface) != CAIRO_STATUS_SUCCESS)
return; // create will notice we didn't set m_initialized and fail.
- cairo_t* cr = cairo_create(m_data.m_surface);
- m_context.set(new GraphicsContext(cr));
- cairo_destroy(cr); // The context is now owned by the GraphicsContext.
+ RefPtr<cairo_t> cr = adoptRef(cairo_create(m_data.m_surface));
+ m_data.m_platformContext.setCr(cr.get());
+ m_context.set(new GraphicsContext(&m_data.m_platformContext));
success = true;
}
@@ -301,7 +304,7 @@ static cairo_status_t writeFunction(void* closure, const unsigned char* data, un
String ImageBuffer::toDataURL(const String& mimeType, const double*) const
{
- cairo_surface_t* image = cairo_get_target(context()->platformContext());
+ cairo_surface_t* image = cairo_get_target(context()->platformContext()->cr());
if (!image)
return "data:,";