#define DALI_INTERNAL_ADAPTOR_IMPL_H
/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 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.
*/
// EXTERNAL INCLUDES
+#include <dali/devel-api/threading/mutex.h>
#include <dali/integration-api/render-controller.h>
+#include <dali/public-api/adaptor-framework/timer.h>
#include <dali/public-api/common/vector-wrapper.h>
#include <dali/public-api/math/rect.h>
#include <dali/public-api/math/uint-16-pair.h>
#include <dali/public-api/signals/callback.h>
// INTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/clipboard.h>
#include <dali/integration-api/adaptor-framework/adaptor.h>
#include <dali/integration-api/adaptor-framework/scene-holder-impl.h>
#include <dali/integration-api/adaptor-framework/trigger-event-factory.h>
{
class RenderSurfaceInterface;
-namespace Accessibility
-{
-class Bridge;
-}
-
namespace Integration
{
class Core;
public:
using AdaptorSignalType = Dali::Adaptor::AdaptorSignalType;
using WindowCreatedSignalType = Dali::Adaptor::WindowCreatedSignalType;
+ using LocaleChangedSignalType = Dali::Adaptor::LocaleChangedSignalType;
using SurfaceSize = Uint16Pair; ///< Surface size type
*/
void SceneCreated();
+ /**
+ * Get the application package name
+ */
static std::string GetApplicationPackageName();
public: // AdaptorInternalServices implementation
/**
* @copydoc Dali::Adaptor::AddIdle()
*/
- virtual bool AddIdle(CallbackBase* callback, bool hasReturnValue, bool forceAdd);
+ virtual bool AddIdle(CallbackBase* callback, bool hasReturnValue);
/**
* Adds a new Window instance to the Adaptor
void SurfaceResizeComplete(Dali::RenderSurfaceInterface* surface, SurfaceSize surfaceSize);
/**
+ * @brief Increase surface resize completed counter.
+ * This API will be ignored if thread controller is not exist.
+ */
+ void IncreaseSurfaceResizeCounter();
+
+ /**
* Sets layout direction of root by system language
* @param[in] locale System locale
*/
const LogFactoryInterface& GetLogFactory();
/**
+ * @copydoc Dali::Adaptor::GetTraceFactory
+ */
+ const TraceFactoryInterface& GetTraceFactory();
+
+ /**
* @copydoc Dali::Adaptor::RegisterProcessor
*/
void RegisterProcessor(Integration::Processor& processor, bool postProcessor);
*/
bool IsMultipleWindowSupported() const;
+ /**
+ * @brief Gets the render thread id of DALi.
+ * @note If render thread id getter doesn't supported, it will return 0 as default.
+ * @return The render thread id.
+ */
+ int32_t GetRenderThreadId() const;
+
public: //AdaptorInternalServices
/**
* @copydoc Dali::Internal::Adaptor::AdaptorInternalServices::GetPlatformAbstractionInterface()
*/
void GetWindowContainerInterface(WindowContainer& windows) override;
+ /**
+ * copydoc Dali::Internal::Adaptor::AdaptorInternalServices::GetTextureUploadManager()
+ */
+ Devel::TextureUploadManager& GetTextureUploadManager() override;
+
+ /**
+ * @brief Get the configuration manager
+ * @return The configuration manager, or null if it hasn't been created yet
+ */
+ const ConfigurationManager* GetConfigurationManager() const
+ {
+ return mConfigurationManager.get();
+ }
+
public: // Signals
/**
* @copydoc Dali::Adaptor::SignalResized
return mWindowCreatedSignal;
}
+ /**
+ * @copydoc Dali::Adaptor::LocaleChangedSignal
+ */
+ LocaleChangedSignalType& LocaleChangedSignal()
+ {
+ return mLocaleChangedSignal;
+ }
+
public: // From Dali::Internal::Adaptor::CoreEventInterface
/**
- * @copydoc Dali::Internal::Adaptor:CoreEventInterface:::ProcessCoreEvents()
+ * @copydoc Dali::Internal::Adaptor::CoreEventInterface:::FlushUpdateMessages()
+ */
+ void FlushUpdateMessages() override;
+
+ /**
+ * @copydoc Dali::Internal::Adaptor::CoreEventInterface:::ProcessCoreEvents()
*/
void ProcessCoreEvents() override;
*/
void QueueCoreEvent(const Dali::Integration::Event& event) override;
-private: // From Dali::Integration::RenderController
+public: // From Dali::Integration::RenderController
/**
* @copydoc Dali::Integration::RenderController::RequestUpdate()
*/
- void RequestUpdate(bool forceUpdate) override;
+ void RequestUpdate() override;
/**
* @copydoc Dali::Integration::RenderController::RequestProcessEventsOnIdle()
*/
- void RequestProcessEventsOnIdle(bool forceProcess) override;
+ void RequestProcessEventsOnIdle() override;
public: // From Dali::Internal::Adaptor::WindowVisibilityObserver
/**
void SetupSystemInformation();
/**
+ * Remove system information if needs
+ */
+ void RemoveSystemInformation();
+
+ /**
* Adds a callback to be run when entering an idle state.
*
* A callback of the following type should be used:
* @endcode
* This callback will be called repeatedly as long as it returns true. A return of 0 deletes this callback.
*/
- bool AddIdleEnterer(CallbackBase* callback, bool forceAdd);
+ bool AddIdleEnterer(CallbackBase* callback);
/**
* Removes a previously added the idle enterer callback.
*/
void RemoveIdleEnterer(CallbackBase* callback);
+ /**
+ * Trigger to log the memory pools from Core and Adaptor
+ */
+ bool MemoryPoolTimeout();
+
private:
/**
* Constructor
AdaptorSignalType mResizedSignal; ///< Resized signal.
AdaptorSignalType mLanguageChangedSignal; ///< Language changed signal.
WindowCreatedSignalType mWindowCreatedSignal; ///< Window created signal.
+ LocaleChangedSignalType mLocaleChangedSignal; ///< Locale changed signal.
Dali::Adaptor& mAdaptor; ///< Reference to public adaptor instance.
State mState; ///< Current state of the adaptor
TizenPlatform::TizenPlatformAbstraction* mPlatformAbstraction; ///< Platform abstraction
- CallbackManager* mCallbackManager; ///< Used to install callbacks
- bool mNotificationOnIdleInstalled; ///< whether the idle handler is installed to send an notification event
- TriggerEventInterface* mNotificationTrigger; ///< Notification event trigger
- FeedbackPluginProxy* mDaliFeedbackPlugin; ///< Used to access feedback support
- FeedbackController* mFeedbackController; ///< Plays feedback effects for Dali-Toolkit UI Controls.
- Dali::TtsPlayer mTtsPlayers[Dali::TtsPlayer::MODE_NUM]; ///< Provides TTS support
- ObserverContainer mObservers; ///< A list of adaptor observer pointers
- EnvironmentOptions* mEnvironmentOptions; ///< environment options
- PerformanceInterface* mPerformanceInterface; ///< Performance interface
- KernelTrace mKernelTracer; ///< Kernel tracer
- SystemTrace mSystemTracer; ///< System tracer
- ObjectProfiler* mObjectProfiler; ///< Tracks object lifetime for profiling
- SocketFactory mSocketFactory; ///< Socket factory
- ThreadMode mThreadMode; ///< The thread mode
- const bool mEnvironmentOptionsOwned : 1; ///< Whether we own the EnvironmentOptions (and thus, need to delete it)
- bool mUseRemoteSurface : 1; ///< whether the remoteSurface is used or not
- Dali::LayoutDirection::Type mRootLayoutDirection; ///< LayoutDirection of window
+ std::unique_ptr<CallbackManager> mCallbackManager; ///< Used to install callbacks
+ bool mNotificationOnIdleInstalled; ///< whether the idle handler is installed to send an notification event
+ bool mRequiredIdleRepeat; ///< whether we need to repeat installed notification event in idle handler
+ TriggerEventInterface* mNotificationTrigger; ///< Notification event trigger
+ FeedbackPluginProxy* mDaliFeedbackPlugin; ///< Used to access feedback support
+ FeedbackController* mFeedbackController; ///< Plays feedback effects for Dali-Toolkit UI Controls.
+ Dali::TtsPlayer mTtsPlayers[Dali::TtsPlayer::MODE_NUM]; ///< Provides TTS support
+ ObserverContainer mObservers; ///< A list of adaptor observer pointers
+ EnvironmentOptions* mEnvironmentOptions; ///< environment options
+ PerformanceInterface* mPerformanceInterface; ///< Performance interface
+ KernelTrace mKernelTracer; ///< Kernel tracer
+ SystemTrace mSystemTracer; ///< System tracer
+ Devel::TextureUploadManager mTextureUploadManager; ///< TextureUploadManager
+ ObjectProfiler* mObjectProfiler; ///< Tracks object lifetime for profiling
+ Dali::Timer mMemoryPoolTimer; ///< Logs memory pool capacity
+ SlotDelegate<Adaptor> mMemoryPoolTimerSlotDelegate;
+ SocketFactory mSocketFactory; ///< Socket factory
+ Mutex mMutex; ///< Mutex
+ ThreadMode mThreadMode; ///< The thread mode
+ const bool mEnvironmentOptionsOwned : 1; ///< Whether we own the EnvironmentOptions (and thus, need to delete it)
+ bool mUseRemoteSurface : 1; ///< whether the remoteSurface is used or not
+ Dali::LayoutDirection::Type mRootLayoutDirection; ///< LayoutDirection of window
std::unique_ptr<Integration::AddOnManager> mAddOnManager; ///< Pointer to the addon manager
- class AccessibilityObserver : public ConnectionTracker
- {
- public:
- void OnAccessibleKeyEvent(const Dali::KeyEvent& event);
- };
- AccessibilityObserver accessibilityObserver;
-
public:
inline static Adaptor& GetImplementation(Dali::Adaptor& adaptor)
{