SetChannel() is given a cChannel and is supposed to set that channel. It has no business handling timers!
If a plugin wants to do something with timers as a reaction to SetChannel, it shall do so in a separate thread.
Hm, ok, you definitely got a point there ;-). Seems like the plugin authors intention behind this is similar to the case described here. If I can find the time, I will have a lock at the solution you described there.
Should the member cChannel ever be deleted while the cDisplayChannel still lives, it will remain valid in the list's garbage collector, until the cDisplayChannel is closed. So calling SetChannel with that member is OK.
Understood. Thanks for the clarification.