X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fadaptor%2Fcommon%2Fapplication-impl.h;h=8e334a7d4cb7ce73f7dbb96f6b253a930f57b418;hb=92a91626274bd7db6dc72b2f05959493754770cc;hp=e9065202ab2ee51beebf6655f781319e64b44d75;hpb=d5976a23365194349fc4a63043f9c1273d979d05;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/adaptor/common/application-impl.h b/dali/internal/adaptor/common/application-impl.h index e906520..8e334a7 100644 --- a/dali/internal/adaptor/common/application-impl.h +++ b/dali/internal/adaptor/common/application-impl.h @@ -2,7 +2,7 @@ #define DALI_INTERNAL_APPLICATION_H /* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -23,13 +23,12 @@ #include // INTERNAL INCLUDES +#include #include -#include +#include #include -#include #include -#include namespace Dali { @@ -38,21 +37,18 @@ class Window; namespace Internal { - namespace Adaptor { - namespace Launchpad { - /** * @brief Launchpad is used to improve application launch performance. * When an application is pre-initialized, so files are preloaded, some functions are initialized and a window is made in advance. */ enum State { - NONE, ///< The default state - PRE_INITIALIZED ///< Application is pre-initialized. + NONE, ///< The default state + PRE_INITIALIZED ///< Application is pre-initialized. }; } // namespace Launchpad @@ -68,39 +64,39 @@ typedef IntrusivePtr ApplicationPtr; /** * Implementation of the Application class. */ -class Application : public BaseObject, public Framework::Observer +class Application : public BaseObject, public Framework::Observer, public Framework::TaskObserver { public: - - typedef Dali::Application::LowBatterySignalType LowBatterySignalType; - typedef Dali::Application::LowMemorySignalType LowMemorySignalType; - typedef Dali::Application::AppSignalType AppSignalType; - typedef Dali::Application::AppControlSignalType AppControlSignalType; - typedef Dali::Application::WINDOW_MODE WINDOW_MODE; + typedef Dali::Application::LowBatterySignalType LowBatterySignalType; + typedef Dali::Application::LowMemorySignalType LowMemorySignalType; + typedef Dali::Application::DeviceOrientationChangedSignalType DeviceOrientationChangedSignalType; + typedef Dali::Application::AppSignalType AppSignalType; + typedef Dali::Application::AppControlSignalType AppControlSignalType; + typedef Dali::Application::WINDOW_MODE WINDOW_MODE; /** * Create a new application - * @param[in] argc A pointer to the number of arguments - * @param[in] argv A pointer to the argument list - * @param[in] stylesheet The path to user defined theme file - * @param[in] windowMode A member of Dali::Application::WINDOW_MODE - * @param[in] positionSize A position and a size of the window - * @param[in] applicationType A member of Dali::Framework::Type + * @param[in] argc A pointer to the number of arguments + * @param[in] argv A pointer to the argument list + * @param[in] stylesheet The path to user defined theme file + * @param[in] windowMode A member of Dali::Application::WINDOW_MODE + * @param[in] positionSize A position and a size of the window + * @param[in] applicationType A member of Dali::Framework::Type + * @param[in] type It is window type for default window. + * @param[in] useUiThread True if the application would create a UI thread */ - static ApplicationPtr New( int* argc, char **argv[], const std::string& stylesheet, - WINDOW_MODE windowMode, const PositionSize& positionSize, Framework::Type applicationType ); + static ApplicationPtr New(int* argc, char** argv[], const std::string& stylesheet, WINDOW_MODE windowMode, const PositionSize& positionSize, Framework::Type applicationType, WindowType type, bool useUiThread); /** * @copydoc Dali::DevelApplication::PreInitialize() */ - static void PreInitialize( int* argc, char** argv[] ); + static void PreInitialize(int* argc, char** argv[]); public: - /** * @copydoc Dali::Application::MainLoop() */ - void MainLoop(Dali::Configuration::ContextLoss configuration); + void MainLoop(); /** * @copydoc Dali::Application::Lower() @@ -115,7 +111,7 @@ public: /** * @copydoc Dali::Application::AddIdle() */ - bool AddIdle( CallbackBase* callback, bool hasReturnValue ); + bool AddIdle(CallbackBase* callback, bool hasReturnValue); /** * @copydoc Dali::Application::GetAdaptor(); @@ -138,9 +134,9 @@ public: std::string GetLanguage() const; /** - * @copydoc Dali::Application::ReplaceWindow(); + * @copydoc Dali::Application::GetObjectRegistry(); */ - void ReplaceWindow( const PositionSize& positionSize, const std::string& name); + Dali::ObjectRegistry GetObjectRegistry() const; /** * @copydoc Dali::Application::GetResourcePath(); @@ -148,226 +144,341 @@ public: static std::string GetResourcePath(); /** + * @copydoc Dali::DevelApplication::GetDataPath() + */ + static std::string GetDataPath(); + + /** * Retrieves the pre-initialized application. * * @return A pointer to the pre-initialized application */ static ApplicationPtr GetPreInitializedApplication(); -public: // Stereoscopy - /** - * @copydoc Dali::Application::SetViewMode() + * Stores PositionSize of window */ - void SetViewMode( ViewMode viewMode ); + void StoreWindowPositionSize(PositionSize positionSize); /** - * @copydoc Dali::Application::GetViewMode() + * @copydoc Dali::DevelApplication::GetRenderThreadId() */ - ViewMode GetViewMode() const; + int32_t GetRenderThreadId() const; +public: // From Framework::Observer /** - * @copydoc Dali::Application::SetStereoBase() + * Called when the framework is initialised. */ - void SetStereoBase( float stereoBase ); + void OnInit() override; /** - * @copydoc Dali::Application::GetStereoBase() + * Called when the framework is terminated. */ - float GetStereoBase() const; + void OnTerminate() override; -public: // Lifecycle functionality + /** + * Called when the framework is paused. + */ + void OnPause() override; /** - * Called when OnInit is called or the framework is initialised. + * Called when the framework resumes from a paused state. */ - void DoInit(); + void OnResume() override; /** - * Called after OnInit is called or the framework is started. + * Called when the framework received AppControlSignal. + * @param[in] The bundle data of AppControl event. */ - void DoStart(); + void OnAppControl(void* data) override; /** - * Called when OnTerminate is called or the framework is terminated. + * Called when the framework informs the application that it should reset itself. */ - void DoTerminate(); + void OnReset() override; /** - * Called when OnPause is called or the framework is paused. + * Called when the framework informs the application that the language of the device has changed. */ - void DoPause(); + void OnLanguageChanged() override; /** - * Called when OnResume is called or the framework resumes from a paused state. + * Called when the framework informs the application that the region of the device has changed. */ - void DoResume(); + void OnRegionChanged() override; /** - * Called when OnLanguageChanged is called or the framework informs the application that the language of the device has changed. + * Called when the framework informs the application that the battery level of the device is low. */ - void DoLanguageChange(); + void OnBatteryLow(Dali::DeviceStatus::Battery::Status status) override; -public: // From Framework::Observer + /** + * Called when the framework informs the application that the memory level of the device is low. + */ + void OnMemoryLow(Dali::DeviceStatus::Memory::Status status) override; /** - * Called when the framework is initialised. + * Called when the framework informs the application that device orientation is changed. */ - virtual void OnInit(); + void OnDeviceOrientationChanged(Dali::DeviceStatus::Orientation::Status status) override; /** - * Called when the framework is terminated. + * Called when the framework informs the application that the platform surface is created. */ - virtual void OnTerminate(); + void OnSurfaceCreated(Any newSurface) override; /** - * Called when the framework is paused. + * Called when the framework informs the application that the platform surface is destroyed. */ - virtual void OnPause(); + void OnSurfaceDestroyed(Any newSurface) override; +public: // From Framework::TaskObserver /** - * Called when the framework resumes from a paused state. + * Called when the framework is initialised. */ - virtual void OnResume(); + void OnTaskInit() override; /** - * Called when the framework received AppControlSignal. - * @param[in] The bundle data of AppControl event. - */ - virtual void OnAppControl(void *data); + * Called when the framework is terminated. + */ + void OnTaskTerminate() override; /** - * Called when the framework informs the application that it should reset itself. + * Called when the framework received AppControlSignal. + * @param[in] The bundle data of AppControl event. */ - virtual void OnReset(); + void OnTaskAppControl(void* data) override; /** * Called when the framework informs the application that the language of the device has changed. */ - virtual void OnLanguageChanged(); + void OnTaskLanguageChanged() override; /** - * Called when the framework informs the application that the region of the device has changed. - */ - virtual void OnRegionChanged(); + * Called when the framework informs the application that the region of the device has changed. + */ + void OnTaskRegionChanged() override; /** - * Called when the framework informs the application that the battery level of the device is low. - */ - virtual void OnBatteryLow( Dali::DeviceStatus::Battery::Status status ); + * Called when the framework informs the application that the battery level of the device is low. + */ + void OnTaskBatteryLow(Dali::DeviceStatus::Battery::Status status) override; /** - * Called when the framework informs the application that the memory level of the device is low. - */ - virtual void OnMemoryLow( Dali::DeviceStatus::Memory::Status status ); - -public: + * Called when the framework informs the application that the memory level of the device is low. + */ + void OnTaskMemoryLow(Dali::DeviceStatus::Memory::Status status) override; /** - * Signal handler when the adaptor's window resizes itself. - * @param[in] adaptor The adaptor + * Called when the framework informs the application that the device orientation is changed. + * + * Device orientation changed event is from Application Framework(Sensor Framework), it means it is system event. + * If UIThreading is enable, DALI application has the main thread and UI thread. + * This event is emitted in main thread, then it is posted to the UI thread in this callback function. */ - void OnResize(Dali::Adaptor& adaptor); + void OnTaskDeviceOrientationChanged(Dali::DeviceStatus::Orientation::Status status) override; +public: /** * Sets a user defined theme file. * This should be called before initialization. * @param[in] stylesheet The path to user defined theme file */ - void SetStyleSheet( const std::string& stylesheet ); + void SetStyleSheet(const std::string& stylesheet); -public: // Signals + /** + * Sets a command line options. + * This is used in case of the preinitialized application. + * @param[in] argc A pointer to the number of arguments + * @param[in] argv A pointer to the argument list + */ + void SetCommandLineOptions(int* argc, char** argv[]); + + /** + * Sets default window type. + * This is used in case of the preinitialized application. + * @param[in] type the window type for default window + */ + void SetDefaultWindowType(WindowType type); +public: // Signals /** * @copydoc Dali::Application::InitSignal() */ - Dali::Application::AppSignalType& InitSignal() { return mInitSignal; } + Dali::Application::AppSignalType& InitSignal() + { + return mInitSignal; + } /** * @copydoc Dali::Application::TerminateSignal() */ - Dali::Application::AppSignalType& TerminateSignal() { return mTerminateSignal; } + Dali::Application::AppSignalType& TerminateSignal() + { + return mTerminateSignal; + } /** * @copydoc Dali::Application::PauseSignal() */ - Dali::Application::AppSignalType& PauseSignal() { return mPauseSignal; } + Dali::Application::AppSignalType& PauseSignal() + { + return mPauseSignal; + } /** * @copydoc Dali::Application::ResumeSignal() */ - Dali::Application::AppSignalType& ResumeSignal() { return mResumeSignal; } + Dali::Application::AppSignalType& ResumeSignal() + { + return mResumeSignal; + } /** * @copydoc Dali::Application::ResetSignal() */ - Dali::Application::AppSignalType& ResetSignal() { return mResetSignal; } + Dali::Application::AppSignalType& ResetSignal() + { + return mResetSignal; + } /** - * @copydoc Dali::Application::AppControlSignal() - */ - Dali::Application::AppControlSignalType& AppControlSignal() { return mAppControlSignal; } + * @copydoc Dali::Application::AppControlSignal() + */ + Dali::Application::AppControlSignalType& AppControlSignal() + { + return mAppControlSignal; + } /** - * @copydoc Dali::Application::ResizeSignal() + * @copydoc Dali::Application::LanguageChangedSignal() */ - Dali::Application::AppSignalType& ResizeSignal() { return mResizeSignal; } + Dali::Application::AppSignalType& LanguageChangedSignal() + { + return mLanguageChangedSignal; + } /** - * @copydoc Dali::Application::LanguageChangedSignal() + * @copydoc Dali::Application::RegionChangedSignal() */ - Dali::Application::AppSignalType& LanguageChangedSignal() { return mLanguageChangedSignal; } + Dali::Application::AppSignalType& RegionChangedSignal() + { + return mRegionChangedSignal; + } /** - * @copydoc Dali::Application::RegionChangedSignal() - */ - Dali::Application::AppSignalType& RegionChangedSignal() { return mRegionChangedSignal; } + * @copydoc Dali::Application::LowBatterySignal() + */ + Dali::Application::LowBatterySignalType& LowBatterySignal() + { + return mLowBatterySignal; + } /** - * @copydoc Dali::Application::BatteryLowSignal() - */ - Dali::Application::AppSignalType& BatteryLowSignal() { return mBatteryLowSignal; } + * @copydoc Dali::Application:::LowMemorySignal() + */ + Dali::Application::LowMemorySignalType& LowMemorySignal() + { + return mLowMemorySignal; + } /** - * @copydoc Dali::Application::MemoryLowSignal() - */ - Dali::Application::AppSignalType& MemoryLowSignal() { return mMemoryLowSignal; } + * @copydoc Dali::Application:::DeviceOrientationChangedSignalType() + */ + Dali::Application::DeviceOrientationChangedSignalType& DeviceOrientationChangedSignal() + { + return mDeviceOrientationChangedSignal; + } /** - * @copydoc Dali::Application::LowBatterySignal() - */ - Dali::Application::LowBatterySignalType& LowBatterySignal() { return mLowBatterySignal; } + * @copydoc Dali::Application::TaskInitSignal() + */ + Dali::Application::AppSignalType& TaskInitSignal() + { + return mTaskInitSignal; + } /** - * @copydoc Dali::Application:::LowMemorySignal() - */ - Dali::Application::LowMemorySignalType& LowMemorySignal() { return mLowMemorySignal; } + * @copydoc Dali::Application::TaskTerminateSignal() + */ + Dali::Application::AppSignalType& TaskTerminateSignal() + { + return mTaskTerminateSignal; + } -protected: + /** + * @copydoc Dali::Application::TaskAppControlSignal() + */ + Dali::Application::AppControlSignalType& TaskAppControlSignal() + { + return mTaskAppControlSignal; + } + + /** + * @copydoc Dali::Application::TaskLanguageChangedSignal() + */ + Dali::Application::AppSignalType& TaskLanguageChangedSignal() + { + return mTaskLanguageChangedSignal; + } /** + * @copydoc Dali::Application::TaskRegionChangedSignal() + */ + Dali::Application::AppSignalType& TaskRegionChangedSignal() + { + return mTaskRegionChangedSignal; + } + + /** + * @copydoc Dali::Application::TaskLowBatterySignal() + */ + Dali::Application::LowBatterySignalType& TaskLowBatterySignal() + { + return mTaskLowBatterySignal; + } + + /** + * @copydoc Dali::Application::TaskLowMemorySignal() + */ + Dali::Application::LowMemorySignalType& TaskLowMemorySignal() + { + return mTaskLowMemorySignal; + } + + /** + * @copydoc Dali::Application::TaskDeviceOrientationChangedSignal() + */ + Dali::Application::DeviceOrientationChangedSignalType& TaskDeviceOrientationChangedSignal() + { + return mTaskDeviceOrientationChangedSignal; + } + +protected: + /** * Private Constructor - * @param[in] argc A pointer to the number of arguments - * @param[in] argv A pointer to the argument list - * @param[in] stylesheet The path to user defined theme file - * @param[in] windowMode A member of Dali::Application::WINDOW_MODE - * @param[in] positionSize A position and a size of the window - * @param[in] applicationType A member of Dali::Framework::Type + * @param[in] argc A pointer to the number of arguments + * @param[in] argv A pointer to the argument list + * @param[in] stylesheet The path to user defined theme file + * @param[in] windowMode A member of Dali::Application::WINDOW_MODE + * @param[in] positionSize A position and a size of the window + * @param[in] applicationType A member of Dali::Framework::Type + * @param[in] type The default window's type. + * @param[in] useUiThread True if the application would create UI thread */ - Application( int* argc, char **argv[], const std::string& stylesheet, - WINDOW_MODE windowMode, const PositionSize& positionSize, Framework::Type applicationType ); + Application(int* argc, char** argv[], const std::string& stylesheet, WINDOW_MODE windowMode, const PositionSize& positionSize, Framework::Type applicationType, WindowType type, bool useUiThread); /** * Destructor */ - virtual ~Application(); + virtual ~Application() override; // Undefined Application(const Application&); Application& operator=(Application&); /** - * Creates the window + * Creates the default window */ void CreateWindow(); @@ -386,47 +497,58 @@ protected: */ void QuitFromMainLoop(); -private: + /** + * Changes size of preInitialized window + */ + void ChangePreInitializedWindowSize(); - AppSignalType mInitSignal; - AppSignalType mTerminateSignal; - AppSignalType mPauseSignal; - AppSignalType mResumeSignal; - AppSignalType mResetSignal; - AppSignalType mResizeSignal; - AppControlSignalType mAppControlSignal; - AppSignalType mLanguageChangedSignal; - AppSignalType mRegionChangedSignal; - AppSignalType mBatteryLowSignal; - AppSignalType mMemoryLowSignal; - LowBatterySignalType mLowBatterySignal; - LowMemorySignalType mLowMemorySignal; - - EventLoop* mEventLoop; - Framework* mFramework; - - Dali::Configuration::ContextLoss mContextLossConfiguration; - CommandLineOptions* mCommandLineOptions; - - Dali::SingletonService mSingletonService; - Dali::Internal::Adaptor::AdaptorBuilder* mAdaptorBuilder; ///< The adaptor builder +private: + AppSignalType mInitSignal; + AppSignalType mTerminateSignal; + AppSignalType mPauseSignal; + AppSignalType mResumeSignal; + AppSignalType mResetSignal; + AppControlSignalType mAppControlSignal; + AppSignalType mLanguageChangedSignal; + AppSignalType mRegionChangedSignal; + LowBatterySignalType mLowBatterySignal; + LowMemorySignalType mLowMemorySignal; + DeviceOrientationChangedSignalType mDeviceOrientationChangedSignal; + + AppSignalType mTaskInitSignal; + AppSignalType mTaskTerminateSignal; + AppControlSignalType mTaskAppControlSignal; + AppSignalType mTaskLanguageChangedSignal; + AppSignalType mTaskRegionChangedSignal; + LowBatterySignalType mTaskLowBatterySignal; + LowMemorySignalType mTaskLowMemorySignal; + DeviceOrientationChangedSignalType mTaskDeviceOrientationChangedSignal; + + EventLoop* mEventLoop; + Framework* mFramework; + + CommandLineOptions* mCommandLineOptions; + + Dali::Internal::Adaptor::AdaptorBuilder* mAdaptorBuilder; ///< The adaptor builder Dali::Adaptor* mAdaptor; // The Main Window is that window created by the Application during initial startup // (previously this was the only window) - Dali::Window mMainWindow; ///< Main Window instance - Dali::Application::WINDOW_MODE mMainWindowMode; ///< Window mode of the main window - std::string mMainWindowName; ///< Name of the main window as obtained from environment options + Dali::Window mMainWindow; ///< Main Window instance + Dali::Application::WINDOW_MODE mMainWindowMode; ///< Window mode of the main window + std::string mMainWindowName; ///< Name of the main window as obtained from environment options - std::string mStylesheet; - EnvironmentOptions mEnvironmentOptions; - PositionSize mWindowPositionSize; - Launchpad::State mLaunchpadState; - bool mUseRemoteSurface; + std::string mStylesheet; + EnvironmentOptions mEnvironmentOptions; + PositionSize mWindowPositionSize; + Launchpad::State mLaunchpadState; + bool mUseRemoteSurface; + WindowType mDefaultWindowType; ///< Default window's type. It is used when Application is created. + bool mUseUiThread; - SlotDelegate< Application > mSlotDelegate; + SlotDelegate mSlotDelegate; - static ApplicationPtr gPreInitializedApplication; + static ApplicationPtr gPreInitializedApplication; }; inline Application& GetImplementation(Dali::Application& application) @@ -447,7 +569,6 @@ inline const Application& GetImplementation(const Dali::Application& application return static_cast(handle); } - } // namespace Adaptor } // namespace Internal