David Steele [Fri, 8 Apr 2022 16:02:56 +0000 (17:02 +0100)]
Changed handling of uniforms of arrays of structs
A) For uniforms of the form "basename[index].element", the array index handling
didn't work.
In GL (on Ubuntu) the shader reflection for such uniforms provides
individual locations for each element of the array/struct;
B) For uniforms of the form "basename[index]", where basename is a basic
type (float/vecN, etc), the GL shader reflection produces only 1 location
for the basename, and provides the element count.
Mapping properties to such uniforms is done by having a Property per
element. For the first case, no index/array handling is needed.
For the second case, each property needs to match to the basename without
the array subscript, and also store it's array index.
Modified property setup to remove array index for properties of the first type.
Modified uniform lookup to handle the different hashes appropriately.
Modified test graphics to ensure the uniform reflection can be set up in the
same way as GL provides.
Change-Id: I4be92f3e6933ff1b9b4a7d48e97f5629930c0b4c
Signed-off-by: David Steele <david.steele@samsung.com>
David Steele [Fri, 8 Apr 2022 11:54:36 +0000 (12:54 +0100)]
DALi Version 2.1.17
Change-Id: I30ecdbddcd58603a6b1a4c2adf13b7311cbd3b0f
Eunki Hong [Tue, 5 Apr 2022 16:34:13 +0000 (16:34 +0000)]
Merge "Level up Dali::Internal::FreeList as Dali::FreeList" into devel/master
Heeyong Song [Tue, 5 Apr 2022 11:19:43 +0000 (11:19 +0000)]
Merge "Use update object size in CalculateActorScreenPosition" into devel/master
Adeel Kazmi [Tue, 5 Apr 2022 06:58:07 +0000 (06:58 +0000)]
Merge "Hit-test can hit more than 32 depth clipping actor." into devel/master
Eunki, Hong [Tue, 15 Feb 2022 06:48:17 +0000 (15:48 +0900)]
Level up Dali::Internal::FreeList as Dali::FreeList
Open devel Dali::Internal::FreeList as Dali::FreeList
so we can use this container in another packages i.e. dali-toolkit's texture-manager
Change-Id: I719e960ce1ecf8b61a980e49cba976fe1ab57200
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Adeel Kazmi [Mon, 4 Apr 2022 17:31:36 +0000 (17:31 +0000)]
Merge "Fixing culling for magnifier use case" into devel/master
David Steele [Mon, 14 Mar 2022 17:17:52 +0000 (17:17 +0000)]
Fixing culling for magnifier use case
Should use the camera's canvas size, not the viewport.
Added canvas size to left/right/top/bottom clipping distance
in camera for perspective projection
Fixed bug that would always force using perspective projection
Fixed bug with modifying scene object directly in event thread.
Top and Bottom clipping plane values for perspective have been
made consistent with values for Ortho projection; however, this
currently forces top to be +ve and bottom to be -ve when set
using just size. Test cases are inconsistent in this regard; when
set via l/r/t/b/n/f API, top and bottom are -ve and +ve respectively.
Have used fabsf when re-calculating bounding box dimensions to
allow for this inconsistency.
Change-Id: I95e80e4c09f17a3240cccf16df23f09e8d9ad9cf
Heeyong Song [Thu, 24 Mar 2022 06:56:08 +0000 (15:56 +0900)]
Use update object size in CalculateActorScreenPosition
Change-Id: I475166706a0eb4defd1761ce56d185da7fe753a1
Eunki, Hong [Tue, 29 Mar 2022 02:54:24 +0000 (11:54 +0900)]
Hit-test can hit more than 32 depth clipping actor.
When clipping mode is CLIP_TO_BOUNDING_BOX, the limitation of
clipping depth doesn't exist. We can clipping near 2^15-depth.
But current clipping algorithm only allow 31-depth of clipping.
This patch make that we don't use depthmask in hit-test algorithm
When clipping mode is enabled, and current actor hit test failed,
just skip all children's hit test.
Note : CLIP_CHILDREN is kind of rendering method, So when clipping mode is
CLIP_CHILDREN, we can't detect how it "really" clipped.
This is physically limitation, so just ignore it.
Change-Id: I83524d6f96ccbb59d7b2802f1630c7e338b251a0
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Adam Bialogonski [Fri, 1 Apr 2022 11:51:18 +0000 (12:51 +0100)]
DALi Version 2.1.16
Change-Id: If043023658a6a6f59d220166a67cd5363d866faf
joogab.yun [Wed, 30 Mar 2022 09:28:12 +0000 (18:28 +0900)]
Revert "If CapturesAllTouchAfterStart() is true, it should be hit only after touchdown."
This reverts commit
3b0fba86dfcad3ae5841679e1c1790db563d7301.
Change-Id: I91350d5f72b826bc7b6fad4920b89079e4fc7d53
Eunki, Hong [Mon, 28 Mar 2022 10:44:34 +0000 (19:44 +0900)]
Fix hit-test bug when overlay2D child is not overlayed
Let's image some case like below scene tree.
root --- A (overlay2D) --- A1 (normal)
|- B (normal)
When A1 and B is overlaped, B will be drawn under the A1. (Because A is overlay)
But, in hit-test-algorithm, overlay2D information doesn't propagated.
This patch make hit-test can propagate overlay2D property,
so the hit test result return reasonable as what we can see.
Change-Id: I123d3bbc2c6ba27df3f10829ebaf16b80eb0f987
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki Hong [Mon, 28 Mar 2022 10:35:16 +0000 (10:35 +0000)]
Merge "TTrace enable always in tizen" into devel/master
joogab yun [Mon, 28 Mar 2022 05:45:12 +0000 (05:45 +0000)]
Merge "If CapturesAllTouchAfterStart() is true, it should be hit only after touchdown. So, If the touch moves after another actor has been touched so that the current actor is hit, it should behave as if it didn't hit." into devel/master
Eunki, Hong [Wed, 23 Mar 2022 13:32:49 +0000 (22:32 +0900)]
TTrace enable always in tizen
Make ttrace enable always in tizen. Other platform keep current policy
Change-Id: I500fe9b95f7d8bf079f89975bf2346f1f7472ae8
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Adeel Kazmi [Fri, 25 Mar 2022 10:56:48 +0000 (10:56 +0000)]
DALi Version 2.1.15
Change-Id: I98023d937a38affaa836fed830c12aeeddda9b59
joogab.yun [Wed, 16 Mar 2022 02:19:22 +0000 (11:19 +0900)]
If CapturesAllTouchAfterStart() is true, it should be hit only after touchdown.
So, If the touch moves after another actor has been touched so that the current actor is hit, it should behave as if it didn't hit.
Change-Id: I609607ea19a5cf5f6b07b5065132f491122f7a6b
Adeel Kazmi [Tue, 22 Mar 2022 15:17:47 +0000 (15:17 +0000)]
Merge "Remove element of Property::Map by the specified key." into devel/master
huayong.xu [Thu, 17 Mar 2022 06:05:21 +0000 (14:05 +0800)]
Remove element of Property::Map by the specified key.
Change-Id: Ife048e33a54edb6b6cebfe79b464707c0a361a45
Adam Bialogonski [Mon, 14 Mar 2022 16:46:44 +0000 (16:46 +0000)]
DirectRendering:
- Added RenderCallback for native rendering
- Added new Graphics API command - DrawNative()
- Added DrawableActor
Change-Id: If286d6eddf0836c63227c870eb13e8bab252fda7
Richard Huang [Fri, 18 Mar 2022 11:23:08 +0000 (11:23 +0000)]
DALi Version 2.1.14
Change-Id: Ifc21ce4863a0b29e278f50410facba6158caa4a4
SangHyeon Lee [Thu, 17 Mar 2022 10:46:02 +0000 (10:46 +0000)]
Merge "Add UserInteractionEnabled property on actor for controlling user interaction." into devel/master
joogab.yun [Sat, 12 Feb 2022 06:25:35 +0000 (15:25 +0900)]
Add a Hit-Test result events.
In the case of TouchEvent or Gesture, there is no way to propagate the event to the view below that is not related.
So, before sending an touch event, send an hitTestResult event to the view in the hit-test process to ask whether it will be hit or not.
If it returns false, it means that it will not be hit, and the hit-test continues to the next view.
Change-Id: I5b8681f569f5c3b89acc3fb23c1eada3d49b1c7b
David Steele [Fri, 11 Mar 2022 15:21:46 +0000 (15:21 +0000)]
DALi Version 2.1.13
Change-Id: I69b796cffa8be10d5e5fa21226d19e1f7535f436
David Steele [Mon, 7 Mar 2022 11:32:39 +0000 (11:32 +0000)]
Removed old context test cases
Synced with toolkit tests
Change-Id: I67f21c445cb9b17972e8994bee558d0bd0836e58
David Steele [Tue, 15 Feb 2022 10:01:35 +0000 (10:01 +0000)]
Added VisualRenderer (for visual default properties)
Rather than have registered properties for each visual,
embedded them in a specific type of VisualRenderer.
Added UniformMappings to ensure that they can be used as
uniforms. (Properties don't have to have the same name
as the uniform, but it's probably advisable. However, we
have some very specific hardcoded mapping for actor "size"
-> uniform "uSize" in render-renderer...), so it's less
confusing having property "transformSize"->uniform "size".
Changed types to ensure they match the actual uniform types
in the shaders.
Reduces creation time for each visual, as much more is done
at compilation time.
Change-Id: I386504fabf82f8e57f1138e3814897604b094061
Signed-off-by: David Steele <david.steele@samsung.com>
EverLEEst(SangHyeon Lee) [Tue, 15 Feb 2022 11:33:43 +0000 (20:33 +0900)]
Add UserInteractionEnabled property on actor for controlling user interaction.
actor can be disabled touch event by setting SetSensitive(false),
and also can be disabled keyboard event by setting
SetKeyboardFocusable(false),
and touch focus on SetTouchFocusable(false).
but we do not provide universal user interaction controls to disable
actor events and behavior, so this property is neceesary.
regardless of value on Sensitive or Focusable,
UserInteractionEnable has high priority over the negative action.
Change-Id: Ia339cc4c94e2fa36f80cb8672aa16d7a664c858c
Eunki, Hong [Thu, 3 Mar 2022 05:39:28 +0000 (14:39 +0900)]
Make Dali::InstrusivePtr able to compare with nullptr
After explicit operation bool() patch, Dali::InstrusivePtr == nullptr make compile error.
This patch fix that situation, so keep codes legacy
Change-Id: I6fbdee55203a1a0e9b5d3a90125497957dddeced
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Adeel Kazmi [Fri, 4 Mar 2022 10:00:36 +0000 (10:00 +0000)]
DALi Version 2.1.12
Change-Id: I37214142c68799c7c0f2ecea4a7ef26694c6273a
Adam Bialogonski [Fri, 25 Feb 2022 11:46:54 +0000 (11:46 +0000)]
DALi Version 2.1.11
Change-Id: I949fdf526b1c5bd2c16d18751e2014389ca664a1
David Steele [Wed, 23 Feb 2022 17:13:12 +0000 (17:13 +0000)]
Merge "Implement some more speed-up : Reserve TextureBindings + don't copy geometry" into devel/master
David Steele [Wed, 23 Feb 2022 17:00:35 +0000 (17:00 +0000)]
Merge "Dali::CalculateHash support to hashing raw-buffer" into devel/master
Eunki, Hong [Thu, 3 Feb 2022 07:20:06 +0000 (16:20 +0900)]
Add Internal::IndexedMap
Make IndexedMap that key can be std::uint32_t and Internal::ConstString
IndexedMap can only do Register + Get.
We can check unique registration by this API.
IndexedMap use iterator as std::vector<std::pair<KeyType, ElementType>>::iterator.
Get API return iterator that key contained.
If found failed, return End() iterator.
Internally, we make it sorted key-index-element container.
It can search key by binary search. and less element copy action.
(ConstString can be convert const char* == size_t which can comparable)
Time complexity is O(|Element count|) for Register and
O(log|Element count|) for Get
Change some std::vector container as IndexedConstStringMap and IndexedIntegerMap
at type-info and type-register.
type-info is very important area of DALi engine.
So I append some define blocks when we meet some strange problems in future.
It will be remove when this patch is safe enough.
Change-Id: I7ad2e1a4776a4acedb4632053419b4fdcfa043bb
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Fri, 18 Feb 2022 05:57:35 +0000 (14:57 +0900)]
Dali::CalculateHash support to hashing raw-buffer
Current Dali::CalculateHash input std::string, but internally
convert as const char * string.
In this case, hashing calculation didn'w works well
when std::string contain \0 character middle of string.
This patch make one more API s.t. allow std::vector<std::uint8_t>
as input so we can specific the length of data what we want to hash.
It will be used in dali-toolkit texture-cache-manager in soon.
Change-Id: I5ceaeb0cbf1140729d1f0f68930c8cbcd8a18594
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Tue, 22 Feb 2022 12:39:36 +0000 (21:39 +0900)]
Implement some more speed-up : Reserve TextureBindings + don't copy geometry
Make some GraphicsCommand API's input as const vector<>&
These will not copy the internal values. and also we can assume that
inputed data didn't change in that API
+
We reserve textureBinding's capacity as the Count of textures.
Most of texture have graphics object, and it will fitin that
reserved memory area.
This patch reduce unuseful re-allocation internal std::vector.
Change-Id: Ic9eee1ae2fe171431cf20a58c47af344edc977ef
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Tue, 22 Feb 2022 08:19:22 +0000 (17:19 +0900)]
Ignore insert/erase function during PreRender's itemsDirtyRects
Previous code just insert and erase when the renderer hold dirtyRect
more than 3.
Each insert & erase operation in std::vector cost O(N). and it is expensive.
This patch reduce the insert & erase operation when renderer hold dirtyRect
more than 3. We can do tge same job by just moving data linearly.
(This patch is follow up 250728)
Change-Id: I230f32f07c72c3a4f15c6bb7f6a42bd61ce87d1d
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Tue, 22 Feb 2022 07:56:56 +0000 (16:56 +0900)]
Avoid temporary vector creation during Relayout
We use temp std::vector stack during NegotiateDimensions.
This patch make we use always same global static value as stack.
So we can avoid create / destroy it every frame.
(This patch is follow up 248736)
Change-Id: I1fa059693d0559b00afbad32dd646e103aba53f7
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Adeel Kazmi [Fri, 18 Feb 2022 11:13:24 +0000 (11:13 +0000)]
Merge "DALi Version 2.1.10" into devel/master
Richard Huang [Fri, 18 Feb 2022 11:01:05 +0000 (11:01 +0000)]
DALi Version 2.1.10
Change-Id: I255826e810ab53dc5f41a77c1e2416bfbaf4a517
Heeyong Song [Fri, 18 Feb 2022 01:56:11 +0000 (01:56 +0000)]
Merge "(Partial Update) Set the updated flag when the Renderer is added/removed" into devel/master
joogab.yun [Thu, 27 Jan 2022 01:11:37 +0000 (10:11 +0900)]
Add EmitWheelEventGeneratedSignal for custom wheel event
For custom wheel events,
we first send the event to the focus manager by WheelEventGeneratedSignal.
Previously, RotaryEvents(CustomWheel type) could always be received only by window.
Now, User can receive Rotary Events in focused View as well.
It is also possible to propagate events to the parent view.
If there is no focused View, the window will receive the event.
This only applies to Rotary Event(CustomWheel type).
Change-Id: I13e2c9b725ee5a65c7408df2f4293c7b61c56035
Heeyong Song [Tue, 15 Feb 2022 10:23:23 +0000 (19:23 +0900)]
(Partial Update) Set the updated flag when the Renderer is added/removed
Change-Id: I586777f0bda8dde74ee04d461b54e7165e74b35c
Heeyong Song [Wed, 16 Feb 2022 05:26:45 +0000 (05:26 +0000)]
Merge "Add stride to PixelData" into devel/master
David Steele [Mon, 14 Feb 2022 16:29:32 +0000 (16:29 +0000)]
Added prefix matching to test case execution
Change-Id: I5a836aca4c788a347b383a0b3d23771e22ff8f2b
joogab yun [Sat, 12 Feb 2022 00:22:42 +0000 (00:22 +0000)]
Merge "If MaximumTapsRequired is 1, it is not waiting for a multi-tap, so a Tap gesture send a single tap." into devel/master
David Steele [Fri, 11 Feb 2022 12:01:40 +0000 (12:01 +0000)]
DALi Version 2.1.9
Change-Id: I7e8ba8a3683ccd489e8c6afcdcb0072fe8db2b29
Heeyong Song [Thu, 3 Feb 2022 05:18:10 +0000 (14:18 +0900)]
Add stride to PixelData
Change-Id: Ida564386962e1afed91d3f6805b5a14f446a6937
joogab.yun [Thu, 10 Feb 2022 05:00:00 +0000 (14:00 +0900)]
If MaximumTapsRequired is 1, it is not waiting for a multi-tap, so a Tap gesture send a single tap.
Even if set to tapGestureDetector.SetMaximumTapsRequired(1);
When user tap multiple times quickly, the tap gesture event now fires only once every maximum Allowed Time (500ms).
If MaximumTapsRequired is 1, user want to receive tap gesture events immediately because we are not waiting for a multi-tap.
Change-Id: I9651facb9650982e2e0dc414974677c531481bf8
Adeel Kazmi [Fri, 4 Feb 2022 13:14:39 +0000 (13:14 +0000)]
DALi Version 2.1.8
Change-Id: If05e41c6141e9e20dd655418b04843b9e7b72225
Adeel Kazmi [Fri, 28 Jan 2022 17:06:43 +0000 (17:06 +0000)]
Merge "Adding Handle::ReserveCustomProperties method" into devel/master
Adam Bialogonski [Fri, 28 Jan 2022 12:10:16 +0000 (12:10 +0000)]
DALi Version 2.1.7
Change-Id: Iccbe522c45fd61d039458b809fa4f86f2423eb78
David Steele [Tue, 25 Jan 2022 11:00:59 +0000 (11:00 +0000)]
Adding Handle::ReserveCustomProperties method
Change-Id: I2baa3a77e2db557a6a755e66105530cbe72ac442
Heeyong Song [Mon, 24 Jan 2022 07:56:47 +0000 (16:56 +0900)]
(Partial Update) Use world color to check if the item is updated
Change-Id: I2d1ca5df07cd1c0456f77c178d60e2bf463448ed
Heeyong Song [Tue, 25 Jan 2022 04:54:45 +0000 (04:54 +0000)]
Merge "(Partial update) Change resetting the updated flag" into devel/master
Heeyong Song [Fri, 26 Nov 2021 08:23:41 +0000 (17:23 +0900)]
(Partial update) Change resetting the updated flag
Reset the updated flag after calculating all damaged area of the scene
Change-Id: I6abf26012f3053689abb461d42c2960b09886895
David Steele [Mon, 24 Jan 2022 12:05:04 +0000 (12:05 +0000)]
Initialized SG::Scene::mGraphicsController in constructor
Change-Id: I813f9643c1e4e92a6e2f01a342a2c6981b479f7a
Adeel Kazmi [Fri, 21 Jan 2022 16:14:58 +0000 (16:14 +0000)]
Merge "Changed SceneHolder's RenderTarget initialization" into devel/master
David Steele [Fri, 17 Dec 2021 17:24:15 +0000 (17:24 +0000)]
Changed SceneHolder's RenderTarget initialization
SceneHolder currently generates Graphics::RenderTarget in the wrong
thread (Event thread) which can cause crashes in EglController if
there is a heavy load, as Surface/Context pair vector can be modified
in one thread whilst being read in another.
Instead, set up the RenderTarget create info struct, and pass that
through the existing messages instead of RenderTarget. When the
SceneGraph::Scene gets it's second stage Initialize() method
called (by RenderManager), then use that CreateInfo struct to create
the RenderTarget. All modifications to the queues/vectors are now done
in the same thread, and should prevent crashes.
Change-Id: I6d33590ed85085f26c84c5d798abca48dd8affba
Signed-off-by: David Steele <david.steele@samsung.com>
Richard Huang [Fri, 21 Jan 2022 11:44:20 +0000 (11:44 +0000)]
DALi Version 2.1.6
Change-Id: I666c7a31240d367c229ad8516407091e1131c802
David Steele [Thu, 20 Jan 2022 15:59:29 +0000 (15:59 +0000)]
Merge "Decrease property registration time" into devel/master
David Steele [Wed, 19 Jan 2022 10:17:37 +0000 (10:17 +0000)]
Decrease property registration time
For animated custom properties attached to objects, such as uniforms
attached to visual renderers, the registration time is too long.
One of the culprits is the Object::RegisterProperty() method iterating
over all the preceding property names to ensure the uniqueness of the
property name.
In the visual case, we can remove this check, as we can ensure that
each call to RegisterProperty is only done once per uniform.
Added a method RegisterUniqueProperty (which should really be called
RegisterPropertyWithoutUniquenessCheck, but hey!) to perform the same
registration without the name lookup checks.
Change-Id: Id3b78e342415aef65f0ff121ae2c8ec4a9ec80a6
Signed-off-by: David Steele <david.steele@samsung.com>
Heeyong Song [Thu, 20 Jan 2022 04:59:42 +0000 (04:59 +0000)]
Merge "(Partial Update) Mark as not rendered if the node is transparent or culled" into devel/master
joogab yun [Wed, 19 Jan 2022 06:40:56 +0000 (06:40 +0000)]
Merge "Even if only InterceptTouchEvent is registered, it is hittable" into devel/master
joogab.yun [Thu, 30 Dec 2021 08:21:49 +0000 (17:21 +0900)]
Even if only InterceptTouchEvent is registered, it is hittable
Change-Id: I724c3bae0741a3ca8537e48474254c3f460deab1
Heeyong Song [Tue, 30 Nov 2021 09:15:40 +0000 (18:15 +0900)]
(Partial Update) Mark as not rendered if the node is transparent or culled
Change-Id: I0a6aeaa90e9da1ddb6b61d8ff8397e84a43ac668
Artur Świgoń [Thu, 13 Jan 2022 14:23:16 +0000 (15:23 +0100)]
Replace obsolete safe bool idiom with explicit operator bool
C++11 introduces 'explicit operator bool' to prevent unintended implicit
conversions to 'bool', thus making the trick with converting to a
pointer-to-member (a.k.a. "safe bool idiom") obsolete.
The explicit operator is more restrictive than 'safe bool', and it
helped uncover a bug in the test suite where object handles were
implicitly converted to bool before being sent to an std::ostream.
Change-Id: I8c9d33812bc022570f5c286d925914dba508185c
David Steele [Fri, 14 Jan 2022 15:40:23 +0000 (15:40 +0000)]
DALi Version 2.1.5
Change-Id: I4174771a77f5df2693b60fc09e585ee4af03d812
Adam Bialogonski [Fri, 7 Jan 2022 10:05:24 +0000 (10:05 +0000)]
DALi Version 2.1.4
Change-Id: Id10b0af4d5b296d014947b2386ece3488caf6e5d
Eunki, Hong [Tue, 21 Dec 2021 12:07:19 +0000 (21:07 +0900)]
Dali::Vector release memory later during Copy
Change-Id: I1df4a486426d00a2914d73b46cbb3905e1b2b7ef
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Heeyong Song [Fri, 17 Dec 2021 15:03:58 +0000 (15:03 +0000)]
Merge "Move mItemsDirtyRects from Scene to SceneGraph::Scene" into devel/master
Adeel Kazmi [Fri, 17 Dec 2021 06:58:25 +0000 (06:58 +0000)]
DALi Version 2.1.3
Change-Id: I9a39fc16eef86cd02dc9f65ccc6f912efd1993a5
Heeyong Song [Wed, 8 Dec 2021 05:49:56 +0000 (14:49 +0900)]
Move mItemsDirtyRects from Scene to SceneGraph::Scene
The list is used in the update thread. So move it to SceneGraph::Scene
Change-Id: Ic3b374d2e3840c05d72ed8b55697db4e5eef1f13
Bowon Ryu [Wed, 15 Dec 2021 09:04:40 +0000 (09:04 +0000)]
Merge "Fixed the crash appears after closing app when use ResizePolicy::USE_NATURAL_SIZE" into devel/master
Adeel Kazmi [Fri, 10 Dec 2021 13:54:18 +0000 (13:54 +0000)]
Merge "Fix the local matrix dirty flag when size is changed" into devel/master
Richard Huang [Fri, 10 Dec 2021 11:58:21 +0000 (11:58 +0000)]
DALi Version 2.1.2
Change-Id: I3df4c85dd1dc5537ec39dd593a4d5cbff22a93ba
Heeyong Song [Mon, 29 Nov 2021 04:29:26 +0000 (13:29 +0900)]
Use a proper projection matrix
Change-Id: I6bed10bc639a838918919c5621d6f399db5cebe3
Shrouq Sabah [Thu, 14 Oct 2021 08:29:41 +0000 (11:29 +0300)]
Fixed the crash appears after closing app when use ResizePolicy::USE_NATURAL_SIZE
There is a crash when destroying text-editor and the ResizePolicy is USE_NATURAL_SIZE.
textEditor.SetProperty(Dali::Actor::Property::WIDTH_RESIZE_POLICY, ResizePolicy::USE_NATURAL_SIZE);"
then close the application. the below exception appears.
ERROR: DALI: Assert (threadLocal) failed in: static Dali::Internal::ThreadLocalStorage& Dali::Internal::ThreadLocalStorage::Get()
Exception:
threadLocal
thrown at static Dali::Internal::ThreadLocalStorage& Dali::Internal::ThreadLocalStorage::Get()
terminate called after throwing an instance of 'Dali::DaliException'
The solution applied at RelayoutController::Get().
Checked if ThreadLocalStorage is created then proceed normally otherwise returns null
Because the ThreadLocalStorage::Get() only retrieves STL without checking if it exists.
The caller of RelayoutController::Get() should check if RelayoutController is not null.
There is only one place use this function and already checks if RelayoutController is not null.
Change-Id: I343ef47f03aa86babb4bdd19f95c3e7ccb211dff
Eunki Hong [Mon, 6 Dec 2021 04:06:03 +0000 (04:06 +0000)]
Merge "Fix ReuseRenderer issue when renderer is nullptr" into devel/master
David Steele [Fri, 3 Dec 2021 13:57:26 +0000 (13:57 +0000)]
DALi Version 2.1.1
Change-Id: Ie412924e57d35e2605366111e636ee568b9e402e
Eunki, Hong [Fri, 3 Dec 2021 04:21:51 +0000 (13:21 +0900)]
Fix ReuseRenderer issue when renderer is nullptr
When ClippingMode is CLIP_TO_BOUNDING_BOX and it have no children,
we add nullptr SceneGraph::Renderer into renderables.
Previous codes are assume that that renderers are not nullptr
so they just use many of memberfunctions.
This patch fix the dangerous nullptr access.
TODO : need to make UTC
Change-Id: If04ff5a68ef95c27fbe43166eb64734d681bcdaa
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Richard [Thu, 2 Dec 2021 15:55:34 +0000 (15:55 +0000)]
Fix the local matrix dirty flag when size is changed
Change-Id: I009c1a17b037744e6d3c8268651af8543786bb80
Richard Huang [Mon, 29 Nov 2021 17:43:05 +0000 (17:43 +0000)]
Sort transform components in breadth first order per scene
Change-Id: Iad835c30b6d83554bc2a150516c23dbd19183937
Eunki, Hong [Fri, 26 Nov 2021 12:16:31 +0000 (21:16 +0900)]
Fix coverity issue
Delete useless member value
Change-Id: I338ace58b987a9cf2ee593fc14a2684d81adf8df
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Adam Bialogonski [Fri, 26 Nov 2021 08:40:47 +0000 (08:40 +0000)]
DALi Version 2.1.0
Change-Id: I86132cc32010fd84cb60c9dbee06f8b693e19a99
David Steele [Wed, 24 Nov 2021 12:25:29 +0000 (12:25 +0000)]
Fixed actor relayout dimension dependencies
Height dimension dependency on child should now work properly.
Retained old behaviour from before refactor - when no size
negotiation, RelayoutDependentOnChildrenBase returned true.
Change-Id: I3a375f64b9bfe6bca8f1909e53aa1e6e133afcd3
Eunki, Hong [Tue, 23 Nov 2021 05:31:11 +0000 (14:31 +0900)]
ActorSizer::RelayoutDependentOnXXX return default value
Before refactoring, when mRelayoutData doesn't exist,
RelayoutDependentOnChildrenBase return true.
Because DEFAULT state is "ResizePolicy::USE_NATURAL_SIZE" and
It's case s.t. RelayoutDependentOnChildrenBase is true.
After refactoring, if mRelayoutData is null, it always return false.
This patch just sync with previous behavior.
Change-Id: Id5ac45b4b635308c748fabd50cc52774c67994d6
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Wed, 17 Nov 2021 07:44:38 +0000 (16:44 +0900)]
Dali::Vector release data more safe (Dali::Vector::Replace)
We got some issue when someone use mData
during Dali::Vector is on reserving.
In this case, mData = nullptr (or mData memory is deleted.) very short time.
Now, we add VectorBase::Replace(void* newData) function.
It mean, VectorBase::mData will be replaced as newData.
It can block thread integrity issue.
Note : VectorBase::Copy can have nullptr between Release() <-> Reserve()
There is no way to fix it without any additional memory.
So just keep current implement logic.
Change-Id: Ie09b1bc00146f4c3be9294853a32c093b3597fba
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Eunki, Hong [Thu, 4 Nov 2021 13:01:47 +0000 (22:01 +0900)]
Let range for loop don't touch container at RenderManager
Reallocate or Resize the container during range-based-loop is UB.
So many case, we try to not add/erase some items during range-based-loop is working.
There was some codes that erase item during for loop.
So I make it out, for safety.
Change-Id: I919510200adfafbd95a6202ac295ffb7bc06c408
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
David Steele [Fri, 12 Nov 2021 16:20:09 +0000 (16:20 +0000)]
Recalculated layer's reusability flags after transform update
Layer's reusability flags were being left as true causing
some examples to fail to render properly, as render items
were being reused without being updated after a transform.
Reworked UpdateNodes to move layer reusability calculation
until after TransformManager::Update.
Change-Id: Id0e30489074ae3690984e4f95f0b3cd730d80440
Richard Huang [Fri, 5 Nov 2021 15:47:28 +0000 (15:47 +0000)]
Reset node animatable properties for two frames after removing the frame callback
Change-Id: I67e0ee42b2da8076fa47cadf2af1435c89a4a431
Richard Huang [Fri, 29 Oct 2021 13:08:11 +0000 (14:08 +0100)]
Fix the local matrix dirty flags for transform components
Change-Id: I0e54461468d2e0c923757ab9dc2a7d79f93ea2fe
Richard Huang [Wed, 27 Oct 2021 16:43:23 +0000 (17:43 +0100)]
Fixed node dirty flags when inheriting the flags from the parent node
Change-Id: I112641e530c0c56f8c793ddf8e263366a16cfe08
Richard Huang [Fri, 22 Oct 2021 10:14:49 +0000 (11:14 +0100)]
Fix the camera's projection matrix when copying it from the previous frame
Change-Id: Ic189b49d2bd824e5ad8802396bd26b5224701dc2
Richard Huang [Tue, 12 Oct 2021 15:26:04 +0000 (16:26 +0100)]
Add a node resetter that resets the animatable properties for two frames after node connection
Change-Id: I3a64c3719107c231085a524b05c1302977ccde10
Adeel Kazmi [Thu, 18 Nov 2021 14:15:04 +0000 (14:15 +0000)]
Merge "DALi Version 2.0.53" into devel/master
Richard [Thu, 18 Nov 2021 11:59:43 +0000 (11:59 +0000)]
DALi Version 2.0.53
Change-Id: Ib413dcfba88735cfa6a1bd33d8569ff03cf75beb
Adeel Kazmi [Thu, 18 Nov 2021 10:35:20 +0000 (10:35 +0000)]
Fix SVACE error in render-manager.cpp
Change-Id: I4da240f713fef7777d5c653de52397e3f8cb9afc
David Steele [Mon, 15 Nov 2021 13:37:20 +0000 (13:37 +0000)]
Refactored actor size negotiation
Moved all size negotiation implementation to a new
ActorSizer class. This handles size negotiation and
target / animated size.
Moved static methods from ActorRelayouter into ActorSizer.
Change-Id: I5137bb333d0254c80ede361ee7d36899830de21f
Signed-off-by: David Steele <david.steele@samsung.com>
Heeyong Song [Wed, 17 Nov 2021 10:34:51 +0000 (10:34 +0000)]
Merge "(Partial update) Reset the updated flag after calculating the update area" into devel/master