]> 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>
Tue, 7 Jun 2011 12:15:13 +0000 (12:15 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Tue, 7 Jun 2011 12:15:13 +0000 (12:15 +0000)
core/mixer/gpu/ogl_device.cpp
core/mixer/mixer.cpp

index c017675cdffacb7a8c40cca88b223eba943b7997..637f7b9a17e057001df1d7ad3df8f110f75a660c 100644 (file)
@@ -65,26 +65,15 @@ safe_ptr<device_buffer> ogl_device::create_device_buffer(size_t width, size_t he
        if(!pool->try_pop(buffer))              \r
        {\r
                executor_.invoke([&]\r
-               {\r
+               {       \r
                        try\r
                        {\r
                                buffer = std::make_shared<device_buffer>(width, height, stride);\r
                        }\r
                        catch(...)\r
                        {\r
-                               CASPAR_LOG(info) << "ogl: bad_alloc, retrying.";\r
-                               gc().wait();\r
-                                                       \r
-                               try\r
-                               {\r
-                                       buffer = std::make_shared<device_buffer>(width, height, stride);\r
-                               }\r
-                               catch(...)\r
-                               {\r
-                                       BOOST_THROW_EXCEPTION(bad_alloc()\r
-                                               << errinfo_nested_exception(std::current_exception()));\r
-                               }\r
-\r
+                               CASPAR_LOG(error) << L"ogl: create_device_buffer failed!";\r
+                               throw;\r
                        }\r
                }, high_priority);      \r
        }\r
@@ -112,22 +101,8 @@ safe_ptr<host_buffer> ogl_device::create_host_buffer(size_t size, host_buffer::u
                        }\r
                        catch(...)\r
                        {\r
-                               CASPAR_LOG(info) << "ogl: bad_alloc, retrying.";\r
-                               gc().wait();\r
-\r
-                               try\r
-                               {\r
-                                       buffer = std::make_shared<host_buffer>(size, usage);\r
-                                       if(usage == host_buffer::write_only)\r
-                                               buffer->map();\r
-                                       else\r
-                                               buffer->unmap();        \r
-                               }\r
-                               catch(...)\r
-                               {\r
-                                       BOOST_THROW_EXCEPTION(bad_alloc()\r
-                                               << errinfo_nested_exception(std::current_exception()));\r
-                               }\r
+                               CASPAR_LOG(error) << L"ogl: create_host_buffer failed!";\r
+                               throw;                          \r
                        }\r
 \r
                }, high_priority);      \r
@@ -163,7 +138,7 @@ boost::unique_future<void> ogl_device::gc()
                        pool.clear();\r
                BOOST_FOREACH(auto& pool, host_pools_)\r
                        pool.clear();\r
-       });\r
+       }, high_priority);\r
 }\r
 \r
 std::wstring ogl_device::get_version()\r
index 851eca57ea95cb40abc491b0f5f4b88c1cb8e49f..2967b66c70ce41abc12679345ea2c4e7b00b9cf3 100644 (file)
@@ -117,10 +117,10 @@ public:
                }\r
                catch(...)\r
                {\r
-                       channel_.ogl().gc();\r
+                       channel_.ogl().gc().wait();\r
                        image_mixer_ = image_mixer(channel_);\r
                        audio_mixer_ = audio_mixer();\r
-                       channel_.ogl().gc();\r
+                       channel_.ogl().gc().wait();\r
 \r
                        CASPAR_LOG_CURRENT_EXCEPTION();\r
                        return make_safe<read_frame>();\r