am ba5aebd1: am ac505b86: am f0556bb9: am 86d1d747: Merge "Add lock before calling initEglImage"

* commit 'ba5aebd106c61567ad6be905efd18902025735aa':
  Add lock before calling initEglImage
This commit is contained in:
Conley Owens 2011-04-27 13:54:08 -07:00 committed by Android Git Automerger
commit 345c6114da

View File

@ -986,8 +986,16 @@ status_t Layer::BufferManager::initEglImage(EGLDisplay dpy,
ssize_t index = mActiveBufferIndex; ssize_t index = mActiveBufferIndex;
if (index >= 0) { if (index >= 0) {
if (!mFailover) { if (!mFailover) {
Image& texture(mBufferData[index].texture); {
err = mTextureManager.initEglImage(&texture, dpy, buffer); // Without that lock, there is a chance of race condition
// where while composing a specific index, requestBuf
// with the same index can be executed and touch the same data
// that is being used in initEglImage.
// (e.g. dirty flag in texture)
Mutex::Autolock _l(mLock);
Image& texture(mBufferData[index].texture);
err = mTextureManager.initEglImage(&texture, dpy, buffer);
}
// if EGLImage fails, we switch to regular texture mode, and we // if EGLImage fails, we switch to regular texture mode, and we
// free all resources associated with using EGLImages. // free all resources associated with using EGLImages.
if (err == NO_ERROR) { if (err == NO_ERROR) {