```
/* If auto shutdown is active we have perhaps scheduled a timer to shut down
due to not having queues any more to maintain, kill the timer now */
if (autoshutdown && autoshutdown_exec_id &&
cupsArrayCount(remote_printers) > 0) {
debug_printf ("cups-browsed: New printers there to make available, killing auto shutdown timer.\n");
g_source_destroy(g_main_context_find_source_by_id(NULL, autoshutdown_exec_id));
autoshutdown_exec_id = 0;
}
```
Why are you calling g_source_destroy() rather than g_source_remove()?
From a quick glance, this looks wrong:
``` exec_id && Count(remote_ printers) > 0) { destroy( g_main_ context_ find_source_ by_id(NULL,
autoshutdo wn_exec_ id)); n_exec_ id = 0;
/* If auto shutdown is active we have perhaps scheduled a timer to shut down
due to not having queues any more to maintain, kill the timer now */
if (autoshutdown && autoshutdown_
cupsArray
debug_printf ("cups-browsed: New printers there to make available, killing auto shutdown timer.\n");
g_source_
autoshutdow
}
```
Why are you calling g_source_destroy() rather than g_source_remove()?