TTrace enable always in tizen + Add TTrace for some DALi's API
[platform/core/uifw/dali-adaptor.git] / dali / internal / adaptor / common / application-impl.cpp
index d039770..97a23e0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 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.
 // EXTERNAL INCLUDES
 #include <dali/devel-api/common/singleton-service.h>
 #include <dali/integration-api/debug.h>
+#include <dali/integration-api/trace.h>
 #include <dali/public-api/object/object-registry.h>
 
 // INTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/accessibility-impl.h>
+#include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
 #include <dali/devel-api/adaptor-framework/style-monitor.h>
+#include <dali/devel-api/atspi-interfaces/accessible.h>
 #include <dali/devel-api/text-abstraction/font-client.h>
 #include <dali/internal/adaptor/common/adaptor-impl.h>
 #include <dali/internal/adaptor/common/framework.h>
@@ -34,6 +36,7 @@
 #include <dali/internal/window-system/common/render-surface-factory.h>
 #include <dali/internal/window-system/common/window-impl.h>
 #include <dali/internal/window-system/common/window-render-surface.h>
+#include <dali/internal/window-system/common/window-system.h>
 
 // To disable a macro with the same name from one of OpenGL headers
 #undef Status
@@ -54,6 +57,8 @@ namespace Internal
 {
 namespace Adaptor
 {
+DALI_INIT_TRACE_FILTER(gTraceFilter, DALI_TRACE_APPLICATION, true);
+
 ApplicationPtr Application::gPreInitializedApplication(NULL);
 
 ApplicationPtr Application::New(
@@ -62,9 +67,10 @@ ApplicationPtr Application::New(
   const std::string&             stylesheet,
   Dali::Application::WINDOW_MODE windowMode,
   const PositionSize&            positionSize,
-  Framework::Type                applicationType)
+  Framework::Type                applicationType,
+  WindowType                     type)
 {
-  ApplicationPtr application(new Application(argc, argv, stylesheet, windowMode, positionSize, applicationType));
+  ApplicationPtr application(new Application(argc, argv, stylesheet, windowMode, positionSize, applicationType, type));
   return application;
 }
 
@@ -74,13 +80,13 @@ void Application::PreInitialize(int* argc, char** argv[])
   {
     Dali::TextAbstraction::FontClientPreInitialize();
 
-    gPreInitializedApplication = new Application(argc, argv, "", Dali::Application::OPAQUE, PositionSize(), Framework::NORMAL);
+    gPreInitializedApplication = new Application(argc, argv, "", Dali::Application::OPAQUE, PositionSize(), Framework::NORMAL, WindowType::NORMAL);
     gPreInitializedApplication->CreateWindow(); // Only create window
     gPreInitializedApplication->mLaunchpadState = Launchpad::PRE_INITIALIZED;
   }
 }
 
-Application::Application(int* argc, char** argv[], const std::string& stylesheet, Dali::Application::WINDOW_MODE windowMode, const PositionSize& positionSize, Framework::Type applicationType)
+Application::Application(int* argc, char** argv[], const std::string& stylesheet, Dali::Application::WINDOW_MODE windowMode, const PositionSize& positionSize, Framework::Type applicationType, WindowType type)
 : mInitSignal(),
   mTerminateSignal(),
   mPauseSignal(),
@@ -101,6 +107,7 @@ Application::Application(int* argc, char** argv[], const std::string& stylesheet
   mEnvironmentOptions(),
   mWindowPositionSize(positionSize),
   mLaunchpadState(Launchpad::NONE),
+  mDefaultWindowType(type),
   mSlotDelegate(this)
 {
   // Get mName from environment options
@@ -132,6 +139,43 @@ Application::~Application()
   delete mFramework;
 }
 
+void Application::StoreWindowPositionSize(PositionSize positionSize)
+{
+  mWindowPositionSize = positionSize;
+}
+
+void Application::ChangePreInitializedWindowSize()
+{
+  int screenWidth, screenHeight;
+  Dali::Internal::Adaptor::WindowSystem::GetScreenSize(screenWidth, screenHeight);
+
+  if(mWindowPositionSize != PositionSize(0, 0, 0, 0))
+  {
+    Dali::DevelWindow::SetPositionSize(mMainWindow, mWindowPositionSize);
+  }
+  else if(mCommandLineOptions->stageWidth > 0 && mCommandLineOptions->stageHeight > 0)
+  {
+    // Command line options override environment options and full screen
+    mWindowPositionSize.width  = mCommandLineOptions->stageWidth;
+    mWindowPositionSize.height = mCommandLineOptions->stageHeight;
+    mMainWindow.SetSize(Dali::Window::WindowSize(mWindowPositionSize.width, mWindowPositionSize.height));
+  }
+  else if(mEnvironmentOptions.GetWindowWidth() && mEnvironmentOptions.GetWindowHeight())
+  {
+    // Environment options override full screen functionality if command line arguments not provided
+    mWindowPositionSize.width  = mEnvironmentOptions.GetWindowWidth();
+    mWindowPositionSize.height = mEnvironmentOptions.GetWindowHeight();
+    mMainWindow.SetSize(Dali::Window::WindowSize(mWindowPositionSize.width, mWindowPositionSize.height));
+  }
+  else if(screenWidth != mWindowPositionSize.width || screenHeight != mWindowPositionSize.height)
+  {
+    //Some apps can receive screen size differently after launching by specifying size in manifest.
+    mWindowPositionSize.width  = screenWidth;
+    mWindowPositionSize.height = screenHeight;
+    mMainWindow.SetSize(Dali::Window::WindowSize(mWindowPositionSize.width, mWindowPositionSize.height));
+  }
+}
+
 void Application::CreateWindow()
 {
   if(mWindowPositionSize.width == 0 && mWindowPositionSize.height == 0)
@@ -152,7 +196,7 @@ void Application::CreateWindow()
 
   const std::string& windowClassName = mEnvironmentOptions.GetWindowClassName();
 
-  Internal::Adaptor::Window* window = Internal::Adaptor::Window::New(mWindowPositionSize, mMainWindowName, windowClassName, mMainWindowMode == Dali::Application::TRANSPARENT);
+  Internal::Adaptor::Window* window = Internal::Adaptor::Window::New(mWindowPositionSize, mMainWindowName, windowClassName, mDefaultWindowType, mMainWindowMode == Dali::Application::TRANSPARENT);
   mMainWindow                       = Dali::Window(window);
 
   // Quit the application when the window is closed
@@ -219,8 +263,15 @@ void Application::OnInit()
 
   CreateAdaptor();
 
+  if(mLaunchpadState == Launchpad::PRE_INITIALIZED)
+  {
+    ChangePreInitializedWindowSize();
+  }
+
   // Run the adaptor
+  DALI_TRACE_BEGIN(gTraceFilter, "DALI_APP_ADAPTOR_START");
   mAdaptor->Start();
+  DALI_TRACE_END(gTraceFilter, "DALI_APP_ADAPTOR_START");
   Accessibility::Accessible::SetObjectRegistry(mAdaptor->GetObjectRegistry());
 
   if(!mStylesheet.empty())
@@ -239,7 +290,10 @@ void Application::OnInit()
   LanguageChangedSignal().Connect(&GetImplementation(lifecycleController), &LifecycleController::OnLanguageChanged);
 
   Dali::Application application(this);
+
+  DALI_TRACE_BEGIN(gTraceFilter, "DALI_APP_EMIT_INIT_SIGNAL");
   mInitSignal.Emit(application);
+  DALI_TRACE_END(gTraceFilter, "DALI_APP_EMIT_INIT_SIGNAL");
 
   mAdaptor->NotifySceneCreated();
 }
@@ -402,15 +456,19 @@ void Application::SetCommandLineOptions(int* argc, char** argv[])
   mFramework->SetCommandLineOptions(argc, argv);
 }
 
-ApplicationPtr Application::GetPreInitializedApplication()
+void Application::SetDefaultWindowType(WindowType type)
 {
-  return gPreInitializedApplication;
+  mDefaultWindowType = type;
+  mMainWindow.SetType(type);
 }
 
-Graphics::Controller& Application::GetController()
+ApplicationPtr Application::GetPreInitializedApplication()
 {
-  auto& adaptor = Internal::Adaptor::Adaptor::GetImplementation(*mAdaptor);
-  return adaptor.GetGraphicsInterface().GetController();
+  // Reset the handle to decrease the reference count
+  ApplicationPtr application = gPreInitializedApplication;
+  gPreInitializedApplication.Reset();
+
+  return application;
 }
 
 } // namespace Adaptor