Added profiling stubs to SkPicturePlayback
authorrobertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 13 Nov 2012 18:28:06 +0000 (18:28 +0000)
committerrobertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 13 Nov 2012 18:28:06 +0000 (18:28 +0000)
https://codereview.appspot.com/6851044/

git-svn-id: http://skia.googlecode.com/svn/trunk@6397 2bbb7eff-a529-9590-31e7-b0007b416f81

src/core/SkPicturePlayback.cpp
src/core/SkPicturePlayback.h

index 5d4098a..b1b5112 100644 (file)
@@ -574,6 +574,14 @@ struct SkipClipRec {
 };
 #endif
 
+#ifdef SK_PICTURE_PROFILING_STUBS
+void SkPicturePlayback::preDraw(size_t offset, int type) {
+}
+
+void SkPicturePlayback::postDraw(size_t offset) {
+}
+#endif
+
 void SkPicturePlayback::draw(SkCanvas& canvas) {
 #ifdef ENABLE_TIME_DRAW
     SkAutoTime  at("SkPicture::draw", 50);
@@ -622,7 +630,14 @@ void SkPicturePlayback::draw(SkCanvas& canvas) {
     SkMatrix initialMatrix = canvas.getTotalMatrix();
 
     while (!reader.eof()) {
-        switch (reader.readInt()) {
+#ifdef SK_PICTURE_PROFILING_STUBS
+        size_t curOffset = reader.offset();
+#endif
+        int type = reader.readInt();
+#ifdef SK_PICTURE_PROFILING_STUBS
+        this->preDraw(curOffset, type);
+#endif
+        switch (type) {
             case CLIP_PATH: {
                 const SkPath& path = getPath(reader);
                 uint32_t packed = reader.readInt();
@@ -865,6 +880,10 @@ void SkPicturePlayback::draw(SkCanvas& canvas) {
                 SkASSERT(0);
         }
 
+#ifdef SK_PICTURE_PROFILING_STUBS
+        this->postDraw(curOffset);
+#endif
+
         if (it.isValid()) {
             uint32_t off = it.draw();
             if (off == SK_MaxU32) {
index 24bce4e..8a7ee0a 100644 (file)
@@ -77,6 +77,12 @@ public:
     // drawing and return from draw() after the "current" op code is done
     void abort();
 
+protected:
+#ifdef SK_PICTURE_PROFILING_STUBS
+    virtual void preDraw(size_t offset, int type);
+    virtual void postDraw(size_t offset);
+#endif
+
 private:
     class TextContainer {
     public: