From 528b44f2f22d186221550cb16a04a5d3d8c5651f Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Tue, 21 Oct 2014 05:11:12 -0400 Subject: [PATCH] Stop using NSLog in internal functions because it seems to acquire a mutex that violates our locking order and causes deadlocks --- Limelight/Input/ControllerSupport.m | 4 ++-- Limelight/Input/StreamView.m | 6 +++--- Limelight/Stream/Connection.m | 26 ++++++++++++------------- Limelight/Stream/VideoDecoderRenderer.m | 24 +++++++++++------------ 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Limelight/Input/ControllerSupport.m b/Limelight/Input/ControllerSupport.m index cdf1f3d..3de733e 100644 --- a/Limelight/Input/ControllerSupport.m +++ b/Limelight/Input/ControllerSupport.m @@ -25,7 +25,7 @@ static NSLock *controllerStreamLock; GCController *controller = [GCController controllers][i]; if (controller != NULL) { - NSLog(@"Controller connected!"); + printf("Controller connected!\n"); controller.controllerPausedHandler = ^(GCController *controller) { // We call LiSendControllerEvent while holding a lock to prevent // multiple simultaneous calls since this function isn't thread safe. @@ -117,7 +117,7 @@ static NSLock *controllerStreamLock; [ControllerSupport registerControllerCallbacks]; }]; self.disconnectObserver = [[NSNotificationCenter defaultCenter] addObserverForName:GCControllerDidDisconnectNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { - NSLog(@"Controller disconnected!"); + printf("Controller disconnected!\n"); }]; [ControllerSupport registerControllerCallbacks]; diff --git a/Limelight/Input/StreamView.m b/Limelight/Input/StreamView.m index fb64153..28b3952 100644 --- a/Limelight/Input/StreamView.m +++ b/Limelight/Input/StreamView.m @@ -19,7 +19,7 @@ touchLocation = [touch locationInView:self]; touchMoved = false; - NSLog(@"Touch down"); + printf("Touch down\n"); } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { @@ -38,10 +38,10 @@ } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - NSLog(@"Touch up"); + printf("Touch up\n"); if (!touchMoved) { - NSLog(@"Sending left mouse button press"); + printf("Sending left mouse button press\n"); LiSendMouseButtonEvent(BUTTON_ACTION_PRESS, BUTTON_LEFT); diff --git a/Limelight/Stream/Connection.m b/Limelight/Stream/Connection.m index 2f2f580..139adc6 100644 --- a/Limelight/Stream/Connection.m +++ b/Limelight/Stream/Connection.m @@ -109,7 +109,7 @@ void ArInit(void) status = AudioComponentInstanceNew(AudioComponentFindNext(NULL, &audioDesc), &audioUnit); if (status) { - NSLog(@"Unable to instantiate new AudioComponent: %d", (int32_t)status); + printf("Unable to instantiate new AudioComponent: %d\n", (int32_t)status); } AudioStreamBasicDescription audioFormat = {0}; @@ -130,7 +130,7 @@ void ArInit(void) &audioFormat, sizeof(audioFormat)); if (status) { - NSLog(@"Unable to set audio unit to input: %d", (int32_t)status); + printf("Unable to set audio unit to input: %d\n", (int32_t)status); } AURenderCallbackStruct callbackStruct = {0}; @@ -144,12 +144,12 @@ void ArInit(void) &callbackStruct, sizeof(callbackStruct)); if (status) { - NSLog(@"Unable to set audio unit callback: %d", (int32_t)status); + printf("Unable to set audio unit callback: %d\n", (int32_t)status); } status = AudioUnitInitialize(audioUnit); if (status) { - NSLog(@"Unable to initialize audioUnit: %d", (int32_t)status); + printf("Unable to initialize audioUnit: %d\n", (int32_t)status); } } @@ -162,7 +162,7 @@ void ArRelease(void) OSStatus status = AudioUnitUninitialize(audioUnit); if (status) { - NSLog(@"Unable to uninitialize audioUnit: %d", (int32_t)status); + printf("Unable to uninitialize audioUnit: %d\n", (int32_t)status); } // Audio session is now inactive @@ -184,7 +184,7 @@ void ArStart(void) { OSStatus status = AudioOutputUnitStart(audioUnit); if (status) { - NSLog(@"Unable to start audioUnit: %d", (int32_t)status); + printf("Unable to start audioUnit: %d\n", (int32_t)status); } } @@ -192,7 +192,7 @@ void ArStop(void) { OSStatus status = AudioOutputUnitStop(audioUnit); if (status) { - NSLog(@"Unable to stop audioUnit: %d", (int32_t)status); + printf("Unable to stop audioUnit: %d\n", (int32_t)status); } } @@ -212,7 +212,7 @@ void ArDecodeAndPlaySample(char* sampleData, int sampleLength) [audioLock lock]; if (audioBufferQueueLength > MAX_QUEUE_ENTRIES) { - NSLog(@"Audio player too slow. Dropping all decoded samples!"); + printf("Audio player too slow. Dropping all decoded samples!\n"); // Clear all values from the buffer queue struct AUDIO_BUFFER_QUEUE_ENTRY *entry; @@ -251,29 +251,29 @@ void ClStageComplete(int stage) void ClStageFailed(int stage, long errorCode) { - NSLog(@"Stage %d failed: %ld", stage, errorCode); + printf("Stage %d failed: %ld\n", stage, errorCode); } void ClConnectionStarted(void) { - NSLog(@"Connection started"); + printf("Connection started\n"); } void ClConnectionTerminated(long errorCode) { - NSLog(@"ConnectionTerminated: %ld", errorCode); + printf("ConnectionTerminated: %ld\n", errorCode); [_callback connectionTerminated]; } void ClDisplayMessage(char* message) { - NSLog(@"DisplayMessage: %s", message); + printf("DisplayMessage: %s\n", message); } void ClDisplayTransientMessage(char* message) { - NSLog(@"DisplayTransientMessage: %s", message); + printf("DisplayTransientMessage: %s\n", message); } -(void) terminate diff --git a/Limelight/Stream/VideoDecoderRenderer.m b/Limelight/Stream/VideoDecoderRenderer.m index 50f602c..be79694 100644 --- a/Limelight/Stream/VideoDecoderRenderer.m +++ b/Limelight/Stream/VideoDecoderRenderer.m @@ -60,7 +60,7 @@ kCFAllocatorDefault, NULL, 0, nalLength + 1, 0); if (status != noErr) { - NSLog(@"CMBlockBufferReplaceDataBytes failed: %d", (int)status); + printf("CMBlockBufferReplaceDataBytes failed: %d\n", (int)status); return; } @@ -70,7 +70,7 @@ status = CMBlockBufferReplaceDataBytes(lengthBytes, existingBuffer, oldOffset, NAL_LENGTH_PREFIX_SIZE); if (status != noErr) { - NSLog(@"CMBlockBufferReplaceDataBytes failed: %d", (int)status); + printf("CMBlockBufferReplaceDataBytes failed: %d\n", (int)status); return; } } @@ -81,7 +81,7 @@ kCFAllocatorDefault, NULL, 0, NAL_LENGTH_PREFIX_SIZE, 0); if (status != noErr) { - NSLog(@"CMBlockBufferAppendMemoryBlock failed: %d", (int)status); + printf("CMBlockBufferAppendMemoryBlock failed: %d\n", (int)status); return; } @@ -92,7 +92,7 @@ status = CMBlockBufferReplaceDataBytes(lengthBytes, existingBuffer, oldOffset, NAL_LENGTH_PREFIX_SIZE); if (status != noErr) { - NSLog(@"CMBlockBufferReplaceDataBytes failed: %d", (int)status); + printf("CMBlockBufferReplaceDataBytes failed: %d\n", (int)status); return; } @@ -102,7 +102,7 @@ kCFAllocatorNull, // Don't deallocate data on free NULL, 0, dataLength, 0); if (status != noErr) { - NSLog(@"CMBlockBufferReplaceDataBytes failed: %d", (int)status); + printf("CMBlockBufferReplaceDataBytes failed: %d\n", (int)status); return; } } @@ -116,7 +116,7 @@ if (formatDesc == NULL && (nalType == 0x7 || nalType == 0x8)) { if (waitingForSps && nalType == 0x7) { - NSLog(@"Got SPS"); + printf("Got SPS\n"); spsData = [NSData dataWithBytes:&data[FRAME_START_PREFIX_SIZE] length:length - FRAME_START_PREFIX_SIZE]; waitingForSps = false; } @@ -124,13 +124,13 @@ else if ((waitingForPpsA || waitingForPpsB) && nalType == 0x8) { // Read the NALU's PPS index to figure out which PPS this is if (waitingForPpsA) { - NSLog(@"Got PPS 1"); + printf("Got PPS 1\n"); ppsDataA = [NSData dataWithBytes:&data[FRAME_START_PREFIX_SIZE] length:length - FRAME_START_PREFIX_SIZE]; waitingForPpsA = false; ppsDataAFirstByte = data[FRAME_START_PREFIX_SIZE + 1]; } else if (data[FRAME_START_PREFIX_SIZE + 1] != ppsDataAFirstByte) { - NSLog(@"Got PPS 2"); + printf("Got PPS 2\n"); ppsDataA = [NSData dataWithBytes:&data[FRAME_START_PREFIX_SIZE] length:length - FRAME_START_PREFIX_SIZE]; waitingForPpsB = false; } @@ -141,7 +141,7 @@ const uint8_t* const parameterSetPointers[] = { [spsData bytes], [ppsDataA bytes], [ppsDataB bytes] }; const size_t parameterSetSizes[] = { [spsData length], [ppsDataA length], [ppsDataB length] }; - NSLog(@"Constructing format description"); + printf("Constructing format description\n"); status = CMVideoFormatDescriptionCreateFromH264ParameterSets(kCFAllocatorDefault, 2, /* count of parameter sets */ parameterSetPointers, @@ -149,7 +149,7 @@ NAL_LENGTH_PREFIX_SIZE, &formatDesc); if (status != noErr) { - NSLog(@"Failed to create format description: %d", (int)status); + printf("Failed to create format description: %d\n", (int)status); formatDesc = NULL; } } @@ -178,7 +178,7 @@ status = CMBlockBufferCreateEmpty(NULL, 0, 0, &blockBuffer); if (status != noErr) { - NSLog(@"CMBlockBufferCreateEmpty failed: %d", (int)status); + printf("CMBlockBufferCreateEmpty failed: %d\n", (int)status); free(data); return; } @@ -213,7 +213,7 @@ NULL, 0, NULL, &sampleBuffer); if (status != noErr) { - NSLog(@"CMSampleBufferCreate failed: %d", (int)status); + printf("CMSampleBufferCreate failed: %d\n", (int)status); CFRelease(blockBuffer); return; }