| Index: include/core/SkLights.h
 | 
| diff --git a/include/core/SkLights.h b/include/core/SkLights.h
 | 
| index 0b23cc14aa01fa742133e5dfdf332f24d8e6a334..52e60c71a07a5fe3cae5f441f58e858617490251 100644
 | 
| --- a/include/core/SkLights.h
 | 
| +++ b/include/core/SkLights.h
 | 
| @@ -11,7 +11,7 @@
 | 
|  
 | 
|  #include "SkPoint3.h"
 | 
|  #include "SkRefCnt.h"
 | 
| -#include "../private/SkTDArray.h"
 | 
| +#include "../private/SkTArray.h"
 | 
|  #include "SkImage.h"
 | 
|  
 | 
|  class SK_API SkLights  : public SkRefCnt {
 | 
| @@ -23,11 +23,24 @@ public:
 | 
|              kDirectional_LightType
 | 
|          };
 | 
|  
 | 
| +        Light(const Light& other)
 | 
| +            : fType(other.fType)
 | 
| +            , fColor(other.fColor)
 | 
| +            , fDirection(other.fDirection)
 | 
| +            , fShadowMap(other.fShadowMap) {
 | 
| +        }
 | 
| +
 | 
| +        Light(Light&& other)
 | 
| +            : fType(other.fType)
 | 
| +            , fColor(other.fColor)
 | 
| +            , fDirection(other.fDirection)
 | 
| +            , fShadowMap(std::move(other.fShadowMap)) {
 | 
| +        }
 | 
| +
 | 
|          Light(const SkColor3f& color)
 | 
|              : fType(kAmbient_LightType)
 | 
|              , fColor(color) {
 | 
|              fDirection.set(0.0f, 0.0f, 1.0f);
 | 
| -            fShadowMap.reset(nullptr);
 | 
|          }
 | 
|  
 | 
|          Light(const SkColor3f& color, const SkVector3& dir)
 | 
| @@ -37,7 +50,6 @@ public:
 | 
|              if (!fDirection.normalize()) {
 | 
|                  fDirection.set(0.0f, 0.0f, 1.0f);
 | 
|              }
 | 
| -            fShadowMap.reset(nullptr);
 | 
|          }
 | 
|  
 | 
|          LightType type() const { return fType; }
 | 
| @@ -51,22 +63,19 @@ public:
 | 
|              fShadowMap = std::move(shadowMap);
 | 
|          }
 | 
|  
 | 
| -        sk_sp<SkImage> getShadowMap() const {
 | 
| -            return fShadowMap;
 | 
| +        SkImage* getShadowMap() const {
 | 
| +            return fShadowMap.get();
 | 
|          }
 | 
|  
 | 
|          Light& operator= (const Light& b) {
 | 
| -            if (this == &b)
 | 
| +            if (this == &b) {
 | 
|                  return *this;
 | 
| -
 | 
| -            this->fColor = b.fColor;
 | 
| -            this->fType = b.fType;
 | 
| -            this->fDirection = b.fDirection;
 | 
| -
 | 
| -            if (b.fShadowMap) {
 | 
| -                this->fShadowMap = b.fShadowMap;
 | 
|              }
 | 
|  
 | 
| +            fColor = b.fColor;
 | 
| +            fType = b.fType;
 | 
| +            fDirection = b.fDirection;
 | 
| +            fShadowMap = b.fShadowMap;
 | 
|              return *this;
 | 
|          }
 | 
|  
 | 
| @@ -84,12 +93,18 @@ public:
 | 
|      
 | 
|          void add(const Light& light) {
 | 
|              if (fLights) {
 | 
| -                (void) fLights->fLights.append(1, &light);
 | 
| +                fLights->fLights.push_back(light);
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +        void add(Light&& light) {
 | 
| +            if (fLights) {
 | 
| +                fLights->fLights.push_back(std::move(light));
 | 
|              }
 | 
|          }
 | 
|  
 | 
|          sk_sp<SkLights> finish() {
 | 
| -            return fLights;
 | 
| +            return std::move(fLights);
 | 
|          }
 | 
|  
 | 
|      private:
 | 
| @@ -111,7 +126,9 @@ public:
 | 
|  private:
 | 
|      SkLights() {}
 | 
|  
 | 
| -    SkTDArray<Light> fLights;
 | 
| +    SkTArray<Light> fLights;
 | 
| +
 | 
| +    typedef SkRefCnt INHERITED;
 | 
|  };
 | 
|  
 | 
|  #endif
 | 
| 
 |