]> 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, 27 Dec 2010 12:46:18 +0000 (12:46 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 27 Dec 2010 12:46:18 +0000 (12:46 +0000)
core/producer/flash/flash_producer.cpp
shell/main.cpp

index 4c4de52efd7a0b579280031987f13f8248c5a31a..2609934d8bf0b3ab46dfcffdb8e8d67b978f963c 100644 (file)
@@ -86,8 +86,16 @@ public:
 \r
        ~flash_renderer()\r
        {\r
-               ax_->DestroyAxControl();\r
-               ax_.Release();\r
+               try\r
+               {\r
+                       ax_->DestroyAxControl();\r
+                       ax_.Release();\r
+               }\r
+               catch(...)\r
+               {\r
+                       CASPAR_LOG_CURRENT_EXCEPTION();\r
+               }\r
+\r
                ::OleUninitialize();\r
                CASPAR_LOG(info) << print() << L" Ended";\r
        }\r
@@ -104,16 +112,13 @@ public:
                \r
        void render()\r
        {                \r
-               while(frame_buffer_.size() < 3) // Keep pipeline filled.\r
-               {\r
-                       bool is_progressive = format_desc_.mode == video_mode::progressive || (ax_->GetFPS() - format_desc_.fps/2 == 0);\r
-\r
-                       safe_ptr<draw_frame> frame = render_frame();\r
-                       if(!is_progressive)\r
-                               frame = draw_frame::interlace(frame, render_frame(), format_desc_.mode);\r
+               bool is_progressive = format_desc_.mode == video_mode::progressive || (ax_->GetFPS() - format_desc_.fps/2 == 0);\r
+               \r
+               safe_ptr<draw_frame> frame = render_frame();\r
+               if(!is_progressive)\r
+                       frame = draw_frame::interlace(frame, render_frame(), format_desc_.mode);\r
                        \r
-                       frame_buffer_.try_push(std::move(frame));\r
-               }\r
+               frame_buffer_.try_push(std::move(frame));\r
        }\r
 \r
        safe_ptr<draw_frame> render_frame()\r
@@ -181,9 +186,12 @@ struct flash_producer::implementation
                executor_.invoke([&]\r
                {\r
                        if(!renderer_)\r
+                       {\r
                                renderer_.reset(factory_());\r
+                               for(int n = 0; n < 8; ++n)\r
+                                       render_frame();\r
+                       }\r
                        renderer_->param(param);\r
-                       render_frame();\r
                });\r
        }\r
        \r
@@ -191,7 +199,9 @@ struct flash_producer::implementation
        {\r
                auto frame = draw_frame::empty();\r
                if(renderer_ && renderer_->try_pop(frame)) // Only render again if frame was removed from buffer.               \r
-                       executor_.begin_invoke([this]{render_frame();});                \r
+                       executor_.begin_invoke([this]{render_frame();});        \r
+               else\r
+                       CASPAR_LOG(trace) << print() << " underflow.";\r
                return frame;\r
        }\r
 \r
index bc1387de56ad345fe3e2dbdd09b2b49618fe0c20..a89226e8de91188b396c607c96a0239344d1ea37 100644 (file)
@@ -101,8 +101,8 @@ int main(int argc, wchar_t* argv[])
                                wcmd = L"LOADBG 1-1 " + wcmd.substr(1, wcmd.length()-1) + L" MIX 100 LOOP AUTOPLAY";\r
                        else if(wcmd.substr(0, 1) == L"4")\r
                                wcmd = L"LOADBG 1-1 " + wcmd.substr(1, wcmd.length()-1) + L" WIPE 100 LOOP AUTOPLAY";\r
-                       else if(wcmd == L"5")\r
-                               wcmd = L"LOADBG 1-1 " + wcmd.substr(1, wcmd.length()-1) + L" CUT 100 LOOP AUTOPLAY";\r
+                       else if(wcmd.substr(0, 1) == L"5")\r
+                               wcmd = L"LOADBG 1-1 " + wcmd.substr(1, wcmd.length()-1) + L" LOOP AUTOPLAY";\r
                        else if(wcmd.substr(0, 1) == L"6")\r
                                wcmd = L"CG 1-2 ADD 1 BBTELEFONARE 1";\r
                        else if(wcmd.substr(0, 1) == L"7")\r