summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/graphics/android/rendering/RasterRenderer.cpp
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2012-06-18 17:45:00 -0700
committerChris Craik <ccraik@google.com>2012-06-19 11:57:49 -0700
commit334c36c686871998bf6c4ac958dfe3b3d5a87033 (patch)
tree90a5710f6c42770076025344490844b3794a60fd /Source/WebCore/platform/graphics/android/rendering/RasterRenderer.cpp
parent0634b6f6429e4e30beddf85239da061726861484 (diff)
downloadexternal_webkit-334c36c686871998bf6c4ac958dfe3b3d5a87033.zip
external_webkit-334c36c686871998bf6c4ac958dfe3b3d5a87033.tar.gz
external_webkit-334c36c686871998bf6c4ac958dfe3b3d5a87033.tar.bz2
Enable multiple tile painting threads
Use one thread by default. Further experiments should be done with determining the correct number of threads, and better scheduling. Change-Id: I2a87dac7d0b652b5ab627744650d12b0b8842003
Diffstat (limited to 'Source/WebCore/platform/graphics/android/rendering/RasterRenderer.cpp')
-rw-r--r--Source/WebCore/platform/graphics/android/rendering/RasterRenderer.cpp21
1 files changed, 7 insertions, 14 deletions
diff --git a/Source/WebCore/platform/graphics/android/rendering/RasterRenderer.cpp b/Source/WebCore/platform/graphics/android/rendering/RasterRenderer.cpp
index 8fb4d12..8ad1fc8 100644
--- a/Source/WebCore/platform/graphics/android/rendering/RasterRenderer.cpp
+++ b/Source/WebCore/platform/graphics/android/rendering/RasterRenderer.cpp
@@ -42,20 +42,11 @@
namespace WebCore {
-SkBitmap* RasterRenderer::g_bitmap = 0;
-
RasterRenderer::RasterRenderer() : BaseRenderer(BaseRenderer::Raster)
{
#ifdef DEBUG_COUNT
ClassTracker::instance()->increment("RasterRenderer");
#endif
- if (!g_bitmap) {
- g_bitmap = new SkBitmap();
- g_bitmap->setConfig(SkBitmap::kARGB_8888_Config,
- TilesManager::instance()->tileWidth(),
- TilesManager::instance()->tileHeight());
- g_bitmap->allocPixels();
- }
}
RasterRenderer::~RasterRenderer()
@@ -68,9 +59,11 @@ RasterRenderer::~RasterRenderer()
void RasterRenderer::setupCanvas(const TileRenderInfo& renderInfo, SkCanvas* canvas)
{
TRACE_METHOD();
+
+ SkBitmap* bitmap = TilesManager::instance()->threadLocalBitmap();
if (renderInfo.baseTile->isLayerTile()) {
- g_bitmap->setIsOpaque(false);
- g_bitmap->eraseARGB(0, 0, 0, 0);
+ bitmap->setIsOpaque(false);
+ bitmap->eraseARGB(0, 0, 0, 0);
} else {
Color defaultBackground = Color::white;
Color* background = renderInfo.tilePainter->background();
@@ -79,12 +72,12 @@ void RasterRenderer::setupCanvas(const TileRenderInfo& renderInfo, SkCanvas* can
background = &defaultBackground;
}
ALOGV("setupCanvas use background on Base Layer %x", background->rgb());
- g_bitmap->setIsOpaque(!background->hasAlpha());
- g_bitmap->eraseARGB(background->alpha(), background->red(),
+ bitmap->setIsOpaque(!background->hasAlpha());
+ bitmap->eraseARGB(background->alpha(), background->red(),
background->green(), background->blue());
}
- SkDevice* device = new SkDevice(*g_bitmap);
+ SkDevice* device = new SkDevice(*bitmap);
canvas->setDevice(device);