hdmi_cec: deal with the framework side went away.
Register a death recipient to remove the callback if
the framework side died.
BUG: 67913697
Test: VTS
Change-Id: I51ce5c85c9ec5d1bc90cac72f314647e1075d657
diff --git a/tv/cec/1.0/default/HdmiCec.h b/tv/cec/1.0/default/HdmiCec.h
index 34a3bb0..0133abc 100644
--- a/tv/cec/1.0/default/HdmiCec.h
+++ b/tv/cec/1.0/default/HdmiCec.h
@@ -47,7 +47,7 @@
using ::android::hardware::hidl_string;
using ::android::sp;
-struct HdmiCec : public IHdmiCec {
+struct HdmiCec : public IHdmiCec, public hidl_death_recipient {
HdmiCec(hdmi_cec_device_t* device);
// Methods from ::android::hardware::tv::cec::V1_0::IHdmiCec follow.
Return<Result> addLogicalAddress(CecLogicalAddress addr) override;
@@ -87,7 +87,12 @@
}
}
-private:
+ virtual void serviceDied(uint64_t /*cookie*/,
+ const wp<::android::hidl::base::V1_0::IBase>& /*who*/) {
+ setCallback(nullptr);
+ }
+
+ private:
static sp<IHdmiCecCallback> mCallback;
const hdmi_cec_device_t* mDevice;
};