diff --git a/Examples/AdvancedEffects/package.json b/Examples/AdvancedEffects/package.json
index d3b5ae1780f52d5186ca097c712a543096cef46a..d23968d64d5e79cf648f9ce8a0a4834c75b3c33a 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 9b8b63ec9cc37be61bc7a3f5eef472720b2d94d8..db9a122300b627ae36378a0d4f273bb9be435abe 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 a6ca214c5bb12a0754e059ac40769b36a2db23bf..6a48d438c86619bc8c489e7eaf6e4094f300818f 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 7d758475d294c9eda57b7e8eb0fbdf617e5800e5..0810192c42294419760ae8f300500c841e1842bf 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 f857d9c8ff136eb741a54314b377c94753663e8c..f4ce09e559dfcc850d359dc31431e57c9af00798 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 5503597fb42bdf7e38f2ad9e9f2f9cc2cfd56f6e..e64c9dba5a9e270b5b1a1bd699f25b70c9571d94 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 26a5d3c05e58c356964d1cb26abcd53e86ab49e8..0f3ae20055e5043277f6520383534f8860ec2000 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 feb2f21e30eb11b6e0bbab6e1a8b6aa3ccad25f8..95579e08c310faab8fbd9afdda0a21d0e6d67cbd 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 fc08b5140f88fd6d5943794bd5e61d0c62774754..475087db222a15e0b27881915b3115a6f4ed6feb 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 d520d5f8f287d7ef4230ab14b836bb94d85d691a..1c85254ea7b7f3a6c57039e46e99dfa1a2f30e45 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 012c4593a49d0b2c130da08a405996a070f90068..a7a8d57201225969bf6cd82d0fc8b03a85689a52 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 c8088ab9b9745af097a7cfefca9e85415f1497f1..f24ec3f1fa0812a2c4403b29021f70da87c72e82 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 324d743d74c150adc726a6d5b2e22da158bec289..0756153ae148f9858f58622e123bbea16de9469c 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 5e12bf40bc25bd3c5d4c6ac546ad36512812627f..63097bb1239e5712bee65f37652f050be2232225 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 cbb560c36d33a2b9e0ec573d0cde53a5303c3a3f..d25edd8f3a18d67461d0fac9a601cca94f08f32c 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 d10b83b7983ae1ab0d0ef9e16a986a3449aa818c..8433c9c817e8d3364610bec48e940db3790493a8 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 df5067fd33f18ec473a2677841d7147363802093..b9adbfed2dfc20c64e09e0944d90db514382881e 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 c49efeb28ed845b8003919d01aa489039c8b0383..33be68e7da4ab5ef437db6c869e10899cb66d274 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 6aac82fd4c8381033ca411d434f58891994f582f..003fd182219bb30a4a4837382710102ad86c24ff 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 e72df0e66b87297423133ab6b8ad5bd53ba1c859..d944c7c7a0774e134b5bffea412afdc082987280 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 30752f5b0e717e00f249fbf0b103eee4d4fab8b3..5bef44b8124903900631610e5380d0af86e9a7a2 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 e4cef5510f1f1c4b8c84a83ec77887ca977b0b2e..fde8023f05f9e1dfa3b5c9c794178e62cda69509 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 df8d7c322a8af669859daea65c49f8cf1286e3fb..5bc8110fe33b64779d7d7ca6979bf6e0d9bdaa0c 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 ff197d05d344e5feaafc0071ac68b1506524bc35..c53f6c1b61b818753854383ff64a6b723eac945d 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 d90b763d79676e58f0ed979346315239bc64de94..0000000000000000000000000000000000000000
--- a/Examples/android/RNGL.iml
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- generateDebugAndroidTestSources
- generateDebugSources
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ios/GLCanvas.m b/ios/GLCanvas.m
index edca8264d3642f64b69e4faa61fa875e0ac5271f..a3fee68ae0cee164addf74d09d938e8108b0686a 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 efc7dbc4179ad6e05d9303a8ebbd14ed284bd94a..c2fd5d64a0369f94f705cdf79e0e136163f69093 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 bee570c56bebd8384d2ededf7a7569004bf7a4c4..a187a1fba4cd355ffb40a6e4b6acfcc0d91d0909 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 23eab38f2c4b4d9add0bcfd6b5ba61785f754e0a..37e5c10c84287e550dfcbb19816c19e37272646c 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 5a70f098edb888e853beb31f7029edb8037f4c49..53b806770fbaec887066ace78964224cfa0cb1d4 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 85cfc4903be270a6fb484d0b265fc9afec6eeb3b..df14ef0c3ab28c4967b830bf914b43f282a7951b 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;