diff options
Diffstat (limited to 'services/surfaceflinger/DisplayHardware')
-rw-r--r-- | services/surfaceflinger/DisplayHardware/HWComposer.cpp | 21 | ||||
-rw-r--r-- | services/surfaceflinger/DisplayHardware/HWComposer.h | 7 |
2 files changed, 12 insertions, 16 deletions
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp index c3b2159..185dab2 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp +++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp @@ -759,19 +759,18 @@ status_t HWComposer::commit() { return (status_t)err; } -status_t HWComposer::release(int disp) { +status_t HWComposer::setPowerMode(int disp, int mode) { LOG_FATAL_IF(disp >= VIRTUAL_DISPLAY_ID_BASE); if (mHwc) { - eventControl(disp, HWC_EVENT_VSYNC, 0); - return (status_t)mHwc->blank(mHwc, disp, 1); - } - return NO_ERROR; -} - -status_t HWComposer::acquire(int disp) { - LOG_FATAL_IF(disp >= VIRTUAL_DISPLAY_ID_BASE); - if (mHwc) { - return (status_t)mHwc->blank(mHwc, disp, 0); + if (mode == HWC_POWER_MODE_OFF) { + eventControl(disp, HWC_EVENT_VSYNC, 0); + } + if (hwcHasApiVersion(mHwc, HWC_DEVICE_API_VERSION_1_4)) { + return (status_t)mHwc->setPowerMode(mHwc, disp, mode); + } else { + return (status_t)mHwc->blank(mHwc, disp, + mode == HWC_POWER_MODE_OFF ? 1 : 0); + } } return NO_ERROR; } diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h index 2f92672..c62b924 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.h +++ b/services/surfaceflinger/DisplayHardware/HWComposer.h @@ -97,11 +97,8 @@ public: // commits the list status_t commit(); - // release hardware resources and blank screen - status_t release(int disp); - - // acquire hardware resources and unblank screen - status_t acquire(int disp); + // set power mode + status_t setPowerMode(int disp, int mode); // reset state when an external, non-virtual display is disconnected void disconnectDisplay(int disp); |