hwc2: Fix HDR api issues
* HDR api may get call on same commit binder,
hence use only scope lock.
* Correct the gethdrcapability call
Change-Id: I39083a299a17f339c7ab40f7cebd619fd10d126a
CRs-Fixed: 2373221
diff --git a/sdm/libs/hwc2/hwc_session_services.cpp b/sdm/libs/hwc2/hwc_session_services.cpp
index 0469e62..940a55c 100644
--- a/sdm/libs/hwc2/hwc_session_services.cpp
+++ b/sdm/libs/hwc2/hwc_session_services.cpp
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
+* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -426,7 +426,7 @@
break;
}
- SEQUENCE_WAIT_SCOPE_LOCK(locker_[disp_idx]);
+ SCOPE_LOCK(locker_[disp_id]);
HWCDisplay *hwc_display = hwc_display_[disp_idx];
if (!hwc_display) {
DLOGW("Display = %d is not connected.", disp_idx);
@@ -436,11 +436,14 @@
// query number of hdr types
uint32_t out_num_types = 0;
- if (hwc_display->GetHdrCapabilities(&out_num_types, nullptr, nullptr, nullptr, nullptr)
- != HWC2::Error::None) {
+ float out_max_luminance = 0.0f;
+ float out_max_average_luminance = 0.0f;
+ float out_min_luminance = 0.0f;
+ if (hwc_display->GetHdrCapabilities(&out_num_types, nullptr, &out_max_luminance,
+ &out_max_average_luminance, &out_min_luminance)
+ != HWC2::Error::None) {
break;
}
-
if (!out_num_types) {
error = 0;
break;
@@ -449,9 +452,6 @@
// query hdr caps
hdr_caps.supportedHdrTypes.resize(out_num_types);
- float out_max_luminance = 0.0f;
- float out_max_average_luminance = 0.0f;
- float out_min_luminance = 0.0f;
if (hwc_display->GetHdrCapabilities(&out_num_types, hdr_caps.supportedHdrTypes.data(),
&out_max_luminance, &out_max_average_luminance,
&out_min_luminance) == HWC2::Error::None) {
@@ -693,7 +693,7 @@
}
Return<bool> HWCSession::isHDRSupported(uint32_t disp_id) {
- SEQUENCE_WAIT_SCOPE_LOCK(locker_[disp_id]);
+ SCOPE_LOCK(locker_[disp_id]);
HWCDisplay *hwc_display = hwc_display_[disp_id];
if (!hwc_display) {
DLOGW("Display = %d is not connected.", disp_id);
@@ -702,8 +702,12 @@
// query number of hdr types
uint32_t out_num_types = 0;
- if (hwc_display->GetHdrCapabilities(&out_num_types, nullptr, nullptr, nullptr, nullptr)
- != HWC2::Error::None) {
+ float out_max_luminance = 0.0f;
+ float out_max_average_luminance = 0.0f;
+ float out_min_luminance = 0.0f;
+ if (hwc_display->GetHdrCapabilities(&out_num_types, nullptr, &out_max_luminance,
+ &out_max_average_luminance, &out_min_luminance)
+ != HWC2::Error::None) {
return false;
}