chore: Move everything into package/ (#1745)
				
					
				
			* Move everything into package * Remove .DS_Store * Move scripts and eslintrc to package * Create CODE_OF_CONDUCT.md * fix some links * Update all links (I think) * Update generated docs * Update notice-yarn-changes.yml * Update validate-android.yml * Update validate-cpp.yml * Delete notice-yarn-changes.yml * Update validate-cpp.yml * Update validate-cpp.yml * Update validate-js.yml * Update validate-cpp.yml * Update validate-cpp.yml * wrong c++ style * Revert "wrong c++ style" This reverts commit 55a3575589c6f13f8b05134d83384f55e0601ab2.
This commit is contained in:
		
							
								
								
									
										64
									
								
								package/ios/Frame Processor/FrameProcessor.mm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								package/ios/Frame Processor/FrameProcessor.mm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| // | ||||
| //  FrameProcessor.mm | ||||
| //  VisionCamera | ||||
| // | ||||
| //  Created by Marc Rousavy on 13.07.23. | ||||
| //  Copyright © 2023 mrousavy. All rights reserved. | ||||
| // | ||||
|  | ||||
| #import "FrameProcessor.h" | ||||
| #import <Foundation/Foundation.h> | ||||
|  | ||||
| #import "FrameHostObject.h" | ||||
| #import "WKTJsiWorklet.h" | ||||
| #import <jsi/jsi.h> | ||||
| #import <memory> | ||||
|  | ||||
| using namespace facebook; | ||||
|  | ||||
| @implementation FrameProcessor { | ||||
|   std::shared_ptr<RNWorklet::JsiWorkletContext> _workletContext; | ||||
|   std::shared_ptr<RNWorklet::WorkletInvoker> _workletInvoker; | ||||
| } | ||||
|  | ||||
| - (instancetype)initWithWorklet:(std::shared_ptr<RNWorklet::JsiWorklet>)worklet | ||||
|                         context:(std::shared_ptr<RNWorklet::JsiWorkletContext>)context { | ||||
|   if (self = [super init]) { | ||||
|     _workletInvoker = std::make_shared<RNWorklet::WorkletInvoker>(worklet); | ||||
|     _workletContext = context; | ||||
|   } | ||||
|   return self; | ||||
| } | ||||
|  | ||||
| - (void)callWithFrameHostObject:(std::shared_ptr<FrameHostObject>)frameHostObject { | ||||
|   // Call the Frame Processor on the Worklet Runtime | ||||
|   jsi::Runtime& runtime = _workletContext->getWorkletRuntime(); | ||||
|  | ||||
|   try { | ||||
|     // Wrap HostObject as JSI Value | ||||
|     auto argument = jsi::Object::createFromHostObject(runtime, frameHostObject); | ||||
|     jsi::Value jsValue(std::move(argument)); | ||||
|  | ||||
|     // Call the Worklet with the Frame JS Host Object as an argument | ||||
|     _workletInvoker->call(runtime, jsi::Value::undefined(), &jsValue, 1); | ||||
|   } catch (jsi::JSError& jsError) { | ||||
|     // JS Error occured, print it to console. | ||||
|     auto message = jsError.getMessage(); | ||||
|  | ||||
|     _workletContext->invokeOnJsThread([message](jsi::Runtime& jsRuntime) { | ||||
|       auto logFn = jsRuntime.global() | ||||
|                        .getPropertyAsObject(jsRuntime, "console") | ||||
|                        .getPropertyAsFunction(jsRuntime, "error"); | ||||
|       logFn.call(jsRuntime, jsi::String::createFromUtf8( | ||||
|                                 jsRuntime, "Frame Processor threw an error: " + message)); | ||||
|     }); | ||||
|   } | ||||
| } | ||||
|  | ||||
| - (void)call:(Frame* _Nonnull)frame { | ||||
|   // Create the Frame Host Object wrapping the internal Frame | ||||
|   auto frameHostObject = std::make_shared<FrameHostObject>(frame); | ||||
|   [self callWithFrameHostObject:frameHostObject]; | ||||
| } | ||||
|  | ||||
| @end | ||||
		Reference in New Issue
	
	Block a user