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:
Florin9doi 2020-12-17 01:29:14 +02:00 committed by GitHub
parent 271f60b65a
commit bf8fb7bad6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 44 additions and 44 deletions

View File

@ -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;
};