From 42d730c80fee1731ba3006fb28ea7adfed431f62 Mon Sep 17 00:00:00 2001 From: jackun Date: Wed, 29 Sep 2021 19:15:12 +0300 Subject: [PATCH] USB: dshow: Initialize multi-threaded COM libs --- pcsx2/USB/usb-eyetoy/cam-windows.cpp | 4 +++- pcsx2/USB/usb-eyetoy/cam-windows.h | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pcsx2/USB/usb-eyetoy/cam-windows.cpp b/pcsx2/USB/usb-eyetoy/cam-windows.cpp index 8d3604b9c5..97e2b23c37 100644 --- a/pcsx2/USB/usb-eyetoy/cam-windows.cpp +++ b/pcsx2/USB/usb-eyetoy/cam-windows.cpp @@ -467,7 +467,6 @@ namespace usb_eyetoy pSourceConfig = nullptr; samplegrabber = nullptr; callbackhandler = new CallbackHandler(); - CoInitialize(NULL); mpeg_buffer.start = calloc(1, 640 * 480 * 2); } @@ -479,6 +478,8 @@ namespace usb_eyetoy int DirectShow::Open(int width, int height, FrameFormat format, int mirror) { + dshowCoInitialize = wil::CoInitializeEx_failfast(COINIT_MULTITHREADED); + frame_width = width; frame_height = height; frame_format = format; @@ -520,6 +521,7 @@ namespace usb_eyetoy safe_release(pGraphBuilder); safe_release(pGraph); safe_release(pControl); + dshowCoInitialize.reset(); return 0; }; diff --git a/pcsx2/USB/usb-eyetoy/cam-windows.h b/pcsx2/USB/usb-eyetoy/cam-windows.h index 2c25d959ac..3e9c5104e2 100644 --- a/pcsx2/USB/usb-eyetoy/cam-windows.h +++ b/pcsx2/USB/usb-eyetoy/cam-windows.h @@ -21,6 +21,8 @@ #include #include +#include + extern "C" { extern GUID IID_ISampleGrabberCB; extern GUID CLSID_SampleGrabber; @@ -109,6 +111,7 @@ namespace usb_eyetoy private: int mPort; + wil::unique_couninitialize_call dshowCoInitialize; ICaptureGraphBuilder2* pGraphBuilder; IFilterGraph2* pGraph; IMediaControl* pControl;