Beispiel #1
0
static void
_evas_common_rgba_image_delete(Image_Entry *ie)
{
   RGBA_Image   *im = (RGBA_Image *) ie;

#ifdef BUILD_PIPE_RENDER
   evas_common_pipe_free(im);
# ifdef EVAS_FRAME_QUEUING
   LKD(im->cache_entry.ref_fq_add);
   LKD(im->cache_entry.ref_fq_del);
   pthread_cond_destroy(&(im->cache_entry.cond_fq_del));
# endif
#endif   
   evas_common_rgba_image_scalecache_shutdown(&im->cache_entry);
   if (ie->info.module) evas_module_unref((Evas_Module *)ie->info.module);
   /* memset the image to 0x99 because i recently saw a segv where an
    * seemed to be used BUT its contents were wrong - it looks like it was
    * overwritten by something from efreet - as there was an execute command
    * for a command there and some other signs - but to make sure, I am
    * going to empty this struct out in case this happens again so i know
    * that something else is overwritign this struct - or not */
//   memset(im, 0x99, sizeof(im));
#ifdef EVAS_CSERVE
   if (ie->data1) evas_cserve_image_free(ie);
#endif   
   free(im);
}
Beispiel #2
0
cl::Kernel SpatialSEIR::OCLProvider::buildProgramForKernel(std::string kernelFile, DeviceContainer* device)
{
    int err = 1;
    std::vector<cl::Device> devices; devices.push_back(**(device -> device));
    std::string log;

    // LKD is set at compile time, intall directory of OpenCL kernels. 
    std::string LKD(LSS_KERNEL_DIRECTORY);
    LKD = LKD.append(kernelFile);
    const char* progName = LKD.c_str();


    std::ifstream programFile(progName);
    std::string programString(std::istreambuf_iterator<char>(programFile), 
                             (std::istreambuf_iterator<char>()));
    cl::Program::Sources source(1, std::make_pair(programString.c_str(), 
                                programString.length() + 1));



    cl::Program program(**currentContext, source);
    std::vector<cl::Kernel> kernels;


    try
    {
        err = program.build(devices);

        log = program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(devices[0]);
        if (log.find("warning") != std::string::npos)
        {
            lssCout << "Warnings generated while building kernel.\n";
            lssCout << "CL_PROGRAM_BUILD_LOG: \n" << log << "\n";
        }
        program.createKernels(&kernels);
    }
    catch(cl::Error e)
    {
        lssCout << "CL Error in: " << e.what()<< "\n";
        lssCout << "CL Error: " << e.err()<< "\n";
        log = program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(devices[0]);
        err = e.err();
    }


    if (err != 0)
    {
        std::cerr << "Error building OpenCL Kernel, code: " << err << "\n"; 
        std::cerr << "Looking for kernel file here: " << progName << "\n";
        std::cerr << "Build Log: \n" << log << "\n";
        std::cerr << "Kernel Source: \n" << programString.c_str() << "\n";
        throw(-1);
    }



    return(kernels[0]);
}
Beispiel #3
0
void
evas_module_unload(Evas_Module *em)
{
   if (!em->loaded)
     return;
   if (!em->definition)
     return ;

// for now lets not unload modules - they may still be in use.   
//   em->definition->func.close(em);
//   em->loaded = 0;

#ifdef BUILD_ASYNC_PRELOAD
   LKD(em->lock);
#endif
}