public static int[] GetFieldOffsets(OSPlatform platform, bool is64Bit, NativeCapabilities nativeCapabilities) { var fieldTypes = new RfbType[FieldTypes.Length]; Array.Copy(FieldTypes, fieldTypes, fieldTypes.Length); if (!nativeCapabilities.HaveLibZ) { fieldTypes[(int)RfbClientRecPtrField.CompStream] = RfbType.Skip; fieldTypes[(int)RfbClientRecPtrField.CompStreamInited] = RfbType.Skip; fieldTypes[(int)RfbClientRecPtrField.ZlibCompressLevel] = RfbType.Skip; } if (!nativeCapabilities.HaveLibZ && !nativeCapabilities.HaveLibPng) { fieldTypes[(int)RfbClientRecPtrField.TightQualityLevel] = RfbType.Skip; if (!nativeCapabilities.HaveLibJpeg) { fieldTypes[(int)RfbClientRecPtrField.ZsStruct] = RfbType.Skip; fieldTypes[(int)RfbClientRecPtrField.ZsActive] = RfbType.Skip; fieldTypes[(int)RfbClientRecPtrField.ZsLevel] = RfbType.Skip; fieldTypes[(int)RfbClientRecPtrField.TightCompressLevel] = RfbType.Skip; } } if (!nativeCapabilities.HaveLibZ) { fieldTypes[(int)RfbClientRecPtrField.ZrleData] = RfbType.Skip; fieldTypes[(int)RfbClientRecPtrField.ZywrleLevel] = RfbType.Skip; fieldTypes[(int)RfbClientRecPtrField.ZywrleBuf] = RfbType.Skip; } if (!nativeCapabilities.HaveLibZ && !nativeCapabilities.HaveLibPng) { fieldTypes[(int)RfbClientRecPtrField.TightEncoding] = RfbType.Skip; if (!nativeCapabilities.HaveLibJpeg) { fieldTypes[(int)RfbClientRecPtrField.TurboSubsampLevel] = RfbType.Skip; fieldTypes[(int)RfbClientRecPtrField.TurboQualityLevel] = RfbType.Skip; } } if (nativeCapabilities.HaveWin32Threads) { fieldTypes[(int)RfbClientRecPtrField.OutputMutex] = RfbType.Win32Mutex; fieldTypes[(int)RfbClientRecPtrField.RefCountMutex] = RfbType.Win32Mutex; fieldTypes[(int)RfbClientRecPtrField.SendMutex] = RfbType.Win32Mutex; fieldTypes[(int)RfbClientRecPtrField.UpdateMutex] = RfbType.Win32Mutex; fieldTypes[(int)RfbClientRecPtrField.Pipe_notify_client_thread] = RfbType.Skip; } return(NativeLayout.GetFieldOffsets(fieldTypes, platform, is64Bit)); }
public static int[] GetFieldOffsets(OSPlatform platform, bool is64Bit, NativeCapabilities nativeCapabilities) { var fieldTypes = new RfbType[FieldTypes.Length]; Array.Copy(FieldTypes, fieldTypes, fieldTypes.Length); if (nativeCapabilities.HaveWin32Threads) { fieldTypes[(int)RfbScreenInfoPtrField.CursorMutex] = RfbType.Win32Mutex; } return(NativeLayout.GetFieldOffsets(fieldTypes, platform, is64Bit)); }
public static int[] GetFieldOffsets(OSPlatform platform, bool is64Bit) { NativeCapabilities nativeCapabilities; if (platform == OSPlatform.Windows) { nativeCapabilities = new NativeCapabilities() { HaveLibJpeg = true, HaveLibPng = true, HaveLibZ = true, HaveLibPthread = false, HaveWin32Threads = true, }; } else { nativeCapabilities = NativeCapabilities.Unix; } return(GetFieldOffsets(platform, is64Bit, nativeCapabilities)); }