Skip to content

Commit 450c9c8

Browse files
committed
Safety net added for loadPackage method: Calling it more than once not end in weird states.
1 parent f56fa7e commit 450c9c8

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

cocos2d/CCPackageManager.m

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ @interface CCPackageManager()
1717
@property (nonatomic, strong) NSMutableArray *packages;
1818
@property (nonatomic, strong) NSMutableArray *unzipTasks;
1919
@property (nonatomic, strong) CCPackageDownloadManager *downloadManager;
20+
@property (nonatomic) BOOL initialized;
2021

2122
@end
2223

@@ -39,6 +40,8 @@ - (id)init
3940
self = [super init];
4041
if (self)
4142
{
43+
self.initialized = NO;
44+
4245
self.packages = [NSMutableArray array];
4346
self.unzipTasks = [NSMutableArray array];
4447

@@ -61,19 +64,32 @@ - (NSArray *)allPackages
6164

6265
- (void)loadPackages
6366
{
67+
if (_initialized)
68+
{
69+
return;
70+
}
71+
6472
[self loadPackagesFromUserDefaults];
6573

6674
[self enablePackages];
6775

6876
[self enqueuePausedDownloads];
6977

7078
[self restartUnzippingTasks];
79+
80+
self.initialized = YES;
7181
}
7282

7383
- (void)restartUnzippingTasks
7484
{
7585
for (CCPackage *aPackage in _packages)
7686
{
87+
CCPackageUnzipper *unzipper = [self unzipperForPackage:aPackage];
88+
if (unzipper)
89+
{
90+
continue;
91+
}
92+
7793
if (aPackage.status == CCPackageStatusUnzipped
7894
|| aPackage.status == CCPackageStatusUnzipping)
7995
{
@@ -82,6 +98,19 @@ - (void)restartUnzippingTasks
8298
}
8399
}
84100

101+
- (CCPackageUnzipper *)unzipperForPackage:(CCPackage *)aPackage
102+
{
103+
for (CCPackageUnzipper *packageUnzipper in _unzipTasks)
104+
{
105+
if (packageUnzipper.package == aPackage)
106+
{
107+
return packageUnzipper;
108+
}
109+
}
110+
111+
return nil;
112+
}
113+
85114
- (void)enqueuePausedDownloads
86115
{
87116
for (CCPackage *aPackage in _packages)

0 commit comments

Comments
 (0)