Properly quit the run loop. For some reason, calling -[NSRunLoop run] doesn't work...
authorRobert Sesek <rsesek@bluestatic.org>
Sun, 31 Oct 2010 17:33:35 +0000 (13:33 -0400)
committerRobert Sesek <rsesek@bluestatic.org>
Sun, 31 Oct 2010 17:33:35 +0000 (13:33 -0400)
Source/DebuggerConnection.m

index 598c3c17e7ba55ba0e0705d6f7bb9018f84a3de8..84247828b5186476af9a13ab34a18515410f750a 100644 (file)
@@ -294,7 +294,7 @@ void PerformQuitSignal(void* info)
   quitSource_ = CFRunLoopSourceCreate(kCFAllocatorDefault, 0, &quitContext);
   CFRunLoopAddSource([runLoop_ getCFRunLoop], quitSource_, kCFRunLoopCommonModes);
 
-  [runLoop_ run];
+  CFRunLoopRun();
 
   thread_ = nil;
   runLoop_ = nil;
@@ -324,6 +324,9 @@ void PerformQuitSignal(void* info)
  */
 - (void)close
 {
+  if (thread_) {
+    [thread_ cancel];
+  }
   if (runLoop_ && quitSource_) {
     CFRunLoopSourceSignal(quitSource_);
     CFRunLoopWakeUp([runLoop_ getCFRunLoop]);
@@ -335,6 +338,10 @@ void PerformQuitSignal(void* info)
  */
 - (void)performQuitSignal
 {
+  self.queuedWrites = nil;
+  connected_ = NO;
+  [writeQueueLock_ release];
+
   if (runLoop_) {
     CFRunLoopStop([runLoop_ getCFRunLoop]);
   }
@@ -345,10 +352,6 @@ void PerformQuitSignal(void* info)
     CFRelease(socket_);
     socket_ = NULL;
   }
-
-  self.queuedWrites = nil;
-  connected_ = NO;
-  [writeQueueLock_ release];
 }
 
 /**