diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -553,7 +553,7 @@ int makeJobDataXML(struct distrenjob *jo writer = xmlNewTextWriterFilename(tmp, 0); xmlTextWriterStartDocument(writer, NULL, "utf-8", NULL); - // write resolution element and add its attributes + // write distrenjob element and add its attributes xmlTextWriterStartElement(writer, (xmlChar*)"distrenjob"); xmlTextWriterWriteAttribute(writer, (xmlChar*)"name", (xmlChar*)job->name); xmlTextWriterWriteAttribute(writer, (xmlChar*)"submitter", (xmlChar*)job->submitter); @@ -568,6 +568,23 @@ int makeJobDataXML(struct distrenjob *jo xmlTextWriterWriteAttribute(writer, (xmlChar*)"height", (xmlChar*)tmp); xmlTextWriterEndElement(writer); + // write video element and its attributes + xmlTextWriterStartElement(writer, (xmlChar*)"video"); + _distren_asprintf(&tmp, "%d", job->frameset[0].num); + xmlTextWriterWriteAttribute(writer, (xmlChar*)"start_frame", (xmlChar*)tmp); + _distren_asprintf(&tmp, "%d", job->frameset[(job->total_frames - 1)].num); + xmlTextWriterWriteAttribute(writer, (xmlChar*)"end_fame", (xmlChar*)tmp); + xmlTextWriterWriteAttribute(writer, (xmlChar*)"output_format", (xmlChar*)job->output_format); + xmlTextWriterEndElement(writer); + + // write watchdog forgiveness element + _distren_asprintf(&tmp, "%d", job->watchdog_forgiveness); + xmlTextWriterWriteElement(writer, (xmlChar*)"wd_forgiveness", (xmlChar*)tmp); + + // write total_render_time element + _distren_asprintf(&tmp, "%d", job->total_render_time); + xmlTextWriterWriteElement(writer, (xmlChar*)"total_render_time", (xmlChar*)tmp); + // end document xmlTextWriterEndDocument(writer); @@ -585,6 +602,9 @@ struct distrenjob *createJobFromXML(int xmlNodePtr cur; char *file_name; struct distrenjob *distrenjob; + int start_frame; + int counter; + int counter2; distrenjob_new(&distrenjob); @@ -601,6 +621,26 @@ struct distrenjob *createJobFromXML(int distrenjob->width = atoi((char*)xmlGetProp(cur, (xmlChar*)"width")); distrenjob->height = atoi((char*)xmlGetProp(cur, (xmlChar*)"number")); + cur = cur->next; + start_frame = atoi((char*)xmlGetProp(cur, (xmlChar*)"start_frame")); + distrenjob->total_frames = atoi((char*)xmlGetProp(cur, (xmlChar*)"end_frame")) - start_frame + 1; + distrenjob->output_format = (char*)xmlGetProp(cur, (xmlChar*)"output_format"); + + counter2 = start_frame; + for(counter = 0; counter <= distrenjob->total_frames; counter++) + { + distrenjob->frameset[counter].num = counter2; + distrenjob->frameset[counter].status = FRAMESETSTATUS_UNASSIGNED; + + counter2++; + } + + cur = cur->next; + distrenjob->watchdog_forgiveness = atoi((char*)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); + + cur = cur->next; + distrenjob->total_render_time = (time_t)atol((char*)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); + restoreJobState(distrenjob); return distrenjob; }