libvideorender: CB2 The screen flickers on weston [1/1]
PD#SWPL-179735
Problem:
The screen flickers during the last case test in the
mpbv3-encrypted-playback test set. a fd is release
Solution:
render lib plugin release zwp buffers
when weston release buffer
Verify:
ap222
Change-Id: Iedd5bc1aeb6ad973dafc3fc9b0f1873b10bff561
Signed-off-by: fei.deng <fei.deng@amlogic.com>
diff --git a/weston/wayland_buffer.cpp b/weston/wayland_buffer.cpp
index 60605a3..d16a233 100644
--- a/weston/wayland_buffer.cpp
+++ b/weston/wayland_buffer.cpp
@@ -70,7 +70,7 @@
void WaylandBuffer::bufferRelease (void *data, struct wl_buffer *wl_buffer)
{
WaylandBuffer* waylandBuffer = static_cast<WaylandBuffer*>(data);
- //TRACE(waylandBuffer->mLogCategory,"--wl_buffer:%p,renderBuffer:%p",wl_buffer,waylandBuffer->mRenderBuffer);
+ TRACE(waylandBuffer->mLogCategory,"--wl_buffer:%p,renderBuffer:%p",wl_buffer,waylandBuffer->mRenderBuffer);
waylandBuffer->mUsedByCompositor = false;
//sometimes this callback be called twice
//this cause double free,so check mRenderBuffer
@@ -80,16 +80,16 @@
waylandBuffer->mRealTime = -1;
}
//release dma buffer if resolution changed after buffer release callback
- int fw = waylandBuffer->mDisplay->getFrameWidth();
- int fh = waylandBuffer->mDisplay->getFrameHeight();
- if ( (waylandBuffer->mFrameWidth != fw || waylandBuffer->mFrameHeight != fh) &&
- waylandBuffer->mWaylandWlWrap) {
- TRACE(waylandBuffer->mLogCategory,"resolution changed,delete WaylandBuffer:%p,WaylandDmaBuffer:%p",waylandBuffer,waylandBuffer->mWaylandWlWrap);
+ // int fw = waylandBuffer->mDisplay->getFrameWidth();
+ // int fh = waylandBuffer->mDisplay->getFrameHeight();
+ // 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();
waylandBuffer->mWaylandWlWrap = NULL;
waylandBuffer->mLock.unlock();
- }
+ // }
}
void WaylandBuffer::bufferdroped (void *data, struct wl_buffer *wl_buffer)
@@ -124,7 +124,7 @@
waylandBuffer->mRedrawingPending = false;
waylandBuffer->mLock.unlock();
if (waylandBuffer->mRenderBuffer && redrawing) {
- //TRACE(waylandBuffer->mLogCategory,"renderBuffer:%p, pts:%lld us",waylandBuffer->mRenderBuffer,waylandBuffer->mRenderBuffer->pts/1000);
+ TRACE(waylandBuffer->mLogCategory,"--renderBuffer:%p, pts:%lld us",waylandBuffer->mRenderBuffer,waylandBuffer->mRenderBuffer->pts/1000);
waylandBuffer->mDisplay->handleFrameDisplayedCallback(waylandBuffer);
}
wl_callback_destroy (callback);
diff --git a/weston/wayland_dma.cpp b/weston/wayland_dma.cpp
index 5b23aba..6fe0313 100644
--- a/weston/wayland_dma.cpp
+++ b/weston/wayland_dma.cpp
@@ -48,7 +48,7 @@
{
//release wl_buffer
if (mWlBuffer) {
- TRACE(mLogCategory,"delete WaylandDmaBuffer:%p,wl_buffer:%p",this,mWlBuffer);
+ // TRACE(mLogCategory,"delete WaylandDmaBuffer:%p,wl_buffer:%p",this,mWlBuffer);
wl_buffer_destroy(mWlBuffer);
mWlBuffer = NULL;
}
@@ -59,7 +59,7 @@
struct wl_buffer *new_buffer)
{
WaylandDmaBuffer *waylandDma = static_cast<WaylandDmaBuffer*>(data);
- TRACE(waylandDma->mLogCategory,"++create dma wl_buffer:%p ",new_buffer);
+ // TRACE(waylandDma->mLogCategory,"++create dma wl_buffer:%p ",new_buffer);
Tls::Mutex::Autolock _l(waylandDma->mMutex);
waylandDma->mWlBuffer = new_buffer;
waylandDma->mCondition.signal();
@@ -119,7 +119,7 @@
weston_direct_display_v1_enable(mDisplay->getWlDirectDisplay(), params);
}
for (int i = 0; i < dmabuf->planeCnt; i++) {
- TRACE(mLogCategory,"dma buf index:%d,fd:%d,stride:%d,offset:%d",i, dmabuf->fd[i],dmabuf->stride[i], dmabuf->offset[i]);
+ // TRACE(mLogCategory,"dma buf index:%d,fd:%d,stride:%d,offset:%d",i, dmabuf->fd[i],dmabuf->stride[i], dmabuf->offset[i]);
zwp_linux_buffer_params_v1_add(params,
dmabuf->fd[i],
i, /*plane_idx*/
@@ -131,7 +131,7 @@
/* Request buffer creation */
zwp_linux_buffer_params_v1_add_listener (params, &dmabuf_params_listener, (void *)this);
- TRACE(mLogCategory,"zwp_linux_buffer_params_v1_create,dma width:%d,height:%d,dmabufferformat:%d",dmabuf->width,dmabuf->height,dmabufferFormat);
+ //TRACE(mLogCategory,"zwp_linux_buffer_params_v1_create,dma width:%d,height:%d,dmabufferformat:%d",dmabuf->width,dmabuf->height,dmabufferFormat);
zwp_linux_buffer_params_v1_create (params, dmabuf->width, dmabuf->height, dmabufferFormat, flags);
/* Wait for the request answer */