Merge "Set http response body in binary format." into devel/master
authorHeeyong Song <heeyong.song@samsung.com>
Mon, 7 Feb 2022 08:13:32 +0000 (08:13 +0000)
committerGerrit Code Review <gerrit@review>
Mon, 7 Feb 2022 08:13:32 +0000 (08:13 +0000)
17 files changed:
automated-tests/src/dali-adaptor/dali-test-suite-utils/test-application.cpp
automated-tests/src/dali-adaptor/dali-test-suite-utils/test-graphics-application.cpp
automated-tests/src/dali-adaptor/dali-test-suite-utils/test-graphics-controller.cpp
automated-tests/src/dali-adaptor/dali-test-suite-utils/test-trace-call-stack.h
dali/devel-api/adaptor-framework/actor-accessible.cpp
dali/devel-api/atspi-interfaces/accessible.h
dali/integration-api/adaptor-framework/scene-holder-impl.cpp
dali/integration-api/adaptor-framework/scene-holder-impl.h
dali/internal/accessibility/bridge/accessible.cpp
dali/internal/accessibility/bridge/bridge-base.cpp
dali/internal/accessibility/bridge/bridge-object.cpp
dali/internal/accessibility/bridge/dummy-atspi.cpp
dali/internal/graphics/gles-impl/egl-graphics-controller.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h
dali/public-api/dali-adaptor-version.cpp
packaging/dali-adaptor.spec

index 440270a..2862284 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.
@@ -82,8 +82,9 @@ void TestApplication::CreateScene()
   // Create render target for the scene
   Graphics::RenderTargetCreateInfo rtInfo{};
   rtInfo.SetExtent({mSurfaceWidth, mSurfaceHeight});
-  mRenderTarget = mGraphicsController.CreateRenderTarget(rtInfo, nullptr);
-  mScene.SetSurfaceRenderTarget(mRenderTarget.get());
+  rtInfo.SetSurface(&mSurfaceWidth); // Can point to anything, really.
+
+  mScene.SetSurfaceRenderTarget(rtInfo);
 }
 
 void TestApplication::InitializeCore()
index cb025d0..66fae8f 100644 (file)
@@ -86,8 +86,8 @@ void TestGraphicsApplication::CreateScene()
   createInfo.SetSurface({nullptr})
     .SetExtent({mSurfaceWidth, mSurfaceHeight})
     .SetPreTransform(0 | Graphics::RenderTargetTransformFlagBits::TRANSFORM_IDENTITY_BIT);
-  mRenderTarget = mGraphicsController.CreateRenderTarget(createInfo, nullptr);
-  mScene.SetSurfaceRenderTarget(mRenderTarget.get());
+  //mRenderTarget = mGraphicsController.CreateRenderTarget(createInfo, nullptr);
+  mScene.SetSurfaceRenderTarget(createInfo);
 }
 
 void TestGraphicsApplication::InitializeCore()
