summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/graphics/android/TransferQueue.cpp
diff options
context:
space:
mode:
authorTeng-Hui Zhu <ztenghui@google.com>2011-08-22 13:20:28 -0700
committerTeng-Hui Zhu <ztenghui@google.com>2011-08-22 13:37:31 -0700
commit1af71ac3df81a9b312f5375ae3cb6c33c129227b (patch)
tree3f31b18e0295d3b397b8030047ecf78ce92063e4 /Source/WebCore/platform/graphics/android/TransferQueue.cpp
parent77e5b594dd717e27b1a8be2b521f738cf5941ae1 (diff)
downloadexternal_webkit-1af71ac3df81a9b312f5375ae3cb6c33c129227b.zip
external_webkit-1af71ac3df81a9b312f5375ae3cb6c33c129227b.tar.gz
external_webkit-1af71ac3df81a9b312f5375ae3cb6c33c129227b.tar.bz2
Merge the line by line copy into one when appropiate
When the stride is the same as the bitmap width, we can just use single memcpy to copy the whole content. bug:5196685 Change-Id: I01c9a673c8e95e14eb23f3d7df4002c886b7554d
Diffstat (limited to 'Source/WebCore/platform/graphics/android/TransferQueue.cpp')
-rw-r--r--Source/WebCore/platform/graphics/android/TransferQueue.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/Source/WebCore/platform/graphics/android/TransferQueue.cpp b/Source/WebCore/platform/graphics/android/TransferQueue.cpp
index 8b4b596..00c9e68 100644
--- a/Source/WebCore/platform/graphics/android/TransferQueue.cpp
+++ b/Source/WebCore/platform/graphics/android/TransferQueue.cpp
@@ -316,12 +316,16 @@ void TransferQueue::updateQueueWithBitmap(const TileRenderInfo* renderInfo,
if (!x && !y && bitmap.width() == width && bitmap.height() == height) {
bitmap.lockPixels();
uint8_t* bitmapOrigin = static_cast<uint8_t*>(bitmap.getPixels());
- // Copied line by line since we need to handle the offsets and stride.
- for (row = 0 ; row < bitmap.height(); row ++) {
- uint8_t* dst = &(img[(buffer.stride * (row + x) + y) * bpp]);
- uint8_t* src = &(bitmapOrigin[bitmap.width() * row * bpp]);
- memcpy(dst, src, bpp * bitmap.width());
- }
+ if (buffer.stride != bitmap.width())
+ // Copied line by line since we need to handle the offsets and stride.
+ for (row = 0 ; row < bitmap.height(); row ++) {
+ uint8_t* dst = &(img[buffer.stride * row * bpp]);
+ uint8_t* src = &(bitmapOrigin[bitmap.width() * row * bpp]);
+ memcpy(dst, src, bpp * bitmap.width());
+ }
+ else
+ memcpy(img, bitmapOrigin, bpp * bitmap.width() * bitmap.height());
+
bitmap.unlockPixels();
} else {
// TODO: implement the partial invalidate here!