summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger/LayerBlur.h
diff options
context:
space:
mode:
Diffstat (limited to 'services/surfaceflinger/LayerBlur.h')
-rw-r--r--services/surfaceflinger/LayerBlur.h39
1 files changed, 32 insertions, 7 deletions
diff --git a/services/surfaceflinger/LayerBlur.h b/services/surfaceflinger/LayerBlur.h
index 251423e..bd37ad3 100644
--- a/services/surfaceflinger/LayerBlur.h
+++ b/services/surfaceflinger/LayerBlur.h
@@ -20,15 +20,12 @@
#ifndef ANDROID_LAYER_BLUR_H
#define ANDROID_LAYER_BLUR_H
+#include <stdlib.h>
#include <stdint.h>
#include <sys/types.h>
#include "Layer.h"
-#ifdef UI_BLUR
-#include "Blur.h" // libuiblur.so
-#endif
-
// ---------------------------------------------------------------------------
namespace android {
@@ -58,9 +55,37 @@ public:
virtual bool setBlurMaskAlphaThreshold(float alpha) { mBlurMaskAlphaThreshold = alpha; return true; }
private:
-#ifdef UI_BLUR
- qtiblur::BLUR_TOKEN mBlurToken;
-#endif
+ class BlurImpl {
+ public:
+
+ BlurImpl();
+ ~BlurImpl();
+
+ status_t blur(int level, uint32_t inId, size_t inWidth, size_t inheight,
+ uint32_t outId, size_t* outWidth, size_t* outHeight);
+
+ protected:
+ static status_t initBlurImpl();
+ static void closeBlurImpl();
+ static void* sLibHandle;
+ static bool sUnsupported;
+
+ typedef void* (*initBlurTokenFn)();
+ typedef void* (*releaseBlurTokenFn)(void*);
+ typedef void* (*blurFn)(void*, int, uint32_t, size_t, size_t, uint32_t, size_t*, size_t*);
+
+ static initBlurTokenFn initBlurToken;
+ static releaseBlurTokenFn releaseBlurToken;
+ static blurFn doBlur;
+
+ static Mutex sLock;
+
+ private:
+ void* mToken;
+ };
+
+ BlurImpl mBlurImpl;
+
wp<Layer> mBlurMaskLayer;
int32_t mBlurMaskSampling;
float mBlurMaskAlphaThreshold;