CEC: Add implementation of setCallback method to default HdmiCec
Bug: 185434120
Test: manual
Change-Id: I280d142427ae49eca5abce01eded569efdaf8221
diff --git a/tv/cec/1.0/default/HdmiCecDefault.cpp b/tv/cec/1.0/default/HdmiCecDefault.cpp
index 2ec2d09..7dc0d24 100644
--- a/tv/cec/1.0/default/HdmiCecDefault.cpp
+++ b/tv/cec/1.0/default/HdmiCecDefault.cpp
@@ -35,10 +35,12 @@
int mCecFd;
int mExitFd;
+sp<IHdmiCecCallback> mCallback;
HdmiCecDefault::HdmiCecDefault() {
mCecFd = -1;
mExitFd = -1;
+ mCallback = nullptr;
}
HdmiCecDefault::~HdmiCecDefault() {
@@ -185,7 +187,16 @@
}
}
-Return<void> HdmiCecDefault::setCallback(const sp<IHdmiCecCallback>& /*callback*/) {
+Return<void> HdmiCecDefault::setCallback(const sp<IHdmiCecCallback>& callback) {
+ if (mCallback != nullptr) {
+ mCallback->unlinkToDeath(this);
+ mCallback = nullptr;
+ }
+
+ if (callback != nullptr) {
+ mCallback = callback;
+ mCallback->linkToDeath(this, 0 /*cookie*/);
+ }
return Void();
}