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)); }