index fb2afda..3ed6b56 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.
@@ -1028,9 +1028,11 @@ void TestGraphicsController::BindPipeline(TestGraphicsPipeline* pipeline)
  */
 void TestGraphicsController::PresentRenderTarget(Graphics::RenderTarget* renderTarget)
 {
+  auto*                       rt = static_cast<const TestGraphicsRenderTarget*>(renderTarget);
   TraceCallStack::NamedParams namedParams;
   namedParams["renderTarget"] << std::hex << renderTarget;
-  mCallStack.PushCall("PresentRenderTarget", "", namedParams);
+  namedParams["surface"] << std::hex << rt->mCreateInfo.surface;
+  mCallStack.PushCall("PresentRenderTarget", namedParams.str(), namedParams);
 }
 
 /**
@@ -1237,7 +1239,10 @@ Graphics::UniquePtr<Graphics::Sampler> TestGraphicsController::CreateSampler(con
 
 Graphics::UniquePtr<Graphics::RenderTarget> TestGraphicsController::CreateRenderTarget(const Graphics::RenderTargetCreateInfo& renderTargetCreateInfo, Graphics::UniquePtr<Graphics::RenderTarget>&& oldRenderTarget)
 {
-  mCallStack.PushCall("CreateRenderTarget", "");
+  TraceCallStack::NamedParams namedParams;
+  namedParams["surface"] << std::hex << renderTargetCreateInfo.surface;
+  mCallStack.PushCall("CreateRenderTarget", namedParams.str(), namedParams);
+
   return Graphics::MakeUnique<TestGraphicsRenderTarget>(mGl, renderTargetCreateInfo);
 }
 
index 7631630..6f720c5 100644 (file)
@@ -2,7 +2,7 @@
 #define TEST_TRACE_CALL_STACK_H
 
 /*
- * 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.
@@ -121,6 +121,25 @@ public:
       }
     }
 
+    const std::ostringstream& operator[](std::string name) const
+    {
+      static std::ostringstream empty;
+      auto                      iter = mParams.begin();
+      for(; iter != mParams.end(); ++iter)
+      {
+        if(!iter->parameterName.compare(name))
+        {
+          break;
+        }
+      }
+
+      if(iter != mParams.end())
+      {
+        return iter->value;
+      }
+      return empty;
+    }
+
     std::string str() const
     {
       std::ostringstream out;
index 81a0877..6f940a7 100644 (file)
@@ -194,7 +194,7 @@ void ActorAccessible::UpdateChildren()
   // Erase-remove idiom
   // TODO (C++20): Replace with std::erase_if
   auto it = std::remove_if(mChildren.begin(), mChildren.end(), [](const Accessible* child) {
-    return !child;
+    return !child || child->IsHidden();
   });
   mChildren.erase(it, mChildren.end());
   mChildren.shrink_to_fit();
index 1b46e0e..0eb7794 100644 (file)
@@ -68,10 +68,9 @@ public:
   /**
    * @brief Helper function for emiting active-descendant-changed event.
    *
-   * @param[in] obj The accessible object
    * @param[in] child The child of the object
    */
