summaryrefslogtreecommitdiff
path: root/Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp')
-rw-r--r--Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp21
1 files changed, 8 insertions, 13 deletions
diff --git a/Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp b/Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp
index d5e371def..0c8be072a 100644
--- a/Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp
+++ b/Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp
@@ -38,8 +38,15 @@ namespace WebKit {
QImage ShareableBitmap::createQImage()
{
+ ref(); // Balanced by deref in releaseSharedMemoryData
return QImage(reinterpret_cast<uchar*>(data()), m_size.width(), m_size.height(), m_size.width() * 4,
- m_flags & SupportsAlpha ? QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32);
+ m_flags & SupportsAlpha ? QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32,
+ releaseSharedMemoryData, this);
+}
+
+void ShareableBitmap::releaseSharedMemoryData(void* typelessBitmap)
+{
+ static_cast<ShareableBitmap*>(typelessBitmap)->deref(); // Balanced by ref in createQImage.
}
PassRefPtr<Image> ShareableBitmap::createImage()
@@ -70,17 +77,5 @@ void ShareableBitmap::paint(GraphicsContext& /*context*/, float /*scaleFactor*/,
notImplemented();
}
-void ShareableBitmap::swizzleRGB()
-{
- uint32_t* data = reinterpret_cast<uint32_t*>(this->data());
- int width = size().width();
- int height = size().height();
- for (int y = 0; y < height; ++y) {
- uint32_t* p = data + y * width;
- for (int x = 0; x < width; ++x)
- p[x] = ((p[x] << 16) & 0xff0000) | ((p[x] >> 16) & 0xff) | (p[x] & 0xff00ff00);
- }
-}
-
}
// namespace WebKit