Fixed glib source double removal then using Source.Remove (Timeout.Remove, Idle.Remove).
I don't know if fix is correct or safe, but it solves problem that you can test in TimerDemo section from samples.
Repro:
If on Windows you should enable console in samples: <OutputType>Exe</OutputType>
Go to TimerDemo section and press buttons:
1. Add timer
2. Remove timer by handler
3. GC - no error in console
1. Add timer
2. Remove timer
3. GC - error in console "GLib-CRITICAL **: 20:29:41.579: Source ID 123 was not found when attempting to remove it"
Idle.Add, Idle.AddSeconds, Timeout.Add, Timeout.AddSeconds methods overloads are generalized:
* no priority (for default priority)
* enum priority (for standard priorities)
* int priority (for custom priority)
* overloads call main method with int priority
Fixed leak in Timeout.Add(priority): method was not using userData and DestroyHelper.NotifyHandler.