diff options
Diffstat (limited to 'services/surfaceflinger/DisplayHardware')
-rw-r--r-- | services/surfaceflinger/DisplayHardware/HWComposer.cpp | 17 | ||||
-rw-r--r-- | services/surfaceflinger/DisplayHardware/HWComposer.h | 3 |
2 files changed, 18 insertions, 2 deletions
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp index 7d1bdf0..0ff1cce 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp +++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp @@ -108,8 +108,21 @@ status_t HWComposer::commit() const { } status_t HWComposer::release() const { - int err = mHwc->set(mHwc, NULL, NULL, NULL); - return (status_t)err; + if (mHwc) { + int err = mHwc->set(mHwc, NULL, NULL, NULL); + return (status_t)err; + } + return NO_ERROR; +} + +status_t HWComposer::disable() { + if (mHwc) { + free(mList); + mList = NULL; + int err = mHwc->prepare(mHwc, NULL); + return (status_t)err; + } + return NO_ERROR; } size_t HWComposer::getNumLayers() const { diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h index 983898a..77c1a4b 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.h +++ b/services/surfaceflinger/DisplayHardware/HWComposer.h @@ -50,6 +50,9 @@ public: // Asks the HAL what it can do status_t prepare() const; + // disable hwc until next createWorkList + status_t disable(); + // commits the list status_t commit() const; |