[Tizen] Added render-task to the touch event 06/302306/1 accepted/tizen/7.0/unified/20231207.071827
authorAdam Bialogonski <adam.b@samsung.com>
Mon, 13 Nov 2023 16:36:28 +0000 (16:36 +0000)
committerhuiyu.eun <huiyu.eun@samsung.com>
Tue, 5 Dec 2023 08:02:49 +0000 (17:02 +0900)
Change-Id: Ida661df52c894d39da7e345b157dcb2fe8529ae5
Signed-off-by: huiyu.eun <huiyu.eun@samsung.com>
dali/internal/event/actors/actor-impl.cpp
dali/internal/event/events/touch-event-impl.h
dali/internal/event/events/touch-event-processor.cpp
dali/public-api/events/touch-event.cpp
dali/public-api/events/touch-event.h

index fa30547..cef7861 100644 (file)
@@ -39,7 +39,6 @@
 #include <dali/internal/event/actors/actor-coords.h>
 #include <dali/internal/event/actors/actor-parent.h>
 #include <dali/internal/event/actors/actor-property-handler.h>
-#include <dali/internal/event/actors/camera-actor-impl.h>
 #include <dali/internal/event/common/event-thread-services.h>
 #include <dali/internal/event/common/property-helper.h>
 #include <dali/internal/event/common/scene-impl.h>
@@ -48,7 +47,6 @@
 #include <dali/internal/event/common/type-info-impl.h>
 #include <dali/internal/event/events/actor-gesture-data.h>
 #include <dali/internal/event/render-tasks/render-task-impl.h>
-#include <dali/internal/event/render-tasks/render-task-list-impl.h>
 #include <dali/internal/event/rendering/renderer-impl.h>
 #include <dali/internal/update/manager/update-manager.h>
 #include <dali/internal/update/nodes/node-messages.h>
index cbcc120..e59c597 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_TOUCH_EVENT_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.
@@ -24,6 +24,7 @@
 #include <dali/public-api/events/point-state.h>
 #include <dali/public-api/events/touch-event.h>
 #include <dali/public-api/object/base-object.h>
