private void screenCaptureSourcesRClbck(IntPtr opaque, ref ADLError error, IntPtr sources, UIntPtr size) { try { Responder <List <ScreenCaptureSource> > responder = (Responder <List <ScreenCaptureSource> >) getResponder((uint)opaque); if (error.err_code != 0) { responder.errHandler(error.err_code, error.err_message.body); } List <ScreenCaptureSource> sourcesList = new List <ScreenCaptureSource>(); var arrayValue = sources; var tableEntrySize = Marshal.SizeOf(typeof(ADLScreenCaptureSource)); uint tableSize = (uint)size; for (var i = 0; i < tableSize; i++) { ADLScreenCaptureSource cur = (ADLScreenCaptureSource)Marshal.PtrToStructure( arrayValue, typeof(ADLScreenCaptureSource)); byte[] snapshotArrayData = new byte[(uint)cur.imageDataLen]; Marshal.Copy(cur.imageData, snapshotArrayData, 0, (int)(uint)cur.imageDataLen); sourcesList.Add( new ScreenCaptureSource(cur.id.body, cur.title.body, snapshotArrayData)); arrayValue = new IntPtr(arrayValue.ToInt32() + tableEntrySize); } responder.resultHandler(sourcesList); } catch (Exception) { } }
/** * NativeAPI callback handlers * ===================================================================== */ /// <summary> /// /// </summary> /// <param name="opaque"></param> /// <param name="error"></param> private void voidRCallback(IntPtr opaque, ref ADLError error) { Responder <object> responder = (Responder <object>)getResponder( (uint)opaque); try { if (error.err_code == 0) { responder.resultHandler(null); } else { responder.errHandler(error.err_code, error.err_message.body); } } catch (Exception) { } }
// ===================================================================== /// <summary> /// /// </summary> /// <param name="opaque"></param> /// <param name="error"></param> /// <param name="str"></param> private void stringRCallback(IntPtr opaque, ref ADLError error, ref ADLString str) { Responder <string> responder = (Responder <string>)getResponder( (uint)opaque); try { if (error.err_code == 0) { responder.resultHandler(str.body); } else { responder.errHandler(error.err_code, error.err_message.body); } } catch (Exception) { } }
/// <summary> /// /// </summary> /// <param name="ptr"></param> /// <param name="err"></param> /// <param name="h"></param> private static void onInitComplete(IntPtr ptr, ref ADLError err, IntPtr h) { InitStateChangedEvent.InitState state; if (err.err_code == 0) { _platformHandle = h; _service = new CloudeoServiceImpl(h); state = InitStateChangedEvent.InitState.INITIALIZED; } else { state = InitStateChangedEvent.InitState.ERROR; } if (_listener != null) { InitStateChangedEvent e = new InitStateChangedEvent(state, err.err_code, err.err_message.body); _listener.onInitStateChanged(e); } }
/// <summary> /// /// </summary> /// <param name="opaque"></param> /// <param name="error"></param> /// <param name="i"></param> private void renderResponder(IntPtr opaque, ref ADLError error, int i) { try { Console.Error.WriteLine("Got rendering result"); int callId = (int)opaque; PendingCall call = _pendingCalls[callId]; _pendingCalls.Remove(callId); if (error.err_code == 0) { call.manualRenderer.rendererId = i; _activeRenderers[i] = new WeakReference(call.manualRenderer); if (call.manual) { call.manualRendererResponder.resultHandler(call.manualRenderer); } else { call.rendererResponder.resultHandler( new RenderingWidget(call.manualRenderer)); } } else { if (call.manual) { call.manualRendererResponder.errHandler(error.err_code, StringHelper.fromNative(error.err_message)); } else { call.rendererResponder.errHandler(error.err_code, StringHelper.fromNative(error.err_message)); } } } catch (Exception) { } }
// ===================================================================== /// <summary> /// /// </summary> /// <param name="opaque"></param> /// <param name="error"></param> /// <param name="device"></param> /// <param name="size_t"></param> private void devsRCallback(IntPtr opaque, ref ADLError error, IntPtr device, UIntPtr size) { try { Responder <Dictionary <string, string> > responder = (Responder <Dictionary <string, string> >) getResponder((uint)opaque); Dictionary <string, string> devList = new Dictionary <string, string>(); // 'device' is an array of 'CDODevice' structures, add devices to // devList var arrayValue = device; var tableEntrySize = Marshal.SizeOf(typeof(ADLDevice)); uint tableSize = (uint)size; for (var i = 0; i < tableSize; i++) { var cur = (ADLDevice)Marshal.PtrToStructure( arrayValue, typeof(ADLDevice)); devList.Add(cur.id.body, cur.label.body); arrayValue = new IntPtr(arrayValue.ToInt32() + tableEntrySize); } if (error.err_code == 0) { responder.resultHandler(devList); } else { responder.errHandler(error.err_code, error.err_message.body); } } catch (Exception) { } }
public static extern bool adl_no_error(ref ADLError error);
/// <summary> /// /// </summary> /// <param name="opaque"></param> /// <param name="error"></param> private void stopRHandler(IntPtr opaque, ref ADLError error) { stoppedEvent.Set(); }
/// <summary> /// /// </summary> /// <param name="opaque"></param> /// <param name="error"></param> /// <param name="i"></param> private void renderResponder(IntPtr opaque, ref ADLError error, int i) { try { Console.Error.WriteLine("Got rendering result"); int callId = (int)opaque; PendingCall call = _pendingCalls[callId]; _pendingCalls.Remove(callId); if (error.err_code == 0) { call.manualRenderer.rendererId = i; _activeRenderers[i] = new WeakReference(call.manualRenderer); if (call.manual) { call.manualRendererResponder.resultHandler(call.manualRenderer); } else { call.rendererResponder.resultHandler( new RenderingWidget(call.manualRenderer)); } } else { if (call.manual) call.manualRendererResponder.errHandler(error.err_code, StringHelper.fromNative(error.err_message)); else call.rendererResponder.errHandler(error.err_code, StringHelper.fromNative(error.err_message)); } } catch (Exception) { } }