Skip to content

Commit 267855f

Browse files
committed
Cleanup
* Use OBSSourceAutoRelease * Do not return true if source selection is invalid
1 parent 4bdebb7 commit 267855f

File tree

1 file changed

+28
-31
lines changed

1 file changed

+28
-31
lines changed

src/macro-core/macro-condition-audio.cpp

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,17 @@ MacroConditionAudio::~MacroConditionAudio()
6262
bool MacroConditionAudio::CheckOutputCondition()
6363
{
6464
bool ret = false;
65-
auto s = obs_weak_source_get_source(_audioSource.GetSource());
65+
OBSSourceAutoRelease source =
66+
obs_weak_source_get_source(_audioSource.GetSource());
6667

68+
// peak will have a value from -60 db to 0 db so we need to scale it
6769
double curVolume = ((double)_peak + 60) * 1.7;
6870

6971
switch (_outputCondition) {
7072
case OutputCondition::ABOVE:
71-
// peak will have a value from -60 db to 0 db
7273
ret = curVolume > _volume;
7374
break;
7475
case OutputCondition::BELOW:
75-
// peak will have a value from -60 db to 0 db
7676
ret = curVolume < _volume;
7777
break;
7878
default:
@@ -84,21 +84,21 @@ bool MacroConditionAudio::CheckOutputCondition()
8484

8585
// Reset for next check
8686
_peak = -std::numeric_limits<float>::infinity();
87-
obs_source_release(s);
8887
if (_audioSource.GetType() == SourceSelection::Type::VARIABLE) {
8988
ResetVolmeter();
9089
}
9190

92-
return ret;
91+
return ret && source;
9392
}
9493

9594
bool MacroConditionAudio::CheckVolumeCondition()
9695
{
9796
bool ret = false;
98-
auto s = obs_weak_source_get_source(_audioSource.GetSource());
97+
OBSSourceAutoRelease source =
98+
obs_weak_source_get_source(_audioSource.GetSource());
9999

100-
float curVolume = obs_source_get_volume(s);
101-
bool muted = obs_source_muted(s);
100+
float curVolume = obs_source_get_volume(source);
101+
bool muted = obs_source_muted(source);
102102

103103
switch (_volumeCondition) {
104104
case VolumeCondition::ABOVE:
@@ -126,10 +126,9 @@ bool MacroConditionAudio::CheckVolumeCondition()
126126
}
127127

128128
SetTempVarValue("configured_volume", std::to_string(curVolume));
129-
SetTempVarValue("muted", muted ? "true" : "false");
129+
SetTempVarValue("muted", (source && muted) ? "true" : "false");
130130

131-
obs_source_release(s);
132-
return ret;
131+
return ret && source;
133132
}
134133

135134
bool MacroConditionAudio::CheckSyncOffset()
@@ -139,17 +138,17 @@ bool MacroConditionAudio::CheckSyncOffset()
139138
}
140139

141140
bool ret = false;
142-
auto s = obs_weak_source_get_source(_audioSource.GetSource());
143-
auto curOffset = obs_source_get_sync_offset(s) / nsPerMs;
141+
OBSSourceAutoRelease source =
142+
obs_weak_source_get_source(_audioSource.GetSource());
143+
auto curOffset = obs_source_get_sync_offset(source) / nsPerMs;
144144
if (_outputCondition == OutputCondition::ABOVE) {
145145
ret = curOffset > _syncOffset;
146146
} else {
147147
ret = curOffset < _syncOffset;
148148
}
149149
SetVariableValue(std::to_string(curOffset));
150150
SetTempVarValue("sync_offset", std::to_string(curOffset));
151-
obs_source_release(s);
152-
return ret;
151+
return ret && source;
153152
}
154153

155154
bool MacroConditionAudio::CheckMonitor()
@@ -159,13 +158,13 @@ bool MacroConditionAudio::CheckMonitor()
159158
}
160159

161160
bool ret = false;
162-
auto s = obs_weak_source_get_source(_audioSource.GetSource());
163-
ret = obs_source_get_monitoring_type(s) == _monitorType;
161+
OBSSourceAutoRelease source =
162+
obs_weak_source_get_source(_audioSource.GetSource());
163+
ret = obs_source_get_monitoring_type(source) == _monitorType;
164164
SetVariableValue("");
165165
SetTempVarValue("monitor",
166-
std::to_string(obs_source_get_monitoring_type(s)));
167-
obs_source_release(s);
168-
return ret;
166+
std::to_string(obs_source_get_monitoring_type(source)));
167+
return ret && source;
169168
}
170169

171170
bool MacroConditionAudio::CheckBalance()
@@ -175,17 +174,17 @@ bool MacroConditionAudio::CheckBalance()
175174
}
176175

177176
bool ret = false;
178-
auto s = obs_weak_source_get_source(_audioSource.GetSource());
179-
auto curBalance = obs_source_get_balance_value(s);
177+
OBSSourceAutoRelease source =
178+
obs_weak_source_get_source(_audioSource.GetSource());
179+
auto curBalance = obs_source_get_balance_value(source);
180180
if (_outputCondition == OutputCondition::ABOVE) {
181181
ret = curBalance > _balance;
182182
} else {
183183
ret = curBalance < _balance;
184184
}
185185
SetVariableValue(std::to_string(curBalance));
186186
SetTempVarValue("balance", std::to_string(curBalance));
187-
obs_source_release(s);
188-
return ret;
187+
return ret && source;
189188
}
190189

191190
bool MacroConditionAudio::CheckCondition()
@@ -239,13 +238,12 @@ obs_volmeter_t *AddVolmeterToSource(MacroConditionAudio *entry,
239238
obs_volmeter_t *volmeter = obs_volmeter_create(OBS_FADER_LOG);
240239
obs_volmeter_add_callback(volmeter, MacroConditionAudio::SetVolumeLevel,
241240
entry);
242-
obs_source_t *as = obs_weak_source_get_source(source);
243-
if (!obs_volmeter_attach_source(volmeter, as)) {
244-
const char *name = obs_source_get_name(as);
241+
OBSSourceAutoRelease audioSource = obs_weak_source_get_source(source);
242+
if (!obs_volmeter_attach_source(volmeter, audioSource)) {
243+
const char *name = obs_source_get_name(audioSource);
245244
blog(LOG_WARNING, "failed to attach volmeter to source %s",
246245
name);
247246
}
248-
obs_source_release(as);
249247

250248
return volmeter;
251249
}
@@ -455,10 +453,9 @@ MacroConditionAudioEdit::MacroConditionAudioEdit(
455453
void MacroConditionAudioEdit::UpdateVolmeterSource()
456454
{
457455
delete _volMeter;
458-
obs_source_t *soruce = obs_weak_source_get_source(
456+
OBSSourceAutoRelease soruce = obs_weak_source_get_source(
459457
_entryData->_audioSource.GetSource());
460-
_volMeter = new VolControl(soruce);
461-
obs_source_release(soruce);
458+
_volMeter = new VolControl(soruce.Get());
462459

463460
QLayout *layout = this->layout();
464461
layout->addWidget(_volMeter);

0 commit comments

Comments
 (0)