示例#1
0
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);
  }
}
示例#2
0
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;
}