Merge branch 'devel/master' into tizen
authorjmm <j0064423.lee@samsung.com>
Mon, 18 Dec 2023 06:38:51 +0000 (15:38 +0900)
committerjmm <j0064423.lee@samsung.com>
Mon, 18 Dec 2023 06:38:51 +0000 (15:38 +0900)
Change-Id: I3de19552620126948da4dd3a035fa961f1e3f83a

24 files changed:
dali/devel-api/adaptor-framework/window-system-devel.cpp
dali/devel-api/adaptor-framework/window-system-devel.h
dali/integration-api/adaptor-framework/scene-holder-impl.cpp
dali/integration-api/adaptor-framework/scene-holder-impl.h
dali/integration-api/adaptor-framework/scene-holder.cpp
dali/integration-api/adaptor-framework/scene-holder.h
dali/internal/adaptor/common/adaptor-impl.cpp
dali/internal/adaptor/common/adaptor-impl.h
dali/internal/adaptor/common/combined-update-render-controller.cpp
dali/internal/adaptor/common/combined-update-render-controller.h
dali/internal/drag-and-drop/tizen-wayland/drag-and-drop-impl-ecore-wl2.cpp
dali/internal/graphics/gles-impl/gles-context.cpp
dali/internal/window-system/android/window-system-android.cpp
dali/internal/window-system/common/window-impl.cpp
dali/internal/window-system/common/window-system.h
dali/internal/window-system/macos/window-system-mac.mm
dali/internal/window-system/tizen-wayland/ecore-wl/window-system-ecore-wl.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-system-ecore-wl2.cpp
dali/internal/window-system/ubuntu-x11/window-system-ecore-x.cpp
dali/internal/window-system/windows/window-system-win.cpp
dali/internal/window-system/x11/window-system-x.cpp
dali/public-api/dali-adaptor-version.cpp
packaging/dali-adaptor.spec

index 91dea15..291edb7 100644 (file)
@@ -28,6 +28,16 @@ void GetScreenSize(int32_t& width, int32_t& height)
   Dali::Internal::Adaptor::WindowSystem::GetScreenSize(width, height);
 }
 
+void SetGeometryHittestEnabled(bool enabled)
+{
+  Dali::Internal::Adaptor::WindowSystem::SetGeometryHittestEnabled(enabled);
+}
+
+bool IsGeometryHittestEnabled()
+{
+  return Dali::Internal::Adaptor::WindowSystem::IsGeometryHittestEnabled();
+}
+
 } // namespace DevelWindowSystem
 
 } // namespace Dali
index fc8dc8f..4070acc 100644 (file)
 
 namespace Dali
 {
-
 namespace DevelWindowSystem
 {
-
 /**
  * @brief Get the screen size.
  *
@@ -40,6 +38,20 @@ namespace DevelWindowSystem
  */
 DALI_ADAPTOR_API void GetScreenSize(int32_t& width, int32_t& height);
 
+/**
+ * @brief Sets the processes using geometry event propagation touch and hover events.
+ *
+ * @param[in] enabled True if the processes using geometry event propagation touch and hover events.
+ */
+DALI_ADAPTOR_API void SetGeometryHittestEnabled(bool enabled);
+
+/**
+ * @brief Queries whether the scene using geometry event propagation touch and hover events.
+ *
+ * @return True if the scene using geometry event propagation touch and hover events.
+ */
+DALI_ADAPTOR_API bool IsGeometryHittestEnabled();
+
 } // namespace DevelWindowSystem
 
 } // namespace Dali
index 6d281f6..5b82cc7 100644 (file)
@@ -264,6 +264,9 @@ void SceneHolder::SetAdaptor(Dali::Adaptor& adaptor)
   CreateRenderTarget();
 
   OnAdaptorSet(adaptor);
+
+  // Scene is newly created. Let we increase resize counter
+  mAdaptor->IncreaseSurfaceResizeCounter();
 }
 
 void SceneHolder::CreateRenderTarget()
@@ -423,6 +426,16 @@ void SceneHolder::FeedHoverEvent(Dali::Integration::Point& point)
   mAdaptor->ProcessCoreEvents();
 }
 
