Remove incremental draw optimization from SkDebugCanvas
authorkkinnunen <kkinnunen@nvidia.com>
Wed, 14 Jan 2015 07:09:19 +0000 (23:09 -0800)
committerCommit bot <commit-bot@chromium.org>
Wed, 14 Jan 2015 07:09:19 +0000 (23:09 -0800)
commit26a00de4f303fe74527f00b777a871843ae4437e
tree8b9d745e38d2002d9bca2f81bad191002311d8ba
parentcfdc0e3fee69694e0f6b083d8455665b2a810589
Remove incremental draw optimization from SkDebugCanvas

The SkDebugCanvas can be (or is currently) being used to draw to multiple
different canvases. If this use-case is intended, then storing draw
-related state in the canvas causes bugs.

Remove incremental draw from SkDebugCanvas. It can only optimize the
case where draw command index is advanced, no other changes are done
and no visualization is used. This case is not that critical, as it
happens only once per new frame at most. It causes bugs, because
one SkDebugCanvas is used to draw to multiple canvases.

Leave the draw to canvas in same state as it was passed in.

This fixes the debugger bugs where:
 * Old, stale image would stay on the raster canvas when a new image is
 loaded. Also happened with resizes.

 * Proper image for overdraw filter would be visible only for the first
   frame

Review URL: https://codereview.chromium.org/844493003
debugger/SkDebugger.cpp
src/utils/debugger/SkDebugCanvas.cpp
src/utils/debugger/SkDebugCanvas.h
src/utils/debugger/SkDrawCommand.cpp
src/utils/debugger/SkDrawCommand.h