diff options
| -rw-r--r-- | include/utils/Singleton.h | 3 | ||||
| -rw-r--r-- | libs/hwui/Android.mk | 1 | ||||
| -rw-r--r-- | libs/hwui/Caches.h | 4 | ||||
| -rw-r--r-- | libs/hwui/DisplayListLogBuffer.h | 1 | ||||
| -rw-r--r-- | libs/hwui/DisplayListRenderer.h | 99 | ||||
| -rw-r--r-- | libs/hwui/LayerRenderer.cpp | 6 | ||||
| -rw-r--r-- | libs/hwui/LayerRenderer.h | 33 | ||||
| -rw-r--r-- | libs/hwui/OpenGLRenderer.h | 14 | ||||
| -rw-r--r-- | libs/hwui/ResourceCache.h | 4 | ||||
| -rw-r--r-- | libs/hwui/SkiaColorFilter.h | 10 | ||||
| -rw-r--r-- | libs/hwui/SkiaShader.h | 24 | 
11 files changed, 111 insertions, 88 deletions
diff --git a/include/utils/Singleton.h b/include/utils/Singleton.h index e1ee8eb068fb..a42ce210dd48 100644 --- a/include/utils/Singleton.h +++ b/include/utils/Singleton.h @@ -20,12 +20,13 @@  #include <stdint.h>  #include <sys/types.h>  #include <utils/threads.h> +#include <cutils/compiler.h>  namespace android {  // ---------------------------------------------------------------------------  template <typename TYPE> -class Singleton +class ANDROID_API Singleton  {  public:      static TYPE& getInstance() { diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk index a98e4cd30235..9bfc94cb11fd 100644 --- a/libs/hwui/Android.mk +++ b/libs/hwui/Android.mk @@ -39,6 +39,7 @@ ifeq ($(USE_OPENGL_RENDERER),true)  		external/skia/include/utils  	LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER +	LOCAL_CFLAGS += -fvisibility=hidden  	LOCAL_MODULE_CLASS := SHARED_LIBRARIES  	LOCAL_SHARED_LIBRARIES := libcutils libutils libGLESv2 libskia libui  	LOCAL_MODULE := libhwui diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h index cdcbf2188532..9b0d7c6e6009 100644 --- a/libs/hwui/Caches.h +++ b/libs/hwui/Caches.h @@ -23,6 +23,8 @@  #include <utils/Singleton.h> +#include <cutils/compiler.h> +  #include "Extensions.h"  #include "FontRenderer.h"  #include "GammaFontRenderer.h" @@ -82,7 +84,7 @@ struct CacheLogger {  // Caches  /////////////////////////////////////////////////////////////////////////////// -class Caches: public Singleton<Caches> { +class ANDROID_API Caches: public Singleton<Caches> {      Caches();      ~Caches(); diff --git a/libs/hwui/DisplayListLogBuffer.h b/libs/hwui/DisplayListLogBuffer.h index bf16f297fb9b..5d689bb82363 100644 --- a/libs/hwui/DisplayListLogBuffer.h +++ b/libs/hwui/DisplayListLogBuffer.h @@ -18,6 +18,7 @@  #define ANDROID_HWUI_DISPLAY_LIST_LOG_BUFFER_H  #include <utils/Singleton.h> +  #include <stdio.h>  namespace android { diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h index 8cd7fea07d01..ab475bf53beb 100644 --- a/libs/hwui/DisplayListRenderer.h +++ b/libs/hwui/DisplayListRenderer.h @@ -26,6 +26,8 @@  #include <SkTDArray.h>  #include <SkTSearch.h> +#include <cutils/compiler.h> +  #include "DisplayListLogBuffer.h"  #include "OpenGLRenderer.h"  #include "utils/Functor.h" @@ -58,7 +60,7 @@ class DisplayListRenderer;  class DisplayList {  public:      DisplayList(const DisplayListRenderer& recorder); -    ~DisplayList(); +    ANDROID_API ~DisplayList();      // IMPORTANT: Update the intialization of OP_NAMES in the .cpp file      //            when modifying this file @@ -107,13 +109,13 @@ public:      void initFromDisplayListRenderer(const DisplayListRenderer& recorder, bool reusing = false); -    size_t getSize(); +    ANDROID_API size_t getSize();      bool replay(OpenGLRenderer& renderer, Rect& dirty, uint32_t level = 0);      void output(OpenGLRenderer& renderer, uint32_t level = 0); -    static void outputLogBuffer(int fd); +    ANDROID_API static void outputLogBuffer(int fd);      void setRenderable(bool renderable) {          mIsRenderable = renderable; @@ -230,75 +232,76 @@ private:   */  class DisplayListRenderer: public OpenGLRenderer {  public: -    DisplayListRenderer(); -    ~DisplayListRenderer(); +    ANDROID_API DisplayListRenderer(); +    virtual ~DisplayListRenderer(); -    DisplayList* getDisplayList(DisplayList* displayList); +    ANDROID_API DisplayList* getDisplayList(DisplayList* displayList); -    void setViewport(int width, int height); -    void prepareDirty(float left, float top, float right, float bottom, bool opaque); -    void finish(); +    virtual void setViewport(int width, int height); +    virtual void prepareDirty(float left, float top, float right, float bottom, bool opaque); +    virtual void finish(); -    bool callDrawGLFunction(Functor *functor, Rect& dirty); +    virtual bool callDrawGLFunction(Functor *functor, Rect& dirty); -    void interrupt(); -    void resume(); +    virtual void interrupt(); +    virtual void resume(); -    int save(int flags); -    void restore(); -    void restoreToCount(int saveCount); +    virtual int save(int flags); +    virtual void restore(); +    virtual void restoreToCount(int saveCount); -    int saveLayer(float left, float top, float right, float bottom, +    virtual int saveLayer(float left, float top, float right, float bottom,              SkPaint* p, int flags); -    int saveLayerAlpha(float left, float top, float right, float bottom, +    virtual int saveLayerAlpha(float left, float top, float right, float bottom,                  int alpha, int flags); -    void translate(float dx, float dy); -    void rotate(float degrees); -    void scale(float sx, float sy); -    void skew(float sx, float sy); +    virtual void translate(float dx, float dy); +    virtual void rotate(float degrees); +    virtual void scale(float sx, float sy); +    virtual void skew(float sx, float sy); -    void setMatrix(SkMatrix* matrix); -    void concatMatrix(SkMatrix* matrix); +    virtual void setMatrix(SkMatrix* matrix); +    virtual void concatMatrix(SkMatrix* matrix); -    bool clipRect(float left, float top, float right, float bottom, SkRegion::Op op); +    virtual bool clipRect(float left, float top, float right, float bottom, SkRegion::Op op); -    bool drawDisplayList(DisplayList* displayList, uint32_t width, uint32_t height, +    virtual bool drawDisplayList(DisplayList* displayList, uint32_t width, uint32_t height,              Rect& dirty, uint32_t level = 0); -    void drawLayer(Layer* layer, float x, float y, SkPaint* paint); -    void drawBitmap(SkBitmap* bitmap, float left, float top, SkPaint* paint); -    void drawBitmap(SkBitmap* bitmap, SkMatrix* matrix, SkPaint* paint); -    void drawBitmap(SkBitmap* bitmap, float srcLeft, float srcTop, +    virtual void drawLayer(Layer* layer, float x, float y, SkPaint* paint); +    virtual void drawBitmap(SkBitmap* bitmap, float left, float top, SkPaint* paint); +    virtual void drawBitmap(SkBitmap* bitmap, SkMatrix* matrix, SkPaint* paint); +    virtual void drawBitmap(SkBitmap* bitmap, float srcLeft, float srcTop,              float srcRight, float srcBottom, float dstLeft, float dstTop,              float dstRight, float dstBottom, SkPaint* paint); -    void drawBitmapMesh(SkBitmap* bitmap, int meshWidth, int meshHeight, +    virtual void drawBitmapMesh(SkBitmap* bitmap, int meshWidth, int meshHeight,              float* vertices, int* colors, SkPaint* paint); -    void drawPatch(SkBitmap* bitmap, const int32_t* xDivs, const int32_t* yDivs, +    virtual void drawPatch(SkBitmap* bitmap, const int32_t* xDivs, const int32_t* yDivs,              const uint32_t* colors, uint32_t width, uint32_t height, int8_t numColors,              float left, float top, float right, float bottom, SkPaint* paint); -    void drawColor(int color, SkXfermode::Mode mode); -    void drawRect(float left, float top, float right, float bottom, SkPaint* paint); -    void drawRoundRect(float left, float top, float right, float bottom, +    virtual void drawColor(int color, SkXfermode::Mode mode); +    virtual void drawRect(float left, float top, float right, float bottom, SkPaint* paint); +    virtual void drawRoundRect(float left, float top, float right, float bottom,              float rx, float ry, SkPaint* paint); -    void drawCircle(float x, float y, float radius, SkPaint* paint); -    void drawOval(float left, float top, float right, float bottom, SkPaint* paint); -    void drawArc(float left, float top, float right, float bottom, +    virtual void drawCircle(float x, float y, float radius, SkPaint* paint); +    virtual void drawOval(float left, float top, float right, float bottom, SkPaint* paint); +    virtual void drawArc(float left, float top, float right, float bottom,              float startAngle, float sweepAngle, bool useCenter, SkPaint* paint); -    void drawPath(SkPath* path, SkPaint* paint); -    void drawLines(float* points, int count, SkPaint* paint); -    void drawPoints(float* points, int count, SkPaint* paint); -    void drawText(const char* text, int bytesCount, int count, float x, float y, SkPaint* paint); +    virtual void drawPath(SkPath* path, SkPaint* paint); +    virtual void drawLines(float* points, int count, SkPaint* paint); +    virtual void drawPoints(float* points, int count, SkPaint* paint); +    virtual void drawText(const char* text, int bytesCount, int count, float x, float y, +            SkPaint* paint); -    void resetShader(); -    void setupShader(SkiaShader* shader); +    virtual void resetShader(); +    virtual void setupShader(SkiaShader* shader); -    void resetColorFilter(); -    void setupColorFilter(SkiaColorFilter* filter); +    virtual void resetColorFilter(); +    virtual void setupColorFilter(SkiaColorFilter* filter); -    void resetShadow(); -    void setupShadow(float radius, float dx, float dy, int color); +    virtual void resetShadow(); +    virtual void setupShadow(float radius, float dx, float dy, int color); -    void reset(); +    ANDROID_API void reset();      const SkWriter32& writeStream() const {          return mWriter; diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp index 079950852150..dfcc5ea4cf0f 100644 --- a/libs/hwui/LayerRenderer.cpp +++ b/libs/hwui/LayerRenderer.cpp @@ -31,6 +31,12 @@ namespace uirenderer {  // Rendering  /////////////////////////////////////////////////////////////////////////////// +LayerRenderer::LayerRenderer(Layer* layer): mLayer(layer) { +} + +LayerRenderer::~LayerRenderer() { +} +  void LayerRenderer::prepareDirty(float left, float top, float right, float bottom, bool opaque) {      LAYER_RENDERER_LOGD("Rendering into layer, fbo = %d", mLayer->getFbo()); diff --git a/libs/hwui/LayerRenderer.h b/libs/hwui/LayerRenderer.h index 224657397dd1..61043015f768 100644 --- a/libs/hwui/LayerRenderer.h +++ b/libs/hwui/LayerRenderer.h @@ -17,6 +17,8 @@  #ifndef ANDROID_HWUI_LAYER_RENDERER_H  #define ANDROID_HWUI_LAYER_RENDERER_H +#include <cutils/compiler.h> +  #include "OpenGLRenderer.h"  #include "Layer.h" @@ -42,27 +44,24 @@ namespace uirenderer {  class LayerRenderer: public OpenGLRenderer {  public: -    LayerRenderer(Layer* layer): mLayer(layer) { -    } - -    ~LayerRenderer() { -    } +    ANDROID_API LayerRenderer(Layer* layer); +    virtual ~LayerRenderer(); -    void prepareDirty(float left, float top, float right, float bottom, bool opaque); -    void finish(); +    virtual void prepareDirty(float left, float top, float right, float bottom, bool opaque); +    virtual void finish(); -    bool hasLayer(); -    Region* getRegion(); -    GLint getTargetFbo(); +    virtual bool hasLayer(); +    virtual Region* getRegion(); +    virtual GLint getTargetFbo(); -    static Layer* createTextureLayer(bool isOpaque); -    static Layer* createLayer(uint32_t width, uint32_t height, bool isOpaque = false); -    static bool resizeLayer(Layer* layer, uint32_t width, uint32_t height); -    static void updateTextureLayer(Layer* layer, uint32_t width, uint32_t height, +    ANDROID_API static Layer* createTextureLayer(bool isOpaque); +    ANDROID_API static Layer* createLayer(uint32_t width, uint32_t height, bool isOpaque = false); +    ANDROID_API static bool resizeLayer(Layer* layer, uint32_t width, uint32_t height); +    ANDROID_API static void updateTextureLayer(Layer* layer, uint32_t width, uint32_t height,              bool isOpaque, GLenum renderTarget, float* transform); -    static void destroyLayer(Layer* layer); -    static void destroyLayerDeferred(Layer* layer); -    static bool copyLayer(Layer* layer, SkBitmap* bitmap); +    ANDROID_API static void destroyLayer(Layer* layer); +    ANDROID_API static void destroyLayerDeferred(Layer* layer); +    ANDROID_API static bool copyLayer(Layer* layer, SkBitmap* bitmap);  private:      void generateMesh(); diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h index 14b22b39cfdb..2fc88e1d9674 100644 --- a/libs/hwui/OpenGLRenderer.h +++ b/libs/hwui/OpenGLRenderer.h @@ -31,6 +31,8 @@  #include <utils/RefBase.h>  #include <utils/Vector.h> +#include <cutils/compiler.h> +  #include "Debug.h"  #include "Extensions.h"  #include "Matrix.h" @@ -57,12 +59,12 @@ class DisplayList;   */  class OpenGLRenderer {  public: -    OpenGLRenderer(); +    ANDROID_API OpenGLRenderer();      virtual ~OpenGLRenderer();      virtual void setViewport(int width, int height); -    void prepare(bool opaque); +    ANDROID_API void prepare(bool opaque);      virtual void prepareDirty(float left, float top, float right, float bottom, bool opaque);      virtual void finish(); @@ -72,7 +74,7 @@ public:      virtual bool callDrawGLFunction(Functor *functor, Rect& dirty); -    int getSaveCount() const; +    ANDROID_API int getSaveCount() const;      virtual int save(int flags);      virtual void restore();      virtual void restoreToCount(int saveCount); @@ -87,12 +89,12 @@ public:      virtual void scale(float sx, float sy);      virtual void skew(float sx, float sy); -    void getMatrix(SkMatrix* matrix); +    ANDROID_API void getMatrix(SkMatrix* matrix);      virtual void setMatrix(SkMatrix* matrix);      virtual void concatMatrix(SkMatrix* matrix); -    const Rect& getClipBounds(); -    bool quickReject(float left, float top, float right, float bottom); +    ANDROID_API const Rect& getClipBounds(); +    ANDROID_API bool quickReject(float left, float top, float right, float bottom);      virtual bool clipRect(float left, float top, float right, float bottom, SkRegion::Op op);      virtual bool drawDisplayList(DisplayList* displayList, uint32_t width, uint32_t height, diff --git a/libs/hwui/ResourceCache.h b/libs/hwui/ResourceCache.h index 2a38910951c4..8cf466baa4e8 100644 --- a/libs/hwui/ResourceCache.h +++ b/libs/hwui/ResourceCache.h @@ -17,6 +17,8 @@  #ifndef ANDROID_HWUI_RESOURCE_CACHE_H  #define ANDROID_HWUI_RESOURCE_CACHE_H +#include <cutils/compiler.h> +  #include <SkBitmap.h>  #include <SkiaColorFilter.h>  #include <SkiaShader.h> @@ -49,7 +51,7 @@ public:      ResourceType resourceType;  }; -class ResourceCache { +class ANDROID_API ResourceCache {      KeyedVector<void *, ResourceReference *>* mCache;  public:      ResourceCache(); diff --git a/libs/hwui/SkiaColorFilter.h b/libs/hwui/SkiaColorFilter.h index 1bf475c2268e..2feb834e540c 100644 --- a/libs/hwui/SkiaColorFilter.h +++ b/libs/hwui/SkiaColorFilter.h @@ -20,6 +20,8 @@  #include <GLES2/gl2.h>  #include <SkColorFilter.h> +#include <cutils/compiler.h> +  #include "ProgramCache.h"  #include "Extensions.h" @@ -45,7 +47,7 @@ struct SkiaColorFilter {          kBlend,      }; -    SkiaColorFilter(SkColorFilter *skFilter, Type type, bool blend); +    ANDROID_API SkiaColorFilter(SkColorFilter *skFilter, Type type, bool blend);      virtual ~SkiaColorFilter();      virtual void describe(ProgramDescription& description, const Extensions& extensions) = 0; @@ -79,7 +81,7 @@ private:   * A color filter that multiplies the source color with a matrix and adds a vector.   */  struct SkiaColorMatrixFilter: public SkiaColorFilter { -    SkiaColorMatrixFilter(SkColorFilter *skFilter, float* matrix, float* vector); +    ANDROID_API SkiaColorMatrixFilter(SkColorFilter *skFilter, float* matrix, float* vector);      ~SkiaColorMatrixFilter();      void describe(ProgramDescription& description, const Extensions& extensions); @@ -95,7 +97,7 @@ private:   * another fixed value. Ignores the alpha channel of both arguments.   */  struct SkiaLightingFilter: public SkiaColorFilter { -    SkiaLightingFilter(SkColorFilter *skFilter, int multiply, int add); +    ANDROID_API SkiaLightingFilter(SkColorFilter *skFilter, int multiply, int add);      void describe(ProgramDescription& description, const Extensions& extensions);      void setupProgram(Program* program); @@ -110,7 +112,7 @@ private:   * and PorterDuff blending mode.   */  struct SkiaBlendFilter: public SkiaColorFilter { -    SkiaBlendFilter(SkColorFilter *skFilter, int color, SkXfermode::Mode mode); +    ANDROID_API SkiaBlendFilter(SkColorFilter *skFilter, int color, SkXfermode::Mode mode);      void describe(ProgramDescription& description, const Extensions& extensions);      void setupProgram(Program* program); diff --git a/libs/hwui/SkiaShader.h b/libs/hwui/SkiaShader.h index 89dd131f8ab2..2de9a93bd136 100644 --- a/libs/hwui/SkiaShader.h +++ b/libs/hwui/SkiaShader.h @@ -22,6 +22,8 @@  #include <GLES2/gl2.h> +#include <cutils/compiler.h> +  #include "Extensions.h"  #include "ProgramCache.h"  #include "TextureCache.h" @@ -52,8 +54,8 @@ struct SkiaShader {          kCompose      }; -    SkiaShader(Type type, SkShader* key, SkShader::TileMode tileX, SkShader::TileMode tileY, -            SkMatrix* matrix, bool blend); +    ANDROID_API SkiaShader(Type type, SkShader* key, SkShader::TileMode tileX, +            SkShader::TileMode tileY, SkMatrix* matrix, bool blend);      virtual ~SkiaShader();      virtual SkiaShader* copy() = 0; @@ -139,7 +141,7 @@ private:   * A shader that draws a bitmap.   */  struct SkiaBitmapShader: public SkiaShader { -    SkiaBitmapShader(SkBitmap* bitmap, SkShader* key, SkShader::TileMode tileX, +    ANDROID_API SkiaBitmapShader(SkBitmap* bitmap, SkShader* key, SkShader::TileMode tileX,              SkShader::TileMode tileY, SkMatrix* matrix, bool blend);      SkiaShader* copy(); @@ -169,8 +171,8 @@ private:   * A shader that draws a linear gradient.   */  struct SkiaLinearGradientShader: public SkiaShader { -    SkiaLinearGradientShader(float* bounds, uint32_t* colors, float* positions, int count, -            SkShader* key, SkShader::TileMode tileMode, SkMatrix* matrix, bool blend); +    ANDROID_API SkiaLinearGradientShader(float* bounds, uint32_t* colors, float* positions, +            int count, SkShader* key, SkShader::TileMode tileMode, SkMatrix* matrix, bool blend);      ~SkiaLinearGradientShader();      SkiaShader* copy(); @@ -193,8 +195,8 @@ private:   * A shader that draws a sweep gradient.   */  struct SkiaSweepGradientShader: public SkiaShader { -    SkiaSweepGradientShader(float x, float y, uint32_t* colors, float* positions, int count, -            SkShader* key, SkMatrix* matrix, bool blend); +    ANDROID_API SkiaSweepGradientShader(float x, float y, uint32_t* colors, float* positions, +            int count, SkShader* key, SkMatrix* matrix, bool blend);      ~SkiaSweepGradientShader();      SkiaShader* copy(); @@ -218,8 +220,9 @@ protected:   * A shader that draws a circular gradient.   */  struct SkiaCircularGradientShader: public SkiaSweepGradientShader { -    SkiaCircularGradientShader(float x, float y, float radius, uint32_t* colors, float* positions, -            int count, SkShader* key,SkShader::TileMode tileMode, SkMatrix* matrix, bool blend); +    ANDROID_API SkiaCircularGradientShader(float x, float y, float radius, uint32_t* colors, +            float* positions, int count, SkShader* key,SkShader::TileMode tileMode, +            SkMatrix* matrix, bool blend);      SkiaShader* copy();      void describe(ProgramDescription& description, const Extensions& extensions); @@ -233,7 +236,8 @@ private:   * A shader that draws two shaders, composited with an xfermode.   */  struct SkiaComposeShader: public SkiaShader { -    SkiaComposeShader(SkiaShader* first, SkiaShader* second, SkXfermode::Mode mode, SkShader* key); +    ANDROID_API SkiaComposeShader(SkiaShader* first, SkiaShader* second, SkXfermode::Mode mode, +            SkShader* key);      ~SkiaComposeShader();      SkiaShader* copy();  |