From: ronag Date: Tue, 7 Jun 2011 12:15:13 +0000 (+0000) Subject: git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches... X-Git-Tag: 2.0.1~459 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=916557190b985018d90e64194e5a73843ec85b95;p=casparcg git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@853 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- diff --git a/core/mixer/gpu/ogl_device.cpp b/core/mixer/gpu/ogl_device.cpp index c017675cd..637f7b9a1 100644 --- a/core/mixer/gpu/ogl_device.cpp +++ b/core/mixer/gpu/ogl_device.cpp @@ -65,26 +65,15 @@ safe_ptr ogl_device::create_device_buffer(size_t width, size_t he if(!pool->try_pop(buffer)) { executor_.invoke([&] - { + { try { buffer = std::make_shared(width, height, stride); } catch(...) { - CASPAR_LOG(info) << "ogl: bad_alloc, retrying."; - gc().wait(); - - try - { - buffer = std::make_shared(width, height, stride); - } - catch(...) - { - BOOST_THROW_EXCEPTION(bad_alloc() - << errinfo_nested_exception(std::current_exception())); - } - + CASPAR_LOG(error) << L"ogl: create_device_buffer failed!"; + throw; } }, high_priority); } @@ -112,22 +101,8 @@ safe_ptr ogl_device::create_host_buffer(size_t size, host_buffer::u } catch(...) { - CASPAR_LOG(info) << "ogl: bad_alloc, retrying."; - gc().wait(); - - try - { - buffer = std::make_shared(size, usage); - if(usage == host_buffer::write_only) - buffer->map(); - else - buffer->unmap(); - } - catch(...) - { - BOOST_THROW_EXCEPTION(bad_alloc() - << errinfo_nested_exception(std::current_exception())); - } + CASPAR_LOG(error) << L"ogl: create_host_buffer failed!"; + throw; } }, high_priority); @@ -163,7 +138,7 @@ boost::unique_future ogl_device::gc() pool.clear(); BOOST_FOREACH(auto& pool, host_pools_) pool.clear(); - }); + }, high_priority); } std::wstring ogl_device::get_version() diff --git a/core/mixer/mixer.cpp b/core/mixer/mixer.cpp index 851eca57e..2967b66c7 100644 --- a/core/mixer/mixer.cpp +++ b/core/mixer/mixer.cpp @@ -117,10 +117,10 @@ public: } catch(...) { - channel_.ogl().gc(); + channel_.ogl().gc().wait(); image_mixer_ = image_mixer(channel_); audio_mixer_ = audio_mixer(); - channel_.ogl().gc(); + channel_.ogl().gc().wait(); CASPAR_LOG_CURRENT_EXCEPTION(); return make_safe();