diff options
Diffstat (limited to 'src/osd/modules/monitor/monitor_dxgi.cpp')
-rw-r--r-- | src/osd/modules/monitor/monitor_dxgi.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/osd/modules/monitor/monitor_dxgi.cpp b/src/osd/modules/monitor/monitor_dxgi.cpp index 33360922764..c536a52efa6 100644 --- a/src/osd/modules/monitor/monitor_dxgi.cpp +++ b/src/osd/modules/monitor/monitor_dxgi.cpp @@ -25,6 +25,10 @@ #include "window.h" #include "windows/video.h" +DYNAMIC_API_BEGIN(dxgi, "dxgi.dll") + DYNAMIC_API_FN(DWORD, WINAPI, CreateDXGIFactory1, REFIID, void**) +DYNAMIC_API_END() + using namespace Microsoft::WRL; class dxgi_monitor_info : public osd_monitor_info @@ -54,26 +58,18 @@ public: } }; -typedef DWORD(WINAPI *dxgi_create_factory_fn)(REFIID, void**); class dxgi_monitor_module : public monitor_module_base { -private: - osd::dynamic_module::ptr m_dxgi_module; - dxgi_create_factory_fn m_create_factory_fn; - public: dxgi_monitor_module() - : monitor_module_base(OSD_MONITOR_PROVIDER, "dxgi"), - m_dxgi_module(osd::dynamic_module::open({"dxgi.dll"})), - m_create_factory_fn(nullptr) + : monitor_module_base(OSD_MONITOR_PROVIDER, "dxgi") { } bool probe() override { - m_create_factory_fn = m_dxgi_module->bind<dxgi_create_factory_fn>("CreateDXGIFactory1"); - if (m_create_factory_fn == nullptr) + if(!DYNAMIC_API_TEST(dxgi, CreateDXGIFactory1)) return false; return true; @@ -133,7 +129,7 @@ protected: ComPtr<IDXGIFactory2> factory; ComPtr<IDXGIAdapter> adapter; - result = m_create_factory_fn(__uuidof(IDXGIFactory2), reinterpret_cast<void**>(factory.GetAddressOf())); + result = DYNAMIC_CALL(dxgi, CreateDXGIFactory1, __uuidof(IDXGIFactory2), reinterpret_cast<void**>(factory.GetAddressOf())); // m_create_factory_fn(); if (result != ERROR_SUCCESS) { osd_printf_error("CreateDXGIFactory1 failed with error 0x%x\n", static_cast<unsigned int>(result)); |