Esempio n. 1
0
File: job.c Progetto: Anat37/akos
void job_clean(Job *j)
{
    int i;
    for (i = 0;i < j->number_of_programs; i++)
        program_clean(j->program[i]);
    free(j->program);
    free(j);
    return;
}
Esempio n. 2
0
void program_exit(struct program **prog)
{
	struct program *ptr = *prog;

	if (!ptr)
		return;

	program_clean(ptr);
	free(ptr);
	*prog = NULL;
}
Esempio n. 3
0
int program_make(struct program *prog, struct shader **shader, int num)
{
	int i;
	GLchar log[256] = "nil";
	GLsizei len = 0;
	GLint res = GL_FALSE;

	if (!prog) {
		errno = EFAULT;
		return -1;
	}

	timeinit();

	prog->id = glCreateProgram();
	if (prog->id == 0) {
		glerr("glCreateProgram() failed");
		return -1;
	}

	prog->shader = shader;
	prog->shader_num = num;

	for (i = 0; i < num; i++) {
		if (make_shader(shader[i]) < 0) {
			_err("shader %s failed\n", shader[i]->name);
			goto err;
		}
		glAttachShader(prog->id, shader[i]->id);
	}

	timestart();
	glLinkProgram(prog->id);
	glGetProgramiv(prog->id, GL_LINK_STATUS, &res);
	if (res != GL_TRUE) {
		_err("failed to link program\n");
		goto err;
	}

	timestop("program %d linked\n", prog->id);
	return prog->id;

err:
	if (prog->id > 0) {
		glGetProgramInfoLog(prog->id, sizeof (log), &len, log);
		_msg("len: %d, log: %s\n", len, log);
	}

	program_clean(prog);
	return -1;
}
Esempio n. 4
0
int main(int argc, char **argv) {
  Program program;
  Program *p = &program;

#ifdef RICH_OUTPUT
  initscr();
	raw();
	keypad(stdscr, TRUE);
	noecho();
#endif

  program_init(p);
  program_load_system(p, "./programs/divide.sys");
  program_load_code(p, "./programs/divide.tis");

#ifdef RICH_OUTPUT
  output_program(p);
  int code = getch();
  while (code != 'q') {
    program_tick(p);
    clear();
    output_program(p);
    refresh();
    code = getch();
  }
#else
  int all_blocked_count = 0;
  while (all_blocked_count < 5) {
    int all_blocked = program_tick(p);
    if (all_blocked) {
      all_blocked_count++;
    } else {
      all_blocked_count = 0;
    }
  }
#endif

#ifdef RICH_OUTPUT
  endwin();
#endif
  program_clean(p);
}