diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index e3cfd8e7c..672b9cb03 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -60,7 +60,11 @@ // TODO Move to some common place static size_t getConfigurationParameterForSize(const char* name, size_t defaultValue) { +#ifdef HAVE_WINRT + const char* envValue = NULL; +#else const char* envValue = getenv(name); +#endif if (envValue == NULL) { return defaultValue; @@ -685,12 +689,14 @@ static void* initOpenCLAndLoad(const char* funcname) static HMODULE handle = 0; if (!handle) { +#ifndef HAVE_WINRT if(!initialized) { handle = LoadLibraryA("OpenCL.dll"); initialized = true; g_haveOpenCL = handle != 0 && GetProcAddress(handle, oclFuncToCheck) != 0; } +#endif if(!handle) return 0; } @@ -2145,6 +2151,12 @@ static bool parseOpenCLDeviceConfiguration(const std::string& configurationStr, return true; } +#ifdef HAVE_WINRT +static cl_device_id selectOpenCLDevice() +{ + return NULL; +} +#else static cl_device_id selectOpenCLDevice() { std::string platform, deviceName; @@ -2289,6 +2301,7 @@ not_found: CV_Error(CL_INVALID_DEVICE, "Requested OpenCL device is not found"); return NULL; } +#endif struct Context::Impl { diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp index 6296fe518..705f53e41 100644 --- a/modules/core/src/system.cpp +++ b/modules/core/src/system.cpp @@ -442,27 +442,23 @@ String format( const char* fmt, ... ) String tempfile( const char* suffix ) { -#ifdef HAVE_WINRT - std::wstring temp_dir = L""; - const wchar_t* opencv_temp_dir = _wgetenv(L"OPENCV_TEMP_PATH"); - if (opencv_temp_dir) - temp_dir = std::wstring(opencv_temp_dir); -#else - const char *temp_dir = getenv("OPENCV_TEMP_PATH"); String fname; +#ifndef HAVE_WINRT + const char *temp_dir = getenv("OPENCV_TEMP_PATH"); #endif #if defined WIN32 || defined _WIN32 #ifdef HAVE_WINRT RoInitialize(RO_INIT_MULTITHREADED); - std::wstring temp_dir2; - if (temp_dir.empty()) - temp_dir = GetTempPathWinRT(); + std::wstring temp_dir = L""; + const wchar_t* opencv_temp_dir = GetTempPathWinRT().c_str(); + if (opencv_temp_dir) + temp_dir = std::wstring(opencv_temp_dir); std::wstring temp_file; temp_file = GetTempFileNameWinRT(L"ocv"); if (temp_file.empty()) - return std::string(); + return String(); temp_file = temp_dir + std::wstring(L"\\") + temp_file; DeleteFileW(temp_file.c_str()); @@ -470,7 +466,7 @@ String tempfile( const char* suffix ) char aname[MAX_PATH]; size_t copied = wcstombs(aname, temp_file.c_str(), MAX_PATH); CV_Assert((copied != MAX_PATH) && (copied != (size_t)-1)); - fname = std::string(aname); + fname = String(aname); RoUninitialize(); #else char temp_dir2[MAX_PATH] = { 0 }; diff --git a/modules/objdetect/src/matching.cpp b/modules/objdetect/src/matching.cpp index 87ad8382f..871c9e61c 100644 --- a/modules/objdetect/src/matching.cpp +++ b/modules/objdetect/src/matching.cpp @@ -525,7 +525,9 @@ int addNullableBorder(CvLSVMFeatureMap *map, int bx, int by) float *new_map; sizeX = map->sizeX + 2 * bx; sizeY = map->sizeY + 2 * by; - new_map = (float *)malloc(sizeof(float) * sizeX * sizeY * map->numFeatures); + // fix for Windows Phone 8 ARM compiler + size_t size = sizeof(float) * sizeX * sizeY * map->numFeatures; + new_map = (float *)malloc(size); for (i = 0; i < sizeX * sizeY * map->numFeatures; i++) { new_map[i] = 0.0;