summaryrefslogtreecommitdiff
path: root/composer/hwc_session.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'composer/hwc_session.cpp')
-rw-r--r--composer/hwc_session.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/composer/hwc_session.cpp b/composer/hwc_session.cpp
index 4e668cd0..51d25f28 100644
--- a/composer/hwc_session.cpp
+++ b/composer/hwc_session.cpp
@@ -1719,6 +1719,14 @@ android::status_t HWCSession::notifyCallback(uint32_t command, const android::Pa
status = SetStandByMode(input_parcel);
break;
+ case qService::IQService::GET_PANEL_RESOLUTION:
+ if (!input_parcel || !output_parcel) {
+ DLOGE("QService command = %d: input_parcel and output_parcel needed.", command);
+ break;
+ }
+ status = GetPanelResolution(input_parcel, output_parcel);
+ break;
+
default:
DLOGW("QService command = %d is not supported.", command);
break;
@@ -2496,6 +2504,24 @@ void HWCSession::Refresh(hwc2_display_t display) {
callbacks_.Refresh(display);
}
+android::status_t HWCSession::GetPanelResolution(const android::Parcel *input_parcel,
+ android::Parcel *output_parcel) {
+ SCOPE_LOCK(locker_[HWC_DISPLAY_PRIMARY]);
+
+ if (!hwc_display_[HWC_DISPLAY_PRIMARY]) {
+ DLOGI("Primary display is not initialized");
+ return -EINVAL;
+ }
+ auto panel_width = 0u;
+ auto panel_height = 0u;
+
+ hwc_display_[HWC_DISPLAY_PRIMARY]->GetPanelResolution(&panel_width, &panel_height);
+ output_parcel->writeInt32(INT32(panel_width));
+ output_parcel->writeInt32(INT32(panel_height));
+
+ return android::NO_ERROR;
+}
+
android::status_t HWCSession::GetVisibleDisplayRect(const android::Parcel *input_parcel,
android::Parcel *output_parcel) {
int disp_idx = GetDisplayIndex(input_parcel->readInt32());