-  void EmitActiveDescendantChanged(Accessible* obj, Accessible* child);
+  void EmitActiveDescendantChanged(Accessible* child);
 
   /**
    * @brief Helper function for emiting state-changed event.
index 5b64638..13b93d7 100644 (file)
@@ -238,9 +238,8 @@ void SceneHolder::CreateRenderTarget()
     .SetSurface(mSurface.get())
     .SetExtent({static_cast<uint32_t>(mSurface->GetPositionSize().width), static_cast<uint32_t>(mSurface->GetPositionSize().height)})
     .SetPreTransform(0 | Graphics::RenderTargetTransformFlagBits::TRANSFORM_IDENTITY_BIT);
-  mRenderTarget = mAdaptor->GetGraphicsInterface().GetController().CreateRenderTarget(rtInfo, std::move(mRenderTarget));
 
-  mScene.SetSurfaceRenderTarget(mRenderTarget.get());
+  mScene.SetSurfaceRenderTarget(rtInfo);
 }
 
 void SceneHolder::Pause()
index 7f6c9ff..598addc 100644 (file)
@@ -338,9 +338,6 @@ private:
   class SceneHolderLifeCycleObserver;
   std::unique_ptr<SceneHolderLifeCycleObserver> mLifeCycleObserver; ///< The adaptor life cycle observer
 
-private:
-  Graphics::UniquePtr<Graphics::RenderTarget> mRenderTarget{nullptr};
-
 protected:
   uint32_t                 mId;    ///< A unique ID to identify the SceneHolder starting from 0
   Dali::Integration::Scene mScene; ///< The Scene
index dc0fca2..26ec0aa 100644 (file)
@@ -95,11 +95,11 @@ Accessible::~Accessible() noexcept
   }
 }
 
-void Accessible::EmitActiveDescendantChanged(Accessible* obj, Accessible* child)
+void Accessible::EmitActiveDescendantChanged(Accessible* child)
 {
   if(auto bridgeData = GetBridgeData())
   {
-    bridgeData->mBridge->EmitActiveDescendantChanged(obj, child);
+    bridgeData->mBridge->EmitActiveDescendantChanged(this, child);
   }
 }
 
index 0f0bc43..8e4f805 100644 (file)
@@ -303,7 +303,7 @@ Accessible* BridgeBase::Find(const std::string& path) const
   }
 
   auto it = mData->mKnownObjects.find(static_cast<Accessible*>(accessible));
-  if(it == mData->mKnownObjects.end())
+  if(it == mData->mKnownObjects.end() || (*it)->IsHidden())
   {
     throw std::domain_error{"unknown object '" + path + "'"};
   }
index 34389a7..5a3847c 100644 (file)
@@ -21,6 +21,8 @@
 // EXTERNAL INCLUDES
 #include <iostream>
 #include <string>
+#include <string_view>
+#include <unordered_map>
 
 using namespace Dali::Accessibility;
 
@@ -46,7 +48,11 @@ void BridgeObject::RegisterInterfaces()
 
 void BridgeObject::EmitActiveDescendantChanged(Accessible* obj, Accessible* child)
 {
-  if(!IsUp()) return;
+  if(!IsUp() || obj->IsHidden() || child->IsHidden())
+  {
+    return;
+  }
+
   auto index = child->GetIndexInParent();
 
   mDbusServer.emit2<std::string, int, int, DBus::EldbusVariant<Address>, Address>(
@@ -60,47 +66,30 @@ void BridgeObject::EmitActiveDescendantChanged(Accessible* obj, Accessible* chil
     {"", "root"});
 }
 
-void BridgeObject::Emit(Accessible* obj, Dali::Accessibility::ObjectPropertyChangeEvent event)
+void BridgeObject::Emit(Accessible* obj, ObjectPropertyChangeEvent event)
 {
-  if(!IsUp()) return;
-  const char* name = nullptr;
+  static const std::unordered_map<ObjectPropertyChangeEvent, std::string_view> eventMap{
+    {ObjectPropertyChangeEvent::NAME, "accessible-name"},
+    {ObjectPropertyChangeEvent::DESCRIPTION, "accessible-description"},
+    {ObjectPropertyChangeEvent::VALUE, "accessible-value"},
+    {ObjectPropertyChangeEvent::PARENT, "accessible-parent"},
+    {ObjectPropertyChangeEvent::ROLE, "accessible-role"},
+  };
 
-  switch(event)
+  if(!IsUp() || obj->IsHidden())
   {
-    case ObjectPropertyChangeEvent::NAME:
-    {
-      name = "accessible-name";
-      break;
-    }
-    case ObjectPropertyChangeEvent::DESCRIPTION:
-    {
-      name = "accessible-description";
-      break;
-    }
-    case ObjectPropertyChangeEvent::VALUE:
-    {
-      name = "accessible-value";
-      break;
-    }
-    case ObjectPropertyChangeEvent::PARENT:
-    {
-      name = "accessible-parent";
-      break;
-    }
-    case ObjectPropertyChangeEvent::ROLE:
-    {
-      name = "accessible-role";
-      break;
-    }
+    return;
   }
 
-  if(name)
+  auto eventName = eventMap.find(event);
+
+  if(eventName != eventMap.end())
   {
     mDbusServer.emit2<std::string, int, int, DBus::EldbusVariant<int>, Address>(
       GetAccessiblePath(obj),
       AtspiDbusInterfaceEventObject,
       "PropertyChange",
-      name,
+      std::string{eventName->second},
       0,
       0,
       {0},
@@ -110,114 +99,41 @@ void BridgeObject::Emit(Accessible* obj, Dali::Accessibility::ObjectPropertyChan
 
 void BridgeObject::Emit(Accessible* obj, WindowEvent event, unsigned int detail)
 {
-  if(!IsUp()) return;
-  const char* name = nullptr;
+  static const std::unordered_map<WindowEvent, std::string_view> eventMap{
+    {WindowEvent::PROPERTY_CHANGE, "PropertyChange"},
+    {WindowEvent::MINIMIZE, "Minimize"},
+    {WindowEvent::MAXIMIZE, "Maximize"},
+    {WindowEvent::RESTORE, "Restore"},
+    {WindowEvent::CLOSE, "Close"},
+    {WindowEvent::CREATE, "Create"},
+    {WindowEvent::REPARENT, "Reparent"},
+    {WindowEvent::DESKTOP_CREATE, "DesktopCreate"},
+    {WindowEvent::DESKTOP_DESTROY, "DesktopDestroy"},
+    {WindowEvent::DESTROY, "Destroy"},
+    {WindowEvent::ACTIVATE, "Activate"},
+    {WindowEvent::DEACTIVATE, "Deactivate"},
+    {WindowEvent::RAISE, "Raise"},
+    {WindowEvent::LOWER, "Lower"},
+    {WindowEvent::MOVE, "Move"},
+    {WindowEvent::RESIZE, "Resize"},
+    {WindowEvent::SHADE, "Shade"},
+    {WindowEvent::UU_SHADE, "uUshade"},
+    {WindowEvent::RESTYLE, "Restyle"},
+  };
 
-  switch(event)
+  if(!IsUp() || obj->IsHidden())
   {
-    case WindowEvent::PROPERTY_CHANGE:
-    {
-      name = "PropertyChange";
-      break;
-    }
-    case WindowEvent::MINIMIZE:
-    {
-      name = "Minimize";
-      break;
-    }
-    case WindowEvent::MAXIMIZE:
-    {
-      name = "Maximize";
-      break;
-    }
-    case WindowEvent::RESTORE:
-    {
-      name = "Restore";
-      break;
-    }
-    case WindowEvent::CLOSE:
-    {
-      name = "Close";
-      break;
-    }
-    case WindowEvent::CREATE:
-    {
-      name = "Create";
-      break;
-    }
-    case WindowEvent::REPARENT:
-    {
-      name = "Reparent";
-      break;
-    }
-    case WindowEvent::DESKTOP_CREATE:
-    {
-      name = "DesktopCreate";
-      break;
-    }
-    case WindowEvent::DESKTOP_DESTROY:
-    {
-      name = "DesktopDestroy";
-      break;
-    }
-    case WindowEvent::DESTROY:
-    {
-      name = "Destroy";
-      break;
-    }
-    case WindowEvent::ACTIVATE:
-    {
-      name = "Activate";
-      break;
-    }
-    case WindowEvent::DEACTIVATE:
-    {
-      name = "Deactivate";
-      break;
-    }
-    case WindowEvent::RAISE:
-    {
-      name = "Raise";
-      break;
-    }
-    case WindowEvent::LOWER:
-    {
-      name = "Lower";
-      break;
-    }
-    case WindowEvent::MOVE:
-    {
-      name = "Move";
-      break;
-    }
-    case WindowEvent::RESIZE:
-    {
-      name = "Resize";
-      break;
-    }
-    case WindowEvent::SHADE:
-    {
-      name = "Shade";
-      break;
-    }
-    case WindowEvent::UU_SHADE:
-    {
-      name = "uUshade";
-      break;
-    }
-    case WindowEvent::RESTYLE:
-    {
-      name = "Restyle";
-      break;
-    }
+    return;
   }
 
-  if(name)
+  auto eventName = eventMap.find(event);
+
+  if(eventName != eventMap.end())
   {
     mDbusServer.emit2<std::string, int, int, DBus::EldbusVariant<int>, Address>(
       GetAccessiblePath(obj),
       AtspiDbusInterfaceEventWindow,
-      name,
+      std::string{eventName->second},
       "",
       detail,
       0,
@@ -228,254 +144,69 @@ void BridgeObject::Emit(Accessible* obj, WindowEvent event, unsigned int detail)
 
 void BridgeObject::EmitStateChanged(Accessible* obj, State state, int newValue, int reserved)
 {
-  if(!IsUp()) return;
-  const char* stateName = nullptr;
+  static const std::unordered_map<State, std::string_view> stateMap{
+    {State::INVALID, "invalid"},
+    {State::ACTIVE, "active"},
+    {State::ARMED, "armed"},
+    {State::BUSY, "busy"},
+    {State::CHECKED, "checked"},
+    {State::COLLAPSED, "collapsed"},
+    {State::DEFUNCT, "defunct"},
+    {State::EDITABLE, "editable"},
+    {State::ENABLED, "enabled"},
+    {State::EXPANDABLE, "expandable"},
+    {State::EXPANDED, "expanded"},
+    {State::FOCUSABLE, "focusable"},
+    {State::FOCUSED, "focused"},
+    {State::HAS_TOOLTIP, "has-tooltip"},
+    {State::HORIZONTAL, "horizontal"},
+    {State::ICONIFIED, "iconified"},
+    {State::MODAL, "modal"},
+    {State::MULTI_LINE, "multi-line"},
+    {State::MULTI_SELECTABLE, "multiselectable"},
+    {State::OPAQUE, "opaque"},
+    {State::PRESSED, "pressed"},
+    {State::RESIZEABLE, "resizable"},
+    {State::SELECTABLE, "selectable"},
+    {State::SELECTED, "selected"},
+    {State::SENSITIVE, "sensitive"},
+    {State::SHOWING, "showing"},
+    {State::SINGLE_LINE, "single-line"},
+    {State::STALE, "stale"},
+    {State::TRANSIENT, "transient"},
+    {State::VERTICAL, "vertical"},
+    {State::VISIBLE, "visible"},
+    {State::MANAGES_DESCENDANTS, "manages-descendants"},
+    {State::INDETERMINATE, "indeterminate"},
+    {State::REQUIRED, "required"},
+    {State::TRUNCATED, "truncated"},
+    {State::ANIMATED, "animated"},
+    {State::INVALID_ENTRY, "invalid-entry"},
+    {State::SUPPORTS_AUTOCOMPLETION, "supports-autocompletion"},
+    {State::SELECTABLE_TEXT, "selectable-text"},
+    {State::IS_DEFAULT, "is-default"},
+    {State::VISITED, "visited"},
+    {State::CHECKABLE, "checkable"},
+    {State::HAS_POPUP, "has-popup"},
+    {State::READ_ONLY, "read-only"},
+    {State::HIGHLIGHTED, "highlighted"},
+    {State::HIGHLIGHTABLE, "highlightable"},
+  };
 
-  switch(state)
+  if(!IsUp() || obj->IsHidden())
   {
-    case State::INVALID:
-    {
-      stateName = "invalid";
-      break;
-    }
-    case State::ACTIVE:
-    {
-      stateName = "active";
-      break;
-    }
-    case State::ARMED:
-    {
-      stateName = "armed";
-      break;
-    }
-    case State::BUSY:
-    {
-      stateName = "busy";
-      break;
-    }
-    case State::CHECKED:
-    {
-      stateName = "checked";
-      break;
-    }
-    case State::COLLAPSED:
-    {
-      stateName = "collapsed";
-      break;
-    }
-    case State::DEFUNCT:
-    {
-      stateName = "defunct";
-      break;
-    }
-    case State::EDITABLE:
-    {
-      stateName = "editable";
-      break;
-    }
-    case State::ENABLED:
-    {
-      stateName = "enabled";
-      break;
-    }
-    case State::EXPANDABLE:
-    {
-      stateName = "expandable";
-      break;
-    }
-    case State::EXPANDED:
-    {
-      stateName = "expanded";
-      break;
-    }
-    case State::FOCUSABLE:
-    {
-      stateName = "focusable";
-      break;
-    }
-    case State::FOCUSED:
-    {
-      stateName = "focused";
-      break;
-    }
-    case State::HAS_TOOLTIP:
-    {
-      stateName = "has-tooltip";
-      break;
-    }
-    case State::HORIZONTAL:
-    {
-      stateName = "horizontal";
-      break;
-    }
-    case State::ICONIFIED:
-    {
-      stateName = "iconified";
-      break;
-    }
-    case State::MODAL:
-    {
-      stateName = "modal";
-      break;
-    }
-    case State::MULTI_LINE:
-    {
-      stateName = "multi-line";
-      break;
-    }
-    case State::MULTI_SELECTABLE:
-    {
-      stateName = "multiselectable";
-      break;
-    }
-    case State::OPAQUE:
-    {
-      stateName = "opaque";
-      break;
-    }
-    case State::PRESSED:
-    {
-      stateName = "pressed";
-      break;
-    }
-    case State::RESIZEABLE:
-    {
-      stateName = "resizable";
-      break;
-    }
-    case State::SELECTABLE:
-    {
-      stateName = "selectable";
-      break;
-    }
-    case State::SELECTED:
-    {
-      stateName = "selected";
-      break;
-    }
-    case State::SENSITIVE:
-    {
-      stateName = "sensitive";
-      break;
-    }
-    case State::SHOWING:
-    {
-      stateName = "showing";
-      break;
-    }
-    case State::SINGLE_LINE:
-    {
-      stateName = "single-line";
-      break;
-    }
-    case State::STALE:
-    {
-      stateName = "stale";
-      break;
-    }
-    case State::TRANSIENT:
-    {
-      stateName = "transient";
-      break;
-    }
-    case State::VERTICAL:
-    {
-      stateName = "vertical";
-      break;
-    }
-    case State::VISIBLE:
-    {
-      stateName = "visible";
-      break;
-    }
-    case State::MANAGES_DESCENDANTS:
-    {
-      stateName = "manages-descendants";
-      break;
-    }
-    case State::INDETERMINATE:
-    {
-      stateName = "indeterminate";
-      break;
-    }
-    case State::REQUIRED:
-    {
-      stateName = "required";
-      break;
-    }
-    case State::TRUNCATED:
-    {
-      stateName = "truncated";
-      break;
-    }
-    case State::ANIMATED:
-    {
-      stateName = "animated";
-      break;
-    }
-    case State::INVALID_ENTRY:
-    {
-      stateName = "invalid-entry";
-      break;
-    }
-    case State::SUPPORTS_AUTOCOMPLETION:
-    {
-      stateName = "supports-autocompletion";
-      break;
-    }
-    case State::SELECTABLE_TEXT:
-    {
-      stateName = "selectable-text";
-      break;
-    }
-    case State::IS_DEFAULT:
-    {
-      stateName = "is-default";
-      break;
-    }
-    case State::VISITED:
-    {
-      stateName = "visited";
-      break;
-    }
-    case State::CHECKABLE:
-    {
-      stateName = "checkable";
-      break;
-    }
-    case State::HAS_POPUP:
-    {
-      stateName = "has-popup";
-      break;
-    }
-    case State::READ_ONLY:
-    {
-      stateName = "read-only";
-      break;
-    }
-    case State::HIGHLIGHTED:
-    {
-      stateName = "highlighted";
-      break;
-    }
-    case State::HIGHLIGHTABLE:
-    {
-      stateName = "highlightable";
-      break;
-    }
-    case State::MAX_COUNT:
-    {
-      break;
-    }
+    return;
   }
 
-  if(stateName)
+  auto stateName = stateMap.find(state);
+
+  if(stateName != stateMap.end())
   {
     mDbusServer.emit2<std::string, int, int, DBus::EldbusVariant<int>, Address>(
       GetAccessiblePath(obj),
       AtspiDbusInterfaceEventObject,
       "StateChanged",
-      stateName,
+      std::string{stateName->second},
       newValue,
       reserved,
       {0},
@@ -485,7 +216,10 @@ void BridgeObject::EmitStateChanged(Accessible* obj, State state, int newValue,
 
 void BridgeObject::EmitBoundsChanged(Accessible* obj, Dali::Rect<> rect)
 {
-  if(!IsBoundsChangedEventAllowed) return;
+  if(!IsUp() || !IsBoundsChangedEventAllowed || obj->IsHidden())
+  {
+    return;
+  }
 
   DBus::EldbusVariant<std::tuple<int32_t, int32_t, int32_t, int32_t> > tmp{
     std::tuple<int32_t, int32_t, int32_t, int32_t>{rect.x, rect.y, rect.width, rect.height}};
@@ -505,6 +239,11 @@ void BridgeObject::EmitBoundsChanged(Accessible* obj, Dali::Rect<> rect)
 
 void BridgeObject::EmitCursorMoved(Accessible* obj, unsigned int cursorPosition)
 {
+  if(!IsUp() || obj->IsHidden())
+  {
+    return;
+  }
+
   mDbusServer.emit2<std::string, int, int, DBus::EldbusVariant<int>, Address>(
     GetAccessiblePath(obj),
     AtspiDbusInterfaceEventObject,
@@ -518,32 +257,25 @@ void BridgeObject::EmitCursorMoved(Accessible* obj, unsigned int cursorPosition)
 
 void BridgeObject::EmitTextChanged(Accessible* obj, TextChangedState state, unsigned int position, unsigned int length, const std::string& content)
 {
-  const char* stateName = nullptr;
-  switch(state)
+  static const std::unordered_map<TextChangedState, std::string_view> stateMap{
+    {TextChangedState::INSERTED, "insert"},
+    {TextChangedState::DELETED, "delete"},
+  };
+
+  if(!IsUp() || obj->IsHidden())
   {
-    case TextChangedState::INSERTED:
-    {
-      stateName = "insert";
-      break;
-    }
-    case TextChangedState::DELETED:
-    {
-      stateName = "delete";
-      break;
-    }
-    case TextChangedState::MAX_COUNT:
-    {
-      break;
-    }
+    return;
   }
 
-  if(stateName)
+  auto stateName = stateMap.find(state);
+
+  if(stateName != stateMap.end())
   {
     mDbusServer.emit2<std::string, int, int, DBus::EldbusVariant<std::string>, Address>(
       GetAccessiblePath(obj),
       AtspiDbusInterfaceEventObject,
       "TextChanged",
-      stateName,
+      std::string{stateName->second},
       position,
       length,
       {content},
@@ -553,6 +285,11 @@ void BridgeObject::EmitTextChanged(Accessible* obj, TextChangedState state, unsi
 
 void BridgeObject::EmitMovedOutOfScreen(Accessible* obj, ScreenRelativeMoveType type)
 {
+  if(!IsUp() || obj->IsHidden())
+  {
+    return;
+  }
+
   mDbusServer.emit2<std::string, int, int, DBus::EldbusVariant<int>, Address>(
     GetAccessiblePath(obj),
     AtspiDbusInterfaceEventObject,
index 955997b..c37840d 100644 (file)
@@ -124,7 +124,7 @@ void Accessibility::Accessible::EmitTextCursorMoved(unsigned int cursorPosition)
 {
 }
 
-void Accessibility::Accessible::EmitActiveDescendantChanged(Accessibility::Accessible* obj, Accessibility::Accessible* child)
+void Accessibility::Accessible::EmitActiveDescendantChanged(Accessibility::Accessible* child)
 {
 }
 
index bee69ec..3667844 100644 (file)
@@ -105,7 +105,15 @@ const uint32_t TEXTURE_UPLOAD_MAX_BUFER_SIZE_MB = 1;
 
 } // namespace
 
-EglGraphicsController::~EglGraphicsController() = default;
+EglGraphicsController::~EglGraphicsController()
+{
+  while(!mPresentationCommandBuffers.empty())
+  {
+    auto presentCommandBuffer = const_cast<GLES::CommandBuffer*>(mPresentationCommandBuffers.front());
+    delete presentCommandBuffer;
+    mPresentationCommandBuffers.pop();
+  }
+}
 
 void EglGraphicsController::InitializeGLES(Integration::GlAbstraction& glAbstraction)
 {
index ccea97c..5ee11be 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.
@@ -2614,10 +2614,17 @@ void WindowBaseEcoreWl2::InitializeIme()
 
   EINA_ITERATOR_FOREACH(globals, global)
   {
+#ifdef OVER_TIZEN_VERSION_7
+    if(strcmp(global->interface, "zwp_input_panel_v1") == 0)
+    {
+      mWlInputPanel = (zwp_input_panel_v1*)wl_registry_bind(registry, global->id, &zwp_input_panel_v1_interface, 1);
+    }
+#else
     if(strcmp(global->interface, "wl_input_panel") == 0)
     {
       mWlInputPanel = (wl_input_panel*)wl_registry_bind(registry, global->id, &wl_input_panel_interface, 1);
     }
+#endif
     else if(strcmp(global->interface, "wl_output") == 0)
     {
       mWlOutput = (wl_output*)wl_registry_bind(registry, global->id, &wl_output_interface, 1);
@@ -2635,15 +2642,21 @@ void WindowBaseEcoreWl2::InitializeIme()
     DALI_LOG_ERROR("WindowBaseEcoreWl2::InitializeIme(), fail to get wayland output panel interface\n");
     return;
   }
-
+#ifdef OVER_TIZEN_VERSION_7
+  mWlInputPanelSurface = zwp_input_panel_v1_get_input_panel_surface(mWlInputPanel, mWlSurface);
+#else
   mWlInputPanelSurface = wl_input_panel_get_input_panel_surface(mWlInputPanel, mWlSurface);
+#endif
   if(!mWlInputPanelSurface)
   {
     DALI_LOG_ERROR("WindowBaseEcoreWl2::InitializeIme(), fail to get wayland input panel surface\n");
     return;
   }
-
+#ifdef OVER_TIZEN_VERSION_7
+  zwp_input_panel_surface_v1_set_toplevel(mWlInputPanelSurface, mWlOutput, ZWP_INPUT_PANEL_SURFACE_V1_POSITION_CENTER_BOTTOM);
+#else
   wl_input_panel_surface_set_toplevel(mWlInputPanelSurface, mWlOutput, WL_INPUT_PANEL_SURFACE_POSITION_CENTER_BOTTOM);
+#endif
 }
 
 void WindowBaseEcoreWl2::ImeWindowReadyToRender()
@@ -2653,8 +2666,11 @@ void WindowBaseEcoreWl2::ImeWindowReadyToRender()
     DALI_LOG_ERROR("WindowBaseEcoreWl2::ImeWindowReadyToRender(), wayland input panel surface is null\n");
     return;
   }
-
+#ifdef OVER_TIZEN_VERSION_7
+  zwp_input_panel_surface_v1_set_ready(mWlInputPanelSurface, 1);
+#else
   wl_input_panel_surface_set_ready(mWlInputPanelSurface, 1);
+#endif
 }
 
 void WindowBaseEcoreWl2::RequestMoveToServer()
index 3df827b..f5fd0ea 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_WINDOWSYSTEM_TIZENWAYLAND_WINDOW_BASE_ECORE_WL2_H
 
 /*
- * 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.
@@ -176,7 +176,6 @@ public:
    */
   void OnEcoreEventWindowAuxiliaryMessage(void* event);
 
