USB: safe_release dshow filters

Pausing/resuming could cause double-release.
This commit is contained in:
jackun 2021-01-12 00:07:16 +02:00
parent 0d02d1e41b
commit efed4a07ef
No known key found for this signature in database
GPG Key ID: 119DB3F1D05A9ED3
1 changed files with 11 additions and 15 deletions

View File

@ -444,28 +444,24 @@ namespace usb_eyetoy
int DirectShow::Close()
{
if (sourcefilter != nullptr)
if (sourcefilter)
{
this->Stop();
pControl->Stop();
sourcefilter->Release();
pSourceConfig->Release();
samplegrabberfilter->Release();
samplegrabber->Release();
nullrenderer->Release();
sourcefilter = nullptr;
safe_release(sourcefilter);
safe_release(pSourceConfig);
safe_release(samplegrabberfilter);
safe_release(samplegrabber);
safe_release(nullrenderer);
}
pGraphBuilder->Release();
pGraph->Release();
pControl->Release();
safe_release(pGraphBuilder);
safe_release(pGraph);
safe_release(pControl);
if (mpeg_buffer.start != nullptr)
{
free(mpeg_buffer.start);
mpeg_buffer.start = nullptr;
}
free(mpeg_buffer.start);
mpeg_buffer.start = nullptr;
return 0;
};