unsafe void DeviceWhiteBalanceGainsChange (NSObservedChange obj)
{
var gains = (NSValue)obj.NewValue;
if (gains != null) {
AVCaptureWhiteBalanceGains newGains;
gains.StoreValueAtAddress ((IntPtr)(void*)&newGains);
AVCaptureWhiteBalanceTemperatureAndTintValues newTemperatureAndTint = VideoDevice.GetTemperatureAndTintValues (newGains);
AVCaptureWhiteBalanceMode whiteBalanceMode = VideoDevice.WhiteBalanceMode;
DispatchQueue.MainQueue.DispatchAsync (() => {
if (whiteBalanceMode != AVCaptureWhiteBalanceMode.Locked) {
TemperatureSlider.Value = newTemperatureAndTint.Temperature;
TintSlider.Value = newTemperatureAndTint.Tint;
}
var ci = CultureInfo.InvariantCulture;
TemperatureValueLabel.Text = ((int)newTemperatureAndTint.Temperature).ToString (ci);
TintValueLabel.Text = ((int)newTemperatureAndTint.Tint).ToString (ci);
});
}
}