# HG changeset patch # User ethanzonca # Date 2009-07-06 22:15:31 # Node ID 13f3a450ac0c7cd12c74aff28aeffda015f1816d # Parent ca7a28150e3f4a45653637fa14268d2000634081 Removed 2d array, reverted to array of structs taht still doesn't work. diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -68,9 +68,7 @@ struct { } blendjob[max]; - -/* -// -- Matthew's handywork -- +// Matt's code for framesets? // struct for storing information on each frame for a particular blender job struct { int frame_num; // frame number to render @@ -78,8 +76,7 @@ struct { int frame_status; // status of frame, 0= unassigned, 1= taken, 2= done } frameset[]; // Frameset array is generated by status_report_generator function // Using this method to save memory, because if animation starts on a high frame number, it would waste a lot of RAM on empty structures -// -- end of Matthew's handywork -- -*/ + @@ -177,7 +174,7 @@ int main(int argc, char *argv[]) -/* ************************ Aaaaaah ************************ */ +/* ************************ Newness ************************ */ @@ -197,7 +194,6 @@ int main(int argc, char *argv[]) -/* -- Coding using OLD FRAMESET STRUCTURE... temporarily saving it!! -- :: Normaldotcom glances at lordofwar with a concerned look... // This function creates frame array based on the total number of frames to be rendered, which will then be parsed by function frame_farmer. void frame_num_struct_builder(int sframe, int eframe) { int jobnum_new = highest_jobnum + 1; @@ -305,123 +301,6 @@ void status_report_generator(){ void the_finisher(int frame){ blendjob[jobnum].frameset[frame].frame_status++; } -*/ // --End of saved frameset structure using code -- - - - - - - - -// -- NEW CODE TO USE ARRAYS INSTEAD OF THE FRAMESET STRUCTURE -- -// This function creates frame array based on the total number of frames to be rendered, which will then be parsed by function frame_farmer. - -// Note from ethanzonca: So this doesn't seem to store who is running what frame. I think we need an array of structs for frameset, not an array. -void frame_num_struct_builder(int sframe, int eframe) { - int jobnum_new = highest_jobnum + 1; // can't we use jobnum? because the framesets will correspond with the queued job... integrate this with the queuer? - int total = (sframe - eframe) +1; // total number of frames - int fcount = sframe; // Used to create all the frames in the structure from sframe to eframe - int x = 0; - - blendjob[jobnum_new].total_frames = total; // sets the total number of frames in animation for status purposes - - while(x < total){ - blendjob[jobnum_new].frame_num[x] = fcount; - x++; - fcount++; - } - - highest_jobnum++; -} - - -// matches your computer up with a not-so-lovely frame to render -int frame_finder(){ - int your_frame = NULL; // your_frame is an interger value that will be given to the client as the frame number to render - int finder_jobnum = 0; - int frameset_count = 0; // the frameset number, note* frames in an animation don't start at zero - short int done = 0; - int priority = 10; - - while(priority >= 1){ // start the scan for the next job with the highest priority - finder_jobnum = hcfjob + 1; // reset it to start scanning at first uncompleted job for the pass at each priority level - while(finder_jobnum <= highest_jobnum){ - if(blendjob[finder_jobnum].priority = priority){ // looks for a job with the current priority value - done = 1; // notice it starts by looking at the oldest job first - break; - } - - if((done) = 1) // If it has found a job with the current priority value, it will break out of the loop - break; // If none is found it goes to the next job to see if it is of the current priority value - else - finder_jobnum++; - } - - if(done = 1) // if job has been found, it lets it out of the priority changer loop - break; - - priority--; - } - - while(your_frame < blendjob[finder_jobnum].total_frames){ // Finds the frameset number with a frame that needs to be rendered - if (blendjob[finder_jobnum].frame_status[frameset_count] = 0) // If frame that is not assigned has been found, frameset_count is not changed - break; // and frameset_count is used to give the frame number later in this funciton - - x++; // If frame is assigned or done, it goes to next frame - } - - blendjob[jobnum].frame_status[x]++; // sets the value of the frame to 2, which means its taken - - your_frame = blendjob[jobnum].frame_num[x]; // Takes the frameset found in the while statement above, and extracts the frame number from it and assigns it to the int your_frame - - if(your_frame = null) // If that job had no open frames for some reason, run the status report generator so that - status_report_generator(); //the job priority can be changed to 0 - - return your_frame; // your_frame is returned as the frame to be rendered -} - - - - -// This figures out how much of the job is done, where jobnum corresponds to the job number -// This uses pointers, so when it is run it updates certain values in memory -void status_report_generator(){ - - while(blendjob[(hcfjob+1)].priority = 0) //If the job after the highest consecutively finished job is finished - hcfjob+1; // adds 1 to the highest consecutively finished job and checks the next one, till the job after the hcfjob is not done - - int num1 = hcfjob+1; // to scan through jobs - int num2 = 0; // to scan through frames - - while(num1 <= highest_jobnum){ - if(blendjob[num1].priority != 0){ // If the job is not done, scan it - - float finished_frames = 0; // variable that counts the completed frames - int pending_frames = 0; // variable that counts the assigned frames - float percent = 0; // variable that stores the percent done of the blendjob - - while(num2 <= blendjob[jobnum].total_frames){ // If - if(blendjob[jobnum].frame_status[num2] = 2) - finished_frames++; - - if(blendjob[jobnum].frame_status[num2] = 1) - pending_frames++; - - num2++; - } - - percent = (finished_frames / blendjob[num1].total_frames) * 100; - - blendjob[num1].completed_frames = finished_frames; - blendjob[num1].assigned_frames = pending_frames; - blendjob[num1].percent_done = percent; - } - - num1++; - } - - } -