diff options
Diffstat (limited to 'frameworks/native/native.git-1.patch')
-rw-r--r-- | frameworks/native/native.git-1.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/frameworks/native/native.git-1.patch b/frameworks/native/native.git-1.patch new file mode 100644 index 0000000..a446b36 --- /dev/null +++ b/frameworks/native/native.git-1.patch @@ -0,0 +1,49 @@ +From 1ff66dc28169874ef32f968da6e8ddd14ef28eba Mon Sep 17 00:00:00 2001 +From: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> +Date: Thu, 25 Jul 2013 13:27:18 +0530 +Subject: [PATCH] surfaceflinger: Don't crash on missing functions in + hwcomposers + +Some hwcomposers -- most notably hwcomposer.default.so -- don't +implement blank() or eventControl(). +Don't crash when trying to use them. + +Signed-off-by: Amit Pundir <amit.pundir@linaro.org> +--- + .../surfaceflinger/DisplayHardware/HWComposer.cpp | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp +index c7d1a90..7f9fb2f 100644 +--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp ++++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp +@@ -493,7 +493,7 @@ void HWComposer::eventControl(int disp, int event, int enabled) { + const int32_t oldValue = mDisplayData[disp].events & eventBit; + if (newValue != oldValue) { + ATRACE_CALL(); +- err = mHwc->eventControl(mHwc, disp, event, enabled); ++ err = mHwc->eventControl ? mHwc->eventControl(mHwc, disp, event, enabled) : NO_ERROR; + if (!err) { + int32_t& events(mDisplayData[disp].events); + events = (events & ~eventBit) | newValue; +@@ -731,14 +731,15 @@ status_t HWComposer::release(int disp) { + LOG_FATAL_IF(disp >= VIRTUAL_DISPLAY_ID_BASE); + if (mHwc) { + eventControl(disp, HWC_EVENT_VSYNC, 0); +- return (status_t)mHwc->blank(mHwc, disp, 1); ++ if (mHwc->blank) ++ 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) { ++ if (mHwc && mHwc->blank) { + return (status_t)mHwc->blank(mHwc, disp, 0); + } + return NO_ERROR; +-- +1.7.9.5 + |