From 7619f92f58da680362828c0aa882222cfc4913bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Renaudeau?= Date: Fri, 28 Aug 2015 00:42:12 +0200 Subject: [PATCH] Workaround to force the redraw when there are targets --- Examples/Simple/package.json | 2 +- RNGL/GLCanvas.h | 1 + RNGL/GLCanvas.m | 12 ++++++++++-- RNGL/GLCanvasManager.m | 1 + package.json | 2 +- src/View.js | 3 ++- 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Examples/Simple/package.json b/Examples/Simple/package.json index 25bf407..2ca59fd 100644 --- a/Examples/Simple/package.json +++ b/Examples/Simple/package.json @@ -7,6 +7,6 @@ }, "dependencies": { "gl-react-native": "file:../..", - "react-native": "^0.9.0" + "react-native": "^0.10.0" } } diff --git a/RNGL/GLCanvas.h b/RNGL/GLCanvas.h index e66fe81..90090f1 100644 --- a/RNGL/GLCanvas.h +++ b/RNGL/GLCanvas.h @@ -6,6 +6,7 @@ @property (nonatomic) GLData *data; @property (nonatomic) BOOL opaque; @property (nonatomic) NSNumber *nbTargets; +@property (nonatomic) NSNumber *renderId; - (instancetype)initWithBridge:(RCTBridge *)bridge withContext:(EAGLContext*)context; diff --git a/RNGL/GLCanvas.m b/RNGL/GLCanvas.m index 6feff6c..c36af08 100644 --- a/RNGL/GLCanvas.m +++ b/RNGL/GLCanvas.m @@ -61,6 +61,13 @@ NSString* srcResource (id res) return src; } +- (void)setRenderId:(NSNumber *)renderId +{ + if (_nbTargets > 0) { + [self setNeedsDisplay]; + } +} + - (void)setData:(GLData *)data { _data = data; @@ -94,7 +101,7 @@ NSString* srcResource (id res) for (GLData *child in data.children) { if (fboId == frameIndex) fboId ++; fbosMapping[[NSNumber numberWithInt:i]] = [NSNumber numberWithInt:fboId]; - [children addObject:traverseTree(child, fboId)]; + [children addObject:weak_traverseTree(child, fboId)]; fboId ++; i ++; } @@ -180,6 +187,7 @@ NSString* srcResource (id res) - (void)setNbTargets:(NSNumber *)nbTargets { [self resizeTargets:[nbTargets intValue]]; + _nbTargets = nbTargets; } - (void)resizeTargets:(int)n @@ -245,7 +253,7 @@ NSString* srcResource (id res) float h = [renderData.height floatValue] * scale; for (GLRenderData *child in renderData.children) - recDraw(child); + weak_recDraw(child); if (renderData.frameIndex == -1) { glBindFramebuffer(GL_FRAMEBUFFER, defaultFBO); diff --git a/RNGL/GLCanvasManager.m b/RNGL/GLCanvasManager.m index 0fe2883..201ab2d 100644 --- a/RNGL/GLCanvasManager.m +++ b/RNGL/GLCanvasManager.m @@ -21,6 +21,7 @@ RCT_EXPORT_MODULE(); RCT_EXPORT_VIEW_PROPERTY(nbTargets, NSNumber); RCT_EXPORT_VIEW_PROPERTY(opaque, BOOL); RCT_EXPORT_VIEW_PROPERTY(data, GLData); +RCT_EXPORT_VIEW_PROPERTY(renderId, NSNumber); - (UIView *)view { diff --git a/package.json b/package.json index b6c9fa4..19ef5cf 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "dependencies": { "invariant": "2.1.0", "react-native": ">=0.9.0 <0.11.0", - "gl-react-core": "^0.1.0" + "gl-react-core": "^0.1.1" }, "devDependencies": { "eslint": "^1.2.1", diff --git a/src/View.js b/src/View.js index e635ad9..edf14ef 100644 --- a/src/View.js +++ b/src/View.js @@ -23,13 +23,14 @@ const renderVtarget = function (style, width, height, id, children) { return {children}; }; -const renderVGL = function (props, width, height, data, nbTargets) { +const renderVGL = function (props, width, height, data, nbTargets, renderId) { return ; }; -- 2.26.2