-
 #ifdef DALI_ELDBUS_AVAILABLE
   /**
    * @brief Called when Ecore ElDBus accessibility event is received.
@@ -548,10 +547,18 @@ private:
   Dali::Vector<Ecore_Event_Handler*>                        mEcoreEventHandler;
   Ecore_Wl2_Window*                                         mEcoreWindow;
 
-  wl_surface*             mWlSurface;
-  wl_input_panel*         mWlInputPanel;
-  wl_output*              mWlOutput;
+  wl_surface* mWlSurface;
+#ifdef OVER_TIZEN_VERSION_7
+  zwp_input_panel_v1* mWlInputPanel;
+#else
+  wl_input_panel* mWlInputPanel;
+#endif
+  wl_output* mWlOutput;
+#ifdef OVER_TIZEN_VERSION_7
+  zwp_input_panel_surface_v1* mWlInputPanelSurface;
+#else
   wl_input_panel_surface* mWlInputPanelSurface;
+#endif
 
   wl_egl_window*        mEglWindow;
   wl_display*           mDisplay;
index 629e0a7..bc6cef7 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.
@@ -27,7 +27,7 @@ namespace Dali
 {
 const unsigned int ADAPTOR_MAJOR_VERSION = 2;
 const unsigned int ADAPTOR_MINOR_VERSION = 1;
-const unsigned int ADAPTOR_MICRO_VERSION = 5;
+const unsigned int ADAPTOR_MICRO_VERSION = 8;
 const char* const  ADAPTOR_BUILD_DATE    = __DATE__ " " __TIME__;
 
 #ifdef DEBUG_ENABLED
index 8e6da38..068b3a9 100644 (file)
@@ -17,7 +17,7 @@
 
 Name:       dali2-adaptor
 Summary:    The DALi Tizen Adaptor
-Version:    2.1.5
+Version:    2.1.8
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0 and BSD-3-Clause and MIT
@@ -282,6 +282,11 @@ CXXFLAGS+=" -DECORE_WAYLAND2 -DEFL_BETA_API_SUPPORT"
 cmake_flags+=" -DENABLE_ECORE_WAYLAND2=ON"
 %endif
 
+# Use this conditional when Tizen version is 7.x or greater
+%if 0%{?tizen_version_major} >= 7
+CXXFLAGS+=" -DOVER_TIZEN_VERSION_7"
+%endif
+
 %if 0%{?enable_debug}
 cmake_flags+=" -DCMAKE_BUILD_TYPE=Debug"
 %endif