+void SceneHolder::SetGeometryHittestEnabled(bool enabled)
+{
+  mScene.SetGeometryHittestEnabled(enabled);
+}
+
+bool SceneHolder::IsGeometryHittestEnabled()
+{
+  return mScene.IsGeometryHittestEnabled();
+}
+
 void SceneHolder::AddFrameRenderedCallback(std::unique_ptr<CallbackBase> callback, int32_t frameId)
 {
   mScene.AddFrameRenderedCallback(std::move(callback), frameId);
index 21c3c02..a0eafa8 100644 (file)
@@ -211,6 +211,16 @@ public:
   void FeedHoverEvent(Dali::Integration::Point& point);
 
   /**
+   * @copydoc Dali::Integration::SceneHolder::SetGeometryHittestEnabled
+   */
+  void SetGeometryHittestEnabled(bool enabled);
+
+  /**
+   * @copydoc Dali::Integration::SceneHolder::IsGeometryHittestEnabled
+   */
+  bool IsGeometryHittestEnabled();
+
+  /**
    * @brief Adds a callback that is called when the frame rendering is done by the graphics driver.
    *
    * @param[in] callback The function to call
index 2cf8584..860169a 100644 (file)
@@ -108,6 +108,16 @@ void SceneHolder::FeedHoverEvent(Dali::TouchPoint& point)
   GetImplementation(*this).FeedHoverEvent(convertedPoint);
 }
 
+void SceneHolder::SetGeometryHittestEnabled(bool enabled)
+{
+  GetImplementation(*this).SetGeometryHittestEnabled(enabled);
+}
+
+bool SceneHolder::IsGeometryHittestEnabled()
+{
+  return GetImplementation(*this).IsGeometryHittestEnabled();
+}
+
 RenderTaskList SceneHolder::GetRenderTaskList()
 {
   return GetImplementation(*this).GetRenderTaskList();
index fd4f4f6..5f3fc21 100644 (file)
@@ -180,6 +180,20 @@ public:
   void FeedHoverEvent(Dali::TouchPoint& point);
 
   /**
+   * @brief Sets whether the processes using geometry event propagation touch and hover events.
+   *
+   * @param[in] enabled True if the processes using geometry event propagation touch and hover events.
+   */
+  void SetGeometryHittestEnabled(bool enabled);
+
+  /**
+   * @brief Queries whether the scene using geometry event propagation touch and hover events.
+   *
+   * @return True if the scene using geometry event propagation touch and hover events.
+   */
+  bool IsGeometryHittestEnabled();
+
+  /**
    * @brief Retrieves the list of render-tasks.
    * @return A valid handle to a RenderTaskList
    */
index 6001eb6..a3592eb 100644 (file)
@@ -1109,6 +1109,15 @@ void Adaptor::SurfaceResizeComplete(Dali::RenderSurfaceInterface* surface, Surfa
   ProcessCoreEvents();
 }
 
+void Adaptor::IncreaseSurfaceResizeCounter()
+{
+  // Nofify surface resizing before flushing event queue
+  if(mThreadController)
+  {
+    mThreadController->ResizeSurface();
+  }
+}
+
 void Adaptor::NotifySceneCreated()
 {
   GetCore().SceneCreated();
index 98d1dbc..20b93a8 100644 (file)
@@ -428,6 +428,12 @@ public:
   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
    */
index a6ffa3b..b9598cc 100644 (file)
@@ -607,7 +607,7 @@ void CombinedUpdateRenderController::UpdateRenderThread()
         auto numberOfPrecompiledShader = precompiledShader->shaderCount;
         for(int i = 0; i < numberOfPrecompiledShader; ++i)
         {
-          auto vertexShader  graphics.GetController().GetGlAbstraction().GetVertexShaderPrefix() + std::string(precompiledShader->vertexPrefix[i].data()) + std::string(precompiledShader->vertexShader.data());
+          auto vertexShader   = graphics.GetController().GetGlAbstraction().GetVertexShaderPrefix() + std::string(precompiledShader->vertexPrefix[i].data()) + std::string(precompiledShader->vertexShader.data());
           auto fragmentShader = graphics.GetController().GetGlAbstraction().GetFragmentShaderPrefix() + std::string(precompiledShader->fragmentPrefix[i].data()) + std::string(precompiledShader->fragmentShader.data());
           PreCompileShader(std::move(vertexShader), std::move(fragmentShader));
         }
@@ -798,7 +798,7 @@ void CombinedUpdateRenderController::UpdateRenderThread()
           TRACE_UPDATE_RENDER_SCOPE("DALI_RENDER_SCENE");
           Integration::RenderStatus windowRenderStatus;
 
-          const bool sceneSurfaceResized = scene.IsSurfaceRectChanged();
+          const uint32_t sceneSurfaceResized = scene.GetSurfaceRectChangedCount();
 
           // clear previous frame damaged render items rects, buffer history is tracked on surface level
           mDamagedRects.clear();
@@ -812,7 +812,7 @@ void CombinedUpdateRenderController::UpdateRenderThread()
           Rect<int> clippingRect; // Empty for fbo rendering
 
           // Switch to the context of the surface, merge damaged areas for previous frames
-          windowSurface->PreRender(sceneSurfaceResized, mDamagedRects, clippingRect); // Switch GL context
+          windowSurface->PreRender(sceneSurfaceResized > 0u, mDamagedRects, clippingRect); // Switch GL context
 
           // Render the surface
           mCore.RenderScene(windowRenderStatus, scene, false, clippingRect);
@@ -820,9 +820,9 @@ void CombinedUpdateRenderController::UpdateRenderThread()
           // Buffer swapping now happens when the surface render target is presented.
 
           // If surface is resized, the surface resized count is decreased.
-          if(DALI_UNLIKELY(sceneSurfaceResized))
+          if(DALI_UNLIKELY(sceneSurfaceResized > 0u))
           {
-            SurfaceResized();
+            SurfaceResized(sceneSurfaceResized);
           }
         }
       }
