Move ConnectionListener initialization prior to possible Limelog() usage
This commit is contained in:
parent
c2471157c0
commit
86751d9162
1 changed files with 13 additions and 11 deletions
|
|
@ -173,6 +173,19 @@ int LiStartConnection(PSERVER_INFORMATION serverInfo, PSTREAM_CONFIGURATION stre
|
||||||
void* audioContext, int arFlags) {
|
void* audioContext, int arFlags) {
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
// Replace missing callbacks with placeholders
|
||||||
|
fixupMissingCallbacks(&drCallbacks, &arCallbacks, &clCallbacks);
|
||||||
|
memcpy(&VideoCallbacks, drCallbacks, sizeof(VideoCallbacks));
|
||||||
|
memcpy(&AudioCallbacks, arCallbacks, sizeof(AudioCallbacks));
|
||||||
|
|
||||||
|
// Hook the termination callback so we can avoid issuing a termination callback
|
||||||
|
// after LiStopConnection() is called.
|
||||||
|
//
|
||||||
|
// Initialize ListenerCallbacks before anything that could call Limelog().
|
||||||
|
originalTerminationCallback = clCallbacks->connectionTerminated;
|
||||||
|
memcpy(&ListenerCallbacks, clCallbacks, sizeof(ListenerCallbacks));
|
||||||
|
ListenerCallbacks.connectionTerminated = ClInternalConnectionTerminated;
|
||||||
|
|
||||||
NegotiatedVideoFormat = 0;
|
NegotiatedVideoFormat = 0;
|
||||||
memcpy(&StreamConfig, streamConfig, sizeof(StreamConfig));
|
memcpy(&StreamConfig, streamConfig, sizeof(StreamConfig));
|
||||||
OriginalVideoBitrate = streamConfig->bitrate;
|
OriginalVideoBitrate = streamConfig->bitrate;
|
||||||
|
|
@ -204,17 +217,6 @@ int LiStartConnection(PSERVER_INFORMATION serverInfo, PSTREAM_CONFIGURATION stre
|
||||||
goto Cleanup;
|
goto Cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace missing callbacks with placeholders
|
|
||||||
fixupMissingCallbacks(&drCallbacks, &arCallbacks, &clCallbacks);
|
|
||||||
memcpy(&VideoCallbacks, drCallbacks, sizeof(VideoCallbacks));
|
|
||||||
memcpy(&AudioCallbacks, arCallbacks, sizeof(AudioCallbacks));
|
|
||||||
|
|
||||||
// Hook the termination callback so we can avoid issuing a termination callback
|
|
||||||
// after LiStopConnection() is called
|
|
||||||
originalTerminationCallback = clCallbacks->connectionTerminated;
|
|
||||||
memcpy(&ListenerCallbacks, clCallbacks, sizeof(ListenerCallbacks));
|
|
||||||
ListenerCallbacks.connectionTerminated = ClInternalConnectionTerminated;
|
|
||||||
|
|
||||||
alreadyTerminated = 0;
|
alreadyTerminated = 0;
|
||||||
ConnectionInterrupted = 0;
|
ConnectionInterrupted = 0;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue