From: Cristy Date: Tue, 6 Oct 2015 11:52:01 +0000 (-0400) Subject: https://github.com/ImageMagick/ImageMagick/issues/44 X-Git-Tag: 7.0.1-0~574 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1dd96dac75e0789ee5aae01960aa046d1a2412b4;p=imagemagick https://github.com/ImageMagick/ImageMagick/issues/44 --- diff --git a/MagickCore/configure.c b/MagickCore/configure.c index 8fa7728bf..d51e227ae 100755 --- a/MagickCore/configure.c +++ b/MagickCore/configure.c @@ -75,7 +75,7 @@ #endif #ifdef MAGICKCORE_ZERO_CONFIGURATION_SUPPORT #define MAGICKCORE_FEATURE_ZERO_CONFIGURATION_STR "Zero-Configuration " -#else +#else #define MAGICKCORE_FEATURE_ZERO_CONFIGURATION_STR "" #endif #ifdef HDRI_SUPPORT @@ -884,8 +884,14 @@ MagickExport LinkedListInfo *GetConfigurePaths(const char *filename, *home; home=GetEnvironmentValue("XDG_CONFIG_HOME"); + if (home == (char *) NULL) + home=GetEnvironmentValue("LOCALAPPDATA"); + if (home == (char *) NULL) + home=GetEnvironmentValue("APPDATA"); + if (home == (char *) NULL) + home=GetEnvironmentValue("USERPROFILE"); if (home != (char *) NULL) - { + { /* Search $XDG_CONFIG_HOME/ImageMagick. */ @@ -895,8 +901,6 @@ MagickExport LinkedListInfo *GetConfigurePaths(const char *filename, home=DestroyString(home); } home=GetEnvironmentValue("HOME"); - if (home == (char *) NULL) - home=GetEnvironmentValue("USERPROFILE"); if (home != (char *) NULL) { /* diff --git a/MagickCore/module.c b/MagickCore/module.c index e94a80616..7d21f3472 100644 --- a/MagickCore/module.c +++ b/MagickCore/module.c @@ -781,8 +781,14 @@ static MagickBooleanType GetMagickModulePath(const char *filename, *home; home=GetEnvironmentValue("XDG_CONFIG_HOME"); + if (home == (char *) NULL) + home=GetEnvironmentValue("LOCALAPPDATA"); + if (home == (char *) NULL) + home=GetEnvironmentValue("APPDATA"); + if (home == (char *) NULL) + home=GetEnvironmentValue("USERPROFILE"); if (home != (char *) NULL) - { + { /* Search $XDG_CONFIG_HOME/ImageMagick. */ @@ -793,8 +799,6 @@ static MagickBooleanType GetMagickModulePath(const char *filename, return(MagickTrue); } home=GetEnvironmentValue("HOME"); - if (home == (char *) NULL) - home=GetEnvironmentValue("USERPROFILE"); if (home != (char *) NULL) { /* @@ -1369,7 +1373,7 @@ MagickPrivate MagickBooleanType OpenModules(ExceptionInfo *exception) modules=GetModuleList("*",MagickImageCoderModule,&number_modules,exception); if ((modules == (char **) NULL) || (*modules == (char *) NULL)) { - if (modules != (char **) NULL) + if (modules != (char **) NULL) modules=(char **) RelinquishMagickMemory(modules); return(MagickFalse); } diff --git a/MagickCore/opencl.c b/MagickCore/opencl.c index e1f750f96..f69c0944f 100644 --- a/MagickCore/opencl.c +++ b/MagickCore/opencl.c @@ -36,9 +36,9 @@ % % */ - + /* -Include declarations. + Include declarations. */ #include "MagickCore/studio.h" #include "MagickCore/artifact.h" @@ -94,10 +94,10 @@ Include declarations. #endif -#define NUM_CL_RAND_GENERATORS 1024 /* number of random number generators running in parallel */ +#define NUM_CL_RAND_GENERATORS 1024 /* number of random number generators running in parallel */ /* - * + * * Dynamic library loading functions * */ @@ -111,7 +111,7 @@ void *OsLibraryLoad(const char *libraryName) { #ifdef MAGICKCORE_WINDOWS_SUPPORT return (void *)LoadLibraryA(libraryName); -#else +#else return (void *)dlopen(libraryName, RTLD_NOW); #endif } @@ -156,7 +156,7 @@ void OsLibraryUnload(void *library) % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% AcquireMagickOpenCLEnv() allocates the MagickCLEnv structure +% AcquireMagickOpenCLEnv() allocates the MagickCLEnv structure % */ @@ -267,7 +267,7 @@ static MagickBooleanType bindOpenCLFunctions(void* library) } MagickLibrary * GetOpenCLLib() -{ +{ if (OpenCLLib == NULL) { if (OpenCLLibLock == NULL) @@ -287,7 +287,7 @@ MagickLibrary * GetOpenCLLib() #ifdef MAGICKCORE_OPENCL_MACOSX status = bindOpenCLFunctions(library); #else - + memset(OpenCLLib, 0, sizeof(MagickLibrary)); #ifdef MAGICKCORE_WINDOWS_SUPPORT library = OsLibraryLoad("OpenCL.dll"); @@ -304,11 +304,11 @@ MagickLibrary * GetOpenCLLib() #endif } - UnlockSemaphoreInfo(OpenCLLibLock); + UnlockSemaphoreInfo(OpenCLLibLock); } - - return OpenCLLib; + + return OpenCLLib; } @@ -336,7 +336,7 @@ MagickLibrary * GetOpenCLLib() */ MagickExport MagickCLEnv GetDefaultOpenCLEnv() -{ +{ if (defaultCLEnv == NULL) { if (defaultCLEnvLock == NULL) @@ -345,9 +345,9 @@ MagickExport MagickCLEnv GetDefaultOpenCLEnv() } LockSemaphoreInfo(defaultCLEnvLock); defaultCLEnv = AcquireMagickOpenCLEnv(); - UnlockSemaphoreInfo(defaultCLEnvLock); + UnlockSemaphoreInfo(defaultCLEnvLock); } - return defaultCLEnv; + return defaultCLEnv; } static void LockDefaultOpenCLEnv() { @@ -379,9 +379,9 @@ static void UnlockDefaultOpenCLEnv() { % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% SetDefaultOpenCLEnv() sets the new OpenCL environment as default +% SetDefaultOpenCLEnv() sets the new OpenCL environment as default % and returns the old OpenCL environment -% +% % The format of the SetDefaultOpenCLEnv() method is: % % MagickCLEnv SetDefaultOpenCLEnv(MagickCLEnv clEnv) @@ -391,7 +391,7 @@ static void UnlockDefaultOpenCLEnv() { % o clEnv: the new default OpenCL environment. % */ -MagickExport MagickCLEnv SetDefaultOpenCLEnv(MagickCLEnv clEnv) +MagickExport MagickCLEnv SetDefaultOpenCLEnv(MagickCLEnv clEnv) { MagickCLEnv oldEnv; LockDefaultOpenCLEnv(); @@ -399,7 +399,7 @@ MagickExport MagickCLEnv SetDefaultOpenCLEnv(MagickCLEnv clEnv) defaultCLEnv = clEnv; UnlockDefaultOpenCLEnv(); return oldEnv; -} +} @@ -414,18 +414,18 @@ MagickExport MagickCLEnv SetDefaultOpenCLEnv(MagickCLEnv clEnv) % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% SetMagickOpenCLEnvParam() sets the parameters in the OpenCL environment -% +% SetMagickOpenCLEnvParam() sets the parameters in the OpenCL environment +% % The format of the SetMagickOpenCLEnvParam() method is: % -% MagickBooleanType SetMagickOpenCLEnvParam(MagickCLEnv clEnv, -% MagickOpenCLEnvParam param, size_t dataSize, void* data, +% MagickBooleanType SetMagickOpenCLEnvParam(MagickCLEnv clEnv, +% MagickOpenCLEnvParam param, size_t dataSize, void* data, % ExceptionInfo* exception) % % A description of each parameter follows: % % o clEnv: the OpenCL environment. -% +% % o param: the parameter to be set. % % o dataSize: the data size of the parameter value. @@ -514,23 +514,23 @@ MagickExport % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% GetMagickOpenCLEnvParam() gets the parameters in the OpenCL environment -% +% GetMagickOpenCLEnvParam() gets the parameters in the OpenCL environment +% % The format of the GetMagickOpenCLEnvParam() method is: % -% MagickBooleanType GetMagickOpenCLEnvParam(MagickCLEnv clEnv, -% MagickOpenCLEnvParam param, size_t dataSize, void* data, +% MagickBooleanType GetMagickOpenCLEnvParam(MagickCLEnv clEnv, +% MagickOpenCLEnvParam param, size_t dataSize, void* data, % ExceptionInfo* exception) % % A description of each parameter follows: % % o clEnv: the OpenCL environment. -% +% % o param: the parameter to be returned. % % o dataSize: the data size of the parameter value. % -% o data: the location where the returned parameter value will be stored +% o data: the location where the returned parameter value will be stored % % o exception: return any errors or warnings % @@ -540,7 +540,7 @@ MagickExport MagickBooleanType GetMagickOpenCLEnvParam(MagickCLEnv clEnv, MagickOpenCLEnvParam param , size_t dataSize, void* data, ExceptionInfo* exception) { - MagickBooleanType + MagickBooleanType status; magick_unreferenced(exception); @@ -608,11 +608,11 @@ cleanup: % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% GetOpenCLContext() returns the OpenCL context -% +% GetOpenCLContext() returns the OpenCL context +% % The format of the GetOpenCLContext() method is: % -% cl_context GetOpenCLContext(MagickCLEnv clEnv) +% cl_context GetOpenCLContext(MagickCLEnv clEnv) % % A description of each parameter follows: % @@ -640,7 +640,7 @@ static char* getBinaryCLProgramName(MagickCLEnv clEnv, MagickOpenCLProgram prog, /* strip out illegal characters for file names */ while (*ptr != '\0') { - if ( *ptr == ' ' || *ptr == '\\' || *ptr == '/' || *ptr == ':' || *ptr == '*' + if ( *ptr == ' ' || *ptr == '\\' || *ptr == '/' || *ptr == ':' || *ptr == '*' || *ptr == '?' || *ptr == '"' || *ptr == '<' || *ptr == '>' || *ptr == '|') { *ptr = '_'; @@ -827,7 +827,7 @@ static unsigned int stringSignature(const char* string) /* OpenCL kernels for accelerate.c */ extern const char *accelerateKernels, *accelerateKernels2; -static MagickBooleanType CompileOpenCLKernels(MagickCLEnv clEnv, ExceptionInfo* exception) +static MagickBooleanType CompileOpenCLKernels(MagickCLEnv clEnv, ExceptionInfo* exception) { MagickBooleanType status = MagickFalse; cl_int clStatus; @@ -835,7 +835,7 @@ static MagickBooleanType CompileOpenCLKernels(MagickCLEnv clEnv, ExceptionInfo* char* accelerateKernelsBuffer = NULL; /* The index of the program strings in this array has to match the value of the enum MagickOpenCLProgram */ - const char* MagickOpenCLProgramStrings[MAGICK_OPENCL_NUM_PROGRAMS]; + const char* MagickOpenCLProgramStrings[MAGICK_OPENCL_NUM_PROGRAMS]; char options[MagickPathExtent]; unsigned int optionsSignature; @@ -868,7 +868,7 @@ static MagickBooleanType CompileOpenCLKernels(MagickCLEnv clEnv, ExceptionInfo* sprintf(accelerateKernelsBuffer,"%s%s",accelerateKernels,accelerateKernels2); MagickOpenCLProgramStrings[MAGICK_OPENCL_ACCELERATE] = accelerateKernelsBuffer; - for (i = 0; i < MAGICK_OPENCL_NUM_PROGRAMS; i++) + for (i = 0; i < MAGICK_OPENCL_NUM_PROGRAMS; i++) { MagickBooleanType loadSuccessful = MagickFalse; unsigned int programSignature = stringSignature(MagickOpenCLProgramStrings[i]) ^ optionsSignature; @@ -1024,7 +1024,7 @@ static MagickBooleanType InitOpenCLPlatformDevice(MagickCLEnv clEnv, ExceptionIn status = clEnv->library->clGetPlatformIDs(0, NULL, &numPlatforms); if (status != CL_SUCCESS) { - (void) ThrowMagickException(exception, GetMagickModule(), DelegateWarning, + (void) ThrowMagickException(exception, GetMagickModule(), DelegateWarning, "clGetplatformIDs failed.", "(%d)", status); goto cleanup; } @@ -1053,7 +1053,7 @@ static MagickBooleanType InitOpenCLPlatformDevice(MagickCLEnv clEnv, ExceptionIn /* Device selection */ clEnv->device = NULL; - for (j = 0; j < 2; j++) + for (j = 0; j < 2; j++) { cl_device_type deviceType; @@ -1181,7 +1181,7 @@ MagickBooleanType InitOpenCLEnvInternal(MagickCLEnv clEnv, ExceptionInfo* except SetMagickOpenCLEnvParamInternal(clEnv, MAGICK_OPENCL_ENV_PARAM_OPENCL_DISABLED , sizeof(MagickBooleanType), &flag, exception); } - + if (clEnv->OpenCLDisabled != MagickFalse) goto cleanup; @@ -1337,7 +1337,7 @@ MagickBooleanType RelinquishOpenCLCommandQueue(MagickCLEnv clEnv, cl_command_que % % The format of the AcquireOpenCLKernel method is: % -% cl_kernel AcquireOpenCLKernel(MagickCLEnv clEnv, +% cl_kernel AcquireOpenCLKernel(MagickCLEnv clEnv, % MagickOpenCLProgram program, const char* kernelName) % % A description of each parameter follows: @@ -1464,7 +1464,7 @@ typedef enum { /* device type */ typedef enum { DS_DEVICE_NATIVE_CPU = 0 - ,DS_DEVICE_OPENCL_DEVICE + ,DS_DEVICE_OPENCL_DEVICE } ds_device_type; @@ -1532,7 +1532,7 @@ static ds_status initDSProfile(ds_profile** p, const char* version) { profile = (ds_profile*)malloc(sizeof(ds_profile)); if (profile == NULL) return DS_MEMORY_ERROR; - + memset(profile, 0, sizeof(ds_profile)); OpenCLLib->clGetPlatformIDs(0, NULL, &numPlatforms); @@ -1552,11 +1552,11 @@ static ds_status initDSProfile(ds_profile** p, const char* version) { profile->numDevices = numDevices+1; /* +1 to numDevices to include the native CPU */ - profile->devices = (ds_device*)malloc(profile->numDevices*sizeof(ds_device)); + profile->devices = (ds_device*)malloc(profile->numDevices*sizeof(ds_device)); if (profile->devices == NULL) { profile->numDevices = 0; status = DS_MEMORY_ERROR; - goto cleanup; + goto cleanup; } memset(profile->devices, 0, profile->numDevices*sizeof(ds_device)); @@ -1570,7 +1570,7 @@ static ds_status initDSProfile(ds_profile** p, const char* version) { cl_uint num; int d; - for (d = 0; d < 2; d++) { + for (d = 0; d < 2; d++) { unsigned int j; cl_device_type deviceType; switch(d) { @@ -1636,8 +1636,8 @@ cleanup: return status; } -/* Pointer to a function that calculates the score of a device (ex: device->score) - update the data size of score. The encoding and the format of the score data +/* Pointer to a function that calculates the score of a device (ex: device->score) + update the data size of score. The encoding and the format of the score data is implementation defined. The function should return DS_SUCCESS if there's no error to be reported. */ typedef ds_status (*ds_perf_evaluator)(ds_device* device, void* data); @@ -1662,7 +1662,7 @@ static ds_status profileDevices(ds_profile* profile, const ds_evaluation_type ty for (i = 0; i < profile->numDevices; i++) { ds_status evaluatorStatus; - + switch (type) { case DS_EVALUATE_NEW_ONLY: if (profile->devices[i].score != NULL) @@ -1742,7 +1742,7 @@ static ds_status writeProfileToFile(ds_profile* profile, ds_score_serializer ser switch(profile->devices[i].type) { case DS_DEVICE_NATIVE_CPU: - { + { /* There's no need to emit a device name for the native CPU device. */ /* fwrite(DS_TAG_DEVICE_NAME, sizeof(char), strlen(DS_TAG_DEVICE_NAME), profileFile); @@ -1751,7 +1751,7 @@ static ds_status writeProfileToFile(ds_profile* profile, ds_score_serializer ser */ } break; - case DS_DEVICE_OPENCL_DEVICE: + case DS_DEVICE_OPENCL_DEVICE: { char tmp[16]; @@ -1810,7 +1810,7 @@ static ds_status readProFile(const char* fileName, char** content, size_t* conte return DS_FILE_ERROR; } - fseek(input, 0L, SEEK_END); + fseek(input, 0L, SEEK_END); size = ftell(input); rewind(input); binary = (char*)malloc(size); @@ -1860,7 +1860,7 @@ static const char* findString(const char* contentStart, const char* contentEnd, } -typedef ds_status (*ds_score_deserializer)(ds_device* device, const unsigned char* serializedScore, unsigned int serializedScoreSize); +typedef ds_status (*ds_score_deserializer)(ds_device* device, const unsigned char* serializedScore, unsigned int serializedScoreSize); static ds_status readProfileFromFile(ds_profile* profile, ds_score_deserializer deserializer, const char* file) { ds_status status = DS_SUCCESS; @@ -1897,7 +1897,7 @@ static ds_status readProfileFromFile(ds_profile* profile, ds_score_deserializer } versionStringLength = strlen(profile->version); - if (versionStringLength!=(size_t)(dataEnd-dataStart) + if (versionStringLength!=(size_t)(dataEnd-dataStart) || strncmp(profile->version, dataStart, versionStringLength)!=(int)0) { /* version mismatch */ status = DS_PROFILE_FILE_ERROR; @@ -1947,7 +1947,7 @@ RestoreMSCWarning deviceTypeStart = findString(dataStart, contentEnd, DS_TAG_DEVICE_TYPE); if (deviceTypeStart==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } deviceTypeStart+=strlen(DS_TAG_DEVICE_TYPE); deviceTypeEnd = findString(deviceTypeStart, contentEnd, DS_TAG_DEVICE_TYPE_END); @@ -1964,39 +1964,39 @@ RestoreMSCWarning deviceNameStart = findString(dataStart, contentEnd, DS_TAG_DEVICE_NAME); if (deviceNameStart==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } deviceNameStart+=strlen(DS_TAG_DEVICE_NAME); deviceNameEnd = findString(deviceNameStart, contentEnd, DS_TAG_DEVICE_NAME_END); if (deviceNameEnd==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } deviceDriverStart = findString(dataStart, contentEnd, DS_TAG_DEVICE_DRIVER_VERSION); if (deviceDriverStart==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } deviceDriverStart+=strlen(DS_TAG_DEVICE_DRIVER_VERSION); deviceDriverEnd = findString(deviceDriverStart, contentEnd, DS_TAG_DEVICE_DRIVER_VERSION_END); if (deviceDriverEnd ==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } tmpStart = findString(dataStart, contentEnd, DS_TAG_DEVICE_MAX_COMPUTE_UNITS); if (tmpStart==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } tmpStart+=strlen(DS_TAG_DEVICE_MAX_COMPUTE_UNITS); tmpEnd = findString(tmpStart, contentEnd, DS_TAG_DEVICE_MAX_COMPUTE_UNITS_END); if (tmpEnd ==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } memcpy(tmp,tmpStart,tmpEnd-tmpStart); tmp[tmpEnd-tmpStart] = '\0'; @@ -2006,13 +2006,13 @@ RestoreMSCWarning tmpStart = findString(dataStart, contentEnd, DS_TAG_DEVICE_MAX_CLOCK_FREQ); if (tmpStart==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } tmpStart+=strlen(DS_TAG_DEVICE_MAX_CLOCK_FREQ); tmpEnd = findString(tmpStart, contentEnd, DS_TAG_DEVICE_MAX_CLOCK_FREQ_END); if (tmpEnd ==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } memcpy(tmp,tmpStart,tmpEnd-tmpStart); tmp[tmpEnd-tmpStart] = '\0'; @@ -2024,7 +2024,7 @@ RestoreMSCWarning if (profile->devices[i].type == DS_DEVICE_OPENCL_DEVICE) { size_t actualDeviceNameLength; size_t driverVersionLength; - + actualDeviceNameLength = strlen(profile->devices[i].oclDeviceName); driverVersionLength = strlen(profile->devices[i].oclDriverVersion); if (actualDeviceNameLength == (size_t)(deviceNameEnd - deviceNameStart) @@ -2037,7 +2037,7 @@ RestoreMSCWarning deviceScoreStart = findString(dataStart, contentEnd, DS_TAG_SCORE); if (deviceNameStart==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } deviceScoreStart+=strlen(DS_TAG_SCORE); deviceScoreEnd = findString(deviceScoreStart, contentEnd, DS_TAG_SCORE_END); @@ -2056,7 +2056,7 @@ RestoreMSCWarning deviceScoreStart = findString(dataStart, contentEnd, DS_TAG_SCORE); if (deviceScoreStart==NULL) { status = DS_PROFILE_FILE_ERROR; - goto cleanup; + goto cleanup; } deviceScoreStart+=strlen(DS_TAG_SCORE); deviceScoreEnd = findString(deviceScoreStart, contentEnd, DS_TAG_SCORE_END); @@ -2211,7 +2211,7 @@ static ds_status AcceleratePerfEvaluator(ds_device *device, DestroyImage(inputImage); } /* end of microbenchmark */ - + if (device->score == NULL) device->score=malloc(sizeof(AccelerateScoreType)); *(AccelerateScoreType*)device->score=readAccelerateTimer(&timer); @@ -2261,7 +2261,7 @@ ds_status AccelerateScoreRelease(void* score) { ds_status canWriteProfileToFile(const char *path) { FILE* profileFile = fopen(path, "ab"); - + if (profileFile==NULL) return DS_FILE_ERROR; @@ -2400,12 +2400,12 @@ cleanup: % % InitImageMagickOpenCL() provides a simplified interface to initialize % the OpenCL environtment in ImageMagick -% +% % The format of the InitImageMagickOpenCL() method is: % -% MagickBooleanType InitImageMagickOpenCL(ImageMagickOpenCLMode mode, -% void* userSelectedDevice, -% void* selectedDevice) +% MagickBooleanType InitImageMagickOpenCL(ImageMagickOpenCLMode mode, +% void* userSelectedDevice, +% void* selectedDevice) % % A description of each parameter follows: % @@ -2544,7 +2544,7 @@ MagickBooleanType OpenCLThrowMagickException(ExceptionInfo *exception, } MagickPrivate cl_mem GetAndLockRandSeedBuffer(MagickCLEnv clEnv) -{ +{ LockSemaphoreInfo(clEnv->lock); if (clEnv->seedsLock == NULL) { @@ -2570,7 +2570,7 @@ MagickPrivate cl_mem GetAndLockRandSeedBuffer(MagickCLEnv clEnv) unsigned int *seeds; queue = AcquireOpenCLCommandQueue(clEnv); - seeds = (unsigned int*) clEnv->library->clEnqueueMapBuffer(queue, clEnv->seeds, CL_TRUE, + seeds = (unsigned int*) clEnv->library->clEnqueueMapBuffer(queue, clEnv->seeds, CL_TRUE, CL_MAP_WRITE, 0, clEnv->numGenerators*4 *sizeof(unsigned int), @@ -2594,16 +2594,16 @@ MagickPrivate cl_mem GetAndLockRandSeedBuffer(MagickCLEnv clEnv) randomInfo = DestroyRandomInfo(randomInfo); } - clStatus = clEnv->library->clEnqueueUnmapMemObject(queue, clEnv->seeds, seeds, 0, + clStatus = clEnv->library->clEnqueueUnmapMemObject(queue, clEnv->seeds, seeds, 0, NULL, NULL); clEnv->library->clFinish(queue); cleanup: - if (queue != NULL) + if (queue != NULL) RelinquishOpenCLCommandQueue(clEnv, queue); } } UnlockSemaphoreInfo(clEnv->lock); - return clEnv->seeds; + return clEnv->seeds; } MagickPrivate void UnlockRandSeedBuffer(MagickCLEnv clEnv) { @@ -2647,7 +2647,7 @@ MagickExport MagickBooleanType RelinquishMagickOpenCLEnv( /* * Return the OpenCL environment -*/ +*/ MagickExport MagickCLEnv GetDefaultOpenCLEnv( ExceptionInfo *magick_unused(exception)) { @@ -2662,7 +2662,7 @@ MagickExport MagickCLEnv SetDefaultOpenCLEnv( magick_unreferenced(clEnv); return (MagickCLEnv) NULL; -} +} MagickExport MagickBooleanType SetMagickOpenCLEnvParam( MagickCLEnv magick_unused(clEnv),MagickOpenCLEnvParam magick_unused(param), @@ -2762,7 +2762,7 @@ MagickExport MagickBooleanType InitImageMagickOpenCL( MagickPrivate MagickBooleanType OpenCLThrowMagickException(ExceptionInfo *exception, const char *module,const char *function,const size_t line, - const ExceptionType severity,const char *tag,const char *format,...) + const ExceptionType severity,const char *tag,const char *format,...) { magick_unreferenced(exception); magick_unreferenced(module); @@ -2818,52 +2818,45 @@ const char* GetOpenCLCachedFilesDirectory() { char *temp = NULL; struct stat attributes; MagickBooleanType status; + int mkdirStatus = 0; home=GetEnvironmentValue("MAGICK_OPENCL_CACHE_DIR"); if (home == (char *) NULL) { -#ifdef MAGICKCORE_WINDOWS_SUPPORT - home=GetEnvironmentValue("LOCALAPPDATA"); + home=GetEnvironmentValue("XDG_CACHE_HOME"); + if (home == (char *) NULL) + home=GetEnvironmentValue("LOCALAPPDATA"); if (home == (char *) NULL) home=GetEnvironmentValue("APPDATA"); if (home == (char *) NULL) home=GetEnvironmentValue("USERPROFILE"); -#else - home=GetEnvironmentValue("HOME"); -#endif } - + if (home != (char *) NULL) { - int mkdirStatus = 0; - /* - */ - - /* first check if $HOME/.cache exists */ - (void) FormatLocaleString(path,MagickPathExtent,"%s%s.cache", - home,DirectorySeparator); + /* first check if $HOME exists */ + (void) FormatLocaleString(path,MagickPathExtent,"%s",home); status=GetPathAttributes(path,&attributes); - if (status == MagickFalse) + if (status == MagickFalse) { - + #ifdef MAGICKCORE_WINDOWS_SUPPORT mkdirStatus = mkdir(path); #else mkdirStatus = mkdir(path, 0777); #endif } - - /* first check if $HOME/.cache/ImageMagick exists */ - if (mkdirStatus==0) + + /* first check if $HOME/ImageMagick exists */ + if (mkdirStatus==0) { (void) FormatLocaleString(path,MagickPathExtent, - "%s%s.cache%sImageMagick",home,DirectorySeparator, - DirectorySeparator); - + "%s%sImageMagick",home,DirectorySeparator); + status=GetPathAttributes(path,&attributes); - if (status == MagickFalse) + if (status == MagickFalse) { #ifdef MAGICKCORE_WINDOWS_SUPPORT mkdirStatus = mkdir(path); @@ -2879,10 +2872,53 @@ const char* GetOpenCLCachedFilesDirectory() { CopyMagickString(temp,path,strlen(path)+1); } home=DestroyString(home); + } else { + home=GetEnvironmentValue("HOME"); + if (home != (char *) NULL) + { + /* first check if $HOME/.cache exists */ + (void) FormatLocaleString(path,MagickPathExtent,"%s%s.cache", + home,DirectorySeparator); + status=GetPathAttributes(path,&attributes); + if (status == MagickFalse) + { + +#ifdef MAGICKCORE_WINDOWS_SUPPORT + mkdirStatus = mkdir(path); +#else + mkdirStatus = mkdir(path, 0777); +#endif + } + + /* first check if $HOME/.cache/ImageMagick exists */ + if (mkdirStatus==0) + { + (void) FormatLocaleString(path,MagickPathExtent, + "%s%s.cache%sImageMagick",home,DirectorySeparator, + DirectorySeparator); + + status=GetPathAttributes(path,&attributes); + if (status == MagickFalse) + { +#ifdef MAGICKCORE_WINDOWS_SUPPORT + mkdirStatus = mkdir(path); +#else + mkdirStatus = mkdir(path, 0777); +#endif + } + } + + if (mkdirStatus==0) + { + temp = (char*)AcquireMagickMemory(strlen(path)+1); + CopyMagickString(temp,path,strlen(path)+1); + } + home=DestroyString(home); + } } openclCachedFilesDirectory = temp; } - UnlockSemaphoreInfo(openclCachedFilesDirectoryLock); + UnlockSemaphoreInfo(openclCachedFilesDirectoryLock); } return openclCachedFilesDirectory; } @@ -2896,7 +2932,7 @@ void startAccelerateTimer(AccelerateTimer* timer) { struct timeval s; gettimeofday(&s, 0); timer->_start = (long long)s.tv_sec * (long long)1.0E3 + (long long)s.tv_usec / (long long)1.0E3; -#endif +#endif } void stopAccelerateTimer(AccelerateTimer* timer) { @@ -2914,7 +2950,7 @@ void stopAccelerateTimer(AccelerateTimer* timer) { } void resetAccelerateTimer(AccelerateTimer* timer) { - timer->_clocks = 0; + timer->_clocks = 0; timer->_start = 0; } @@ -2928,8 +2964,8 @@ void initAccelerateTimer(AccelerateTimer* timer) { resetAccelerateTimer(timer); } -double readAccelerateTimer(AccelerateTimer* timer) { - return (double)timer->_clocks/(double)timer->_freq; +double readAccelerateTimer(AccelerateTimer* timer) { + return (double)timer->_clocks/(double)timer->_freq; }; @@ -2974,5 +3010,3 @@ void OpenCLLog(const char* message) { magick_unreferenced(message); #endif } - -