fix: keep unprocessed data binds until they are consumed (#10732) f4b36c2d03

Co-authored-by: hernan <hernan@rive.app>
diff --git a/.rive_head b/.rive_head
index d4b2016..9c83d97 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-b73733a0525518a76e8a6b32a2529a2dea319ace
+f4b36c2d03f14884451fccd8947c6751e58b6683
diff --git a/include/rive/data_bind/data_bind_container.hpp b/include/rive/data_bind/data_bind_container.hpp
index 77ade01..38883e6 100644
--- a/include/rive/data_bind/data_bind_container.hpp
+++ b/include/rive/data_bind/data_bind_container.hpp
@@ -22,10 +22,11 @@
     void sortDataBinds();
 
 private:
-    void updateDataBind(DataBind* dataBind, bool applyTargetToSource);
+    bool updateDataBind(DataBind* dataBind, bool applyTargetToSource);
     std::vector<DataBind*> m_dataBinds;
     std::vector<DataBind*> m_persistingDataBinds;
     std::vector<DataBind*> m_dirtyDataBinds;
+    std::vector<DataBind*> m_unprocessedDirtyDataBinds;
 };
 } // namespace rive
 
diff --git a/src/data_bind/data_bind_container.cpp b/src/data_bind/data_bind_container.cpp
index b4d5b25..38c9134 100644
--- a/src/data_bind/data_bind_container.cpp
+++ b/src/data_bind/data_bind_container.cpp
@@ -65,12 +65,12 @@
     dataBind->container(this);
 }
 
-void DataBindContainer::updateDataBind(DataBind* dataBind,
+bool DataBindContainer::updateDataBind(DataBind* dataBind,
                                        bool applyTargetToSource)
 {
     if (dataBind->canSkip())
     {
-        return;
+        return false;
     }
     auto d = dataBind->dirt();
 
@@ -96,6 +96,7 @@
 
         dataBind->updateSourceBinding();
     }
+    return true;
 }
 
 void DataBindContainer::updateDataBinds(bool applyTargetToSource)
@@ -109,9 +110,15 @@
         // data binds on this list don't need to apply target to source because
         // any data bind that applies to source is collected on the
         // m_persistingDataBinds list
-        updateDataBind(dataBind, false);
+        if (!updateDataBind(dataBind, false))
+        {
+            m_unprocessedDirtyDataBinds.push_back(dataBind);
+        }
     }
     m_dirtyDataBinds.clear();
+    m_dirtyDataBinds.assign(m_unprocessedDirtyDataBinds.begin(),
+                            m_unprocessedDirtyDataBinds.end());
+    m_unprocessedDirtyDataBinds.clear();
 }
 
 void DataBindContainer::sortDataBinds()