Commit 8c3dde97 authored by Gaëtan Renaudeau's avatar Gaëtan Renaudeau

bugfix iOS version

parent bd14d3bf
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
}, },
"dependencies": { "dependencies": {
"gl-react-native": "file:../..", "gl-react-native": "file:../..",
"gl-react": "^2.0.2", "gl-react": "^2.0.8",
"react-native": "^0.17.0", "react-native": "^0.17.0",
"react-native-material-kit": "^0.2.2" "react-native-material-kit": "^0.2.4"
} }
} }
...@@ -104,7 +104,7 @@ RCT_NOT_IMPLEMENTED(-init) ...@@ -104,7 +104,7 @@ RCT_NOT_IMPLEMENTED(-init)
- (void)setRenderId:(NSNumber *)renderId - (void)setRenderId:(NSNumber *)renderId
{ {
if (_nbContentTextures > 0) { if ([_nbContentTextures intValue] > 0) {
[self setNeedsDisplay]; [self setNeedsDisplay];
} }
} }
...@@ -273,12 +273,17 @@ RCT_NOT_IMPLEMENTED(-init) ...@@ -273,12 +273,17 @@ RCT_NOT_IMPLEMENTED(-init)
GLRenderData *res = traverseTree(_data); GLRenderData *res = traverseTree(_data);
if (res != nil) { if (res != nil) {
_needSync = false;
_renderData = traverseTree(_data); _renderData = traverseTree(_data);
_images = images; _images = images;
for (NSString *src in diff([prevImages allKeys], [images allKeys])) { for (NSString *src in diff([prevImages allKeys], [images allKeys])) {
[_preloaded removeObject:src]; [_preloaded removeObject:src];
} }
} }
else {
// the data is not ready, retry in one tick
[self setNeedsDisplay];
}
} }
} }
...@@ -329,25 +334,23 @@ RCT_NOT_IMPLEMENTED(-init) ...@@ -329,25 +334,23 @@ RCT_NOT_IMPLEMENTED(-init)
- (void)drawRect:(CGRect)rect - (void)drawRect:(CGRect)rect
{ {
__weak GLCanvas *weakSelf = self; self.layer.opaque = _opaque;
if (_neverRendered) {
_neverRendered = false;
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
}
if (_needSync) { if (_needSync) {
_needSync = false;
[self syncData]; [self syncData];
} }
self.layer.opaque = _opaque;
if ([self haveRemainingToPreload]) { if ([self haveRemainingToPreload]) {
if (_neverRendered) {
_neverRendered = false;
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
}
return; return;
} }
_neverRendered = false;
BOOL needsDeferredRendering = _nbContentTextures > 0 && !_autoRedraw; BOOL needsDeferredRendering = [_nbContentTextures intValue] > 0 && !_autoRedraw;
if (needsDeferredRendering && !_deferredRendering) { if (needsDeferredRendering && !_deferredRendering) {
_deferredRendering = true; _deferredRendering = true;
[self performSelectorOnMainThread:@selector(syncContentData) withObject:nil waitUntilDone:NO]; [self performSelectorOnMainThread:@selector(syncContentData) withObject:nil waitUntilDone:NO];
...@@ -355,24 +358,23 @@ RCT_NOT_IMPLEMENTED(-init) ...@@ -355,24 +358,23 @@ RCT_NOT_IMPLEMENTED(-init)
else { else {
[self render]; [self render];
_deferredRendering = false; _deferredRendering = false;
if (_captureFrameRequested) { if (_captureFrameRequested) {
_captureFrameRequested = false; _captureFrameRequested = false;
[self performSelectorOnMainThread:@selector(capture) withObject:nil waitUntilDone:NO];
// FIXME: might use performSelectorOnMainThread as well
dispatch_async(dispatch_get_main_queue(), ^{ // snapshot not allowed in render tick. defer it.
if (!weakSelf) return;
UIImage *frameImage = [weakSelf snapshot];
NSData *frameData = UIImagePNGRepresentation(frameImage);
NSString *frame =
[NSString stringWithFormat:@"data:image/png;base64,%@",
[frameData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]];
if (weakSelf.onGLCaptureFrame) weakSelf.onGLCaptureFrame(@{ @"frame": frame });
});
} }
} }
} }
-(void)capture
{
UIImage *frameImage = [self snapshot];
NSData *frameData = UIImagePNGRepresentation(frameImage);
NSString *frame =
[NSString stringWithFormat:@"data:image/png;base64,%@",
[frameData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]];
if (self.onGLCaptureFrame) self.onGLCaptureFrame(@{ @"frame": frame });
}
- (void)render - (void)render
{ {
GLRenderData *rd = _renderData; GLRenderData *rd = _renderData;
...@@ -489,11 +491,11 @@ RCT_NOT_IMPLEMENTED(-init) ...@@ -489,11 +491,11 @@ RCT_NOT_IMPLEMENTED(-init)
- (void)dispatchOnProgress: (double)progress withLoaded:(int)loaded withTotal:(int)total - (void)dispatchOnProgress: (double)progress withLoaded:(int)loaded withTotal:(int)total
{ {
if (self.onGLProgress) self.onGLProgress( if (self.onGLProgress) self.onGLProgress(
@{ @{
@"progress": @(RCTZeroIfNaN(progress)), @"progress": @(RCTZeroIfNaN(progress)),
@"loaded": @(RCTZeroIfNaN(loaded)), @"loaded": @(RCTZeroIfNaN(loaded)),
@"total": @(RCTZeroIfNaN(total)) @"total": @(RCTZeroIfNaN(total))
}); });
} }
@end @end
...@@ -97,7 +97,9 @@ RCT_NOT_IMPLEMENTED(-init) ...@@ -97,7 +97,9 @@ RCT_NOT_IMPLEMENTED(-init)
} else { } else {
// we need to copy the image because it seems the image will be altered. // we need to copy the image because it seems the image will be altered.
self.image = [UIImage imageWithCGImage:image.CGImage]; self.image = [UIImage imageWithCGImage:image.CGImage];
if(_onload) _onload(); dispatch_async(dispatch_get_main_queue(), ^{
if (_onload) _onload();
});
} }
}]; }];
} }
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
346089C01BEFD0A500C90DB5 /* GLFBO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLFBO.h; sourceTree = "<group>"; }; 346089C01BEFD0A500C90DB5 /* GLFBO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLFBO.h; sourceTree = "<group>"; };
346089C11BEFD0A500C90DB5 /* GLFBO.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GLFBO.m; sourceTree = "<group>"; }; 346089C11BEFD0A500C90DB5 /* GLFBO.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GLFBO.m; sourceTree = "<group>"; };
346089C21BEFD0A500C90DB5 /* GLImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLImage.h; sourceTree = "<group>"; }; 346089C21BEFD0A500C90DB5 /* GLImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLImage.h; sourceTree = "<group>"; };
346089C31BEFD0A500C90DB5 /* GLImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GLImage.m; sourceTree = "<group>"; }; 346089C31BEFD0A500C90DB5 /* GLImage.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.objc; path = GLImage.m; sourceTree = "<group>"; tabWidth = 2; };
346089C41BEFD0A500C90DB5 /* GLImageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLImageData.h; sourceTree = "<group>"; }; 346089C41BEFD0A500C90DB5 /* GLImageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLImageData.h; sourceTree = "<group>"; };
346089C51BEFD0A500C90DB5 /* GLImageData.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.objc; path = GLImageData.m; sourceTree = "<group>"; tabWidth = 2; }; 346089C51BEFD0A500C90DB5 /* GLImageData.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.objc; path = GLImageData.m; sourceTree = "<group>"; tabWidth = 2; };
346089C61BEFD0A500C90DB5 /* GLRenderData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLRenderData.h; sourceTree = "<group>"; }; 346089C61BEFD0A500C90DB5 /* GLRenderData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLRenderData.h; sourceTree = "<group>"; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment