Adding frame callback notification system 06/295006/5
authorDavid Steele <david.steele@samsung.com>
Thu, 29 Jun 2023 16:45:52 +0000 (17:45 +0100)
committerDavid Steele <david.steele@samsung.com>
Fri, 21 Jul 2023 13:55:17 +0000 (13:55 +0000)
commitca6159a68d6903daf7e52423857ba1aa0a9caeeb
tree3a35e9eb72ba68c01c308819ac4e6a4eeef22c96
parent22b5d2e247fc5317c77ee3bbeabc6b04949c1a82
Adding frame callback notification system

We need some way of synchronizing update properties set
from event side with properties set from frame callback.
For example, if frame callback is used to update physics
objects, and we want to sync with actor visibility, then
the actor visibility might occur after the first frame
callback adding a physics object.

This patch adds a synchronization point to the FrameCallback
UpdateProxy. The application can notify the FrameCallback that
it wants to set a sync point, and also modify dali object
properties. Then, in the update during which the associated
messages are being processed, that sync point is available
in the FrameCallback::Update() UpdateProxy. So, the application
can synchronize any other properties during the callback,
knowing they are happening in the same frame.

If multiple notifications are sent before the next Update,
all of them are queued with unique values.

(But, it's not a true sync point, it doesn't intersperse
any Update() callbacks during processing the message queue)

Change-Id: I154539044ceaff17c55c0640c3828010b087844a
Signed-off-by: David Steele <david.steele@samsung.com>
16 files changed:
automated-tests/src/dali/utc-Dali-FrameCallbackInterface.cpp
dali/devel-api/common/stage-devel.cpp
dali/devel-api/common/stage-devel.h
dali/devel-api/update/frame-callback-interface.h
dali/devel-api/update/update-proxy.cpp
dali/devel-api/update/update-proxy.h
dali/internal/event/common/stage-impl.cpp
dali/internal/event/common/stage-impl.h
dali/internal/update/manager/frame-callback-processor.cpp
dali/internal/update/manager/frame-callback-processor.h
dali/internal/update/manager/scene-graph-frame-callback.cpp
dali/internal/update/manager/scene-graph-frame-callback.h
dali/internal/update/manager/update-manager.cpp
dali/internal/update/manager/update-manager.h
dali/internal/update/manager/update-proxy-impl.cpp
dali/internal/update/manager/update-proxy-impl.h