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:
commit
345c6114da
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user