Move NetworkStream and FileStream to std::unique_ptr
This commit is contained in:
parent
e7804fcef0
commit
858991b506
@ -2146,17 +2146,14 @@ NetworkStream* CreateNullNetwork();
|
|||||||
|
|
||||||
void OBS::RestartNetwork()
|
void OBS::RestartNetwork()
|
||||||
{
|
{
|
||||||
NetworkStream *tmp;
|
|
||||||
OSEnterMutex(App->hStartupShutdownMutex);
|
OSEnterMutex(App->hStartupShutdownMutex);
|
||||||
|
|
||||||
//delete the old one
|
//delete the old one
|
||||||
tmp = App->network;
|
App->network.reset();
|
||||||
App->network = nullptr;
|
|
||||||
delete tmp;
|
|
||||||
|
|
||||||
//start up a new one
|
//start up a new one
|
||||||
App->bSentHeaders = false;
|
App->bSentHeaders = false;
|
||||||
App->network = CreateRTMPPublisher();
|
App->network.reset(CreateRTMPPublisher());
|
||||||
|
|
||||||
OSLeaveMutex(App->hStartupShutdownMutex);
|
OSLeaveMutex(App->hStartupShutdownMutex);
|
||||||
}
|
}
|
||||||
|
@ -629,7 +629,7 @@ class OBS
|
|||||||
|
|
||||||
//---------------------------------------------------
|
//---------------------------------------------------
|
||||||
|
|
||||||
NetworkStream *network;
|
std::unique_ptr<NetworkStream> network;
|
||||||
|
|
||||||
//---------------------------------------------------
|
//---------------------------------------------------
|
||||||
// audio sources/encoder
|
// audio sources/encoder
|
||||||
@ -828,7 +828,7 @@ private:
|
|||||||
bool bUseCFR;
|
bool bUseCFR;
|
||||||
|
|
||||||
bool bWriteToFile;
|
bool bWriteToFile;
|
||||||
VideoFileStream *fileStream;
|
std::unique_ptr<VideoFileStream> fileStream;
|
||||||
|
|
||||||
std::unique_ptr<VideoFileStream> replayBufferStream;
|
std::unique_ptr<VideoFileStream> replayBufferStream;
|
||||||
ReplayBuffer *replayBuffer;
|
ReplayBuffer *replayBuffer;
|
||||||
|
@ -265,7 +265,7 @@ bool OBS::StartRecording(bool force)
|
|||||||
bool success = true;
|
bool success = true;
|
||||||
if(!bTestStream && bWriteToFile && strOutputFile.IsValid())
|
if(!bTestStream && bWriteToFile && strOutputFile.IsValid())
|
||||||
{
|
{
|
||||||
fileStream = CreateFileStream(strOutputFile);
|
fileStream.reset(CreateFileStream(strOutputFile));
|
||||||
|
|
||||||
if(!fileStream)
|
if(!fileStream)
|
||||||
{
|
{
|
||||||
@ -290,15 +290,9 @@ void OBS::StopRecording()
|
|||||||
|
|
||||||
if(!bRecording) return;
|
if(!bRecording) return;
|
||||||
|
|
||||||
VideoFileStream *tempStream = NULL;
|
|
||||||
|
|
||||||
tempStream = fileStream;
|
|
||||||
// Prevent the encoder thread from trying to write to fileStream while it's closing
|
// Prevent the encoder thread from trying to write to fileStream while it's closing
|
||||||
fileStream = NULL;
|
|
||||||
|
|
||||||
delete tempStream;
|
auto stream = move(fileStream);
|
||||||
tempStream = NULL;
|
|
||||||
bRecording = false;
|
|
||||||
|
|
||||||
ReportStopRecordingTrigger();
|
ReportStopRecordingTrigger();
|
||||||
|
|
||||||
@ -317,13 +311,7 @@ void OBS::Start(bool recordingOnly, bool replayBufferOnly)
|
|||||||
if((bRecording || bRecordingReplayBuffer) && networkMode == 0 && delayTime == 0 && !recordingOnly && !replayBufferOnly) {
|
if((bRecording || bRecordingReplayBuffer) && networkMode == 0 && delayTime == 0 && !recordingOnly && !replayBufferOnly) {
|
||||||
bFirstConnect = !bReconnecting;
|
bFirstConnect = !bReconnecting;
|
||||||
|
|
||||||
if (network)
|
network.reset(CreateRTMPPublisher());
|
||||||
{
|
|
||||||
NetworkStream *net = network;
|
|
||||||
network = nullptr;
|
|
||||||
delete net;
|
|
||||||
}
|
|
||||||
network = CreateRTMPPublisher();
|
|
||||||
|
|
||||||
Log(TEXT("=====Stream Start (while recording): %s============================="), CurrentDateTimeString().Array());
|
Log(TEXT("=====Stream Start (while recording): %s============================="), CurrentDateTimeString().Array());
|
||||||
|
|
||||||
@ -444,13 +432,13 @@ retryHookTest:
|
|||||||
bFirstConnect = !bReconnecting;
|
bFirstConnect = !bReconnecting;
|
||||||
|
|
||||||
if(bTestStream || recordingOnly || replayBufferOnly)
|
if(bTestStream || recordingOnly || replayBufferOnly)
|
||||||
network = CreateNullNetwork();
|
network.reset(CreateNullNetwork());
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch(networkMode)
|
switch(networkMode)
|
||||||
{
|
{
|
||||||
case 0: network = (delayTime > 0) ? CreateDelayedPublisher(delayTime) : CreateRTMPPublisher(); break;
|
case 0: network.reset((delayTime > 0) ? CreateDelayedPublisher(delayTime) : CreateRTMPPublisher()); break;
|
||||||
case 1: network = CreateNullNetwork(); break;
|
case 1: network.reset(CreateNullNetwork()); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -529,7 +517,7 @@ retryHookTestV2:
|
|||||||
if (ret == IDABORT)
|
if (ret == IDABORT)
|
||||||
{
|
{
|
||||||
//FIXME: really need a better way to abort startup than this...
|
//FIXME: really need a better way to abort startup than this...
|
||||||
delete network;
|
network.reset();
|
||||||
delete GS;
|
delete GS;
|
||||||
|
|
||||||
DisableMenusWhileStreaming(false);
|
DisableMenusWhileStreaming(false);
|
||||||
@ -899,15 +887,11 @@ void OBS::Stop(bool overrideKeepRecording)
|
|||||||
int networkMode = AppConfig->GetInt(TEXT("Publish"), TEXT("Mode"), 2);
|
int networkMode = AppConfig->GetInt(TEXT("Publish"), TEXT("Mode"), 2);
|
||||||
|
|
||||||
if(((!overrideKeepRecording && bRecording && bKeepRecording) || bRecordingReplayBuffer) && networkMode == 0) {
|
if(((!overrideKeepRecording && bRecording && bKeepRecording) || bRecordingReplayBuffer) && networkMode == 0) {
|
||||||
NetworkStream *tempStream = NULL;
|
|
||||||
|
|
||||||
videoEncoder->RequestKeyframe();
|
videoEncoder->RequestKeyframe();
|
||||||
tempStream = network;
|
|
||||||
network = NULL;
|
|
||||||
|
|
||||||
Log(TEXT("=====Stream End (recording continues): %s========================="), CurrentDateTimeString().Array());
|
Log(TEXT("=====Stream End (recording continues): %s========================="), CurrentDateTimeString().Array());
|
||||||
|
network.reset();
|
||||||
|
|
||||||
delete tempStream;
|
|
||||||
|
|
||||||
bStreaming = false;
|
bStreaming = false;
|
||||||
bSentHeaders = false;
|
bSentHeaders = false;
|
||||||
@ -978,8 +962,7 @@ void OBS::Stop(bool overrideKeepRecording)
|
|||||||
|
|
||||||
//-------------------------------------------------------------
|
//-------------------------------------------------------------
|
||||||
|
|
||||||
delete network;
|
network.reset();
|
||||||
network = NULL;
|
|
||||||
if (bStreaming) ReportStopStreamingTrigger();
|
if (bStreaming) ReportStopStreamingTrigger();
|
||||||
bStreaming = false;
|
bStreaming = false;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user