private void SetCallback(IntPtr pointer, IntPtr clientData)
{
float[] data = new float[3]; /* R, G, B */
Marshal.Copy(pointer, data, 0, data.Length);
if (IsValid(data[0], data[1], data[2]))
{
bool changed = (data[0] != r)
|| (data[1] != g)
|| (data[2] != b);
r = data[0];
g = data[1];
b = data[2];
if (changed) {
OnChanged(EventArgs.Empty);
}
}
}