diff options
Diffstat (limited to 'composer/hwc_session.cpp')
-rw-r--r-- | composer/hwc_session.cpp | 26 |
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()); |