From: Duna Oh Date: Thu, 27 Aug 2020 03:44:17 +0000 (+0900) Subject: DSWaylandTizenLaunchSplash: fix the segmentation fault on tizen_launch_splash::destro... X-Git-Tag: accepted/tizen/unified/20200901.160655~52 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b130c99aedcd7c2732938b3668f8a1397c43f419;p=platform%2Fcore%2Fuifw%2Flibds.git DSWaylandTizenLaunchSplash: fix the segmentation fault on tizen_launch_splash::destroy_func Change-Id: I678e8ec443b5b9ecb84dcf34a67ccdfdbed8b1d1 --- diff --git a/src/DSWaylandServer/DSWaylandTizenLaunchEffect.cpp b/src/DSWaylandServer/DSWaylandTizenLaunchEffect.cpp index 30c78da..9b0c1df 100644 --- a/src/DSWaylandServer/DSWaylandTizenLaunchEffect.cpp +++ b/src/DSWaylandServer/DSWaylandTizenLaunchEffect.cpp @@ -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(waylandClient, id); + std::shared_ptr tzSplash = std::make_shared(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) { diff --git a/src/DSWaylandServer/DSWaylandTizenLaunchEffectPrivate.h b/src/DSWaylandServer/DSWaylandTizenLaunchEffectPrivate.h index 3fc6822..ad31c16 100644 --- a/src/DSWaylandServer/DSWaylandTizenLaunchEffectPrivate.h +++ b/src/DSWaylandServer/DSWaylandTizenLaunchEffectPrivate.h @@ -55,6 +55,7 @@ protected: void tizen_launch_effect_destroy(Resource *resource); private: + std::list> __tzSplashList; }; diff --git a/src/DSWaylandServer/DSWaylandTizenLaunchSplash.cpp b/src/DSWaylandServer/DSWaylandTizenLaunchSplash.cpp index b3a734f..96dd7c0 100644 --- a/src/DSWaylandServer/DSWaylandTizenLaunchSplash.cpp +++ b/src/DSWaylandServer/DSWaylandTizenLaunchSplash.cpp @@ -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(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() {} diff --git a/src/DSWaylandServer/DSWaylandTizenLaunchSplash.h b/src/DSWaylandServer/DSWaylandTizenLaunchSplash.h index 3543562..3536c93 100644 --- a/src/DSWaylandServer/DSWaylandTizenLaunchSplash.h +++ b/src/DSWaylandServer/DSWaylandTizenLaunchSplash.h @@ -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: diff --git a/src/DSWaylandServer/DSWaylandTizenLaunchSplashPrivate.h b/src/DSWaylandServer/DSWaylandTizenLaunchSplashPrivate.h index f911d7a..6aa9015 100644 --- a/src/DSWaylandServer/DSWaylandTizenLaunchSplashPrivate.h +++ b/src/DSWaylandServer/DSWaylandTizenLaunchSplashPrivate.h @@ -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);