decklink: Use ComPtr for variables

This makes sure Decklink variables are automatically released.

Closes https://github.com/obsproject/obs-studio/pull/5508
This commit is contained in:
cg2121 2022-02-20 14:14:24 -06:00 • committed by Jim
commit efce0f41d0
7 changed files with 19 additions and 44 deletions

View file

@ -49,9 +49,9 @@ bool DeckLinkDevice::Init()
ComPtr<IDeckLinkInput> input;
if (device->QueryInterface(IID_IDeckLinkInput, (void **)&input) ==
S_OK) {
IDeckLinkDisplayModeIterator *modeIterator;
ComPtr<IDeckLinkDisplayModeIterator> modeIterator;
if (input->GetDisplayModeIterator(&modeIterator) == S_OK) {
IDeckLinkDisplayMode *displayMode;
ComPtr<IDeckLinkDisplayMode> displayMode;
long long modeId = 1;
while (modeIterator->Next(&displayMode) == S_OK) {
@ -63,11 +63,8 @@ bool DeckLinkDevice::Init()
modeId);
inputModes.push_back(mode);
inputModeIdMap[modeId] = mode;
displayMode->Release();
++modeId;
}
modeIterator->Release();
}
}
@ -88,9 +85,9 @@ bool DeckLinkDevice::Init()
if (device->QueryInterface(IID_IDeckLinkOutput, (void **)&output) ==
S_OK) {
IDeckLinkDisplayModeIterator *modeIterator;
ComPtr<IDeckLinkDisplayModeIterator> modeIterator;
if (output->GetDisplayModeIterator(&modeIterator) == S_OK) {
IDeckLinkDisplayMode *displayMode;
ComPtr<IDeckLinkDisplayMode> displayMode;
long long modeId = 1;
while (modeIterator->Next(&displayMode) == S_OK) {
@ -102,11 +99,8 @@ bool DeckLinkDevice::Init()
modeId);
outputModes.push_back(mode);
outputModeIdMap[modeId] = mode;
displayMode->Release();
++modeId;
}
modeIterator->Release();
}
}