]> git.sesse.net Git - casparcg/commitdiff
1061033: Clear blend modes when doing MIXER CLEAR command
authorhellgore <hellgore@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 5 Nov 2012 14:51:35 +0000 (14:51 +0000)
committerhellgore <hellgore@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 5 Nov 2012 14:51:35 +0000 (14:51 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/trunk@3488 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

core/mixer/mixer.cpp
core/mixer/mixer.h
protocol/amcp/AMCPCommandsImpl.cpp

index 2dcabd6b8175d5ffb7de7808fd2d3f9f5808b189..471647e5c606b0b9bc8ff267e54f3a47e926c997 100644 (file)
@@ -133,6 +133,22 @@ public:
                        blend_modes_[index] = value;\r
                }, high_priority);\r
        }\r
+\r
+       void clear_blend_mode(int index)\r
+       {\r
+               executor_.begin_invoke([=]\r
+               {\r
+                       blend_modes_.erase(index);\r
+               }, high_priority);\r
+       }\r
+\r
+       void clear_blend_modes()\r
+       {\r
+               executor_.begin_invoke([=]\r
+               {\r
+                       blend_modes_.clear();\r
+               }, high_priority);\r
+       }\r
        \r
        void set_video_format_desc(const video_format_desc& format_desc)\r
        {\r
@@ -163,6 +179,8 @@ void mixer::send(const std::pair<std::map<int, safe_ptr<core::basic_frame>>, std
 core::video_format_desc mixer::get_video_format_desc() const { return impl_->get_video_format_desc(); }\r
 safe_ptr<core::write_frame> mixer::create_frame(const void* tag, const core::pixel_format_desc& desc){ return impl_->create_frame(tag, desc); }                \r
 void mixer::set_blend_mode(int index, blend_mode::type value){impl_->set_blend_mode(index, value);}\r
+void mixer::clear_blend_mode(int index) { impl_->clear_blend_mode(index); }\r
+void mixer::clear_blend_modes() { impl_->clear_blend_modes(); }\r
 void mixer::set_video_format_desc(const video_format_desc& format_desc){impl_->set_video_format_desc(format_desc);}\r
 boost::unique_future<boost::property_tree::wptree> mixer::info() const{return impl_->info();}\r
 }}
\ No newline at end of file
index c01482527784c02081b934003bab95297ce836a8..560b2ded4801df021b60239efc1c57a1559d7080 100644 (file)
@@ -67,7 +67,8 @@ public:
        void set_video_format_desc(const video_format_desc& format_desc);\r
        \r
        void set_blend_mode(int index, blend_mode::type value);\r
-\r
+       void clear_blend_mode(int index);\r
+       void clear_blend_modes();\r\r
        boost::unique_future<boost::property_tree::wptree> info() const;\r
        \r
 private:\r
index 3e98ec89daadabc8ddadc35039f9bd6723528625..3b44a061d1899448e013a93de655d78c1b7dac62 100644 (file)
@@ -574,10 +574,16 @@ bool MixerCommand::DoExecute()
                else if(_parameters[0] == L"CLEAR")\r
                {\r
                        int layer = GetLayerIndex(std::numeric_limits<int>::max());\r
-                       if(layer ==     std::numeric_limits<int>::max())\r
+                       if (layer == std::numeric_limits<int>::max())\r
+                       {\r
                                GetChannel()->stage()->clear_transforms();\r
+                               GetChannel()->mixer()->clear_blend_modes();\r
+                       }\r
                        else\r
+                       {\r
                                GetChannel()->stage()->clear_transforms(layer);\r
+                               GetChannel()->mixer()->clear_blend_mode(layer);\r
+                       }\r
                }\r
                else if(_parameters[0] == L"COMMIT")\r
                {\r