Merge branch 'develop'
This commit is contained in:
commit
3356898833
@ -128,6 +128,8 @@ namespace detail
|
||||
public:
|
||||
co_initializer();
|
||||
~co_initializer();
|
||||
|
||||
void task_mem_free(void* p);
|
||||
private:
|
||||
HMODULE ole32_;
|
||||
};
|
||||
|
@ -100,6 +100,18 @@ namespace detail
|
||||
}
|
||||
}
|
||||
|
||||
void platform_spec::co_initializer::task_mem_free(void* p)
|
||||
{
|
||||
if (ole32_)
|
||||
{
|
||||
using CoTaskMemFree_t = void (__stdcall *)(LPVOID pv);
|
||||
|
||||
CoTaskMemFree_t free_fn = reinterpret_cast<CoTaskMemFree_t>(::GetProcAddress(ole32_, "CoTaskMemFree"));
|
||||
if (free_fn)
|
||||
free_fn(p);
|
||||
}
|
||||
}
|
||||
|
||||
struct platform_spec::implementation
|
||||
{
|
||||
std::map<native_window_type, window_icons> iconbase;
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
#if defined(NANA_WINDOWS)
|
||||
# include <windows.h>
|
||||
# include "../detail/mswin/platform_spec.hpp"
|
||||
# ifndef NANA_MINGW //<Shobjidl.h> isn't supported well on MinGW
|
||||
# include <Shobjidl.h>
|
||||
# else
|
||||
@ -1247,7 +1248,7 @@ namespace nana
|
||||
#ifdef NANA_WINDOWS
|
||||
std::optional<folderbox::path_type> target;
|
||||
|
||||
::CoInitialize(nullptr);
|
||||
nana::detail::platform_spec::co_initializer co_init;
|
||||
#ifndef NANA_MINGW
|
||||
IFileDialog *fd(nullptr);
|
||||
HRESULT hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&fd));
|
||||
@ -1294,11 +1295,9 @@ namespace nana
|
||||
if (FALSE != SHGetPathFromIDList(pidl, folder_path))
|
||||
target = folder_path;
|
||||
|
||||
CoTaskMemFree(pidl);
|
||||
co_init.task_mem_free(pidl);
|
||||
}
|
||||
#endif
|
||||
::CoUninitialize();
|
||||
|
||||
return target;
|
||||
|
||||
#elif defined(NANA_POSIX)
|
||||
|
Loading…
x
Reference in New Issue
Block a user