]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 28 Feb 2011 08:17:46 +0000 (08:17 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 28 Feb 2011 08:17:46 +0000 (08:17 +0000)
core/producer/frame_producer_device.cpp
core/producer/frame_producer_device.h
core/producer/layer.cpp
core/producer/layer.h
protocol/amcp/AMCPCommandsImpl.cpp

index af6ad68281871094e5f9cb16c12983efa2c305b0..6a893703c0baa3cd62a2ced8092d845a3b103055 100644 (file)
@@ -71,17 +71,11 @@ public:
                return frames;\r
        }\r
 \r
-       void load(int index, const safe_ptr<frame_producer>& producer, bool play_on_load)\r
+       void load(int index, const safe_ptr<frame_producer>& producer, bool play_on_load, bool preview)\r
        {\r
                producer->set_parent_printer(std::bind(&layer::print, &layers_[index]));\r
                producer->initialize(factory_);\r
-               executor_.invoke([&]{layers_[index].load(producer, play_on_load);});\r
-       }\r
-                       \r
-       void preview(int index, const safe_ptr<frame_producer>& producer)\r
-       {\r
-               producer->initialize(factory_);\r
-               executor_.invoke([&]{layers_[index].preview(producer);});\r
+               executor_.invoke([&]{layers_[index].load(producer, play_on_load, preview);});\r
        }\r
 \r
        void pause(int index)\r
@@ -179,8 +173,7 @@ public:
 frame_producer_device::frame_producer_device(const printer& parent_printer, const safe_ptr<frame_factory>& factory, const output_func& output) : impl_(new implementation(parent_printer, factory, output)){}\r
 frame_producer_device::frame_producer_device(frame_producer_device&& other) : impl_(std::move(other.impl_)){}\r
 void frame_producer_device::swap(frame_producer_device& other){impl_->swap(other);}\r
-void frame_producer_device::load(int index, const safe_ptr<frame_producer>& producer, bool play_on_load){impl_->load(index, producer, play_on_load);}\r
-void frame_producer_device::preview(int index, const safe_ptr<frame_producer>& producer){impl_->preview(index, producer);}\r
+void frame_producer_device::load(int index, const safe_ptr<frame_producer>& producer, bool play_on_load, bool preview){impl_->load(index, producer, play_on_load, preview);}\r
 void frame_producer_device::pause(int index){impl_->pause(index);}\r
 void frame_producer_device::play(int index){impl_->play(index);}\r
 void frame_producer_device::stop(int index){impl_->stop(index);}\r
index 854ee6bc2b78aa7b0450a35efce8b28c09d6f5a7..eb57eaa401d3cf5618b76dd8ba1fa3a15fd633ad 100644 (file)
@@ -32,8 +32,7 @@ public:
        frame_producer_device(frame_producer_device&& other);\r
        void swap(frame_producer_device& other);\r
                \r
-       void load(int index, const safe_ptr<frame_producer>& producer, bool play_on_load = false);\r
-       void preview(int index, const safe_ptr<frame_producer>& producer);\r
+       void load(int index, const safe_ptr<frame_producer>& producer, bool play_on_load = false, bool preview = false);\r
        void pause(int index);\r
        void play(int index);\r
        void stop(int index);\r
index edf0597ddca74f60573f43a91f270a0b2684a994..fc1e9d4fa94cd1482dc0383f27ecf26862e7ab5c 100644 (file)
@@ -66,21 +66,22 @@ public:
                , last_frame_(draw_frame::empty())\r
                , is_paused_(false){}\r
        \r
-       void load(const safe_ptr<frame_producer>& frame_producer, bool play_on_load)\r
+       void load(const safe_ptr<frame_producer>& frame_producer, bool play_on_load, bool preview)\r
        {               \r
                background_ = frame_producer;\r
                is_paused_ = false;\r
+\r
+               if(preview)\r
+               {\r
+                       play();\r
+                       receive();\r
+                       pause();\r
+               }\r
+\r
                if(play_on_load)\r
-                       play();         \r
+                       play();                         \r
        }\r
 \r
-       void preview(const safe_ptr<frame_producer>& frame_producer)\r
-       {\r
-               load(frame_producer, true);\r
-               receive();\r
-               pause();\r
-       }\r
-       \r
        void play()\r
        {                       \r
                if(!is_paused_)                 \r
@@ -165,12 +166,12 @@ layer& layer::operator=(layer&& other)
 void layer::swap(layer& other)\r
 {\r
        impl_.swap(other.impl_);\r
+       // Printer state is not swapped.\r
        tbb::spin_mutex::scoped_lock lock(impl_->printer_mutex_);\r
        std::swap(impl_->parent_printer_, other.impl_->parent_printer_);\r
        std::swap(impl_->index_, other.impl_->index_);\r
 }\r
-void layer::load(const safe_ptr<frame_producer>& frame_producer, bool play_on_load){return impl_->load(frame_producer, play_on_load);} \r
-void layer::preview(const safe_ptr<frame_producer>& frame_producer){return impl_->preview(frame_producer);}    \r
+void layer::load(const safe_ptr<frame_producer>& frame_producer, bool play_on_load, bool preview){return impl_->load(frame_producer, play_on_load, preview);}  \r
 void layer::play(){impl_->play();}\r
 void layer::pause(){impl_->pause();}\r
 void layer::stop(){impl_->stop();}\r
index 99cdd8722799b3dbf79bbac19f02d1c95971862e..f3103932c651db9e573d2540851cfecaeea7a273 100644 (file)
@@ -23,8 +23,7 @@ public:
 \r
        void swap(layer& other); // nothrow \r
                \r
-       void load(const safe_ptr<frame_producer>& producer, bool play_on_load = false); // nothrow\r
-       void preview(const safe_ptr<frame_producer>& producer); // nothrow\r
+       void load(const safe_ptr<frame_producer>& producer, bool play_on_load, bool preview); // nothrow\r
        void play(); // nothrow\r
        void pause(); // nothrow\r
        void stop(); // nothrow\r
index 0b06c546fccc577b5ce8c7affbcaf41306e0b1f2..c804712a4f952672f63d8c7600b46661774d8b77 100644 (file)
@@ -384,7 +384,7 @@ bool LoadCommand::DoExecute()
        {\r
                _parameters[0] = _parameters[0];\r
                auto pFP = create_producer(_parameters);                \r
-               GetChannel()->producer().preview(GetLayerIndex(), pFP);\r
+               GetChannel()->producer().load(GetLayerIndex(), pFP, false, true);\r
        \r
                CASPAR_LOG(info) << "Loaded " <<  _parameters[0] << TEXT(" successfully");\r
 \r