From: SooChan Lim Date: Mon, 24 Aug 2020 07:55:50 +0000 (+0900) Subject: DSWaylandSurface: add bufferChanged method X-Git-Tag: accepted/tizen/unified/20200827.105812~40 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7010f8e37eb145fc10fdabe110cb8f2d9fd32cb4;p=platform%2Fcore%2Fuifw%2Flibds.git DSWaylandSurface: add bufferChanged method allow to check if buffer is attached. wayland client can attach null buffer resource. Change-Id: I284b186e150e4fa577eb7b451d81f1a14d9e68ea --- diff --git a/src/DSWaylandServer/DSWaylandSurface.cpp b/src/DSWaylandServer/DSWaylandSurface.cpp index 473e3a0..7e98b10 100644 --- a/src/DSWaylandServer/DSWaylandSurface.cpp +++ b/src/DSWaylandServer/DSWaylandSurface.cpp @@ -63,6 +63,13 @@ std::shared_ptr DSWaylandSurfaceCommitInfo::getBuffer() return priv->getBuffer(); } +bool DSWaylandSurfaceCommitInfo::bufferChanged() +{ + DS_GET_PRIV(DSWaylandSurfaceCommitInfo); + + return priv->bufferChanged; +} + /* DSWaylandSurfacePrivate */ DSWaylandSurfacePrivate::DSWaylandSurfacePrivate(DSWaylandSurface *p_ptr) : DSObjectPrivate(p_ptr), @@ -131,8 +138,11 @@ void DSWaylandSurfacePrivate::surface_attach(Resource *resource, struct ::wl_res if (buffer) { dsBuffer = __bufferManager->getDSBuffer(buffer); commitInfoPendingPriv->bufferRef = std::make_unique(dsBuffer); - + } else { + commitInfoPendingPriv->bufferRef = nullptr; } + + commitInfoPendingPriv->bufferChanged = true; } void DSWaylandSurfacePrivate::surface_damage(Resource *resource, int32_t x, int32_t y, int32_t width, int32_t height) @@ -174,6 +184,8 @@ void DSWaylandSurfacePrivate::surface_commit(Resource *resource) commitInfoPriv->scale = commitInfoPendingPriv->scale; commitInfoPriv->damageBuffer = commitInfoPendingPriv->damageBuffer; commitInfoPriv->bufferRef = std::move(commitInfoPendingPriv->bufferRef); + commitInfoPriv->bufferChanged = commitInfoPendingPriv->bufferChanged; + commitInfoPendingPriv->bufferChanged = false; // reset value // emit a signal of the surface committed pub->__surfaceCommittedSignal.emit(__commitInfo); diff --git a/src/DSWaylandServer/DSWaylandSurface.h b/src/DSWaylandServer/DSWaylandSurface.h index 41d1ccb..d9cac4a 100644 --- a/src/DSWaylandServer/DSWaylandSurface.h +++ b/src/DSWaylandServer/DSWaylandSurface.h @@ -48,6 +48,7 @@ public: //TODO: add getter functions. std::shared_ptr getBuffer(); + bool bufferChanged(); }; class DSWaylandSurface : public DSObject diff --git a/src/DSWaylandServer/DSWaylandSurfacePrivate.h b/src/DSWaylandServer/DSWaylandSurfacePrivate.h index abff9c2..4b37613 100644 --- a/src/DSWaylandServer/DSWaylandSurfacePrivate.h +++ b/src/DSWaylandServer/DSWaylandSurfacePrivate.h @@ -56,6 +56,7 @@ public: }; std::unique_ptr bufferRef; struct _attach attach; + bool bufferChanged; struct damageSurface { int32_t x;