overlay: Remove usage of scale header
Remove usage of scale header and do not create or destroy objects.
the programScale() function exported out of libscale.so will
internally manage objects.
This frees up overlay from relying on scale.h which may not be
exported by libscale.so to a known location if only binaries are
shipped.
Change-Id: If6970541e2eb0ee2bdb907c73ed3534fc22e9dd1
diff --git a/liboverlay/Android.mk b/liboverlay/Android.mk
index d8c2ab5..277b44c 100644
--- a/liboverlay/Android.mk
+++ b/liboverlay/Android.mk
@@ -9,9 +9,6 @@
LOCAL_SHARED_LIBRARIES := $(common_libs) libqdutils libmemalloc \
libsync libdl
LOCAL_CFLAGS := $(common_flags) -DLOG_TAG=\"qdoverlay\"
-ifeq ($(TARGET_USES_QSEED_SCALAR),true)
- LOCAL_CFLAGS += -DUSES_QSEED_SCALAR
-endif
LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps)
LOCAL_SRC_FILES := \
overlay.cpp \
diff --git a/liboverlay/overlay.cpp b/liboverlay/overlay.cpp
index d53b46d..defb9dc 100644
--- a/liboverlay/overlay.cpp
+++ b/liboverlay/overlay.cpp
@@ -33,11 +33,6 @@
#include "mdp_version.h"
#include "qdMetaData.h"
-#ifdef USES_QSEED_SCALAR
-#include <scale/scale.h>
-using namespace scale;
-#endif
-
#define PIPE_DEBUG 0
namespace overlay {
@@ -545,39 +540,20 @@
}
void Overlay::initScalar() {
-#ifdef USES_QSEED_SCALAR
if(sLibScaleHandle == NULL) {
sLibScaleHandle = dlopen("libscale.so", RTLD_NOW);
- }
-
- if(sLibScaleHandle) {
- if(sScale == NULL) {
- Scale* (*getInstance)();
- *(void **) &getInstance = dlsym(sLibScaleHandle, "getInstance");
- if(getInstance) {
- sScale = getInstance();
- }
+ if(sLibScaleHandle) {
+ *(void **) &sFnProgramScale =
+ dlsym(sLibScaleHandle, "programScale");
}
}
-#endif
}
void Overlay::destroyScalar() {
-#ifdef USES_QSEED_SCALAR
if(sLibScaleHandle) {
- if(sScale) {
- void (*destroyInstance)(Scale*);
- *(void **) &destroyInstance = dlsym(sLibScaleHandle,
- "destroyInstance");
- if(destroyInstance) {
- destroyInstance(sScale);
- sScale = NULL;
- }
- }
dlclose(sLibScaleHandle);
sLibScaleHandle = NULL;
}
-#endif
}
void Overlay::PipeBook::init() {
@@ -607,6 +583,6 @@
utils::eMdpPipeType Overlay::PipeBook::pipeTypeLUT[utils::OV_MAX] =
{utils::OV_MDP_PIPE_ANY};
void *Overlay::sLibScaleHandle = NULL;
-scale::Scale *Overlay::sScale = NULL;
+int (*Overlay::sFnProgramScale)(struct mdp_overlay_list *) = NULL;
}; // namespace overlay
diff --git a/liboverlay/overlay.h b/liboverlay/overlay.h
index 455f547..94dcfed 100644
--- a/liboverlay/overlay.h
+++ b/liboverlay/overlay.h
@@ -35,9 +35,6 @@
#include "utils/threads.h"
struct MetaData_t;
-namespace scale {
-class Scale;
-};
namespace overlay {
class GenericPipe;
@@ -171,8 +168,8 @@
utils::eDest getPipe_8x26(const PipeSpecs& pipeSpecs);
utils::eDest getPipe_8x16(const PipeSpecs& pipeSpecs);
- /* Returns the scalar object */
- static scale::Scale *getScalar();
+ /* Returns the handle to libscale.so's programScale function */
+ static int (*getFnProgramScale())(struct mdp_overlay_list *);
/* Creates a scalar object using libscale.so */
static void initScalar();
/* Destroys the scalar object using libscale.so */
@@ -243,7 +240,7 @@
static int sDMAMode;
static bool sDMAMultiplexingSupported;
static void *sLibScaleHandle;
- static scale::Scale *sScale;
+ static int (*sFnProgramScale)(struct mdp_overlay_list *);
friend class MdpCtrl;
};
@@ -332,8 +329,8 @@
return sDpyFbMap[dpy];
}
-inline scale::Scale *Overlay::getScalar() {
- return sScale;
+inline int (*Overlay::getFnProgramScale())(struct mdp_overlay_list *) {
+ return sFnProgramScale;
}
inline bool Overlay::PipeBook::valid() {
diff --git a/liboverlay/overlayMdp.cpp b/liboverlay/overlayMdp.cpp
index 3af9eaa..c4427ae 100644
--- a/liboverlay/overlayMdp.cpp
+++ b/liboverlay/overlayMdp.cpp
@@ -22,11 +22,6 @@
#include "mdp_version.h"
#include <overlay.h>
-#ifdef USES_QSEED_SCALAR
-#include <scale/scale.h>
-using namespace scale;
-#endif
-
#define HSIC_SETTINGS_DEBUG 0
using namespace qdutils;
@@ -371,12 +366,11 @@
list.num_overlays = count;
list.overlay_list = ovArray;
-#ifdef USES_QSEED_SCALAR
- Scale *scalar = Overlay::getScalar();
- if(scalar) {
- scalar->applyScale(&list);
+ int (*fnProgramScale)(struct mdp_overlay_list *) =
+ Overlay::getFnProgramScale();
+ if(fnProgramScale) {
+ fnProgramScale(&list);
}
-#endif
if(!mdp_wrapper::validateAndSet(fbFd, list)) {
/* No dump for failure due to insufficient resource */