bool Hwcomposer::prepare(size_t numDisplays, hwc_display_contents_1_t** displays) { bool ret = true; //Mutex::Autolock _l(mLock); log.v("prepare display count %d\n", numDisplays); if (!initCheck()) return false; if (!numDisplays || !displays) { log.e("prepare: invalid parameters"); return false; } // disable reclaimed planes if (mPlaneManager) mPlaneManager->disableReclaimedPlanes(); // reclaim all allocated planes if possible for (size_t i = 0; i < numDisplays; i++) { IDisplayDevice *device = mDisplayDevices.itemAt(i); if (!device) { log.v("prepare: device %d doesn't exist", i); continue; } if (!device->isConnected()) { log.v("prepare: device %d is disconnected", i); continue; } device->prePrepare(displays[i]); } for (size_t i = 0; i < numDisplays; i++) { IDisplayDevice *device = mDisplayDevices.itemAt(i); if (!device) { log.v("prepare: device %d doesn't exist", i); continue; } if (!device->isConnected()) { log.v("prepare: device %d is disconnected", i); continue; } ret = device->prepare(displays[i]); if (ret == false) { log.e("prepare: failed to do prepare for device %d", i); continue; } } return ret; }
bool Hwcomposer::commit(size_t numDisplays, hwc_display_contents_1_t **displays) { bool ret = true; log.v("commit display count %d\n", numDisplays); //Mutex::Autolock _l(mLock); if (!initCheck()) return false; if (!numDisplays || !displays) { log.e("commit: invalid parameters"); return false; } void *hwContexts = getContexts(); int count = 0; if (!hwContexts) { log.e("Hwcomposer::commit: invalid hwContexts"); return false; } for (size_t i = 0; i < numDisplays; i++) { IDisplayDevice *device = mDisplayDevices.itemAt(i); if (!device) { log.v("commit: device %d doesn't exist", i); continue; } if (!device->isConnected()) { log.v("commit: device %d is disconnected", i); continue; } ret = device->commit(displays[i], hwContexts, count); if (ret == false) { log.e("commit: failed to do commit for device %d", i); continue; } } // commit hwContexts to hardware ret = commitContexts(hwContexts, count); if (ret == false) { log.e("Hwcomposer::commit: failed to commit hwContexts"); return false; } return ret; }