]> git.sesse.net Git - casparcg/commitdiff
2.0: gpu: Block invalid usage of host/device-buffers.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 13 Jun 2011 12:35:58 +0000 (12:35 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 13 Jun 2011 12:35:58 +0000 (12:35 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@885 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

core/mixer/gpu/device_buffer.h
core/mixer/gpu/host_buffer.h
core/mixer/gpu/ogl_device.cpp

index c56644a8bd2a1e479766373d2f88c73cc9a9e949..3e4b5c80cba7d796daf0b9fdcc04c25dba6c4194 100644 (file)
@@ -30,7 +30,6 @@ namespace caspar { namespace core {
 class device_buffer : boost::noncopyable\r
 {\r
 public:\r
-       device_buffer(size_t width, size_t height, size_t stride);\r
        \r
        size_t stride() const;  \r
        size_t width() const;\r
@@ -47,6 +46,9 @@ public:
        void write(host_buffer& target);\r
        \r
 private:\r
+       friend class ogl_device;\r
+       device_buffer(size_t width, size_t height, size_t stride);\r
+\r
        struct implementation;\r
        std::shared_ptr<implementation> impl_;\r
 };\r
index 53371333e0e49ae95b28551e4c23a228f3ac476c..cf98c8e16958f8eabef1dadf97bfed9524e52130 100644 (file)
@@ -33,7 +33,6 @@ public:
                write_only,\r
                read_only\r
        };\r
-       host_buffer(size_t size, usage_t usage);\r
        \r
        const void* data() const;\r
        void* data();\r
@@ -44,6 +43,9 @@ public:
        void unmap();\r
        void map();\r
 private:\r
+       friend class ogl_device;\r
+       host_buffer(size_t size, usage_t usage);\r
+\r
        struct implementation;\r
        std::shared_ptr<implementation> impl_;\r
 };\r
index 5100cd68f5a34287c34112660922e4ec1704dcd5..9e32ced2b1f1d96522fc16c2b35e88fec4919982 100644 (file)
@@ -65,7 +65,7 @@ safe_ptr<device_buffer> ogl_device::create_device_buffer(size_t width, size_t he
                {       \r
                        try\r
                        {\r
-                               buffer = std::make_shared<device_buffer>(width, height, stride);\r
+                               buffer.reset(new device_buffer(width, height, stride));\r
                        }\r
                        catch(...)\r
                        {\r
@@ -98,7 +98,7 @@ safe_ptr<host_buffer> ogl_device::create_host_buffer(size_t size, host_buffer::u
                {\r
                        try\r
                        {\r
-                               buffer = std::make_shared<host_buffer>(size, usage);\r
+                               buffer.reset(new host_buffer(size, usage));\r
                                if(usage == host_buffer::write_only)\r
                                        buffer->map();\r
                                else\r