Bugfix for bug #3767
Fixed a memory leak in cap_dshow.cpp in videoInput::setVideoSettingCamera(). The leak was caused by not releasing an IBaseFilter object created in a call to getDevice(). Tho object is now properly released. Conflicts: modules/highgui/src/cap_dshow.cpp
This commit is contained in:
parent
bb989f2034
commit
7e6947a940
@ -1839,6 +1839,8 @@ bool videoInput::setVideoSettingCamera(int deviceID, long Property, long lValue,
|
|||||||
hr = VDList[deviceID]->pVideoInputFilter->QueryInterface(IID_IAMCameraControl, (void**)&pIAMCameraControl);
|
hr = VDList[deviceID]->pVideoInputFilter->QueryInterface(IID_IAMCameraControl, (void**)&pIAMCameraControl);
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
DebugPrintOut("Error\n");
|
DebugPrintOut("Error\n");
|
||||||
|
if(VDList[deviceID]->pVideoInputFilter)VDList[deviceID]->pVideoInputFilter->Release();
|
||||||
|
if(VDList[deviceID]->pVideoInputFilter)VDList[deviceID]->pVideoInputFilter = NULL;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1857,6 +1859,8 @@ bool videoInput::setVideoSettingCamera(int deviceID, long Property, long lValue,
|
|||||||
pIAMCameraControl->Set(Property, lValue, Flags);
|
pIAMCameraControl->Set(Property, lValue, Flags);
|
||||||
}
|
}
|
||||||
pIAMCameraControl->Release();
|
pIAMCameraControl->Release();
|
||||||
|
if(VDList[deviceID]->pVideoInputFilter)VDList[deviceID]->pVideoInputFilter->Release();
|
||||||
|
if(VDList[deviceID]->pVideoInputFilter)VDList[deviceID]->pVideoInputFilter = NULL;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user