libvideorender: CB2 fix buffer exception release [1/1]
PD#SWPL-181759
Problem:
Timing error causes buffer to be unusually reused
Solution:
add a mutex.
Verify:
ap222
Change-Id: Ice7478330cb08978b476436a1265eb36f326c259
Signed-off-by: fei.deng <fei.deng@amlogic.com>
diff --git a/weston/wayland_buffer.cpp b/weston/wayland_buffer.cpp
index 5691d5e..7e537b9 100644
--- a/weston/wayland_buffer.cpp
+++ b/weston/wayland_buffer.cpp
@@ -85,8 +85,8 @@
// if ( (waylandBuffer->mFrameWidth != fw || waylandBuffer->mFrameHeight != fh) &&
// waylandBuffer->mWaylandWlWrap) {
// TRACE(waylandBuffer->mLogCategory,"resolution changed,delete WaylandBuffer:%p,WaylandDmaBuffer:%p",waylandBuffer,waylandBuffer->mWaylandWlWrap);
- delete waylandBuffer->mWaylandWlWrap;
waylandBuffer->mLock.lock();
+ delete waylandBuffer->mWaylandWlWrap;
waylandBuffer->mWaylandWlWrap = NULL;
waylandBuffer->mLock.unlock();
// }
@@ -139,10 +139,13 @@
struct wl_buffer * wlbuffer = NULL;
WaylandDisplay::AmlConfigAPIList *amlConfigAPI = mDisplay->getAmlConfigAPIList();
+ mLock.lock();
mRenderBuffer = buf;
if (mWaylandWlWrap) {
+ mLock.unlock();
return NO_ERROR;
}
+ mLock.unlock();
if (buf->flag & BUFFER_FLAG_DMA_BUFFER) {
WaylandDmaBuffer *waylanddma = new WaylandDmaBuffer(mDisplay, mLogCategory);