diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -72,7 +72,7 @@ struct general_info { */ void status_report_generator(struct distrenjob **distrenjobs_head); void distrenjob_remove(struct distrenjob **head, struct distrenjob *bj); - +struct distrenjob *remove_job(int jobnum_t); struct distrenjob *distrenjob_get(struct distrenjob *head, jobnum_t jobnum); struct distrenjob *head; /*@TODO:declare struct with no starting data */ @@ -160,16 +160,22 @@ void finish_frame(struct distrenjob *dis } -// This function creates a structure from starting data, then calls another function to actually add that struct to the queue -void queue(int type, char *name, char *submitter, char *email, int priority, int start_frame, int end_frame){ +/** + creates a structure from starting data, then calls another function to actually add that struct to the queue +*/ +void queue(int type, char *name, char *submitter, char *email, int priority, int start_frame, int end_frame) +{ + int counter2; + int counter; + struct distrenjob *distrenjob; + distrenjob->type = 1; /*@TODO: add type to blendjob struct*/ distrenjob->name = name; distrenjob->submitter = submitter; distrenjob->email = email; distrenjob->priority = priority; - struct frameset[(end_frame - start_frame + 1)]; - distrenjob->frameset = &frameset; + distrenjob->frameset = malloc(end_frame - start_frame + 1); distrenjob->total_frames = (end_frame - start_frame + 1); // sets the total number of frames in animation for status purposes /* @TODO: what does this do? frameset array is declared above */ @@ -180,8 +186,7 @@ void queue(int type, char *name, char *s */ /* prepares all the frames by setting that status to "unassigned" */ - int counter2 = start_frame; - int counter; + counter2 = start_frame; for(counter = 0; counter <= (end_frame- start_frame + 1); counter++){ distrenjob->frameset[counter].num = counter2; distrenjob->frameset[counter].status = 0; @@ -337,7 +342,11 @@ void change_job_priority(int jobnum, int add_job_to_queue(job); } -distrenjob *remove_job(int jobnum_t){ +/** + Removes job from queue without freeing/deleting it. Meant to be temporary. + */ +struct distrenjob *remove_job(int jobnum_t) +{ struct distrenjob *job; struct distrenjob *prev_job = head; @@ -508,6 +517,7 @@ void distrenjob_remove(struct distrenjob /* @lordofwar: the magic deallocation of memory ;-) */ + free(bj->frameset); free(bj); }