Reduce failure uncertainty
This adds a trivial workaround for a one-shot boot time crash, plus an explicit check and abort for a failure condition that currently presents as a less obvious failure. Bug: 7145521, 7147557 Change-Id: I548f6a9caa9f0bd5710aaecea0e1c6c7c8f2f281
This commit is contained in:
parent
b0d1dd36f1
commit
43601a2dc3
@ -111,6 +111,12 @@ HWComposer::HWComposer(
|
|||||||
loadFbHalModule();
|
loadFbHalModule();
|
||||||
loadHwcModule();
|
loadHwcModule();
|
||||||
|
|
||||||
|
if (!hwcHasApiVersion(mHwc, HWC_DEVICE_API_VERSION_1_1) && !mFbDev) {
|
||||||
|
ALOGE("ERROR: failed to open framebuffer, aborting");
|
||||||
|
// FB mandatory on <= 1.0, give up
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
if (mHwc) {
|
if (mHwc) {
|
||||||
ALOGI("Using %s version %u.%u", HWC_HARDWARE_COMPOSER,
|
ALOGI("Using %s version %u.%u", HWC_HARDWARE_COMPOSER,
|
||||||
(hwcApiVersion(mHwc) >> 24) & 0xff,
|
(hwcApiVersion(mHwc) >> 24) & 0xff,
|
||||||
|
@ -618,6 +618,13 @@ bool SurfaceFlinger::threadLoop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SurfaceFlinger::onVSyncReceived(int type, nsecs_t timestamp) {
|
void SurfaceFlinger::onVSyncReceived(int type, nsecs_t timestamp) {
|
||||||
|
if (mEventThread == NULL) {
|
||||||
|
// This is a temporary workaround for b/7145521. A non-null pointer
|
||||||
|
// does not mean EventThread has finished initializing, so this
|
||||||
|
// is not a correct fix.
|
||||||
|
ALOGW("WARNING: EventThread not started, ignoring vsync");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (uint32_t(type) < DisplayDevice::NUM_DISPLAY_TYPES) {
|
if (uint32_t(type) < DisplayDevice::NUM_DISPLAY_TYPES) {
|
||||||
// we should only receive DisplayDevice::DisplayType from the vsync callback
|
// we should only receive DisplayDevice::DisplayType from the vsync callback
|
||||||
const wp<IBinder>& token(mDefaultDisplays[type]);
|
const wp<IBinder>& token(mDefaultDisplays[type]);
|
||||||
|
Loading…
Reference in New Issue
Block a user