Index: src/utils/debugger/SkDebugCanvas.cpp |
=================================================================== |
--- src/utils/debugger/SkDebugCanvas.cpp (revision 12088) |
+++ src/utils/debugger/SkDebugCanvas.cpp (working copy) |
@@ -35,6 +35,24 @@ |
fFilter = false; |
fIndex = 0; |
fUserMatrix.reset(); |
+ |
+ // SkPicturePlayback uses the base-class' quickReject calls to cull clipped |
+ // operations. This can lead to problems in the debugger which expects all |
+ // the operations in the captured skp to appear in the debug canvas. To |
+ // circumvent this we create a wide open clip here (an empty clip rect |
+ // is not sufficient). |
+ // Internally, the SkRect passed to clipRect is converted to an SkIRect and |
+ // rounded out. The following code creates a nearly maximal rect that will |
+ // not get collapsed by the coming conversions (Due to precision loss the |
+ // inset has to be surprisingly large). |
+ SkIRect largeIRect = SkIRect::MakeLargest(); |
+ largeIRect.inset(1024, 1024); |
+ SkRect large = SkRect::MakeFromIRect(largeIRect); |
+#ifdef SK_DEBUG |
+ large.roundOut(&largeIRect); |
+ SkASSERT(!largeIRect.isEmpty()); |
+#endif |
+ INHERITED::clipRect(large, SkRegion::kReplace_Op, false); |
} |
SkDebugCanvas::~SkDebugCanvas() { |