@@ -69,6 +69,7 @@ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
69
69
#import " Support/CCFileUtils.h"
70
70
#import " Support/ZipUtils.h"
71
71
#import " CCGL.h"
72
+ #import " CCRenderDispatch.h"
72
73
73
74
#pragma mark -
74
75
#pragma mark CCTexturePVR
@@ -505,6 +506,9 @@ - (BOOL)unpackPVRv3Data:(unsigned char*)dataPointer PVRLen:(NSUInteger)dataLengt
505
506
506
507
- (BOOL )createGLTexture
507
508
{
509
+ __block BOOL retVal = NO ;
510
+
511
+ CCRenderDispatch (NO , ^{
508
512
GLsizei width = _width;
509
513
GLsizei height = _height;
510
514
GLenum err;
@@ -543,7 +547,7 @@ - (BOOL)createGLTexture
543
547
{
544
548
if ( compressed && ! [[CCConfiguration sharedConfiguration ] supportsPVRTC ] ) {
545
549
CCLOGWARN (@" cocos2d: WARNING: PVRTC images are not supported" );
546
- return NO ;
550
+ retVal = NO ; return ;
547
551
}
548
552
549
553
unsigned char *data = _mipmaps[i].address ;
@@ -561,14 +565,17 @@ - (BOOL)createGLTexture
561
565
if (err != GL_NO_ERROR)
562
566
{
563
567
CCLOGWARN (@" cocos2d: TexturePVR: Error uploading compressed texture level: %u . glError: 0x%04X " , i, err);
564
- return NO ;
568
+ retVal = NO ; return ;
565
569
}
566
570
567
571
width = MAX (width >> 1 , 1 );
568
572
height = MAX (height >> 1 , 1 );
569
573
}
570
574
571
- return YES ;
575
+ retVal = YES ; return ;
576
+ });
577
+
578
+ return retVal;
572
579
}
573
580
574
581
@@ -701,10 +708,11 @@ + (id)pvrTextureWithContentsOfURL:(NSURL *)url
701
708
- (void )dealloc
702
709
{
703
710
CCLOGINFO ( @" cocos2d: deallocing %@ " , self);
704
-
705
- if (_name != 0 && ! _retainName )
706
- glDeleteTextures (1 , &_name);
707
-
711
+
712
+ if (_name != 0 && ! _retainName){
713
+ GLuint name = _name;
714
+ CCRenderDispatch (YES , ^{glDeleteTextures (1 , &name);});
715
+ }
708
716
}
709
717
710
718
@end
0 commit comments