From: Jay Freeman (saurik) Date: Fri, 26 Nov 2010 22:18:35 +0000 (-0800) Subject: Merge branch 'master' of git.saurik.com:cydia X-Git-Tag: v1.1.0%b1~482 X-Git-Url: https://git.saurik.com/cydia.git/commitdiff_plain/45211c6724e888d9baa3cc8217f46d42e5c2fa13?hp=-c Merge branch 'master' of git.saurik.com:cydia --- 45211c6724e888d9baa3cc8217f46d42e5c2fa13 diff --combined MobileCydia.mm index dae7d615,c4abc53d..ee5e006d --- a/MobileCydia.mm +++ b/MobileCydia.mm @@@ -1735,6 -1735,7 +1735,7 @@@ typedef std::map< unsigned long, _HFlags & pkgCache::Flag::Essential) == 0 ? NO : YES) || [self hasTag:@"cydia::essential"]; _end + + ignored_ = iterator_->SelectedState == pkgCache::State::Hold; _end } return self; } @@@ -2245,22 -2250,16 +2248,22 @@@ } - (Address *) maintainer { - if (file_.end()) +@synchronized (database_) { + if ([database_ era] != era_ || file_.end()) return nil; + pkgRecords::Parser *parser = &[database_ records]->Lookup(file_); const std::string &maintainer(parser->Maintainer()); return maintainer.empty() ? nil : [Address addressWithString:[NSString stringWithUTF8String:maintainer.c_str()]]; -} +} } - (size_t) size { - return version_.end() ? 0 : version_->InstalledSize; -} +@synchronized (database_) { + if ([database_ era] != era_ || version_.end()) + return 0; + + return version_->InstalledSize; +} } - (NSString *) longDescription { @synchronized (database_) { @@@ -2315,11 -2314,7 +2318,7 @@@ } - (BOOL) ignored { - NSDictionary *metadata([self metadata]); - if (NSNumber *ignored = [metadata objectForKey:@"IsIgnored"]) - return [ignored boolValue]; - else - return false; + return ignored_; } - (NSString *) latest { @@@ -2454,7 -2449,7 +2453,7 @@@ icon = [UIImage imageAtPath:[static_cast(icon_) substringFromIndex:7]]; if (icon == nil) if (section != nil) icon = [UIImage imageAtPath:[NSString stringWithFormat:@"%@/Sections/%@.png", App_, section]]; - if (icon == nil) if (source_ != nil) if (NSString *dicon = [source_ defaultIcon]) + if (icon == nil) if (Source *source = [self source]) if (NSString *dicon = [source defaultIcon]) if ([dicon hasPrefix:@"file:///"]) // XXX: correct escaping icon = [UIImage imageAtPath:[dicon substringFromIndex:7]]; @@@ -2684,6 -2679,33 +2683,6 @@@ return _not(uint32_t); } -- (uint32_t) compareForChanges { - union { - uint32_t key; - - struct { - uint32_t timestamp : 30; - uint32_t ignored : 1; - uint32_t upgradable : 1; - } bits; - } value; - - bool upgradable([self upgradableAndEssential:YES]); - value.bits.upgradable = upgradable ? 1 : 0; - - if (upgradable) { - value.bits.timestamp = 0; - value.bits.ignored = [self ignored] ? 0 : 1; - value.bits.upgradable = 1; - } else { - value.bits.timestamp = static_cast([[self seen] timeIntervalSince1970]) >> 2; - value.bits.ignored = 0; - value.bits.upgradable = 0; - } - - return _not(uint32_t) - value.key; -} - - (void) clear { @synchronized (database_) { pkgProblemResolver *resolver = [database_ resolver]; @@@ -2914,17 -2936,12 +2913,17 @@@ static NSString *Warning_ return era_; } +- (void) releasePackages { + CFArrayApplyFunction(packages_, CFRangeMake(0, CFArrayGetCount(packages_)), reinterpret_cast(&CFRelease), NULL); + CFArrayRemoveAllValues(packages_); +} + - (void) dealloc { // XXX: actually implement this thing _assert(false); - NSRecycleZone(zone_); - // XXX: malloc_destroy_zone(zone_); + [self releasePackages]; apr_pool_destroy(pool_); + NSRecycleZone(zone_); [super dealloc]; } @@@ -3212,7 -3229,9 +3211,7 @@@ @synchronized (self) { ++era_; - CFArrayApplyFunction(packages_, CFRangeMake(0, CFArrayGetCount(packages_)), reinterpret_cast(&CFRelease), NULL); - CFArrayRemoveAllValues(packages_); - + [self releasePackages]; sources_.clear(); _error->Discard(); @@@ -3678,7 -3697,7 +3677,7 @@@ bool DepSubstrate(const pkgCache::VerIt - (NSArray *) getInstalledPackages { NSArray *packages([[Database sharedInstance] packages]); - NSMutableArray *installed([NSMutableArray arrayWithCapacity:[packages count]]); + NSMutableArray *installed([NSMutableArray arrayWithCapacity:1024]); for (Package *package in packages) if ([package installed] != nil) [installed addObject:package]; @@@ -7020,7 -7039,7 +7019,7 @@@ freeing the view controllers on tab cha #endif Section *upgradable = [[[Section alloc] initWithName:UCLocalize("AVAILABLE_UPGRADES") localize:NO] autorelease]; - Section *ignored = [[[Section alloc] initWithName:UCLocalize("IGNORED_UPGRADES") localize:NO] autorelease]; + Section *ignored = nil; Section *section = nil; NSDate *last = nil; @@@ -7061,9 -7080,12 +7060,12 @@@ } [section addToCount]; - } else if ([package ignored]) + } else if ([package ignored]) { + if (ignored == nil) { + ignored = [[[Section alloc] initWithName:UCLocalize("IGNORED_UPGRADES") row:offset localize:NO] autorelease]; + } [ignored addToCount]; - else { + } else { ++upgrades_; [upgradable addToCount]; } @@@ -7249,7 -7271,7 +7251,7 @@@ } - (void) onIgnored:(id)control { - [self onSomething:(int) [control isOn] withKey:@"IsIgnored"]; + // TODO: set Held state - possibly call out to dpkg, etc. } - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {