]> git.sesse.net Git - casparcg/commitdiff
* Fixed bug where deferred transforms did not compose correctly when committed.
authorHelge Norberg <helge.norberg@svt.se>
Wed, 16 Sep 2015 11:47:34 +0000 (13:47 +0200)
committerHelge Norberg <helge.norberg@svt.se>
Wed, 16 Sep 2015 11:47:34 +0000 (13:47 +0200)
core/frame/frame_transform.h
core/producer/stage.cpp
protocol/amcp/AMCPCommandsImpl.cpp

index 277c1c6fcfc6d26e35abf34491b617d0732768f3..bf2cdb35f550a12e299a90b6c05f70446482d751 100644 (file)
@@ -165,6 +165,11 @@ public:
                , tweener_(tween)
        {
        }
+
+       const frame_transform& dest() const
+       {
+               return dest_;
+       }
        
        frame_transform fetch()
        {
index cc25f4ece3370e9d173d88e4a95fb8875f814359..54f30ff59542ba109eb8f24c904e2906ed846523 100644 (file)
@@ -164,8 +164,9 @@ public:
                {
                        for (auto& transform : transforms)
                        {
-                               auto src = tweens_[std::get<0>(transform)].fetch();
-                               auto dst = std::get<1>(transform)(src);
+                               auto& tween = tweens_[std::get<0>(transform)];
+                               auto src = tween.fetch();
+                               auto dst = std::get<1>(transform)(tween.dest());
                                tweens_[std::get<0>(transform)] = tweened_transform(src, dst, std::get<2>(transform), std::get<3>(transform));
                        }
                }, task_priority::high_priority);
index 0bee7e87ae541232dbb0f9396cd33cf4a29e6cbd..ef042f78834ea8026dab2c39814d90bc1a14ffc3 100644 (file)
@@ -1175,8 +1175,9 @@ public:
 
        void commit_deferred()
        {
-               ctx_.channel.channel->stage().apply_transforms(
-                               std::move(deferred_transforms_[ctx_.channel_index]));
+               auto& transforms = deferred_transforms_[ctx_.channel_index];
+               ctx_.channel.channel->stage().apply_transforms(transforms).get();
+               transforms.clear();
        }
 
        void apply()