Index: src/core/SkDevice.cpp |
diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp |
index 570cea45e3d7b265d8ebddc364525fa63dacdca6..329ee33f5cb9a7ced9b08d1c20a5cec26741593f 100644 |
--- a/src/core/SkDevice.cpp |
+++ b/src/core/SkDevice.cpp |
@@ -10,6 +10,7 @@ |
#include "SkDraw.h" |
#include "SkMetaData.h" |
#include "SkPatchUtils.h" |
+#include "SkRasterClip.h" |
#include "SkShader.h" |
#include "SkTextBlob.h" |
@@ -92,7 +93,24 @@ const void* SkBaseDevice::peekPixels(SkImageInfo*, size_t*) { return NULL; } |
// DEPRECATED : remove when chrome subclass have been updated to not override clear() |
void SkBaseDevice::clear(SkColor color) { |
- SkFAIL("SkDevice::clear() should not be called"); |
+ SkPaint paint; |
+ paint.setColor(color); |
+ paint.setXfermodeMode(SkXfermode::kSrc_Mode); |
+ |
+ SkMatrix matrix; |
+ matrix.reset(); |
+ |
+ SkRasterClip rc(SkIRect::MakeWH(this->width(), this->height())); |
+ |
+ SkDraw draw; |
+ sk_bzero(&draw, sizeof(draw)); |
+ |
+ draw.fBitmap = &this->accessBitmap(true); |
+ draw.fMatrix = &matrix; |
+ draw.fClip = &rc.forceGetBW(); |
+ draw.fRC = &rc; |
+ draw.fDevice = this; |
+ this->drawPaint(draw, paint); |
} |
void SkBaseDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer, |