DSWaylandSurface: add bufferChanged method 08/242308/1
authorSooChan Lim <sc1.lim@samsung.com>
Mon, 24 Aug 2020 07:55:50 +0000 (16:55 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Tue, 25 Aug 2020 12:35:43 +0000 (21:35 +0900)
allow to check if buffer is attached. wayland client can attach null buffer resource.

Change-Id: I284b186e150e4fa577eb7b451d81f1a14d9e68ea

src/DSWaylandServer/DSWaylandSurface.cpp
src/DSWaylandServer/DSWaylandSurface.h
src/DSWaylandServer/DSWaylandSurfacePrivate.h

index 473e3a0..7e98b10 100644 (file)
@@ -63,6 +63,13 @@ std::shared_ptr<IDSBuffer> 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<DSBufferRef>(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);
index 41d1ccb..d9cac4a 100644 (file)
@@ -48,6 +48,7 @@ public:
 
        //TODO: add getter functions.
        std::shared_ptr<IDSBuffer> getBuffer();
+       bool                       bufferChanged();
 };
 
 class DSWaylandSurface : public DSObject
index abff9c2..4b37613 100644 (file)
@@ -56,6 +56,7 @@ public:
        };
        std::unique_ptr<DSBufferRef> bufferRef;
        struct _attach attach;
+       bool bufferChanged;
 
        struct damageSurface {
                int32_t x;