summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandy Xu <randy.xu@intel.com>2017-07-05 14:18:38 +0800
committerGaurav Sarode <sgaurav@google.com>2017-10-03 15:48:52 -0700
commit35b5114be8da71c69fc8a1ff8fb457c912c0992f (patch)
tree020714c820767689d6e22f8609469c8c9a5cea8a
parent8c6462c8c48022a4a77ab8ed218551880d2bbab9 (diff)
downloadnative-35b5114be8da71c69fc8a1ff8fb457c912c0992f.tar.gz
Solve the composer service NULL pointer crash
The callback functions are set nullptr in ComposerClient::~ComposerClient() ./composer/2.1/default/ComposerClient.cpp:160: mHal.enableCallback(false) However, the callbacks are still used in hwc2on1adaptor, it will cause segment fault. Bug: 64650599 Test: adb shell stop Change-Id: I92e6a6b42418e987a7ead041f2d95c194b6a16e8 Signed-off-by: Randy Xu <randy.xu@intel.com> Signed-off-by: Qiming Shi <qiming.shi@intel.com> Signed-off-by: Yong Yao <yong.yao@intel.com> Signed-off-by: Gaurav Sarode <sgaurav@google.com>
-rw-r--r--libs/hwc2on1adapter/HWC2On1Adapter.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/libs/hwc2on1adapter/HWC2On1Adapter.cpp b/libs/hwc2on1adapter/HWC2On1Adapter.cpp
index e1b9a8a6f1..77f06bbbe7 100644
--- a/libs/hwc2on1adapter/HWC2On1Adapter.cpp
+++ b/libs/hwc2on1adapter/HWC2On1Adapter.cpp
@@ -426,7 +426,13 @@ Error HWC2On1Adapter::registerCallback(Callback descriptor,
std::unique_lock<std::recursive_timed_mutex> lock(mStateMutex);
- mCallbacks[descriptor] = {callbackData, pointer};
+ if (pointer != nullptr) {
+ mCallbacks[descriptor] = {callbackData, pointer};
+ } else {
+ ALOGI("unregisterCallback(%s)", to_string(descriptor).c_str());
+ mCallbacks.erase(descriptor);
+ return Error::None;
+ }
bool hasPendingInvalidate = false;
std::vector<hwc2_display_t> displayIds;