]> git.saurik.com Git - cydia.git/blobdiff - MobileCydia.mm
Only run the UIActivityIndicatorView animation while visible.
[cydia.git] / MobileCydia.mm
index 0b022ee3e4bc3136b0aa02a8a6a95b8e02ee2025..c6ba06d03fd39f241a654acbe03637368d318cc5 100644 (file)
@@ -121,6 +121,7 @@ extern "C" {
 #include <Cytore.hpp>
 
 #include "UICaboodle/BrowserView.h"
+#include "SDURLCache/SDURLCache.h"
 
 #include "substrate.h"
 /* }}} */
@@ -1447,6 +1448,7 @@ struct PackageValue :
 struct MetaValue :
     Cytore::Block
 {
+    uint32_t active_;
     Cytore::Offset<PackageValue> packages_[1 << 16];
 };
 
@@ -2205,7 +2207,6 @@ struct PackageNameOrdering :
         _end
 
         _profile(Package$initWithVersion$Cache)
-            id_.set(NULL, iterator.Name());
             name_.set(NULL, iterator.Display());
 
             latest_.set(NULL, StripVersion_(version_.VerStr()));
@@ -2215,19 +2216,6 @@ struct PackageNameOrdering :
                 installed_.set(NULL, StripVersion_(current.VerStr()));
         _end
 
-        _profile(Package$initWithVersion$Lower)
-            // XXX: do not use tolower() as this is not locale-specific? :(
-            char *data(id_.data());
-            for (size_t i(0), e(id_.size()); i != e; ++i)
-                if ((data[i] & 0x20) == 0) {
-                    id_.copy(pool);
-                    data = id_.data();
-                    for (; i != e; ++i)
-                        data[i] |= 0x20;
-                    break;
-                }
-        _end
-
         _profile(Package$initWithVersion$Tags)
             pkgCache::TagIterator tag(iterator.TagList());
             if (!tag.end()) {
@@ -2252,9 +2240,19 @@ struct PackageNameOrdering :
         _end
 
         _profile(Package$initWithVersion$Metadata)
-            PackageValue *metadata(PackageFind(id_.data(), id_.size()));
+            const char *mixed(iterator.Name());
+            size_t size(strlen(mixed));
+            char lower[size + 1];
+
+            for (size_t i(0); i != size; ++i)
+                lower[i] = mixed[i] | 0x20;
+            lower[size] = '\0';
+
+            PackageValue *metadata(PackageFind(lower, size));
             metadata_ = metadata;
 
+            id_.set(NULL, metadata->name_, size);
+
             const char *latest(version_.VerStr());
             size_t length(strlen(latest));
 
@@ -3154,7 +3152,13 @@ static NSString *Warning_;
         zone_ = NSCreateZone(1024 * 1024, 256 * 1024, NO);
         apr_pool_create(&pool_, NULL);
 
-        packages_ = CFArrayCreateMutable(kCFAllocatorDefault, 0, NULL);
+        size_t capacity(MetaFile_->active_);
+        if (capacity == 0)
+            capacity = 16384;
+        else
+            capacity += 1024;
+
+        packages_ = CFArrayCreateMutable(kCFAllocatorDefault, capacity, NULL);
 
         int fds[2];
 
@@ -3356,7 +3360,9 @@ static NSString *Warning_;
     cache_.Close();
 
     apr_pool_clear(pool_);
+
     NSRecycleZone(zone_);
+    zone_ = NSCreateZone(1024 * 1024, 256 * 1024, NO);
 
     int chk(creat("/tmp/cydia.chk", 0644));
     if (chk != -1)
@@ -3477,6 +3483,8 @@ static NSString *Warning_;
         _trace();
 
         size_t count(CFArrayGetCount(packages_));
+        MetaFile_->active_ = count;
+
         for (size_t index(0); index != count; ++index)
             [(Package *) CFArrayGetValueAtIndex(packages_, index) setIndex:index];
 
@@ -7504,7 +7512,13 @@ freeing the view controllers on tab change */
         search_ = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, [[self view] bounds].size.width, 44.0f)];
         [search_ layoutSubviews];
         [search_ setPlaceholder:UCLocalize("SEARCH_EX")];
-        UITextField *textField = [search_ searchField];
+
+        UITextField *textField;
+        if ([search_ respondsToSelector:@selector(searchField)])
+            textField = [search_ searchField];
+        else
+            textField = MSHookIvar<UITextField *>(search_, "_searchField");
+
         [textField setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
         [search_ setDelegate:self];
         [textField setEnablesReturnKeyAutomatically:NO];
@@ -8731,6 +8745,12 @@ static _finline void _setHomePage(Cydia *self) {
 
 - (void) applicationDidFinishLaunching:(id)unused {
 _trace();
+    [NSURLCache setSharedURLCache:[[[SDURLCache alloc]
+        initWithMemoryCapacity:524288
+        diskCapacity:10485760
+        diskPath:[NSString stringWithFormat:@"%@/Library/Caches/com.saurik.Cydia/SDURLCache", @"/var/root"]
+    ] autorelease]];
+
     [CYBrowserController _initialize];
 
     [NSURLProtocol registerClass:[CydiaURLProtocol class]];