提交 2ebb6e60 编写于 作者: J jp9000

UI: Don't use activeRefs to determine if active

Due to certain design changes for delay, it's better to simply determine
whether outputs are active via booleans rather than an activeRefs
variable, which could get decremented more than once if say, the signal
for stopping the stream gets called more than once for whatever reason
(which may happen in the case of delay due to the way delay works)
上级 a508c17f
......@@ -9,8 +9,8 @@ using namespace std;
static void OBSStartStreaming(void *data, calldata_t *params)
{
BasicOutputHandler *output = static_cast<BasicOutputHandler*>(data);
output->streamingActive = true;
QMetaObject::invokeMethod(output->main, "StreamingStart");
output->activeRefs++;
UNUSED_PARAMETER(params);
}
......@@ -20,17 +20,17 @@ static void OBSStopStreaming(void *data, calldata_t *params)
BasicOutputHandler *output = static_cast<BasicOutputHandler*>(data);
int code = (int)calldata_int(params, "code");
output->streamingActive = false;
QMetaObject::invokeMethod(output->main,
"StreamingStop", Q_ARG(int, code));
output->activeRefs--;
}
static void OBSStartRecording(void *data, calldata_t *params)
{
BasicOutputHandler *output = static_cast<BasicOutputHandler*>(data);
output->recordingActive = true;
QMetaObject::invokeMethod(output->main, "RecordingStart");
output->activeRefs++;
UNUSED_PARAMETER(params);
}
......@@ -40,9 +40,9 @@ static void OBSStopRecording(void *data, calldata_t *params)
BasicOutputHandler *output = static_cast<BasicOutputHandler*>(data);
int code = (int)calldata_int(params, "code");
output->recordingActive = false;
QMetaObject::invokeMethod(output->main,
"RecordingStop", Q_ARG(int, code));
output->activeRefs--;
UNUSED_PARAMETER(params);
}
......
......@@ -5,7 +5,8 @@ class OBSBasic;
struct BasicOutputHandler {
OBSOutput fileOutput;
OBSOutput streamOutput;
int activeRefs = 0;
bool streamingActive = false;
bool recordingActive = false;
OBSBasic *main;
OBSSignal startRecording;
......@@ -26,7 +27,10 @@ struct BasicOutputHandler {
virtual void Update() = 0;
inline bool Active() const {return !!activeRefs;}
inline bool Active() const
{
return streamingActive || recordingActive;
}
};
BasicOutputHandler *CreateSimpleOutputHandler(OBSBasic *main);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册