aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/core/SkBitmap.h3
-rw-r--r--src/core/SkBitmap_scroll.cpp6
2 files changed, 8 insertions, 1 deletions
diff --git a/include/core/SkBitmap.h b/include/core/SkBitmap.h
index eba3e0b087..c2ef7b53d5 100644
--- a/include/core/SkBitmap.h
+++ b/include/core/SkBitmap.h
@@ -395,7 +395,8 @@ public:
/** Scroll (a subset of) the contents of this bitmap by dx/dy. If there are
no pixels allocated (i.e. getPixels() returns null) the method will
- still update the inval region (if present).
+ still update the inval region (if present). If the bitmap is immutable,
+ do nothing and return false.
@param subset The subset of the bitmap to scroll/move. To scroll the
entire contents, specify [0, 0, width, height] or just
diff --git a/src/core/SkBitmap_scroll.cpp b/src/core/SkBitmap_scroll.cpp
index 54110e87cf..de4725b3f9 100644
--- a/src/core/SkBitmap_scroll.cpp
+++ b/src/core/SkBitmap_scroll.cpp
@@ -11,6 +11,10 @@
bool SkBitmap::scrollRect(const SkIRect* subset, int dx, int dy,
SkRegion* inval) const
{
+ if (this->isImmutable()) {
+ return false;
+ }
+
if (NULL != subset) {
SkBitmap tmp;
@@ -113,5 +117,7 @@ bool SkBitmap::scrollRect(const SkIRect* subset, int dx, int dy,
dst += rowBytes;
src += rowBytes;
}
+
+ this->notifyPixelsChanged();
return true;
}