Index: tools/viewer/sk_app/Window.h |
diff --git a/tools/viewer/sk_app/Window.h b/tools/viewer/sk_app/Window.h |
index 63d5e19e5594716c9bc95742b0fac51fe8b9af75..4db907e765655db81885ac8650827423b946af58 100644 |
--- a/tools/viewer/sk_app/Window.h |
+++ b/tools/viewer/sk_app/Window.h |
@@ -12,6 +12,7 @@ |
#include "SkRect.h" |
#include "SkTouchGesture.h" |
#include "SkTypes.h" |
+#include "../private/SkMutex.h" |
class SkCanvas; |
@@ -27,8 +28,17 @@ public: |
virtual void setTitle(const char*) = 0; |
virtual void show() = 0; |
+ |
+ // Make sure that either onPaint or uncheckInval is called in the subclasses' implementations |
+ // of inval. They unset fIsContentInvalided which allow checkAndInval to invalidate the content |
+ // in the future. |
virtual void inval() = 0; |
djsollen
2016/05/23 15:22:42
make this protected
liyuqian
2016/05/23 15:49:25
Done.
|
+ // Check if the current window has any pending inval; call inval if not. |
+ void checkAndInval(); |
+ // Uncheck fIsContentInvalided to allow future checkAndInval to push inval events. |
+ void uncheckInval(); |
djsollen
2016/05/23 15:22:42
make this protected. I also find this naming confu
liyuqian
2016/05/23 15:49:25
I don't want to change inval's name because it's i
|
+ |
virtual bool scaleContentToFit() const { return false; } |
virtual bool supportsContentRect() const { return false; } |
virtual SkRect getContentRect() { return SkRect::MakeEmpty(); } |
@@ -164,6 +174,8 @@ protected: |
void* fPaintUserData; |
WindowContext* fWindowContext = nullptr; |
+ |
+ bool fIsContentInvalidated = false; // use this to avoid duplicate invalidate events |
}; |
} // namespace sk_app |