]> 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>
Sat, 10 Mar 2012 16:14:56 +0000 (16:14 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sat, 10 Mar 2012 16:14:56 +0000 (16:14 +0000)
accelerator/ogl/util/device.cpp

index 109d47ef5fcaed7fe3000d067066cd98113a5e76..d4b1d88f8f418cfc6596b052e1830e481a46d8aa 100644 (file)
@@ -230,12 +230,20 @@ struct device::impl : public std::enable_shared_from_this<impl>
        \r
        boost::unique_future<spl::shared_ptr<texture>> copy_async(const array<std::uint8_t>& source, int width, int height, int stride)\r
        {\r
-               //auto buf = source.storage<spl::shared_ptr<buffer>>();\r
-               auto buf = create_buffer(source.size(), buffer::usage::write_only);\r
-               tbb::parallel_for(tbb::blocked_range<std::size_t>(0, source.size()), [&](const tbb::blocked_range<std::size_t>& r)\r
+               std::shared_ptr<buffer> buf;\r
+\r
+               try\r
                {\r
-                       A_memcpy(buf->data() + r.begin(), source.data() + r.begin(), r.size());\r
-               });\r
+                       buf = source.storage<spl::shared_ptr<buffer>>();\r
+               }\r
+               catch(boost::bad_any_cast&)\r
+               {                       \r
+                       buf = create_buffer(source.size(), buffer::usage::write_only);\r
+                       tbb::parallel_for(tbb::blocked_range<std::size_t>(0, source.size()), [&](const tbb::blocked_range<std::size_t>& r)\r
+                       {\r
+                               A_memcpy(buf->data() + r.begin(), source.data() + r.begin(), r.size());\r
+                       });\r
+               }\r
 \r
                return render_executor_.begin_invoke([=]() -> spl::shared_ptr<texture>\r
                {\r