| Index: cc/software_renderer.cc
|
| diff --git a/cc/software_renderer.cc b/cc/software_renderer.cc
|
| index 11466da7fedc75fc31ec1f7f31c4dbf9f111950f..01589f468d26f764296f8ef64ad9bc9ad8db2227 100644
|
| --- a/cc/software_renderer.cc
|
| +++ b/cc/software_renderer.cc
|
| @@ -69,6 +69,7 @@ SoftwareRenderer::SoftwareRenderer(RendererClient* client, ResourceProvider* res
|
| m_capabilities.usingSetVisibility = true;
|
| // The updater can access bitmaps while the SoftwareRenderer is using them.
|
| m_capabilities.allowPartialTextureUpdates = true;
|
| + m_capabilities.usingPartialSwap = true;
|
|
|
| viewportChanged();
|
| }
|
| @@ -84,22 +85,22 @@ const RendererCapabilities& SoftwareRenderer::capabilities() const
|
|
|
| void SoftwareRenderer::viewportChanged()
|
| {
|
| - m_outputDevice->DidChangeViewportSize(viewportSize());
|
| + m_outputDevice->Resize(viewportSize());
|
| }
|
|
|
| void SoftwareRenderer::beginDrawingFrame(DrawingFrame& frame)
|
| {
|
| TRACE_EVENT0("cc", "SoftwareRenderer::beginDrawingFrame");
|
| - m_skRootCanvas = make_scoped_ptr(new SkCanvas(m_outputDevice->Lock(true)->getSkBitmap()));
|
| + m_skRootCanvas = m_outputDevice->BeginPaint();
|
| }
|
|
|
| void SoftwareRenderer::finishDrawingFrame(DrawingFrame& frame)
|
| {
|
| TRACE_EVENT0("cc", "SoftwareRenderer::finishDrawingFrame");
|
| m_currentFramebufferLock.reset();
|
| - m_skCurrentCanvas = 0;
|
| - m_skRootCanvas.reset();
|
| - m_outputDevice->Unlock();
|
| + m_skCurrentCanvas = NULL;
|
| + m_skRootCanvas = NULL;
|
| + m_outputDevice->EndPaint(gfx::ToEnclosingRect(frame.rootDamageRect));
|
| }
|
|
|
| bool SoftwareRenderer::flippedFramebuffer() const
|
| @@ -131,7 +132,7 @@ void SoftwareRenderer::finish()
|
| void SoftwareRenderer::bindFramebufferToOutputSurface(DrawingFrame& frame)
|
| {
|
| m_currentFramebufferLock.reset();
|
| - m_skCurrentCanvas = m_skRootCanvas.get();
|
| + m_skCurrentCanvas = m_skRootCanvas;
|
| }
|
|
|
| bool SoftwareRenderer::bindFramebufferToTexture(DrawingFrame& frame, const ScopedResource* texture, const gfx::Rect& framebufferRect)
|
| @@ -156,7 +157,9 @@ void SoftwareRenderer::clearFramebuffer(DrawingFrame& frame)
|
| } else {
|
| #ifndef NDEBUG
|
| // On DEBUG builds, opaque render passes are cleared to blue to easily see regions that were not drawn on the screen.
|
| - m_skCurrentCanvas->clear(SkColorSetARGB(255, 0, 0, 255));
|
| + SkPaint paint = m_skCurrentPaint;
|
| + paint.setColor(SkColorSetARGB(255, 0, 0, 255));
|
| + m_skCurrentCanvas->drawPaint(paint);
|
| #endif
|
| }
|
| }
|
| @@ -363,12 +366,11 @@ bool SoftwareRenderer::swapBuffers()
|
| void SoftwareRenderer::getFramebufferPixels(void *pixels, const gfx::Rect& rect)
|
| {
|
| TRACE_EVENT0("cc", "SoftwareRenderer::getFramebufferPixels");
|
| - SkBitmap fullBitmap = m_outputDevice->Lock(false)->getSkBitmap();
|
| SkBitmap subsetBitmap;
|
| - SkIRect invertRect = SkIRect::MakeXYWH(rect.x(), viewportSize().height() - rect.bottom(), rect.width(), rect.height());
|
| - fullBitmap.extractSubset(&subsetBitmap, invertRect);
|
| - subsetBitmap.copyPixelsTo(pixels, rect.width() * rect.height() * 4, rect.width() * 4);
|
| - m_outputDevice->Unlock();
|
| + m_outputDevice->CopyToBitmap(rect, &subsetBitmap);
|
| + subsetBitmap.copyPixelsTo(pixels,
|
| + 4 * rect.width() * rect.height(),
|
| + 4 * rect.width());
|
| }
|
|
|
| void SoftwareRenderer::setVisible(bool visible)
|
|
|