From 3f336735eb1755a3fae7c9d28243af3797a6b5e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Renaudeau?= Date: Thu, 7 Jan 2016 21:47:36 +0100 Subject: [PATCH] dep on rn 0.18.0-rc + fixes #53 --- Examples/AdvancedEffects/package.json | 6 +- Examples/AdvancedEffects/src/index.js | 1 - Examples/Hearts/package.json | 6 +- Examples/Hearts/src/Heart.js | 2 +- Examples/Hearts/src/index.js | 1 - Examples/Simple/package.json | 8 +- Examples/Simple/src/Blur.js | 2 +- Examples/Simple/src/Blur1D.js | 2 +- Examples/Simple/src/HelloGL.js | 2 +- Examples/Simple/src/HueRotate.js | 2 +- Examples/Simple/src/PieProgress.js | 2 +- Examples/Simple/src/Saturation.js | 2 +- Examples/Simple/src/index.js | 2 - Examples/Tests/package.json | 6 +- Examples/Tests/src/Add.js | 2 +- Examples/Tests/src/Blur.js | 2 +- Examples/Tests/src/Blur1D.js | 3 +- Examples/Tests/src/Copy.js | 2 +- Examples/Tests/src/Display2.js | 2 +- Examples/Tests/src/HelloGL.js | 2 +- Examples/Tests/src/Layer.js | 2 +- Examples/Tests/src/Multiply.js | 2 +- .../Tests/src/TransparentNonPremultiplied.js | 2 +- Examples/Tests/src/index.js | 1 - Examples/android/RNGL.iml | 105 ------------------ ios/GLCanvas.m | 24 +++- ios/GLCanvasManager.m | 5 + ios/GLShader.h | 3 +- ios/GLShader.m | 27 +++-- package.json | 9 +- src/GLCanvas.js | 2 +- 31 files changed, 81 insertions(+), 158 deletions(-) delete mode 100644 Examples/android/RNGL.iml diff --git a/Examples/AdvancedEffects/package.json b/Examples/AdvancedEffects/package.json index d3b5ae1..d23968d 100644 --- a/Examples/AdvancedEffects/package.json +++ b/Examples/AdvancedEffects/package.json @@ -6,9 +6,11 @@ "start": "react-native start" }, "dependencies": { - "gl-react": "^2.0.2", + "fbjs": "^0.6.0", + "gl-react": "^2.1.0", "gl-react-native": "file:../..", "glsl-transitions": "^2015.11.8", - "react-native": "^0.17.0" + "react": "^0.14.5", + "react-native": "0.18.0-rc" } } diff --git a/Examples/AdvancedEffects/src/index.js b/Examples/AdvancedEffects/src/index.js index 9b8b63e..db9a122 100644 --- a/Examples/AdvancedEffects/src/index.js +++ b/Examples/AdvancedEffects/src/index.js @@ -1,4 +1,3 @@ -require("gl-react/react-native"); const React = require("react-native"); const { StyleSheet, diff --git a/Examples/Hearts/package.json b/Examples/Hearts/package.json index a6ca214..6a48d43 100644 --- a/Examples/Hearts/package.json +++ b/Examples/Hearts/package.json @@ -7,9 +7,11 @@ }, "dependencies": { "crypto": "0.0.3", - "gl-react": "^2.0.6", + "fbjs": "^0.6.0", + "gl-react": "^2.1.0", "gl-react-native": "file:../..", - "react-native": "^0.17.0", + "react": "^0.14.5", + "react-native": "0.18.0-rc", "seedrandom": "gre/seedrandom#released" } } diff --git a/Examples/Hearts/src/Heart.js b/Examples/Hearts/src/Heart.js index 7d75847..0810192 100644 --- a/Examples/Hearts/src/Heart.js +++ b/Examples/Hearts/src/Heart.js @@ -1,5 +1,5 @@ import GL from "gl-react"; -const {React} = GL; +import React from "react"; const {PropTypes} = React; const shaders = GL.Shaders.create({ diff --git a/Examples/Hearts/src/index.js b/Examples/Hearts/src/index.js index f857d9c..f4ce09e 100644 --- a/Examples/Hearts/src/index.js +++ b/Examples/Hearts/src/index.js @@ -1,4 +1,3 @@ -require("gl-react/react-native"); const React = require("react-native"); const { StyleSheet, diff --git a/Examples/Simple/package.json b/Examples/Simple/package.json index 5503597..e64c9db 100644 --- a/Examples/Simple/package.json +++ b/Examples/Simple/package.json @@ -6,10 +6,12 @@ "start": "react-native start" }, "dependencies": { - "gl-react": "^2.0.8", + "fbjs": "^0.6.0", + "gl-react": "^2.1.0", "gl-react-native": "file:../..", - "react-native": "^0.17.0", + "react": "^0.14.5", + "react-native": "0.18.0-rc", "react-native-fs": "^1.1.0", - "react-native-material-kit": "^0.2.4" + "react-native-material-kit": "gre/react-native-material-kit#no-peerDependencies" } } diff --git a/Examples/Simple/src/Blur.js b/Examples/Simple/src/Blur.js index 26a5d3c..0f3ae20 100644 --- a/Examples/Simple/src/Blur.js +++ b/Examples/Simple/src/Blur.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const Blur1D = require("./Blur1D"); module.exports = GL.createComponent(({ width, height, factor, children }) => diff --git a/Examples/Simple/src/Blur1D.js b/Examples/Simple/src/Blur1D.js index feb2f21..95579e0 100644 --- a/Examples/Simple/src/Blur1D.js +++ b/Examples/Simple/src/Blur1D.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ blur1D: { diff --git a/Examples/Simple/src/HelloGL.js b/Examples/Simple/src/HelloGL.js index fc08b51..475087d 100644 --- a/Examples/Simple/src/HelloGL.js +++ b/Examples/Simple/src/HelloGL.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ helloGL: { diff --git a/Examples/Simple/src/HueRotate.js b/Examples/Simple/src/HueRotate.js index d520d5f..1c85254 100644 --- a/Examples/Simple/src/HueRotate.js +++ b/Examples/Simple/src/HueRotate.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ hueRotate: { diff --git a/Examples/Simple/src/PieProgress.js b/Examples/Simple/src/PieProgress.js index 012c459..a7a8d57 100644 --- a/Examples/Simple/src/PieProgress.js +++ b/Examples/Simple/src/PieProgress.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ pieProgress: { diff --git a/Examples/Simple/src/Saturation.js b/Examples/Simple/src/Saturation.js index c8088ab..f24ec3f 100644 --- a/Examples/Simple/src/Saturation.js +++ b/Examples/Simple/src/Saturation.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ saturation: { diff --git a/Examples/Simple/src/index.js b/Examples/Simple/src/index.js index 324d743..0756153 100644 --- a/Examples/Simple/src/index.js +++ b/Examples/Simple/src/index.js @@ -1,5 +1,3 @@ -require("gl-react/react-native"); - const React = require("react-native"); const { StyleSheet, diff --git a/Examples/Tests/package.json b/Examples/Tests/package.json index 5e12bf4..63097bb 100644 --- a/Examples/Tests/package.json +++ b/Examples/Tests/package.json @@ -6,8 +6,10 @@ "start": "react-native start" }, "dependencies": { + "fbjs": "^0.6.0", + "gl-react": "^2.1.0", "gl-react-native": "file:../..", - "gl-react": "^2.0.2", - "react-native": "^0.17.0" + "react": "^0.14.5", + "react-native": "0.18.0-rc" } } diff --git a/Examples/Tests/src/Add.js b/Examples/Tests/src/Add.js index cbb560c..d25edd8 100644 --- a/Examples/Tests/src/Add.js +++ b/Examples/Tests/src/Add.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ add: { diff --git a/Examples/Tests/src/Blur.js b/Examples/Tests/src/Blur.js index d10b83b..8433c9c 100644 --- a/Examples/Tests/src/Blur.js +++ b/Examples/Tests/src/Blur.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const { PropTypes } = React; diff --git a/Examples/Tests/src/Blur1D.js b/Examples/Tests/src/Blur1D.js index df5067f..b9adbfe 100644 --- a/Examples/Tests/src/Blur1D.js +++ b/Examples/Tests/src/Blur1D.js @@ -1,6 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; - +const React = require("react"); const { PropTypes } = React; diff --git a/Examples/Tests/src/Copy.js b/Examples/Tests/src/Copy.js index c49efeb..33be68e 100644 --- a/Examples/Tests/src/Copy.js +++ b/Examples/Tests/src/Copy.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ Copy: { diff --git a/Examples/Tests/src/Display2.js b/Examples/Tests/src/Display2.js index 6aac82f..003fd18 100644 --- a/Examples/Tests/src/Display2.js +++ b/Examples/Tests/src/Display2.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ display2: { diff --git a/Examples/Tests/src/HelloGL.js b/Examples/Tests/src/HelloGL.js index e72df0e..d944c7c 100644 --- a/Examples/Tests/src/HelloGL.js +++ b/Examples/Tests/src/HelloGL.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ helloGL: { diff --git a/Examples/Tests/src/Layer.js b/Examples/Tests/src/Layer.js index 30752f5..5bef44b 100644 --- a/Examples/Tests/src/Layer.js +++ b/Examples/Tests/src/Layer.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ layer: { diff --git a/Examples/Tests/src/Multiply.js b/Examples/Tests/src/Multiply.js index e4cef55..fde8023 100644 --- a/Examples/Tests/src/Multiply.js +++ b/Examples/Tests/src/Multiply.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ multiply: { diff --git a/Examples/Tests/src/TransparentNonPremultiplied.js b/Examples/Tests/src/TransparentNonPremultiplied.js index df8d7c3..5bc8110 100644 --- a/Examples/Tests/src/TransparentNonPremultiplied.js +++ b/Examples/Tests/src/TransparentNonPremultiplied.js @@ -1,5 +1,5 @@ const GL = require("gl-react"); -const React = GL.React; +const React = require("react"); const shaders = GL.Shaders.create({ TransparentNonPremultiplied: { diff --git a/Examples/Tests/src/index.js b/Examples/Tests/src/index.js index ff197d0..c53f6c1 100644 --- a/Examples/Tests/src/index.js +++ b/Examples/Tests/src/index.js @@ -1,4 +1,3 @@ -require("gl-react/react-native"); const React = require("react-native"); const { Text, diff --git a/Examples/android/RNGL.iml b/Examples/android/RNGL.iml deleted file mode 100644 index d90b763..0000000 --- a/Examples/android/RNGL.iml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ios/GLCanvas.m b/ios/GLCanvas.m index edca826..a3fee68 100644 --- a/ios/GLCanvas.m +++ b/ios/GLCanvas.m @@ -83,6 +83,22 @@ NSArray* diff (NSArray* a, NSArray* b) { RCT_NOT_IMPLEMENTED(-init) +- (void)dealloc +{ + _bridge = nil; + _images = nil; + _preloaded = nil; + _captureConfigs = nil; + _contentData = nil; + _contentTextures = nil; + _data = nil; + _renderData = nil; + if (animationTimer) { + [animationTimer invalidate]; + animationTimer = nil; + } +} + //// Props Setters - (void) requestCaptureFrame: (CaptureConfig *)config @@ -375,9 +391,11 @@ RCT_NOT_IMPLEMENTED(-init) if (_needSync) { NSError *error; - if(![self syncData:&error] && error==nil) { - // the data is not ready, retry in one tick - [self setNeedsDisplay]; + BOOL syncSuccessful = [self syncData:&error]; + BOOL errorCanBeRecovered = error==nil || (error.code != GLLinkingFailure && error.code != GLCompileFailure); + if (!syncSuccessful && errorCanBeRecovered) { + // something failed but is recoverable, retry in one tick + [self performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:NO]; } else { _needSync = false; diff --git a/ios/GLCanvasManager.m b/ios/GLCanvasManager.m index efc7dbc..c2fd5d6 100644 --- a/ios/GLCanvasManager.m +++ b/ios/GLCanvasManager.m @@ -18,6 +18,11 @@ RCT_EXPORT_MODULE(); return self; } +- (dispatch_queue_t)methodQueue +{ + return self.bridge.uiManager.methodQueue; +} + RCT_EXPORT_VIEW_PROPERTY(nbContentTextures, NSNumber); RCT_EXPORT_VIEW_PROPERTY(opaque, BOOL); RCT_EXPORT_VIEW_PROPERTY(autoRedraw, BOOL); diff --git a/ios/GLShader.h b/ios/GLShader.h index bee570c..a187a1f 100644 --- a/ios/GLShader.h +++ b/ios/GLShader.h @@ -4,7 +4,8 @@ NS_ENUM(NSInteger) { GLContextFailure = 87001, GLLinkingFailure = 87002, - GLCompileFailure = 87003 + GLCompileFailure = 87003, + GLNotAProgram = 87004 }; @interface GLShader: NSObject diff --git a/ios/GLShader.m b/ios/GLShader.m index 23eab38..37e5c10 100644 --- a/ios/GLShader.m +++ b/ios/GLShader.m @@ -66,11 +66,20 @@ GLuint compileShader (NSString* shaderName, NSString* shaderString, GLenum shade { glDeleteProgram(program); glDeleteBuffers(1, &buffer); + _name = nil; + _context = nil; + _vert = nil; + _frag = nil; + _uniformLocations = nil; + _uniformTypes = nil; + program = 0; + buffer = 0; + pointerLoc = 0; } - (bool) ensureContext: (NSError **)error { - if (![EAGLContext setCurrentContext:_context]) { + if (!_context || ![EAGLContext setCurrentContext:_context]) { *error = [[NSError alloc] initWithDomain:@"Failed to set current OpenGL context" code:GLContextFailure userInfo:nil]; return false; } @@ -79,15 +88,6 @@ GLuint compileShader (NSString* shaderName, NSString* shaderString, GLenum shade - (void) bind { - NSError *error; - if (![self ensureContext:&error]) { - RCTLogError(@"%@", error.domain); - return; - } - if ( glIsProgram(program) != GL_TRUE ){ - RCTLogError(@"Shader '%@': not a program!", _name); - return; - } glUseProgram(program); glBindBuffer(GL_ARRAY_BUFFER, buffer); glEnableVertexAttribArray(pointerLoc); @@ -341,6 +341,13 @@ GLuint compileShader (NSString* shaderName, NSString* shaderString, GLenum shade - (bool) ensureCompiles: (NSError **)error { + if (![self ensureContext:error]) { + return false; + } + if (!glIsProgram(program)) { + *error = [[NSError alloc] initWithDomain:@"not a program" code:GLNotAProgram userInfo:nil]; + return false; + } if (_error == nil) return true; *error = _error; return false; diff --git a/package.json b/package.json index 5a70f09..53b8067 100644 --- a/package.json +++ b/package.json @@ -19,15 +19,10 @@ "author": "Project September ", "license": "MIT", "peerDependencies": { - "react-native": ">= 0.17.0 <0.18.0", - "gl-react": ">= 2.0.3 <2.1.0" + "react-native": "0.18.0-rc", + "gl-react": "^2.1.0" }, "dependencies": { "invariant": "2.2.0" - }, - "devDependencies": { - "babel-eslint": "^4.1.6", - "eslint": "^1.9.0", - "eslint-plugin-react": "^3.8.0" } } diff --git a/src/GLCanvas.js b/src/GLCanvas.js index 85cfc49..df14ef0 100644 --- a/src/GLCanvas.js +++ b/src/GLCanvas.js @@ -106,7 +106,7 @@ class GLCanvas extends Component { this._pendingCaptureFrame[key].resolve(result); } delete this._pendingCaptureFrame[key]; - } + }; render () { const { width, height, onLoad, onProgress, eventsThrough, ...restProps } = this.props; -- 2.26.2