+#include <dali/public-api/render-tasks/render-task.h>
 
 namespace Dali
 {
@@ -177,6 +178,11 @@ public:
    */
   MouseButton::Type GetMouseButton(std::size_t point) const;
 
+  Dali::RenderTask GetRenderTask() const
+  {
+    return mRenderTask;
+  }
+
   // Setters
 
   /**
@@ -185,6 +191,11 @@ public:
    */
   void AddPoint(const Integration::Point& point);
 
+  void SetRenderTask(Dali::RenderTask renderTask)
+  {
+    mRenderTask = renderTask;
+  }
+
 private:
   /**
    * @brief Virtual Destructor
@@ -194,8 +205,9 @@ private:
   ~TouchEvent() override = default;
 
 private:
-  std::vector<Integration::Point> mPoints;   ///< Container of the points for this touch event.
-  unsigned long                   mTime{0u}; ///< The time (in ms) that the touch event occurred.
+  std::vector<Integration::Point> mPoints;     ///< Container of the points for this touch event.
+  Dali::RenderTask                mRenderTask; ///< The render task used to generate this touch event.
+  unsigned long                   mTime{0u};   ///< The time (in ms) that the touch event occurred.
 };
 
 } // namespace Internal
index 7bf7d36..6e358a2 100644 (file)
@@ -135,12 +135,13 @@ Dali::Actor EmitTouchSignals(Dali::Actor actor, const Dali::TouchEvent& touchEve
   return consumedActor;
 }
 
-Dali::Actor AllocAndEmitTouchSignals(unsigned long time, Dali::Actor actor, const Integration::Point& point)
+Dali::Actor AllocAndEmitTouchSignals(unsigned long time, Dali::Actor actor, const Integration::Point& point, RenderTaskPtr renderTask)
 {
   TouchEventPtr    touchEvent(new TouchEvent(time));
   Dali::TouchEvent touchEventHandle(touchEvent.Get());
 
   touchEvent->AddPoint(point);
+  touchEvent->SetRenderTask(Dali::RenderTask(renderTask.Get()));
 
   return EmitTouchSignals(actor, touchEventHandle);
 }
@@ -155,6 +156,7 @@ Dali::Actor EmitTouchSignals(Actor* actor, RenderTask& renderTask, const TouchEv
   if(actor)
   {
     TouchEventPtr touchEventImpl = TouchEvent::Clone(*originalTouchEvent.Get());
+    touchEventImpl->SetRenderTask(Dali::RenderTask(&renderTask));
 
     Integration::Point& primaryPoint = touchEventImpl->GetPoint(0);
 
@@ -273,7 +275,7 @@ bool TouchEventProcessor::ProcessTouchEvent(const Integration::TouchEvent& event
       Dali::Actor lastPrimaryHitActorHandle(lastPrimaryHitActor);
       currentPoint.SetHitActor(lastPrimaryHitActorHandle);
 
-      consumingActor = AllocAndEmitTouchSignals(event.time, lastPrimaryHitActorHandle, currentPoint);
+      consumingActor = AllocAndEmitTouchSignals(event.time, lastPrimaryHitActorHandle, currentPoint, mLastRenderTask);
     }
 
     // If the last consumed actor was different to the primary hit actor then inform it as well (if it has not already been informed).
@@ -284,7 +286,7 @@ bool TouchEventProcessor::ProcessTouchEvent(const Integration::TouchEvent& event
     {
       Dali::Actor lastConsumedActorHandle(lastConsumedActor);
       currentPoint.SetHitActor(lastConsumedActorHandle);
-      AllocAndEmitTouchSignals(event.time, lastConsumedActorHandle, currentPoint);
+      AllocAndEmitTouchSignals(event.time, lastConsumedActorHandle, currentPoint, mLastRenderTask);
     }
 
     // Tell the touch-down consuming actor as well, if required
@@ -297,7 +299,7 @@ bool TouchEventProcessor::ProcessTouchEvent(const Integration::TouchEvent& event
       Dali::Actor touchDownConsumedActorHandle(touchDownConsumedActor);
 
       currentPoint.SetHitActor(touchDownConsumedActorHandle);
-      AllocAndEmitTouchSignals(event.time, touchDownConsumedActorHandle, currentPoint);
+      AllocAndEmitTouchSignals(event.time, touchDownConsumedActorHandle, currentPoint, mLastRenderTask);
     }
 
     Clear();
@@ -336,6 +338,7 @@ bool TouchEventProcessor::ProcessTouchEvent(const Integration::TouchEvent& event
 
       // Only set the currentRenderTask for the primary hit actor.
       currentRenderTask = hitTestResults.renderTask;
+      touchEventImpl->SetRenderTask(Dali::RenderTask(currentRenderTask.Get()));
     }
     else
     {
@@ -512,7 +515,7 @@ bool TouchEventProcessor::ProcessTouchEvent(const Integration::TouchEvent& event
           currentPoint.SetHitActor(touchDownConsumedActorHandle);
           currentPoint.SetState(PointState::INTERRUPTED);
 
-          AllocAndEmitTouchSignals(event.time, touchDownConsumedActorHandle, currentPoint);
+          AllocAndEmitTouchSignals(event.time, touchDownConsumedActorHandle, currentPoint, nullptr /* Not Required for this use case */);
         }
 
         mTouchDownConsumedActor.SetActor(nullptr);
index 215bafa..12f03f3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 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.
@@ -108,6 +108,11 @@ MouseButton::Type TouchEvent::GetMouseButton(std::size_t point) const
   return GetImplementation(*this).GetMouseButton(point);
 }
 
+RenderTask TouchEvent::GetRenderTask() const
+{
+  return GetImplementation(*this).GetRenderTask();
+}
+
 TouchEvent::TouchEvent(Internal::TouchEvent* internal)
 : BaseHandle(internal)
 {
index ed99c9c..d2a0254 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_TOUCH_EVENT_H
 
 /*
- * Copyright (c) 2020 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.
@@ -28,6 +28,7 @@
 #include <dali/public-api/events/point-state.h>
 #include <dali/public-api/math/degree.h>
 #include <dali/public-api/object/base-handle.h>
+#include <dali/public-api/render-tasks/render-task.h>
 
 namespace Dali
 {
@@ -266,6 +267,14 @@ public:
    */
   MouseButton::Type GetMouseButton(std::size_t point) const;
 
+  /**
+   * @brief Retrieves the render-task that was used to generate this touch-event.
+   *
+   * @SINCE_2_3.0
+   * @return The render-task used to generate this touch-event.
+   */
+  RenderTask GetRenderTask() const;
+
 public: // Not intended for application developers
   /// @cond internal
   /**