diff --git a/Examples/AdvancedEffects/ios/AdvancedEffects.xcodeproj/xcshareddata/xcschemes/AdvancedEffects.xcscheme b/Examples/AdvancedEffects/ios/AdvancedEffects.xcodeproj/xcshareddata/xcschemes/AdvancedEffects.xcscheme index 0888e641f24af7f6c7e3395348ccfdc64059d77d..3a106baefd676c93a7bc016b9612227854a28a85 100644 --- a/Examples/AdvancedEffects/ios/AdvancedEffects.xcodeproj/xcshareddata/xcschemes/AdvancedEffects.xcscheme +++ b/Examples/AdvancedEffects/ios/AdvancedEffects.xcodeproj/xcshareddata/xcschemes/AdvancedEffects.xcscheme @@ -85,13 +85,6 @@ ReferencedContainer = "container:AdvancedEffects.xcodeproj"> - - - - diff --git a/ios/GLCanvas.m b/ios/GLCanvas.m index a082c393c8326127e47a00ac45499126153da17d..e96cdbe3f9b0c98f880d23a1045dedf18a3458e6 100644 --- a/ios/GLCanvas.m +++ b/ios/GLCanvas.m @@ -301,7 +301,6 @@ RCT_NOT_IMPLEMENTED(-init) contentData[i] = imgData; } _contentData = contentData; - _deferredRendering = true; [self setNeedsDisplay]; RCT_PROFILE_END_EVENT(0, @"gl", nil); } @@ -350,16 +349,17 @@ RCT_NOT_IMPLEMENTED(-init) BOOL needsDeferredRendering = _nbContentTextures > 0 && !_autoRedraw; if (needsDeferredRendering && !_deferredRendering) { + _deferredRendering = true; [self performSelectorOnMainThread:@selector(syncContentData) withObject:nil waitUntilDone:NO]; } else { - RCT_PROFILE_BEGIN_EVENT(0, @"GLCanvas render", nil); [self render]; - RCT_PROFILE_END_EVENT(0, @"gl", nil); _deferredRendering = false; if (_captureFrameRequested) { _captureFrameRequested = false; + + // 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]; @@ -377,10 +377,11 @@ RCT_NOT_IMPLEMENTED(-init) { GLRenderData *rd = _renderData; if (!rd) return; - - CGFloat scale = RCTScreenScale(); + RCT_PROFILE_BEGIN_EVENT(0, @"GLCanvas render", nil); @autoreleasepool { + CGFloat scale = RCTScreenScale(); + void (^recDraw) (GLRenderData *renderData); __block __weak void (^weak_recDraw) (GLRenderData *renderData); weak_recDraw = recDraw = ^void(GLRenderData *renderData) { @@ -437,6 +438,8 @@ RCT_NOT_IMPLEMENTED(-init) [self dispatchOnLoad]; } } + + RCT_PROFILE_END_EVENT(0, @"gl", nil); } //// utility methods