In gmpc I have a function “process_itterate” this handles (in idle time) the process_queue. (It does this by calling plugins (async)) process_itterates calles it self via g_idle_add() after a item is fully processed. if it is called and process_queue is empty , it stops. when a new item is injected when process_queue is empty, process_queue read more