DSWaylandSurface: add fromWlResource(), getWlResource() 08/241708/1
authorSung-Jin Park <sj76.park@samsung.com>
Fri, 31 Jul 2020 10:21:44 +0000 (19:21 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Thu, 20 Aug 2020 10:05:07 +0000 (19:05 +0900)
Change-Id: I3107839258ce94d7fb568b72a562070c28cca15f
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/DSWaylandServer/DSWaylandSurface.cpp
src/DSWaylandServer/DSWaylandSurface.h
src/DSWaylandServer/DSWaylandSurfacePrivate.h

index b2da42a..e6c78ca 100644 (file)
@@ -163,4 +163,23 @@ void DSWaylandSurface::registerCallbackSurfaceCommitted(DSObject *slot, std::fun
        this->__surfaceCommittedSignal.connect(slot, func);
 }
 
+struct ::wl_resource *DSWaylandSurface::getWlResource()
+{
+       DS_GET_PRIV(DSWaylandSurface);
+
+       return priv->resource()->handle;
+}
+
+static DSWaylandSurfacePrivate *__getPrivatePtrFromWlResource(struct ::wl_resource *resource)
+{
+       auto rsrc = std::remove_pointer<DSWaylandSurfacePrivate>::type::Resource::fromResource(resource);
+       return rsrc ? reinterpret_cast<DSWaylandSurfacePrivate *>(rsrc->object()) : nullptr;
+}
+
+DSWaylandSurface *DSWaylandSurface::fromWlResource(struct ::wl_resource *resource)
+{
+       DSWaylandSurfacePrivate* priv = __getPrivatePtrFromWlResource(resource);
+       return priv->p_func();
+}
+
 } /* namespace display_server */
index e439f13..6963a29 100644 (file)
@@ -6,6 +6,8 @@
 #include "DSSignal.h"
 #include "DSWaylandClient.h"
 
+struct wl_resource;
+
 namespace display_server
 {
 
@@ -33,6 +35,9 @@ public:
        // Callback methods
        void registerCallbackSurfaceCommitted(DSObject *slot, std::function<void(std::shared_ptr<DSWaylandSurfaceCommitInfo> commitInfo)> func);
 
+       struct ::wl_resource *getWlResource();
+       static DSWaylandSurface *fromWlResource(struct ::wl_resource *resource);
+
 private:
        // signals
        DSSignal<std::shared_ptr<DSWaylandSurfaceCommitInfo>> __surfaceCommittedSignal;
index 7ec1267..e2e23c2 100644 (file)
@@ -55,6 +55,8 @@ public:
        struct damageBuffer damageBuffer;
 };
 
+struct wl_resource;
+
 class DSWaylandSurfacePrivate : public DSObjectPrivate, public DSWaylandServer::wl_surface
 {
 DS_PIMPL_USE_PUBLIC(DSWaylandSurface);