]> git.saurik.com Git - cydia.git/commitdiff
Don't lose track of network activity during memory warnings.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 21 Mar 2011 11:27:21 +0000 (04:27 -0700)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 21 Mar 2011 11:27:21 +0000 (04:27 -0700)
CyteKit/WebViewController.mm

index 2298d75c3a3c451ed38d3d6c7811223fb206d22d..a38a8d0e089beea63ba67710e053c482e8db00a0 100644 (file)
@@ -148,14 +148,21 @@ float CYScrollViewDecelerationRateNormal;
     return true;
 }
 
+- (void) releaseNetworkActivityIndicator {
+    if ([loading_ count] != 0) {
+        [loading_ removeAllObjects];
+
+        if ([self retainsNetworkActivityIndicator])
+            [delegate_ releaseNetworkActivityIndicator];
+    }
+}
+
 - (void) dealloc {
 #if LogBrowser
     NSLog(@"[CyteWebViewController dealloc]");
 #endif
 
-    if ([loading_ count] != 0)
-        if ([self retainsNetworkActivityIndicator])
-            [delegate_ releaseNetworkActivityIndicator];
+    [self releaseNetworkActivityIndicator];
 
     [super dealloc];
 }
@@ -352,7 +359,11 @@ float CYScrollViewDecelerationRateNormal;
 }
 
 - (void) _didFailWithError:(NSError *)error forFrame:(WebFrame *)frame {
-    [loading_ removeObject:[NSValue valueWithNonretainedObject:frame]];
+    NSValue *object([NSValue valueWithNonretainedObject:frame]);
+    if (![loading_ containsObject:object])
+        return;
+    [loading_ removeObject:object];
+
     [self _didFinishLoading];
 
     if ([[error domain] isEqualToString:NSURLErrorDomain] && [error code] == NSURLErrorCancelled)
@@ -500,7 +511,10 @@ float CYScrollViewDecelerationRateNormal;
 }
 
 - (void) webView:(WebView *)view didFinishLoadForFrame:(WebFrame *)frame {
-    [loading_ removeObject:[NSValue valueWithNonretainedObject:frame]];
+    NSValue *object([NSValue valueWithNonretainedObject:frame]);
+    if (![loading_ containsObject:object])
+        return;
+    [loading_ removeObject:object];
 
     if ([frame parentFrame] == nil) {
         if (DOMDocument *document = [frame DOMDocument])
@@ -906,6 +920,8 @@ float CYScrollViewDecelerationRateNormal;
     webview_ = nil;
     scroller_ = nil;
 
+    [self releaseNetworkActivityIndicator];
+
     [super releaseSubviews];
 }