Move NetworkStream and FileStream to std::unique_ptr

This commit is contained in:
palana 2014-09-16 16:33:50 +02:00
parent e7804fcef0
commit 858991b506
3 changed files with 13 additions and 33 deletions

View File

@ -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);
} }

View File

@ -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;

View File

@ -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;