TLS calls on WinRT replaced on variables with C++11 "thread" attribute.
This commit is contained in:
@@ -16,10 +16,23 @@ namespace cv
|
||||
list.clear();
|
||||
std::string path_f = path + "/" + exten;
|
||||
#ifdef WIN32
|
||||
#if HAVE_WINRT
|
||||
WIN32_FIND_DATAW FindFileData;
|
||||
#else
|
||||
WIN32_FIND_DATA FindFileData;
|
||||
HANDLE hFind;
|
||||
#endif
|
||||
HANDLE hFind;
|
||||
|
||||
hFind = FindFirstFile((LPCSTR)path_f.c_str(), &FindFileData);
|
||||
#ifdef HAVE_WINRT
|
||||
size_t size = mbstowcs(NULL, path_f.c_str(), path_f.size());
|
||||
wchar_t* wpath = (wchar_t*)malloc((size+1)*sizeof(wchar_t));
|
||||
wpath[size] = 0;
|
||||
mbstowcs(wpath, path_f.c_str(), path_f.size());
|
||||
hFind = FindFirstFileW(wpath, &FindFileData);
|
||||
free(wpath);
|
||||
#else
|
||||
hFind = FindFirstFileA((LPCSTR)path_f.c_str(), &FindFileData);
|
||||
#endif
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
return list;
|
||||
@@ -34,13 +47,29 @@ namespace cv
|
||||
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_SYSTEM ||
|
||||
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_READONLY)
|
||||
{
|
||||
char* fname;
|
||||
#ifdef HAVE_WINRT
|
||||
size_t asize = wcstombs(NULL, FindFileData.cFileName, 0);
|
||||
char* fname = (char*)malloc((asize+1)*sizeof(char));
|
||||
fname[asize] = 0;
|
||||
wcstombs(fname, FindFileData.cFileName, asize);
|
||||
#else
|
||||
fname = FindFileData.cFileName;
|
||||
#endif
|
||||
if (addPath)
|
||||
list.push_back(path + "/" + FindFileData.cFileName);
|
||||
list.push_back(path + "/" + fname);
|
||||
else
|
||||
list.push_back(FindFileData.cFileName);
|
||||
list.push_back(fname);
|
||||
#ifdef HAVE_WINRT
|
||||
free(fname);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
while(FindNextFile(hFind, &FindFileData));
|
||||
#ifdef HAVE_WINRT
|
||||
while(FindNextFileW(hFind, &FindFileData));
|
||||
#else
|
||||
while(FindNextFileA(hFind, &FindFileData));
|
||||
#endif
|
||||
FindClose(hFind);
|
||||
}
|
||||
#else
|
||||
@@ -75,10 +104,23 @@ namespace cv
|
||||
std::string path_f = path + "/" + exten;
|
||||
list.clear();
|
||||
#ifdef WIN32
|
||||
#if HAVE_WINRT
|
||||
WIN32_FIND_DATAW FindFileData;
|
||||
#else
|
||||
WIN32_FIND_DATA FindFileData;
|
||||
#endif
|
||||
HANDLE hFind;
|
||||
|
||||
hFind = FindFirstFile((LPCSTR)path_f.c_str(), &FindFileData);
|
||||
#ifdef HAVE_WINRT
|
||||
size_t size = mbstowcs(NULL, path_f.c_str(), path_f.size());
|
||||
wchar_t* wpath = (wchar_t*)malloc((size+1)*sizeof(wchar_t));
|
||||
wpath[size] = 0;
|
||||
mbstowcs(wpath, path_f.c_str(), path_f.size());
|
||||
hFind = FindFirstFileW(wpath, &FindFileData);
|
||||
free(wpath);
|
||||
#else
|
||||
hFind = FindFirstFileA((LPCSTR)path_f.c_str(), &FindFileData);
|
||||
#endif
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
return list;
|
||||
@@ -91,13 +133,27 @@ namespace cv
|
||||
strcmp(FindFileData.cFileName, ".") != 0 &&
|
||||
strcmp(FindFileData.cFileName, "..") != 0)
|
||||
{
|
||||
char* fname;
|
||||
#ifdef HAVE_WINRT
|
||||
size_t asize = wcstombs(NULL, FindFileData.cFileName, 0);
|
||||
char* fname = (char*)malloc((asize+1)*sizeof(char));
|
||||
fname[asize] = 0;
|
||||
wcstombs(fname, FindFileData.cFileName, asize);
|
||||
#else
|
||||
fname = FindFileData.cFileName;
|
||||
#endif
|
||||
|
||||
if (addPath)
|
||||
list.push_back(path + "/" + FindFileData.cFileName);
|
||||
list.push_back(path + "/" + fname);
|
||||
else
|
||||
list.push_back(FindFileData.cFileName);
|
||||
list.push_back(fname);
|
||||
}
|
||||
}
|
||||
while(FindNextFile(hFind, &FindFileData));
|
||||
#ifdef HAVE_WINRT
|
||||
while(FindNextFileW(hFind, &FindFileData));
|
||||
#else
|
||||
while(FindNextFileA(hFind, &FindFileData));
|
||||
#endif
|
||||
FindClose(hFind);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user