mirror of https://github.com/PCSX2/pcsx2.git
Resolve a crash when EyeToy is opened the second time (#3972)
* Resolve a crash when EyeToy is opened the second time * Replace NULL/0 with nullptr Co-authored-by: Florin9doi <Florin9doi@users.noreply.github.com>
This commit is contained in:
parent
271f60b65a
commit
bf8fb7bad6
|
@ -55,7 +55,7 @@ namespace usb_eyetoy
|
|||
{
|
||||
std::vector<std::wstring> devList;
|
||||
|
||||
ICreateDevEnum* pCreateDevEnum = 0;
|
||||
ICreateDevEnum* pCreateDevEnum = nullptr;
|
||||
HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pCreateDevEnum));
|
||||
if (FAILED(hr))
|
||||
{
|
||||
|
@ -63,7 +63,7 @@ namespace usb_eyetoy
|
|||
return devList;
|
||||
}
|
||||
|
||||
IEnumMoniker* pEnum = 0;
|
||||
IEnumMoniker* pEnum = nullptr;
|
||||
hr = pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pEnum, 0);
|
||||
if (hr != S_OK)
|
||||
{
|
||||
|
@ -71,11 +71,11 @@ namespace usb_eyetoy
|
|||
return devList;
|
||||
};
|
||||
|
||||
IMoniker* pMoniker = NULL;
|
||||
IMoniker* pMoniker = nullptr;
|
||||
while (pEnum->Next(1, &pMoniker, NULL) == S_OK)
|
||||
{
|
||||
IPropertyBag* pPropBag;
|
||||
HRESULT hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag));
|
||||
IPropertyBag* pPropBag = nullptr;
|
||||
hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag));
|
||||
if (FAILED(hr))
|
||||
{
|
||||
pMoniker->Release();
|
||||
|
@ -112,7 +112,7 @@ namespace usb_eyetoy
|
|||
HRESULT hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pGraphBuilder));
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("CoCreateInstance CLSID_CaptureGraphBuilder2 err : %x\n", hr);
|
||||
Console.Warning("CoCreateInstance CLSID_CaptureGraphBuilder2 err : %x", hr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -120,26 +120,26 @@ namespace usb_eyetoy
|
|||
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pGraph));
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("CoCreateInstance CLSID_FilterGraph err : %x\n", hr);
|
||||
Console.Warning("CoCreateInstance CLSID_FilterGraph err : %x", hr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
hr = pGraphBuilder->SetFiltergraph(pGraph);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("SetFiltergraph err : %x\n", hr);
|
||||
Console.Warning("SetFiltergraph err : %x", hr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
hr = pGraph->QueryInterface(IID_IMediaControl, (void**)&pControl);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("QueryInterface IID_IMediaControl err : %x\n", hr);
|
||||
Console.Warning("QueryInterface IID_IMediaControl err : %x", hr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// enumerate all video capture devices
|
||||
ICreateDevEnum* pCreateDevEnum = 0;
|
||||
ICreateDevEnum* pCreateDevEnum = nullptr;
|
||||
hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pCreateDevEnum));
|
||||
if (FAILED(hr))
|
||||
{
|
||||
|
@ -147,7 +147,7 @@ namespace usb_eyetoy
|
|||
return -1;
|
||||
}
|
||||
|
||||
IEnumMoniker* pEnum = 0;
|
||||
IEnumMoniker* pEnum = nullptr;
|
||||
hr = pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pEnum, 0);
|
||||
if (hr != S_OK)
|
||||
{
|
||||
|
@ -157,20 +157,19 @@ namespace usb_eyetoy
|
|||
|
||||
pEnum->Reset();
|
||||
|
||||
IMoniker* pMoniker;
|
||||
while (pEnum->Next(1, &pMoniker, NULL) == S_OK && sourcefilter == NULL)
|
||||
IMoniker* pMoniker = nullptr;
|
||||
while (pEnum->Next(1, &pMoniker, NULL) == S_OK && sourcefilter == nullptr)
|
||||
{
|
||||
IPropertyBag* pPropBag = 0;
|
||||
IPropertyBag* pPropBag = nullptr;
|
||||
hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag));
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("BindToStorage err : %x\n", hr);
|
||||
Console.Warning("BindToStorage err : %x", hr);
|
||||
goto freeMoniker;
|
||||
}
|
||||
|
||||
VARIANT var;
|
||||
VariantInit(&var);
|
||||
|
||||
hr = pPropBag->Read(L"Description", &var, 0);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
|
@ -178,10 +177,10 @@ namespace usb_eyetoy
|
|||
}
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("Read name err : %x\n", hr);
|
||||
Console.Warning("Read name err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
Console.Warning("Camera: '%ls'\n", var.bstrVal);
|
||||
Console.Warning("Camera: '%ls'", var.bstrVal);
|
||||
if (!selectedDevice.empty() && selectedDevice != var.bstrVal)
|
||||
{
|
||||
goto freeVar;
|
||||
|
@ -191,7 +190,7 @@ namespace usb_eyetoy
|
|||
hr = pGraph->AddSourceFilterForMoniker(pMoniker, NULL, L"sourcefilter", &sourcefilter);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("AddSourceFilterForMoniker err : %x\n", hr);
|
||||
Console.Warning("AddSourceFilterForMoniker err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
|
||||
|
@ -210,7 +209,7 @@ namespace usb_eyetoy
|
|||
VIDEO_STREAM_CONFIG_CAPS scc;
|
||||
AM_MEDIA_TYPE* pmtConfig;
|
||||
hr = pSourceConfig->GetStreamCaps(iFormat, &pmtConfig, (BYTE*)&scc);
|
||||
Console.Warning("GetStreamCaps min=%dx%d max=%dx%d, fmt=%x\n",
|
||||
Console.Warning("GetStreamCaps min=%dx%d max=%dx%d, fmt=%x",
|
||||
scc.MinOutputSize.cx, scc.MinOutputSize.cy,
|
||||
scc.MaxOutputSize.cx, scc.MaxOutputSize.cy,
|
||||
pmtConfig->subtype);
|
||||
|
@ -220,7 +219,7 @@ namespace usb_eyetoy
|
|||
if ((pmtConfig->majortype == MEDIATYPE_Video) &&
|
||||
(pmtConfig->formattype == FORMAT_VideoInfo) &&
|
||||
(pmtConfig->cbFormat >= sizeof(VIDEOINFOHEADER)) &&
|
||||
(pmtConfig->pbFormat != NULL))
|
||||
(pmtConfig->pbFormat != nullptr))
|
||||
{
|
||||
|
||||
VIDEOINFOHEADER* pVih = (VIDEOINFOHEADER*)pmtConfig->pbFormat;
|
||||
|
@ -239,14 +238,14 @@ namespace usb_eyetoy
|
|||
hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&samplegrabberfilter));
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("CoCreateInstance CLSID_SampleGrabber err : %x\n", hr);
|
||||
Console.Warning("CoCreateInstance CLSID_SampleGrabber err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
|
||||
hr = pGraph->AddFilter(samplegrabberfilter, L"samplegrabberfilter");
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("AddFilter samplegrabberfilter err : %x\n", hr);
|
||||
Console.Warning("AddFilter samplegrabberfilter err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
|
||||
|
@ -254,7 +253,7 @@ namespace usb_eyetoy
|
|||
hr = samplegrabberfilter->QueryInterface(IID_PPV_ARGS(&samplegrabber));
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("QueryInterface err : %x\n", hr);
|
||||
Console.Warning("QueryInterface err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
|
||||
|
@ -265,7 +264,7 @@ namespace usb_eyetoy
|
|||
hr = samplegrabber->SetMediaType(&mt);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("SetMediaType err : %x\n", hr);
|
||||
Console.Warning("SetMediaType err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
|
||||
|
@ -273,7 +272,7 @@ namespace usb_eyetoy
|
|||
hr = samplegrabber->SetCallback(callbackhandler, 0);
|
||||
if (hr != S_OK)
|
||||
{
|
||||
Console.Warning("SetCallback err : %x\n", hr);
|
||||
Console.Warning("SetCallback err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
|
||||
|
@ -281,14 +280,14 @@ namespace usb_eyetoy
|
|||
hr = CoCreateInstance(CLSID_NullRenderer, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&nullrenderer));
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("CoCreateInstance CLSID_NullRenderer err : %x\n", hr);
|
||||
Console.Warning("CoCreateInstance CLSID_NullRenderer err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
|
||||
hr = pGraph->AddFilter(nullrenderer, L"nullrenderer");
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("AddFilter nullrenderer err : %x\n", hr);
|
||||
Console.Warning("AddFilter nullrenderer err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
|
||||
|
@ -296,7 +295,7 @@ namespace usb_eyetoy
|
|||
hr = pGraphBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, sourcefilter, samplegrabberfilter, nullrenderer);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("RenderStream err : %x\n", hr);
|
||||
Console.Warning("RenderStream err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
|
||||
|
@ -305,7 +304,7 @@ namespace usb_eyetoy
|
|||
hr = pGraphBuilder->ControlStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, sourcefilter, &start, &stop, 1, 2);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Console.Warning("ControlStream err : %x\n", hr);
|
||||
Console.Warning("ControlStream err : %x", hr);
|
||||
goto freeVar;
|
||||
}
|
||||
|
||||
|
@ -317,7 +316,7 @@ namespace usb_eyetoy
|
|||
pMoniker->Release();
|
||||
}
|
||||
pEnum->Release();
|
||||
if (sourcefilter == NULL)
|
||||
if (sourcefilter == nullptr)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
@ -376,7 +375,7 @@ namespace usb_eyetoy
|
|||
}
|
||||
else
|
||||
{
|
||||
Console.Warning("dshow_callback: unk format: len=%d bpp=%d\n", len, bitsperpixel);
|
||||
Console.Warning("dshow_callback: unk format: len=%d bpp=%d", len, bitsperpixel);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -408,14 +407,14 @@ namespace usb_eyetoy
|
|||
DirectShow::DirectShow(int port)
|
||||
{
|
||||
mPort = port;
|
||||
pGraphBuilder = NULL;
|
||||
pGraph = NULL;
|
||||
pControl = NULL;
|
||||
sourcefilter = NULL;
|
||||
samplegrabberfilter = NULL;
|
||||
nullrenderer = NULL;
|
||||
pSourceConfig = NULL;
|
||||
samplegrabber = NULL;
|
||||
pGraphBuilder = nullptr;
|
||||
pGraph = nullptr;
|
||||
pControl = nullptr;
|
||||
sourcefilter = nullptr;
|
||||
samplegrabberfilter = nullptr;
|
||||
nullrenderer = nullptr;
|
||||
pSourceConfig = nullptr;
|
||||
samplegrabber = nullptr;
|
||||
callbackhandler = new CallbackHandler();
|
||||
CoInitialize(NULL);
|
||||
}
|
||||
|
@ -431,7 +430,7 @@ namespace usb_eyetoy
|
|||
int ret = InitializeDevice(selectedDevice);
|
||||
if (ret < 0)
|
||||
{
|
||||
Console.Warning("Camera: cannot find '%ls'\n", selectedDevice.c_str());
|
||||
Console.Warning("Camera: cannot find '%ls'", selectedDevice.c_str());
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -445,7 +444,7 @@ namespace usb_eyetoy
|
|||
|
||||
int DirectShow::Close()
|
||||
{
|
||||
if (sourcefilter != NULL)
|
||||
if (sourcefilter != nullptr)
|
||||
{
|
||||
this->Stop();
|
||||
pControl->Stop();
|
||||
|
@ -455,16 +454,17 @@ namespace usb_eyetoy
|
|||
samplegrabberfilter->Release();
|
||||
samplegrabber->Release();
|
||||
nullrenderer->Release();
|
||||
sourcefilter = nullptr;
|
||||
}
|
||||
|
||||
pGraphBuilder->Release();
|
||||
pGraph->Release();
|
||||
pControl->Release();
|
||||
|
||||
if (mpeg_buffer.start != NULL)
|
||||
if (mpeg_buffer.start != nullptr)
|
||||
{
|
||||
free(mpeg_buffer.start);
|
||||
mpeg_buffer.start = NULL;
|
||||
mpeg_buffer.start = nullptr;
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue