Kaydet (Commit) e774a6ff authored tarafından Michael Meeks's avatar Michael Meeks

Use shared_ptr for OpenGLPrograms, and hide its copy constructor.

Change-Id: Ia1352105acef1ededaf876a224ebc277121d6942
üst 3b778890
...@@ -275,7 +275,7 @@ private: ...@@ -275,7 +275,7 @@ private:
OUString fragmentShader; OUString fragmentShader;
OString preamble; OString preamble;
}; };
boost::ptr_map<ProgramKey, OpenGLProgram> maPrograms; std::map<ProgramKey, boost::shared_ptr<OpenGLProgram> > maPrograms;
OpenGLProgram* mpCurrentProgram; OpenGLProgram* mpCurrentProgram;
#ifdef DBG_UTIL #ifdef DBG_UTIL
std::set<SalGraphicsImpl*> maParents; std::set<SalGraphicsImpl*> maParents;
......
...@@ -39,6 +39,7 @@ private: ...@@ -39,6 +39,7 @@ private:
TextureList maTextures; TextureList maTextures;
bool mbBlending; bool mbBlending;
OpenGLProgram(const OpenGLProgram &notImplemented);
public: public:
OpenGLProgram(); OpenGLProgram();
~OpenGLProgram(); ~OpenGLProgram();
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <vcl/sysdata.hxx> #include <vcl/sysdata.hxx>
#include <boost/scoped_array.hpp> #include <boost/scoped_array.hpp>
#include <boost/make_shared.hpp>
#include <vcl/pngwrite.hxx> #include <vcl/pngwrite.hxx>
#include <vcl/bmpacc.hxx> #include <vcl/bmpacc.hxx>
#include <vcl/graph.hxx> #include <vcl/graph.hxx>
...@@ -1588,20 +1589,17 @@ OpenGLProgram* OpenGLContext::GetProgram( const OUString& rVertexShader, const O ...@@ -1588,20 +1589,17 @@ OpenGLProgram* OpenGLContext::GetProgram( const OUString& rVertexShader, const O
{ {
ProgramKey aKey( rVertexShader, rFragmentShader, preamble ); ProgramKey aKey( rVertexShader, rFragmentShader, preamble );
boost::ptr_map<ProgramKey, OpenGLProgram>::iterator std::map< ProgramKey, boost::shared_ptr<OpenGLProgram> >::iterator
it = maPrograms.find( aKey ); it = maPrograms.find( aKey );
if( it != maPrograms.end() ) if( it != maPrograms.end() )
return it->second; return it->second.get();
OpenGLProgram* pProgram = new OpenGLProgram; boost::shared_ptr<OpenGLProgram> pProgram = boost::make_shared<OpenGLProgram>();
if( !pProgram->Load( rVertexShader, rFragmentShader, preamble ) ) if( !pProgram->Load( rVertexShader, rFragmentShader, preamble ) )
{
delete pProgram;
return NULL; return NULL;
}
maPrograms.insert(aKey, pProgram); maPrograms.insert(std::pair<ProgramKey, boost::shared_ptr<OpenGLProgram> >(aKey, pProgram));
return pProgram; return pProgram.get();
} }
OpenGLProgram* OpenGLContext::UseProgram( const OUString& rVertexShader, const OUString& rFragmentShader, const OString& preamble ) OpenGLProgram* OpenGLContext::UseProgram( const OUString& rVertexShader, const OUString& rFragmentShader, const OString& preamble )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment