Merge pull request #9441 from wzw-intel:delete_program

pull/9469/head
Alexander Alekhin 8 years ago
commit 603fa03ac6
  1. 1
      modules/core/include/opencv2/core/ocl.hpp
  2. 23
      modules/core/src/ocl.cpp

@ -248,6 +248,7 @@ public:
const Device& device(size_t idx) const; const Device& device(size_t idx) const;
Program getProg(const ProgramSource& prog, Program getProg(const ProgramSource& prog,
const String& buildopt, String& errmsg); const String& buildopt, String& errmsg);
void unloadProg(Program& prog);
static Context& getDefault(bool initialize = true); static Context& getDefault(bool initialize = true);
void* ptr() const; void* ptr() const;

@ -1380,6 +1380,23 @@ struct Context::Impl
return prog; return prog;
} }
void unloadProg(Program& prog)
{
cv::AutoLock lock(program_cache_mutex);
for (CacheList::iterator i = cacheList.begin(); i != cacheList.end(); ++i)
{
phash_t::iterator it = phash.find(*i);
if (it != phash.end())
{
if (it->second.ptr() == prog.ptr())
{
phash.erase(*i);
cacheList.erase(i);
return;
}
}
}
}
IMPLEMENT_REFCOUNTABLE(); IMPLEMENT_REFCOUNTABLE();
@ -1643,7 +1660,11 @@ Program Context::getProg(const ProgramSource& prog,
return p ? p->getProg(prog, buildopts, errmsg) : Program(); return p ? p->getProg(prog, buildopts, errmsg) : Program();
} }
void Context::unloadProg(Program& prog)
{
if (p)
p->unloadProg(prog);
}
#ifdef HAVE_OPENCL_SVM #ifdef HAVE_OPENCL_SVM
bool Context::useSVM() const bool Context::useSVM() const

Loading…
Cancel
Save