From: seungho baek Date: Tue, 18 Jul 2023 09:00:55 +0000 (+0900) Subject: Revert "[Tizen] Change deletion order of FrameworkFactory" X-Git-Tag: accepted/tizen/unified/20230719.102905~5 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git;a=commitdiff_plain;h=8671c405c02c5243383d0bdc22812451172a1846 Revert "[Tizen] Change deletion order of FrameworkFactory" This reverts commit fb4931c1ab92d3fa3fd691026067d1ffb3a89746. --- diff --git a/automated-tests/src/dali-adaptor/dali-test-suite-utils/adaptor-test-application.h b/automated-tests/src/dali-adaptor/dali-test-suite-utils/adaptor-test-application.h index 386b946..6d23c2f 100644 --- a/automated-tests/src/dali-adaptor/dali-test-suite-utils/adaptor-test-application.h +++ b/automated-tests/src/dali-adaptor/dali-test-suite-utils/adaptor-test-application.h @@ -2,7 +2,7 @@ #define DALI_ADAPTOR_TEST_APPLICATION_H /* - * Copyright (c) 2023 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,6 @@ */ // INTERNAL INCLUDES -#include #include "adaptor-test-adaptor-impl.h" #include "test-application.h" @@ -38,14 +37,11 @@ public: : TestApplication(surfaceWidth, surfaceHeight, horizontalDpi, verticalDpi) { Internal::Adaptor::Adaptor::SetAvailable(); - mFrameworkFactory = std::unique_ptr(Dali::Internal::Adaptor::CreateFrameworkFactory()); } ~AdaptorTestApplication() { } - - std::unique_ptr mFrameworkFactory; }; } // namespace Dali diff --git a/dali/internal/adaptor/android/framework-factory-android.cpp b/dali/internal/adaptor/android/framework-factory-android.cpp index 70b74f8..29acd0b 100644 --- a/dali/internal/adaptor/android/framework-factory-android.cpp +++ b/dali/internal/adaptor/android/framework-factory-android.cpp @@ -28,31 +28,20 @@ namespace Internal { namespace Adaptor { -FrameworkFactory* gFrameworkFactory = nullptr; - -FrameworkFactoryAndroid::FrameworkFactoryAndroid() -{ - gFrameworkFactory = this; -} - -FrameworkFactoryAndroid::~FrameworkFactoryAndroid() -{ - gFrameworkFactory = nullptr; -} - std::unique_ptr FrameworkFactoryAndroid::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) { return Utils::MakeUnique(observer, taskObserver, argc, argv, type, useUiThread); } -FrameworkFactory* CreateFrameworkFactory() -{ - return (new FrameworkFactoryAndroid()); -} - FrameworkFactory* GetFrameworkFactory() { - return gFrameworkFactory; + static std::unique_ptr frameworkFactory = nullptr; + + if(!frameworkFactory) + { + frameworkFactory = Utils::MakeUnique(); + } + return frameworkFactory.get(); } } // namespace Adaptor diff --git a/dali/internal/adaptor/android/framework-factory-android.h b/dali/internal/adaptor/android/framework-factory-android.h index 49e2965..4b3b9e6 100644 --- a/dali/internal/adaptor/android/framework-factory-android.h +++ b/dali/internal/adaptor/android/framework-factory-android.h @@ -29,9 +29,6 @@ namespace Adaptor class FrameworkFactoryAndroid : public FrameworkFactory { public: - FrameworkFactoryAndroid(); - ~FrameworkFactoryAndroid(); - std::unique_ptr CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override; }; diff --git a/dali/internal/adaptor/androidjni/framework-factory-androidjni.cpp b/dali/internal/adaptor/androidjni/framework-factory-androidjni.cpp index 4d7849d..d4dd93c 100644 --- a/dali/internal/adaptor/androidjni/framework-factory-androidjni.cpp +++ b/dali/internal/adaptor/androidjni/framework-factory-androidjni.cpp @@ -28,31 +28,20 @@ namespace Internal { namespace Adaptor { -FrameworkFactory* gFrameworkFactory = nullptr; - -FrameworkFactoryAndroidJni::FrameworkFactoryAndroidJni() -{ - gFrameworkFactory = this; -} - -FrameworkFactoryAndroidJni::~FrameworkFactoryAndroidJni() -{ - gFrameworkFactory = nullptr; -} - std::unique_ptr FrameworkFactoryAndroidJni::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) { return Utils::MakeUnique(observer, taskObserver, argc, argv, type, useUiThread); } -FrameworkFactory* CreateFrameworkFactory() -{ - return (new FrameworkFactoryAndroidJni()); -} - FrameworkFactory* GetFrameworkFactory() { - return gFrameworkFactory; + static std::unique_ptr frameworkFactory = nullptr; + + if(!frameworkFactory) + { + frameworkFactory = Utils::MakeUnique(); + } + return frameworkFactory.get(); } } // namespace Adaptor diff --git a/dali/internal/adaptor/androidjni/framework-factory-androidjni.h b/dali/internal/adaptor/androidjni/framework-factory-androidjni.h index a3ead02..782ed97 100644 --- a/dali/internal/adaptor/androidjni/framework-factory-androidjni.h +++ b/dali/internal/adaptor/androidjni/framework-factory-androidjni.h @@ -29,9 +29,6 @@ namespace Adaptor class FrameworkFactoryAndroidJni : public FrameworkFactory { public: - FrameworkFactoryAndroidJni(); - ~FrameworkFactoryAndroidJni(); - std::unique_ptr CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override; }; diff --git a/dali/internal/adaptor/common/application-impl.cpp b/dali/internal/adaptor/common/application-impl.cpp index 13a5fe6..9bad3be 100644 --- a/dali/internal/adaptor/common/application-impl.cpp +++ b/dali/internal/adaptor/common/application-impl.cpp @@ -81,11 +81,11 @@ void Application::PreInitialize(int* argc, char** argv[]) { if(!gPreInitializedApplication) { - char* retEnv = std::getenv("TIZEN_UI_THREAD"); - bool isUseUIThread = false; + char* retEnv = std::getenv("TIZEN_UI_THREAD"); + bool isUseUIThread = false; if(retEnv) { - std::string uiThreadEnv = retEnv; + std::string uiThreadEnv = retEnv; std::string enabledString = "true"; if(uiThreadEnv == enabledString) { @@ -101,13 +101,15 @@ void Application::PreInitialize(int* argc, char** argv[]) { DALI_LOG_RELEASE_INFO("PRE_INITIALIZED with UI Threading"); gPreInitializedApplication->mUIThreadLoader = new UIThreadLoader(argc, argv); - gPreInitializedApplication->mUIThreadLoader->Run([&]() { gPreInitializedApplication->CreateWindow(); }); + gPreInitializedApplication->mUIThreadLoader->Run([&](){gPreInitializedApplication->CreateWindow();}); } else { DALI_LOG_RELEASE_INFO("Only PRE_INITIALIZED"); gPreInitializedApplication->CreateWindow(); // Only create window } + + } } @@ -121,7 +123,6 @@ Application::Application(int* argc, char** argv[], const std::string& stylesheet mLanguageChangedSignal(), mRegionChangedSignal(), mFramework(nullptr), - mFrameworkFactory(nullptr), mCommandLineOptions(nullptr), mAdaptorBuilder(nullptr), mAdaptor(nullptr), @@ -151,9 +152,7 @@ Application::Application(int* argc, char** argv[], const std::string& stylesheet } mCommandLineOptions = new CommandLineOptions(argc, argv); - - mFrameworkFactory = std::unique_ptr(Dali::Internal::Adaptor::CreateFrameworkFactory()); - mFramework = mFrameworkFactory->CreateFramework(FrameworkBackend::DEFAULT, *this, *this, argc, argv, applicationType, mUseUiThread); + mFramework = Dali::Internal::Adaptor::GetFrameworkFactory()->CreateFramework(FrameworkBackend::DEFAULT, *this, *this, argc, argv, applicationType, mUseUiThread); mUseRemoteSurface = (applicationType == Framework::WATCH); } diff --git a/dali/internal/adaptor/common/application-impl.h b/dali/internal/adaptor/common/application-impl.h index 26d478f..914664a 100644 --- a/dali/internal/adaptor/common/application-impl.h +++ b/dali/internal/adaptor/common/application-impl.h @@ -54,7 +54,6 @@ enum State } // namespace Launchpad class CommandLineOptions; -class FrameworkFactory; typedef Dali::Rect PositionSize; @@ -521,8 +520,7 @@ private: LowMemorySignalType mTaskLowMemorySignal; DeviceOrientationChangedSignalType mTaskDeviceOrientationChangedSignal; - std::unique_ptr mFramework; - std::unique_ptr mFrameworkFactory; + std::unique_ptr mFramework; CommandLineOptions* mCommandLineOptions; @@ -546,7 +544,7 @@ private: SlotDelegate mSlotDelegate; - UIThreadLoader* mUIThreadLoader; + UIThreadLoader* mUIThreadLoader; static ApplicationPtr gPreInitializedApplication; }; diff --git a/dali/internal/adaptor/common/framework-factory.h b/dali/internal/adaptor/common/framework-factory.h index 9b67976..885cdb1 100644 --- a/dali/internal/adaptor/common/framework-factory.h +++ b/dali/internal/adaptor/common/framework-factory.h @@ -46,15 +46,7 @@ public: } }; -/** - * @brief Creates a framework factory - */ -FrameworkFactory* CreateFrameworkFactory(); - -/** - * @brief Gets a framework factory - */ -FrameworkFactory* GetFrameworkFactory(); +extern FrameworkFactory* GetFrameworkFactory(); } // namespace Adaptor } // namespace Internal diff --git a/dali/internal/adaptor/glib/framework-factory-glib.cpp b/dali/internal/adaptor/glib/framework-factory-glib.cpp index aa92665..baf5954 100644 --- a/dali/internal/adaptor/glib/framework-factory-glib.cpp +++ b/dali/internal/adaptor/glib/framework-factory-glib.cpp @@ -28,31 +28,20 @@ namespace Internal { namespace Adaptor { -FrameworkFactory* gFrameworkFactory = nullptr; - -FrameworkFactoryGlib::FrameworkFactoryGlib() -{ - gFrameworkFactory = this; -} - -FrameworkFactoryGlib::~FrameworkFactoryGlib() -{ - gFrameworkFactory = nullptr; -} - std::unique_ptr FrameworkFactoryGlib::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) { return Utils::MakeUnique(observer, taskObserver, argc, argv, type, useUiThread); } -FrameworkFactory* CreateFrameworkFactory() -{ - return (new FrameworkFactoryGlib()); -} - FrameworkFactory* GetFrameworkFactory() { - return gFrameworkFactory; + static std::unique_ptr frameworkFactory = nullptr; + + if(!frameworkFactory) + { + frameworkFactory = Utils::MakeUnique(); + } + return frameworkFactory.get(); } } // namespace Adaptor diff --git a/dali/internal/adaptor/glib/framework-factory-glib.h b/dali/internal/adaptor/glib/framework-factory-glib.h index f38877b..5969b3b 100644 --- a/dali/internal/adaptor/glib/framework-factory-glib.h +++ b/dali/internal/adaptor/glib/framework-factory-glib.h @@ -29,9 +29,6 @@ namespace Adaptor class FrameworkFactoryGlib : public FrameworkFactory { public: - FrameworkFactoryGlib(); - ~FrameworkFactoryGlib(); - std::unique_ptr CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override; }; diff --git a/dali/internal/adaptor/libuv/framework-factory-libuv.cpp b/dali/internal/adaptor/libuv/framework-factory-libuv.cpp index 8b25184..b608d45 100644 --- a/dali/internal/adaptor/libuv/framework-factory-libuv.cpp +++ b/dali/internal/adaptor/libuv/framework-factory-libuv.cpp @@ -28,31 +28,20 @@ namespace Internal { namespace Adaptor { -FrameworkFactory* gFrameworkFactory = nullptr; - -FrameworkFactoryLibuv::FrameworkFactoryLibuv() -{ - gFrameworkFactory = this; -} - -FrameworkFactoryLibuv::~FrameworkFactoryLibuv() -{ - gFrameworkFactory = nullptr; -} - std::unique_ptr FrameworkFactoryLibuv::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) { return Utils::MakeUnique(observer, taskObserver, argc, argv, type, useUiThread); } -FrameworkFactory* CreateFrameworkFactory() -{ - return (new FrameworkFactoryLibuv()); -} - FrameworkFactory* GetFrameworkFactory() { - return gFrameworkFactory; + static std::unique_ptr frameworkFactory = nullptr; + + if(!frameworkFactory) + { + frameworkFactory = Utils::MakeUnique(); + } + return frameworkFactory.get(); } } // namespace Adaptor diff --git a/dali/internal/adaptor/libuv/framework-factory-libuv.h b/dali/internal/adaptor/libuv/framework-factory-libuv.h index 2205761..2b4d0ae 100644 --- a/dali/internal/adaptor/libuv/framework-factory-libuv.h +++ b/dali/internal/adaptor/libuv/framework-factory-libuv.h @@ -29,9 +29,6 @@ namespace Adaptor class FrameworkFactoryLibuv : public FrameworkFactory { public: - FrameworkFactoryLibuv(); - ~FrameworkFactoryLibuv(); - std::unique_ptr CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override; }; diff --git a/dali/internal/adaptor/macos/framework-factory-mac.h b/dali/internal/adaptor/macos/framework-factory-mac.h index 44663c3..1778d70 100644 --- a/dali/internal/adaptor/macos/framework-factory-mac.h +++ b/dali/internal/adaptor/macos/framework-factory-mac.h @@ -29,9 +29,6 @@ namespace Adaptor class FrameworkFactoryMac : public FrameworkFactory { public: - FrameworkFactoryMac(); - ~FrameworkFactoryMac(); - std::unique_ptr CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override; }; diff --git a/dali/internal/adaptor/macos/framework-factory-mac.mm b/dali/internal/adaptor/macos/framework-factory-mac.mm index 9d8afa8..8deb80e 100644 --- a/dali/internal/adaptor/macos/framework-factory-mac.mm +++ b/dali/internal/adaptor/macos/framework-factory-mac.mm @@ -28,31 +28,20 @@ namespace Internal { namespace Adaptor { -FrameworkFactory* gFrameworkFactory = nullptr; - -FrameworkFactoryMac::FrameworkFactoryMac() -{ - gFrameworkFactory = this; -} - -FrameworkFactoryMac::~FrameworkFactoryMac() -{ - gFrameworkFactory = nullptr; -} - std::unique_ptr FrameworkFactoryMac::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) { return Utils::MakeUnique(observer, taskObserver, argc, argv, type, useUiThread); } -FrameworkFactory* CreateFrameworkFactory() -{ - return (new FrameworkFactoryMac()); -} - FrameworkFactory* GetFrameworkFactory() { - return gFrameworkFactory; + static std::unique_ptr frameworkFactory = nullptr; + + if(!frameworkFactory) + { + frameworkFactory = Utils::MakeUnique(); + } + return frameworkFactory.get(); } } // namespace Adaptor diff --git a/dali/internal/adaptor/tizen-wayland/framework-factory-tizen.cpp b/dali/internal/adaptor/tizen-wayland/framework-factory-tizen.cpp index fc84ee3..d466db1 100644 --- a/dali/internal/adaptor/tizen-wayland/framework-factory-tizen.cpp +++ b/dali/internal/adaptor/tizen-wayland/framework-factory-tizen.cpp @@ -29,18 +29,6 @@ namespace Internal { namespace Adaptor { -FrameworkFactory* gFrameworkFactory = nullptr; - -FrameworkFactoryTizen::FrameworkFactoryTizen() -{ - gFrameworkFactory = this; -} - -FrameworkFactoryTizen::~FrameworkFactoryTizen() -{ - gFrameworkFactory = nullptr; -} - std::unique_ptr FrameworkFactoryTizen::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) { mBackend = backend; @@ -54,14 +42,15 @@ std::unique_ptr FrameworkFactoryTizen::CreateFramework(FrameworkBacke } } -FrameworkFactory* CreateFrameworkFactory() -{ - return (new FrameworkFactoryTizen()); -} - FrameworkFactory* GetFrameworkFactory() { - return gFrameworkFactory; + static std::unique_ptr frameworkFactory = nullptr; + + if(!frameworkFactory) + { + frameworkFactory = Utils::MakeUnique(); + } + return frameworkFactory.get(); } } // namespace Adaptor diff --git a/dali/internal/adaptor/tizen-wayland/framework-factory-tizen.h b/dali/internal/adaptor/tizen-wayland/framework-factory-tizen.h index a337b3b..68879fb 100644 --- a/dali/internal/adaptor/tizen-wayland/framework-factory-tizen.h +++ b/dali/internal/adaptor/tizen-wayland/framework-factory-tizen.h @@ -29,9 +29,6 @@ namespace Adaptor class FrameworkFactoryTizen : public FrameworkFactory { public: - FrameworkFactoryTizen(); - ~FrameworkFactoryTizen(); - std::unique_ptr CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override; FrameworkBackend GetFrameworkBackend() const override @@ -40,7 +37,7 @@ public: } private: - FrameworkBackend mBackend{FrameworkBackend::DEFAULT}; + FrameworkBackend mBackend; }; } // namespace Adaptor diff --git a/dali/internal/adaptor/ubuntu/framework-factory-ubuntu.cpp b/dali/internal/adaptor/ubuntu/framework-factory-ubuntu.cpp index be754e9..ae2c084 100644 --- a/dali/internal/adaptor/ubuntu/framework-factory-ubuntu.cpp +++ b/dali/internal/adaptor/ubuntu/framework-factory-ubuntu.cpp @@ -28,31 +28,20 @@ namespace Internal { namespace Adaptor { -FrameworkFactory* gFrameworkFactory = nullptr; - -FrameworkFactoryUbuntu::FrameworkFactoryUbuntu() -{ - gFrameworkFactory = this; -} - -FrameworkFactoryUbuntu::~FrameworkFactoryUbuntu() -{ - gFrameworkFactory = nullptr; -} - std::unique_ptr FrameworkFactoryUbuntu::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) { return Utils::MakeUnique(observer, taskObserver, argc, argv, type, useUiThread); } -FrameworkFactory* CreateFrameworkFactory() -{ - return (new FrameworkFactoryUbuntu()); -} - FrameworkFactory* GetFrameworkFactory() { - return gFrameworkFactory; + static std::unique_ptr frameworkFactory = nullptr; + + if(!frameworkFactory) + { + frameworkFactory = Utils::MakeUnique(); + } + return frameworkFactory.get(); } } // namespace Adaptor diff --git a/dali/internal/adaptor/ubuntu/framework-factory-ubuntu.h b/dali/internal/adaptor/ubuntu/framework-factory-ubuntu.h index 61cf122..f7d6b2a 100644 --- a/dali/internal/adaptor/ubuntu/framework-factory-ubuntu.h +++ b/dali/internal/adaptor/ubuntu/framework-factory-ubuntu.h @@ -29,9 +29,6 @@ namespace Adaptor class FrameworkFactoryUbuntu : public FrameworkFactory { public: - FrameworkFactoryUbuntu(); - ~FrameworkFactoryUbuntu(); - std::unique_ptr CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override; }; diff --git a/dali/internal/adaptor/windows/framework-factory-win.cpp b/dali/internal/adaptor/windows/framework-factory-win.cpp index 16c595b..e94a561 100644 --- a/dali/internal/adaptor/windows/framework-factory-win.cpp +++ b/dali/internal/adaptor/windows/framework-factory-win.cpp @@ -28,31 +28,20 @@ namespace Internal { namespace Adaptor { -FrameworkFactory* gFrameworkFactory = nullptr; - -FrameworkFactoryWin::FrameworkFactoryWin() -{ - gFrameworkFactory = this; -} - -FrameworkFactoryWin::~FrameworkFactoryWin() -{ - gFrameworkFactory = nullptr; -} - std::unique_ptr FrameworkFactoryWin::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) { return Utils::MakeUnique(observer, taskObserver, argc, argv, type, useUiThread); } -FrameworkFactory* CreateFrameworkFactory() -{ - return (new FrameworkFactoryWin()); -} - FrameworkFactory* GetFrameworkFactory() { - return gFrameworkFactory; + static std::unique_ptr frameworkFactory = nullptr; + + if(!frameworkFactory) + { + frameworkFactory = Utils::MakeUnique(); + } + return frameworkFactory.get(); } } // namespace Adaptor diff --git a/dali/internal/adaptor/windows/framework-factory-win.h b/dali/internal/adaptor/windows/framework-factory-win.h index 50c4447..039e3fa 100644 --- a/dali/internal/adaptor/windows/framework-factory-win.h +++ b/dali/internal/adaptor/windows/framework-factory-win.h @@ -29,9 +29,6 @@ namespace Adaptor class FrameworkFactoryWin : public FrameworkFactory { public: - FrameworkFactoryWin(); - ~FrameworkFactoryWin(); - std::unique_ptr CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override; };