DSWaylandTizenLaunchSplash: fix the segmentation fault on tizen_launch_splash::destro... 46/242746/1
authorDuna Oh <duna.oh@samsung.com>
Thu, 27 Aug 2020 03:44:17 +0000 (12:44 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Tue, 1 Sep 2020 01:29:09 +0000 (10:29 +0900)
Change-Id: I678e8ec443b5b9ecb84dcf34a67ccdfdbed8b1d1

src/DSWaylandServer/DSWaylandTizenLaunchEffect.cpp
src/DSWaylandServer/DSWaylandTizenLaunchEffectPrivate.h
src/DSWaylandServer/DSWaylandTizenLaunchSplash.cpp
src/DSWaylandServer/DSWaylandTizenLaunchSplash.h
src/DSWaylandServer/DSWaylandTizenLaunchSplashPrivate.h

index 30c78da..9b0c1df 100644 (file)
@@ -67,7 +67,8 @@ void DSWaylandTizenLaunchEffectPrivate::tizen_launch_effect_create_splash_img(Re
     DSLOG_DBG("TizenLaunchEffectPriv", "");
 
     DSWaylandClient *waylandClient = DSWaylandClient::fromWlClient(resource->client());
-       auto waylandSplash = std::make_shared<DSWaylandTizenLaunchSplash>(waylandClient, id);
+    std::shared_ptr<DSWaylandTizenLaunchSplash> tzSplash = std::make_shared<DSWaylandTizenLaunchSplash>(waylandClient, id, TIZEN_LAUNCH_EFFECT_VERSION);
+    __tzSplashList.push_front(tzSplash);
 }
 void DSWaylandTizenLaunchEffectPrivate::tizen_launch_effect_type_set(Resource *resource, const std::string &effect_type, uint32_t pid, struct ::wl_array *options)
 {
index 3fc6822..ad31c16 100644 (file)
@@ -55,6 +55,7 @@ protected:
     void tizen_launch_effect_destroy(Resource *resource);
 
 private:
+    std::list<std::shared_ptr<DSWaylandTizenLaunchSplash>> __tzSplashList;
 
 };
 
index b3a734f..96dd7c0 100644 (file)
@@ -31,17 +31,16 @@ DSWaylandTizenLaunchSplashPrivate::DSWaylandTizenLaunchSplashPrivate(DSWaylandTi
        : DSObjectPrivate(p_ptr),
       __p_ptr(p_ptr)
 {}
-DSWaylandTizenLaunchSplashPrivate::DSWaylandTizenLaunchSplashPrivate(DSWaylandTizenLaunchSplash *p_ptr, DSWaylandClient *waylandClient, uint32_t id)
-       : DSObjectPrivate(p_ptr),
-      __p_ptr(p_ptr)
+
+DSWaylandTizenLaunchSplashPrivate::~DSWaylandTizenLaunchSplashPrivate()
+{}
+
+void DSWaylandTizenLaunchSplashPrivate::init(DSWaylandClient *waylandClient, uint32_t id, int version)
 {
     if (id > 0) {
-        tizen_launch_splash::init(waylandClient->wlClient(), (int)id, 1);
+        tizen_launch_splash::init(waylandClient->wlClient(), (int)id, version);
     }
-
 }
-DSWaylandTizenLaunchSplashPrivate::~DSWaylandTizenLaunchSplashPrivate()
-{}
 
 void DSWaylandTizenLaunchSplashPrivate::tizen_launch_splash_bind_resource(Resource *resource)
 {}
@@ -57,12 +56,12 @@ void DSWaylandTizenLaunchSplashPrivate::tizen_launch_splash_owner(Resource *reso
 void DSWaylandTizenLaunchSplashPrivate::tizen_launch_splash_launch_v2(Resource *resource, const std::string &file, uint32_t file_type, uint32_t color_depth, uint32_t rotation, uint32_t indicator, const std::string &effect_type, const std::string &theme_type, struct ::wl_array *options, struct ::wl_array *extra_config)
 {}
 
-DSWaylandTizenLaunchSplash::DSWaylandTizenLaunchSplash()
-{}
-
-DSWaylandTizenLaunchSplash::DSWaylandTizenLaunchSplash(DSWaylandClient *waylandClient, uint32_t id)
-    : _d_ptr(std::make_unique<DSWaylandTizenLaunchSplashPrivate>(this, waylandClient, id))
-{}
+DSWaylandTizenLaunchSplash::DSWaylandTizenLaunchSplash(DSWaylandClient *waylandClient, uint32_t id, int version)
+    : DSObject(), DS_INIT_PRIVATE_PTR(DSWaylandTizenLaunchSplash)
+{
+    DS_GET_PRIV(DSWaylandTizenLaunchSplash);
+    priv->init(waylandClient, id, version);
+}
 
 DSWaylandTizenLaunchSplash::~DSWaylandTizenLaunchSplash()
 {}
index 3543562..3536c93 100644 (file)
@@ -36,9 +36,8 @@ class DSWaylandTizenLaunchSplash : public DSObject
 DS_PIMPL_USE_PRIVATE(DSWaylandTizenLaunchSplash);
 
 public:
-       DSWaylandTizenLaunchSplash();
-       DSWaylandTizenLaunchSplash(DSWaylandClient *waylandClient, uint32_t id);
-       virtual ~DSWaylandTizenLaunchSplash();
+       DSWaylandTizenLaunchSplash(DSWaylandClient *waylandClient, uint32_t id, int version);
+       ~DSWaylandTizenLaunchSplash() override;
 
 private:
 
index f911d7a..6aa9015 100644 (file)
@@ -40,9 +40,10 @@ DS_PIMPL_USE_PUBLIC(DSWaylandTizenLaunchSplash);
 public:
     DSWaylandTizenLaunchSplashPrivate() = delete;
     DSWaylandTizenLaunchSplashPrivate(DSWaylandTizenLaunchSplash *p_ptr);
-    DSWaylandTizenLaunchSplashPrivate(DSWaylandTizenLaunchSplash *p_ptr, DSWaylandClient *waylandClient, uint32_t id);
     ~DSWaylandTizenLaunchSplashPrivate() override;
 
+    void init(DSWaylandClient *waylandClient, uint32_t id, int version);
+
 protected:
     void tizen_launch_splash_bind_resource(Resource *resource);
     void tizen_launch_splash_destroy_resource(Resource *resource);