Chromium Code Reviews| Index: src/core/SkBitmap.cpp |
| diff --git a/src/core/SkBitmap.cpp b/src/core/SkBitmap.cpp |
| index 8997f2b0140b41f62d1096e847f10b03a4cfaaa8..2e1f810524aea0eff4d74e30061a27402c181aa2 100644 |
| --- a/src/core/SkBitmap.cpp |
| +++ b/src/core/SkBitmap.cpp |
| @@ -39,6 +39,13 @@ SkBitmap::SkBitmap(const SkBitmap& src) { |
| SkDEBUGCODE(this->validate();) |
| } |
| +SkBitmap::SkBitmap(SkBitmap&& other) { |
| + if (this != &other) { |
| + memcpy(this, &other, sizeof(other)); |
|
mtklein
2015/12/10 23:09:58
Can't this just be this->swap(other)?
hal.canary
2015/12/14 17:30:37
Done. need to initialize all variables first.
|
| + sk_bzero(&other, sizeof(other)); |
| + } |
| +} |
| + |
| SkBitmap::~SkBitmap() { |
| SkDEBUGCODE(this->validate();) |
| this->freePixels(); |
| @@ -72,6 +79,14 @@ SkBitmap& SkBitmap::operator=(const SkBitmap& src) { |
| return *this; |
| } |
| +SkBitmap& SkBitmap::operator=(SkBitmap&& other) { |
| + if (this != &other) { |
| + this->swap(other); |
| + other.reset(); |
| + } |
| + return *this; |
| +} |
| + |
| void SkBitmap::swap(SkBitmap& other) { |
| SkTSwap(fColorTable, other.fColorTable); |
| SkTSwap(fPixelRef, other.fPixelRef); |