@@ -1030,12 +1030,17 @@ void CombinedUpdateRenderController::SurfaceDeleted()
   mSurfaceSemaphore.Release(1);
 }
 
-void CombinedUpdateRenderController::SurfaceResized()
+void CombinedUpdateRenderController::SurfaceResized(uint32_t resizedCount)
 {
   ConditionalWait::ScopedLock lock(mUpdateRenderThreadWaitCondition);
-  if(mSurfaceResized)
+
+  if(mSurfaceResized >= resizedCount)
+  {
+    mSurfaceResized -= resizedCount;
+  }
+  else
   {
-    mSurfaceResized--;
+    mSurfaceResized = 0u;
   }
 }
 
index 8ca10f8..8c7bea3 100644 (file)
@@ -43,7 +43,6 @@ class TriggerEventInterface;
 
 namespace Internal
 {
-
 namespace Adaptor
 {
 class AdaptorInternalServices;
@@ -271,8 +270,9 @@ private:
    * Called by the Update/Render thread after a surface has been resized.
    *
    * This will lock the mutex in mEventThreadWaitCondition
+   * @param[in] resizedCount The number of resized count for given surface.
    */
-  void SurfaceResized();
+  void SurfaceResized(uint32_t resizedCount);
 
   /**
    * PreCompile shaders for launching time
@@ -391,7 +391,7 @@ private:
                                                      ///< Ensures we do not go to sleep if we have not processed the most recent update-request.
 
   volatile unsigned int mUseElapsedTimeAfterWait; ///< Whether we should use the elapsed time after waiting (set by the event-thread, read by the update-render-thread).
-  volatile unsigned int mIsPreCompileCancelled;      ///< Whether we need to do precompile shader.
+  volatile unsigned int mIsPreCompileCancelled;   ///< Whether we need to do precompile shader.
 
   Dali::RenderSurfaceInterface* volatile mNewSurface;     ///< Will be set to the new-surface if requested (set by the event-thread, read & cleared by the update-render thread).
   Dali::RenderSurfaceInterface* volatile mDeletedSurface; ///< Will be set to the deleted surface if requested (set by the event-thread, read & cleared by the update-render thread).
index 1771ccb..d826105 100644 (file)
@@ -511,6 +511,8 @@ bool DragAndDropEcoreWl::CalculateDragEvent(void* event)
   Ecore_Wl2_Event_Dnd_Motion* ev = reinterpret_cast<Ecore_Wl2_Event_Dnd_Motion*>(event);
 
   Dali::DragAndDrop::DragEvent dragEvent;
+  dragEvent.SetMimeType((const char*)eina_array_data_get(ecore_wl2_offer_mimes_get(ev->offer), 0));
+
   Dali::Vector2                curPosition(ev->x, ev->y);
 
   for(std::size_t i = 0; i < mDropTargets.size(); i++)
index b61c6fc..e7379fb 100644 (file)
@@ -63,8 +63,15 @@ struct Context::Impl
       hash ^= std::hash<uint32_t>{}(attr.location);
     }
 
-    auto& gl   = *mController.GetGL();
-    auto  iter = mProgramVAOMap.find(program);
+    auto& gl = *mController.GetGL();
+
+    if(DALI_UNLIKELY(!mDiscardedVAOList.empty()))
+    {
+      gl.DeleteVertexArrays(static_cast<Dali::GLsizei>(mDiscardedVAOList.size()), mDiscardedVAOList.data());
+      mDiscardedVAOList.clear();
+    }
+
+    auto iter = mProgramVAOMap.find(program);
     if(iter != mProgramVAOMap.end())
     {
       auto attributeIter = iter->second.find(hash);
@@ -232,6 +239,7 @@ struct Context::Impl
   std::unordered_map<const GLES::ProgramImpl*, std::map<std::size_t, uint32_t>> mProgramVAOMap;              ///< GL program-VAO map
   uint32_t                                                                      mProgramVAOCurrentState{0u}; ///< Currently bound VAO
   GLStateCache                                                                  mGlStateCache{};             ///< GL status cache
+  std::vector<Dali::GLuint>                                                     mDiscardedVAOList{};
 
   bool mGlContextCreated{false};    ///< True if the OpenGL context has been created
   bool mVertexBuffersChanged{true}; ///< True if BindVertexBuffers changed any buffer bindings
@@ -1166,12 +1174,18 @@ void Context::InvalidateCachedPipeline(GLES::Pipeline* pipeline)
           for(auto& attributeHashPair : iter->second)
           {
             auto vao = attributeHashPair.second;
-            gl->DeleteVertexArrays(1, &vao);
+
+            // Do not delete vao now. (Since Context might not be current.)
+            mImpl->mDiscardedVAOList.emplace_back(vao);
             if(mImpl->mProgramVAOCurrentState == vao)
             {
               mImpl->mProgramVAOCurrentState = 0u;
             }
           }
+
+          // Clear cached Vertex buffer.
+          mImpl->mCurrentVertexBufferBindings.clear();
+
           mImpl->mProgramVAOMap.erase(iter);
         }
       }
index 77721c1..d28d761 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 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.
@@ -20,7 +20,9 @@
 #include <dali/internal/window-system/common/window-system.h>
 
 // EXTERNAL_HEADERS
+#include <dali/integration-api/adaptor-framework/adaptor.h>
 #include <dali/integration-api/adaptor-framework/android/android-framework.h>
+#include <dali/integration-api/adaptor-framework/scene-holder.h>
 #include <dali/integration-api/debug.h>
 
 namespace Dali
@@ -31,6 +33,11 @@ namespace Adaptor
 {
 namespace WindowSystem
 {
+namespace
+{
+static bool gGeometryHittest = false;
+}
+
 void Initialize()
 {
 }
@@ -81,6 +88,28 @@ bool GetKeyboardVerticalRepeatInfo(float& rate, float& delay)
   return false;
 }
 
+void SetGeometryHittestEnabled(bool enable)
+{
+  DALI_LOG_RELEASE_INFO("GeometryHittest : %d \n", enable);
+  gGeometryHittest = enable;
+  if(gGeometryHittest)
+  {
+    Dali::SceneHolderList sceneHolders = Dali::Adaptor::Get().GetSceneHolders();
+    for(auto iter = sceneHolders.begin(); iter != sceneHolders.end(); ++iter)
+    {
+      if(*iter)
+      {
+        (*iter).SetGeometryHittestEnabled(enable);
+      }
+    }
+  }
+}
+
+bool IsGeometryHittestEnabled()
+{
+  return gGeometryHittest;
+}
+
 } // namespace WindowSystem
 
 } // namespace Adaptor
index 7c6ebfc..5ba1cf4 100644 (file)
@@ -65,8 +65,8 @@ Window* Window::New(const std::string& name, const std::string& className, const
 
 Window* Window::New(Any surface, const std::string& name, const std::string& className, const WindowData& windowData)
 {
-  Window* window         = new Window();
-  window->mIsTransparent = windowData.GetTransparency();
+  Window* window                  = new Window();
+  window->mIsTransparent          = windowData.GetTransparency();
   window->mIsFrontBufferRendering = windowData.GetFrontBufferRendering();
   window->Initialize(surface, windowData.GetPositionSize(), name, className, windowData.GetWindowType());
   return window;
@@ -254,6 +254,12 @@ void Window::OnAdaptorSet(Dali::Adaptor& adaptor)
     OnAccessibilityDisabled();
   }
 
+  if(mScene)
+  {
+    bool isGeometry = Dali::Internal::Adaptor::WindowSystem::IsGeometryHittestEnabled();
+    mScene.SetGeometryHittestEnabled(isGeometry);
+  }
+
   // If you call the 'Show' before creating the adaptor, the application cannot know the app resource id.
   // The show must be called after the adaptor is initialized.
   Show();
index 0c05922..a1a10d6 100644 (file)
@@ -99,6 +99,20 @@ bool SetKeyboardVerticalRepeatInfo(float rate, float delay);
  */
 bool GetKeyboardVerticalRepeatInfo(float& rate, float& delay);
 
+/**
+ * @brief Sets whether the processes using geometry event propagation touch and hover events.
+ *
+ * @param[in] enabled True if the processes using geometry event propagation touch and hover events.
+ */
+void SetGeometryHittestEnabled(bool enabled);
+
+/**
+ * @brief Queries whether the scene using geometry event propagation touch and hover events.
+ *
+ * @return True if the scene using geometry event propagation touch and hover events.
+ */
+bool IsGeometryHittestEnabled();
+
 } // namespace WindowSystem
 
 /**
index 545f58c..f5e4acf 100644 (file)
 // INTERNAL HEADERS
 #include <dali/internal/window-system/common/window-system.h>
 
+// EXTERNAL_HEADERS
+#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/adaptor-framework/scene-holder.h>
+#include <dali/integration-api/debug.h>
+
 namespace Dali::Internal::Adaptor::WindowSystem
 {
+namespace
+{
+static bool gGeometryHittest = false;
+} // unnamed namespace
 
 void Initialize()
 {
@@ -72,5 +81,26 @@ bool GetKeyboardVerticalRepeatInfo(float& rate, float& delay)
   return false;
 }
 
-} // namespace Dali::Internal::Adaptor::WindowSystem
+void SetGeometryHittestEnabled(bool enable)
+{
+  DALI_LOG_RELEASE_INFO("GeometryHittest : %d \n", enable);
+  gGeometryHittest = enable;
+  if(gGeometryHittest)
+  {
+    Dali::SceneHolderList sceneHolders = Dali::Adaptor::Get().GetSceneHolders();
+    for(auto iter = sceneHolders.begin(); iter != sceneHolders.end(); ++iter)
+    {
+      if(*iter)
+      {
+        (*iter).SetGeometryHittestEnabled(enable);
+      }
+    }
+  }
+}
 
+bool IsGeometryHittestEnabled()
+{
+  return gGeometryHittest;
+}
+
+} // namespace Dali::Internal::Adaptor::WindowSystem
index 8a341b0..f99132d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 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.
@@ -20,6 +20,9 @@
 
 // EXTERNAL_HEADERS
 #include <Ecore_Wayland.h>
+#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/adaptor-framework/scene-holder.h>
+#include <dali/integration-api/debug.h>
 
 namespace Dali
 {
@@ -29,6 +32,11 @@ namespace Adaptor
 {
 namespace WindowSystem
 {
+namespace
+{
+static bool gGeometryHittest = false;
+} // unnamed namespace
+
 void Initialize()
 {
   ecore_wl_init(NULL);
@@ -83,6 +91,28 @@ bool GetKeyboardVerticalRepeatInfo(float& rate, float& delay)
   return false;
 }
 
+void SetGeometryHittestEnabled(bool enable)
+{
+  DALI_LOG_RELEASE_INFO("GeometryHittest : %d \n", enable);
+  gGeometryHittest = enable;
+  if(gGeometryHittest)
+  {
+    Dali::SceneHolderList sceneHolders = Dali::Adaptor::Get().GetSceneHolders();
+    for(auto iter = sceneHolders.begin(); iter != sceneHolders.end(); ++iter)
+    {
+      if(*iter)
+      {
+        (*iter).SetGeometryHittestEnabled(enable);
+      }
+    }
+  }
+}
+
+bool IsGeometryHittestEnabled()
+{
+  return gGeometryHittest;
+}
+
 } // namespace WindowSystem
 
 } // namespace Adaptor
index bf6d748..2800176 100644 (file)
@@ -1105,10 +1105,12 @@ Eina_Bool WindowBaseEcoreWl2::OnIconifyStateChanged(void* data, int type, void*
   {
     if(iconifyChangedEvent->iconified == EINA_TRUE)
     {
+      DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnIconifyStateChanged, the window (%p) is iconified\n", mEcoreWindow);
       mIconifyChangedSignal.Emit(true);
     }
     else
     {
+      DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnIconifyStateChanged, the window (%p) is not iconified\n", mEcoreWindow);
       mIconifyChangedSignal.Emit(false);
     }
     handled = ECORE_CALLBACK_DONE;
@@ -1123,7 +1125,7 @@ Eina_Bool WindowBaseEcoreWl2::OnFocusIn(void* data, int type, void* event)
 
   if(focusInEvent->window == static_cast<unsigned int>(ecore_wl2_window_id_get(mEcoreWindow)))
   {
-    DALI_LOG_INFO(gWindowBaseLogFilter, Debug::General, "Window EcoreEventWindowFocusIn\n");
+    DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnFocusIn, Window (%p) EcoreEventWindowFocusIn\n", mEcoreWindow);
 
     mFocusChangedSignal.Emit(true);
   }
@@ -1137,7 +1139,7 @@ Eina_Bool WindowBaseEcoreWl2::OnFocusOut(void* data, int type, void* event)
 
   if(focusOutEvent->window == static_cast<unsigned int>(ecore_wl2_window_id_get(mEcoreWindow)))
   {
-    DALI_LOG_INFO(gWindowBaseLogFilter, Debug::General, "Window EcoreEventWindowFocusOut\n");
+    DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnFocusOut, Window (%p) EcoreEventWindowFocusOut\n", mEcoreWindow);
 
     mFocusChangedSignal.Emit(false);
   }
@@ -1151,7 +1153,7 @@ Eina_Bool WindowBaseEcoreWl2::OnOutputTransform(void* data, int type, void* even
 
   if(transformEvent->output == ecore_wl2_window_output_find(mEcoreWindow))
   {
-    DALI_LOG_INFO(gWindowBaseLogFilter, Debug::General, "Window (%p) EcoreEventOutputTransform\n", mEcoreWindow);
+    DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnOutputTransform, Window (%p) EcoreEventOutputTransform\n", mEcoreWindow);
 
     mScreenRotationAngle = GetScreenRotationAngle();
 
@@ -1167,7 +1169,7 @@ Eina_Bool WindowBaseEcoreWl2::OnIgnoreOutputTransform(void* data, int type, void
 
   if(ignoreTransformEvent->win == mEcoreWindow)
   {
-    DALI_LOG_INFO(gWindowBaseLogFilter, Debug::General, "Window (%p) EcoreEventIgnoreOutputTransform\n", mEcoreWindow);
+    DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnIgnoreOutputTransform, Window (%p) EcoreEventIgnoreOutputTransform\n", mEcoreWindow);
 
     mScreenRotationAngle = GetScreenRotationAngle();
 
@@ -1183,7 +1185,7 @@ void WindowBaseEcoreWl2::OnRotation(void* data, int type, void* event)
 
   if(ev->win == static_cast<unsigned int>(ecore_wl2_window_id_get(mEcoreWindow)))
   {
-    DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnRotation, angle: %d, width: %d, height: %d\n", ev->angle, ev->w, ev->h);
+    DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnRotation, Window (%p), angle: %d, width: %d, height: %d\n", mEcoreWindow, ev->angle, ev->w, ev->h);
 
     RotationEvent rotationEvent;
     rotationEvent.angle     = ev->angle;
@@ -1251,7 +1253,7 @@ void WindowBaseEcoreWl2::OnConfiguration(void* data, int type, void* event)
       mWindowPositionSize.y      = ev->y;
       mWindowPositionSize.width  = newWidth;
       mWindowPositionSize.height = newHeight;
-      DALI_LOG_RELEASE_INFO("Update position & resize signal by server, current angle [%d] x[%d] y[%d] w[%d] h[%d]\n", mWindowRotationAngle, mWindowPositionSize.x, mWindowPositionSize.y, mWindowPositionSize.width, mWindowPositionSize.height);
+      DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnConfiguration, Window (%p), Update position & resize signal by Ecore, current angle [%d] x[%d] y[%d] w[%d] h[%d]\n", mEcoreWindow, mWindowRotationAngle, mWindowPositionSize.x, mWindowPositionSize.y, mWindowPositionSize.width, mWindowPositionSize.height);
 
       ecore_wl2_window_geometry_set(mEcoreWindow, mWindowPositionSize.x, mWindowPositionSize.y, mWindowPositionSize.width, mWindowPositionSize.height);
 
@@ -1463,7 +1465,7 @@ void WindowBaseEcoreWl2::OnDetentRotation(void* data, int type, void* event)
 {
   Ecore_Event_Detent_Rotate* detentEvent = static_cast<Ecore_Event_Detent_Rotate*>(event);
 
-  DALI_LOG_INFO(gWindowBaseLogFilter, Debug::Concise, "WindowBaseEcoreWl2::OnDetentRotation\n");
+  DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnDetentRotation, Window (%p)\n", mEcoreWindow);
 
   int32_t clockwise = (detentEvent->direction == ECORE_DETENT_DIRECTION_CLOCKWISE) ? 1 : -1;
 
@@ -1636,6 +1638,7 @@ void WindowBaseEcoreWl2::OnFontSizeChanged()
 
 void WindowBaseEcoreWl2::OnTransitionEffectEvent(WindowEffectState state, WindowEffectType type)
 {
+  DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnTransitionEffectEvent, Window (%p)\n", mEcoreWindow);
   mTransitionEffectEventSignal.Emit(state, type);
 }
 
@@ -1654,7 +1657,7 @@ void WindowBaseEcoreWl2::OnEcoreEventWindowAuxiliaryMessage(void* event)
   Ecore_Wl2_Event_Aux_Message* message = static_cast<Ecore_Wl2_Event_Aux_Message*>(event);
   if(message)
   {
-    DALI_LOG_INFO(gWindowBaseLogFilter, Debug::General, "WindowBaseEcoreWl2::OnEcoreEventWindowAuxiliaryMessage, key:%s, value:%s \n", message->key, message->val);
+    DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnEcoreEventWindowAuxiliaryMessage, Window (%p), key:%s, value:%s \n", mEcoreWindow, message->key, message->val);
     std::string           key(message->key);
     std::string           value(message->val);
     Dali::Property::Array options;
@@ -1665,7 +1668,7 @@ void WindowBaseEcoreWl2::OnEcoreEventWindowAuxiliaryMessage(void* event)
       void*      data;
       EINA_LIST_FOREACH(message->options, l, data)
       {
-        DALI_LOG_INFO(gWindowBaseLogFilter, Debug::General, "WindowBaseEcoreWl2::OnEcoreEventWindowAuxiliaryMessage, option: %s\n", (char*)data);
+        DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnEcoreEventWindowAuxiliaryMessage, Window (%p), option: %s\n", mEcoreWindow, (char*)data);
         std::string option(static_cast<char*>(data));
         options.Add(option);
       }
@@ -1794,7 +1797,7 @@ void WindowBaseEcoreWl2::OnMoveCompleted(void* event)
     Dali::PositionSize orgPositionSize(movedDoneEvent->x, movedDoneEvent->y, movedDoneEvent->w, movedDoneEvent->h);
     Dali::PositionSize newPositionSize = RecalculatePositionSizeToCurrentOrientation(orgPositionSize);
     Dali::Int32Pair    newPosition(newPositionSize.x, newPositionSize.y);
-    DALI_LOG_RELEASE_INFO("window(%p) has been moved by server[%d, %d]\n", mEcoreWindow, newPositionSize.x, newPositionSize.y);
+    DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnMoveCompleted, window(%p) has been moved by server[%d, %d]\n", mEcoreWindow, newPositionSize.x, newPositionSize.y);
     mMoveCompletedSignal.Emit(newPosition);
   }
 }
@@ -1807,7 +1810,7 @@ void WindowBaseEcoreWl2::OnResizeCompleted(void* event)
     Dali::PositionSize orgPositionSize(resizedDoneEvent->x, resizedDoneEvent->y, resizedDoneEvent->w, resizedDoneEvent->h);
     Dali::PositionSize newPositionSize = RecalculatePositionSizeToCurrentOrientation(orgPositionSize);
     Dali::Uint16Pair   newSize(newPositionSize.width, newPositionSize.height);
-    DALI_LOG_RELEASE_INFO("window(%p) has been resized by server[%d, %d]\n", mEcoreWindow, newPositionSize.width, newPositionSize.height);
+    DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::OnResizeCompleted, window(%p) has been resized by server[%d, %d]\n", mEcoreWindow, newPositionSize.width, newPositionSize.height);
     mResizeCompletedSignal.Emit(newSize);
   }
 }
@@ -2626,7 +2629,7 @@ void WindowBaseEcoreWl2::SetType(Dali::WindowType type)
 
 Dali::WindowType WindowBaseEcoreWl2::GetType() const
 {
-  DALI_LOG_RELEASE_INFO("GetType, DALI WindType: %d, mIsIMEWindowInitialized: %d\n", mType, mIsIMEWindowInitialized);
+  DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::GetType(), Window (%p), DALI WindType: %d, mIsIMEWindowInitialized: %d\n", mEcoreWindow, mType, mIsIMEWindowInitialized);
   return mType;
 }
 
@@ -2640,6 +2643,7 @@ Dali::WindowOperationResult WindowBaseEcoreWl2::SetNotificationLevel(Dali::Windo
 
   int notificationLevel;
 
+  DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::SetNotificationLevel(), Window (%p), level [%d]\n", mEcoreWindow, level);
   switch(level)
   {
     case Dali::WindowNotificationLevel::NONE:
@@ -2669,7 +2673,7 @@ Dali::WindowOperationResult WindowBaseEcoreWl2::SetNotificationLevel(Dali::Windo
     }
     default:
     {
-      DALI_LOG_INFO(gWindowBaseLogFilter, Debug::Verbose, "WindowBaseEcoreWl2::SetNotificationLevel: invalid level [%d]\n", level);
+      DALI_LOG_RELEASE_INFO("WindowBaseEcoreWl2::SetNotificationLevel(), invalid level [%d]\n", level);
       notificationLevel = TIZEN_POLICY_LEVEL_DEFAULT;
       break;
     }
index 0724a24..3c10c38 100644 (file)
@@ -17,6 +17,8 @@
 
 // EXTERNAL_HEADERS
 #include <Ecore_Wl2.h>
+#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/adaptor-framework/scene-holder.h>
 #include <dali/integration-api/debug.h>
 
 // INTERNAL HEADERS
@@ -48,8 +50,9 @@ namespace WindowSystem
 {
 namespace
 {
-static int32_t gScreenWidth  = 0;
-static int32_t gScreenHeight = 0;
+static int32_t gScreenWidth     = 0;
+static int32_t gScreenHeight    = 0;
+static bool    gGeometryHittest = false;
 } // unnamed namespace
 
 void Initialize()
@@ -205,6 +208,28 @@ bool GetKeyboardVerticalRepeatInfo(float& rate, float& delay)
 #endif
 }
 
+void SetGeometryHittestEnabled(bool enable)
+{
+  DALI_LOG_RELEASE_INFO("GeometryHittest : %d \n", enable);
+  gGeometryHittest = enable;
+  if(gGeometryHittest)
+  {
+    Dali::SceneHolderList sceneHolders = Dali::Adaptor::Get().GetSceneHolders();
+    for(auto iter = sceneHolders.begin(); iter != sceneHolders.end(); ++iter)
+    {
+      if(*iter)
+      {
+        (*iter).SetGeometryHittestEnabled(enable);
+      }
+    }
+  }
+}
+
+bool IsGeometryHittestEnabled()
+{
+  return gGeometryHittest;
+}
+
 } // namespace WindowSystem
 
 } // namespace Adaptor
index 09f222f..f40604d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 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.
@@ -20,6 +20,9 @@
 #include <dali/internal/window-system/common/window-system.h>
 
 // EXTERNAL_HEADERS
+#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/adaptor-framework/scene-holder.h>
+#include <dali/integration-api/debug.h>
 #include <dali/internal/system/linux/dali-ecore-x.h>
 
 namespace Dali
@@ -30,6 +33,11 @@ namespace Adaptor
 {
 namespace WindowSystem
 {
+namespace
+{
+static bool gGeometryHittest = false;
+} // unnamed namespace
+
 void Initialize()
 {
   ecore_x_init(NULL);
@@ -79,6 +87,28 @@ bool GetKeyboardVerticalRepeatInfo(float& rate, float& delay)
   return false;
 }
 
+void SetGeometryHittestEnabled(bool enable)
+{
+  DALI_LOG_RELEASE_INFO("GeometryHittest : %d \n", enable);
+  gGeometryHittest = enable;
+  if(gGeometryHittest)
+  {
+    Dali::SceneHolderList sceneHolders = Dali::Adaptor::Get().GetSceneHolders();
+    for(auto iter = sceneHolders.begin(); iter != sceneHolders.end(); ++iter)
+    {
+      if(*iter)
+      {
+        (*iter).SetGeometryHittestEnabled(enable);
+      }
+    }
+  }
+}
+
+bool IsGeometryHittestEnabled()
+{
+  return gGeometryHittest;
+}
+
 } // namespace WindowSystem
 
 } // namespace Adaptor
index 8571216..2b415de 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 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.
@@ -20,6 +20,9 @@
 
 // EXTERNAL HEADERS
 #include <Windows.h>
+#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/adaptor-framework/scene-holder.h>
+#include <dali/integration-api/debug.h>
 
 namespace Dali
 {
@@ -29,6 +32,11 @@ namespace Adaptor
 {
 namespace WindowSystem
 {
+namespace
+{
+static bool gGeometryHittest = false;
+} // unnamed namespace
+
 void Initialize()
 {
 }
@@ -73,6 +81,28 @@ bool GetKeyboardVerticalRepeatInfo(float& rate, float& delay)
   return false;
 }
 
+void SetGeometryHittestEnabled(bool enable)
+{
+  DALI_LOG_RELEASE_INFO("GeometryHittest : %d \n", enable);
+  gGeometryHittest = enable;
+  if(gGeometryHittest)
+  {
+    Dali::SceneHolderList sceneHolders = Dali::Adaptor::Get().GetSceneHolders();
+    for(auto iter = sceneHolders.begin(); iter != sceneHolders.end(); ++iter)
+    {
+      if(*iter)
+      {
+        (*iter).SetGeometryHittestEnabled(enable);
+      }
+    }
+  }
+}
+
+bool IsGeometryHittestEnabled()
+{
+  return gGeometryHittest;
+}
+
 } // namespace WindowSystem
 
 } // namespace Adaptor
index b48a7ef..0f5f66c 100644 (file)
@@ -20,6 +20,9 @@
 
 // INTERNAL HEADERS
 #include <dali/devel-api/adaptor-framework/keyboard.h>
+#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/adaptor-framework/scene-holder.h>
+#include <dali/integration-api/debug.h>
 #include <dali/internal/system/common/file-descriptor-monitor.h>
 #include <dali/internal/system/common/system-factory.h>
 #include <dali/internal/window-system/common/window-system.h>
@@ -139,6 +142,7 @@ bool GetWindowProperty(::Display* display, ::Window window, ::Atom property, ::A
 namespace WindowSystem
 {
 static WindowSystemX* gWindowSystem{nullptr};
+static bool           gGeometryHittest = false;
 
 /**
  * Initialize the window system (currently run from the first window that gets created)
@@ -926,7 +930,7 @@ void WindowSystemX::Show(::Window window)
 
 void WindowSystemX::Hide(::Window window)
 {
-  Window       rootWindow = window;
+  ::Window     rootWindow = window;
   int          x, y;
   unsigned int width, height, border, depth;
   if(ScreenCount(mImpl->mDisplay) == 1)
@@ -1094,6 +1098,28 @@ bool GetKeyboardVerticalRepeatInfo(float& rate, float& delay)
   return false;
 }
 
+void SetGeometryHittestEnabled(bool enable)
+{
+  DALI_LOG_RELEASE_INFO("GeometryHittest : %d \n", enable);
+  gGeometryHittest = enable;
+  if(gGeometryHittest)
+  {
+    Dali::SceneHolderList sceneHolders = Dali::Adaptor::Get().GetSceneHolders();
+    for(auto iter = sceneHolders.begin(); iter != sceneHolders.end(); ++iter)
+    {
+      if(*iter)
+      {
+        (*iter).SetGeometryHittestEnabled(enable);
+      }
+    }
+  }
+}
+
+bool IsGeometryHittestEnabled()
+{
+  return gGeometryHittest;
+}
+
 } // namespace WindowSystem
 
 } // namespace Adaptor
index bd374eb..9e09301 100644 (file)
@@ -27,7 +27,7 @@ namespace Dali
 {
 const unsigned int ADAPTOR_MAJOR_VERSION = 2;
 const unsigned int ADAPTOR_MINOR_VERSION = 3;
-const unsigned int ADAPTOR_MICRO_VERSION = 2;
+const unsigned int ADAPTOR_MICRO_VERSION = 3;
 const char* const  ADAPTOR_BUILD_DATE    = __DATE__ " " __TIME__;
 
 #ifdef DEBUG_ENABLED
index 2c7b06f..1d5c492 100644 (file)
@@ -17,7 +17,7 @@
 
 Name:       dali2-adaptor
 Summary:    The DALi Tizen Adaptor
-Version:    2.3.2
+Version:    2.3.3
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0 and BSD-3-Clause and MIT