void gss_program_set_enabled (GssProgram * program, gboolean enabled) { if (program->enabled && !enabled) { program->enabled = enabled; gss_program_stop (program); } else if (!program->enabled && enabled) { program->enabled = enabled; gss_program_start (program); } }
static gboolean idle_state_enable (gpointer ptr) { GssProgram *program = GSS_PROGRAM (ptr); gboolean enabled; program->state_idle = 0; enabled = (program->enabled && program->server->enable_programs); if (program->state == GSS_PROGRAM_STATE_STOPPED && enabled) { gss_program_start (program); } else if (program->state == GSS_PROGRAM_STATE_RUNNING && !enabled) { gss_program_stop (program); } return FALSE; }
static gboolean periodic_timer (gpointer data) { GssServer *server = (GssServer *) data; GList *g; for (g = server->programs; g; g = g_list_next (g)) { GssProgram *program = g->data; if (program->restart_delay) { program->restart_delay--; if (program->restart_delay == 0) { gss_program_start (program); } } } return TRUE; }
static gboolean gss_program_call_start (gpointer priv) { gss_program_start ((GssProgram *) priv); return FALSE; }