hwc2: Destroy virtual display properly
Initialize the virtual display object to null after deleting it.
Bug: 29945684
Change-Id: I41bfd3bcf5f22d8ce6e2973b22a6d6f26f4d2088
diff --git a/msm8996/sdm/libs/hwc2/hwc_session.cpp b/msm8996/sdm/libs/hwc2/hwc_session.cpp
index 9344ed6..224b17e 100644
--- a/msm8996/sdm/libs/hwc2/hwc_session.cpp
+++ b/msm8996/sdm/libs/hwc2/hwc_session.cpp
@@ -234,9 +234,13 @@
HWCSession *hwc_session = static_cast<HWCSession *>(device);
auto status = hwc_session->CreateVirtualDisplayObject(width, height, format);
- if (status == HWC2::Error::None)
+ if (status == HWC2::Error::None) {
*out_display_id = HWC_DISPLAY_VIRTUAL;
- DLOGI("Created virtual display id:% " PRIu64 " with res: %dx%d", *out_display_id, width, height);
+ DLOGI("Created virtual display id:% " PRIu64 " with res: %dx%d",
+ *out_display_id, width, height);
+ } else {
+ DLOGE("Failed to create virtual display: %s", to_string(status).c_str());
+ }
return INT32(status);
}
@@ -257,6 +261,7 @@
if (hwc_session->hwc_display_[display]) {
HWCDisplayVirtual::Destroy(hwc_session->hwc_display_[display]);
+ hwc_session->hwc_display_[display] = nullptr;
return HWC2_ERROR_NONE;
} else {
return HWC2_ERROR_BAD_DISPLAY;