]> 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>
Fri, 12 Aug 2011 16:20:17 +0000 (16:20 +0000)
committerRonag <Ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 12 Aug 2011 16:20:17 +0000 (16:20 +0000)
core/video_channel.cpp

index 8f8d51c8835c42ea4ab66cfd0c157bbd5337dbdd..873a9569f4ed0f870d8bacb2cb06015c0ee1c638 100644 (file)
@@ -82,33 +82,42 @@ public:
 \r
        void tick()\r
        {\r
-               // Produce\r
+               try\r
+               {\r
+                       // Produce\r
 \r
-               frame_timer_.restart();\r
+                       frame_timer_.restart();\r
 \r
-               auto simple_frames = stage_->execute();\r
+                       auto simple_frames = stage_->execute();\r
 \r
-               diag_->update_value("produce-time", frame_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
+                       diag_->update_value("produce-time", frame_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
                \r
-               // Mix\r
+                       // Mix\r
 \r
-               frame_timer_.restart();\r
+                       frame_timer_.restart();\r
 \r
-               auto finished_frame = mixer_->execute(simple_frames);\r
+                       auto finished_frame = mixer_->execute(simple_frames);\r
                \r
-               diag_->update_value("mix-time", frame_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
+                       diag_->update_value("mix-time", frame_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
                \r
-               // Consume\r
+                       // Consume\r
                \r
-               output_timer_.restart();\r
+                       output_timer_.restart();\r
 \r
-               output_->execute(finished_frame);\r
+                       output_->execute(finished_frame);\r
                \r
-               diag_->update_value("output-time", frame_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
+                       diag_->update_value("output-time", frame_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
 \r
                \r
-               diag_->update_value("tick-time", tick_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
-               tick_timer_.restart();\r
+                       diag_->update_value("tick-time", tick_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
+                       tick_timer_.restart();\r
+               }\r
+               catch(...)\r
+               {\r
+                       CASPAR_LOG_CURRENT_EXCEPTION();\r
+                       stage_->clear();\r
+                       context_.ogl().gc().wait();\r
+               }\r
 \r
                context_.execution().begin_invoke([this]{tick();});\r
        }\r