]> git.sesse.net Git - casparcg/blobdiff - modules/flash/flash.cpp
No more use for retry_task in decklink_consumer now since audio and video are complet...
[casparcg] / modules / flash / flash.cpp
index ed4b88434ad9f37e5af78907f20d26350d72977f..e0b85e92e65819228bc394d3c219d6bc59970a89 100644 (file)
@@ -79,16 +79,24 @@ public:
                filename = find_template(filename);
 
                auto str = (boost::wformat(L"<invoke name=\"Add\" returntype=\"xml\"><arguments><number>%1%</number><string>%2%</string>%3%<string>%4%</string><string><![CDATA[%5%]]></string></arguments></invoke>") % layer % filename % (play_on_load ? L"<true/>" : L"<false/>") % label % data).str();
-               CASPAR_LOG(info) << flash_producer_->print() << " Invoking add-command: " << str;
+               CASPAR_LOG(debug) << flash_producer_->print() << " Invoking add-command: " << str;
                std::vector<std::wstring> params;
                params.push_back(std::move(str));
                flash_producer_->call(std::move(params)).get();
        }
 
+       void verify_flash_player()
+       {
+               if (flash_producer_->call({ L"?" }).get() == L"0")
+                       CASPAR_THROW_EXCEPTION(expected_user_error() << msg_info("No flash player running on video layer."));
+       }
+
        void remove(int layer) override
        {
+               verify_flash_player();
+
                auto str = (boost::wformat(L"<invoke name=\"Delete\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array></arguments></invoke>") % layer).str();
-               CASPAR_LOG(info) << flash_producer_->print() << " Invoking remove-command: " << str;
+               CASPAR_LOG(debug) << flash_producer_->print() << " Invoking remove-command: " << str;
                std::vector<std::wstring> params;
                params.push_back(std::move(str));
                flash_producer_->call(std::move(params));
@@ -96,8 +104,10 @@ public:
 
        void play(int layer) override
        {
+               verify_flash_player();
+
                auto str = (boost::wformat(L"<invoke name=\"Play\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array></arguments></invoke>") % layer).str();
-               CASPAR_LOG(info) << flash_producer_->print() << " Invoking play-command: " << str;
+               CASPAR_LOG(debug) << flash_producer_->print() << " Invoking play-command: " << str;
                std::vector<std::wstring> params;
                params.push_back(std::move(str));
                flash_producer_->call(std::move(params));
@@ -105,8 +115,10 @@ public:
 
        void stop(int layer, unsigned int) override
        {
+               verify_flash_player();
+
                auto str = (boost::wformat(L"<invoke name=\"Stop\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array><number>0</number></arguments></invoke>") % layer).str();
-               CASPAR_LOG(info) << flash_producer_->print() << " Invoking stop-command: " << str;
+               CASPAR_LOG(debug) << flash_producer_->print() << " Invoking stop-command: " << str;
                std::vector<std::wstring> params;
                params.push_back(std::move(str));
                flash_producer_->call(std::move(params));
@@ -114,8 +126,10 @@ public:
 
        void next(int layer) override
        {
+               verify_flash_player();
+
                auto str = (boost::wformat(L"<invoke name=\"Next\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array></arguments></invoke>") % layer).str();
-               CASPAR_LOG(info) << flash_producer_->print() << " Invoking next-command: " << str;
+               CASPAR_LOG(debug) << flash_producer_->print() << " Invoking next-command: " << str;
                std::vector<std::wstring> params;
                params.push_back(std::move(str));
                flash_producer_->call(std::move(params));
@@ -123,8 +137,10 @@ public:
 
        void update(int layer, const std::wstring& data) override
        {
+               verify_flash_player();
+
                auto str = (boost::wformat(L"<invoke name=\"SetData\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array><string><![CDATA[%2%]]></string></arguments></invoke>") % layer % data).str();
-               CASPAR_LOG(info) << flash_producer_->print() << " Invoking update-command: " << str;
+               CASPAR_LOG(debug) << flash_producer_->print() << " Invoking update-command: " << str;
                std::vector<std::wstring> params;
                params.push_back(std::move(str));
                flash_producer_->call(std::move(params));
@@ -132,8 +148,10 @@ public:
 
        std::wstring invoke(int layer, const std::wstring& label) override
        {
+               verify_flash_player();
+
                auto str = (boost::wformat(L"<invoke name=\"Invoke\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array><string>%2%</string></arguments></invoke>") % layer % label).str();
-               CASPAR_LOG(info) << flash_producer_->print() << " Invoking invoke-command: " << str;
+               CASPAR_LOG(debug) << flash_producer_->print() << " Invoking invoke-command: " << str;
                std::vector<std::wstring> params;
                params.push_back(std::move(str));
                // TODO: because of std::async deferred timed waiting does not work so for now we have to block
@@ -142,8 +160,10 @@ public:
 
        std::wstring description(int layer) override
        {
+               verify_flash_player();
+
                auto str = (boost::wformat(L"<invoke name=\"GetDescription\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array></arguments></invoke>") % layer).str();
-               CASPAR_LOG(info) << flash_producer_->print() << " Invoking description-command: " << str;
+               CASPAR_LOG(debug) << flash_producer_->print() << " Invoking description-command: " << str;
                std::vector<std::wstring> params;
                params.push_back(std::move(str));
                // TODO: because of std::async deferred timed waiting does not work so for now we have to block
@@ -153,7 +173,7 @@ public:
        std::wstring template_host_info() override
        {
                auto str = (boost::wformat(L"<invoke name=\"GetInfo\" returntype=\"xml\"><arguments></arguments></invoke>")).str();
-               CASPAR_LOG(info) << flash_producer_->print() << " Invoking info-command: " << str;
+               CASPAR_LOG(debug) << flash_producer_->print() << " Invoking info-command: " << str;
                std::vector<std::wstring> params;
                params.push_back(std::move(str));
                // TODO: because of std::async deferred timed waiting does not work so for now we have to block