summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2023-02-02 21:42:00 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2023-02-02 21:42:00 +0100
commitc3dc649badc6b93a0ec052c3a3eefbe5761c7213 (patch)
treecadf42eefd876ecde78f0189700012b0dcbc1c1d
parentc2df0381313ffe5e155b7dc3d6d4c7271a4b73a2 (diff)
FRP: require lock when adding dependencies
-rw-r--r--include/erebos/frp.h7
-rw-r--r--src/frp.cpp2
2 files changed, 5 insertions, 4 deletions
diff --git a/include/erebos/frp.h b/include/erebos/frp.h
index 28a8f63..72b5cc9 100644
--- a/include/erebos/frp.h
+++ b/include/erebos/frp.h
@@ -89,7 +89,7 @@ public:
virtual ~BhvImplBase();
protected:
- void dependsOn(shared_ptr<BhvImplBase> other);
+ void dependsOn(const BhvCurTime &, shared_ptr<BhvImplBase> other);
void updated(const BhvCurTime &);
virtual bool needsUpdate(const BhvCurTime &) const;
virtual void doUpdate(const BhvCurTime &);
@@ -251,9 +251,10 @@ private:
template<typename A, typename B, typename C>
BhvFun<A, C> operator>>(const BhvFun<A, B> & f, const BhvFun<B, C> & g)
{
+ BhvCurTime ctime;
auto impl = make_shared<BhvComp<A, B, C>>(f, g);
- impl->dependsOn(f.impl);
- impl->dependsOn(g.impl);
+ impl->dependsOn(ctime, f.impl);
+ impl->dependsOn(ctime, g.impl);
return impl;
}
diff --git a/src/frp.cpp b/src/frp.cpp
index 1d377dd..eba104d 100644
--- a/src/frp.cpp
+++ b/src/frp.cpp
@@ -73,7 +73,7 @@ BhvCurTime & BhvCurTime::operator=(BhvCurTime && other)
BhvImplBase::~BhvImplBase() = default;
-void BhvImplBase::dependsOn(shared_ptr<BhvImplBase> other)
+void BhvImplBase::dependsOn(const BhvCurTime &, shared_ptr<BhvImplBase> other)
{
depends.push_back(other);
other->rdepends.push_back(shared_from_this());