Changeset - 387c6b396ee5
[Not reviewed]
default
0 1 0
LordOfWar - 16 years ago 2009-07-05 19:55:01

finished status report generator to count the number of frames completed and update the int variable in the blendjob structure. Still need to add code to count the number of frames assigned and the percent done.

How do you round an interger to 2 decimal places?

moved possibility to secondary upload location to blendjob structure from the frameset structure... cause its not gonna change in between frames... it would just waste a ton of memory.

Still need to add more comments to the status report generator.
1 file changed with 15 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/server/distrend.c
Show inline comments
 
@@ -48,37 +48,38 @@ int highest_jobnum; // The job number of
 
// OOOOOOkay so we really need a struct for frameset rather than just an array, because we should track who each frame was sent out to. Please do this, someone! :D
 
struct {
 
  char *name;
 
  char *submitter;
 
  char *email;
 
  int priority;  // 1 is lowest, 10 is highest, 0 is done
 

	
 
  int percent_done;
 
  int completed_frames; // number of completed frames
 
  int total_frames; // how many frames are in the animation
 

	
 
  struct frameset **frameset; // What exactly is this now? hehe
 

	
 

	
 
  // For secondary upload location...
 
  char url;
 
  char login_name;
 
  char login_pass;
 
} blendjob[max];
 

	
 
// -- Matthew's handywork --
 
// struct for storing informaiton on each frame for a particular blender job
 
struct {
 
	int frame_num; // frame number to render
 
	char slave_name; // user that frame is assigned to
 
	int frame_status; // status of frame, 0= unassigned, 1= taken, 2= done
 

	
 
	// For secondary upload location...
 
	char url;
 
	char login_name;
 
	char login_pass;
 
} frameset[frame_count]; // Frame count is the frame number if the animation starts on zero... but animations start at frame 1
 
                         // 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 --
 

	
 
struct {
 
  char *name;
 
  char *submitter;
 
  char *email;
 
  int priority;
 
  int mode; // 0 = Static Render, stop at Spp, or infinity if spp is null. Framerange is ignored || 1 = animation, stop at Spp and stay in framerange.
 
  int spp;
 
  struct frameset ** frameset;
 
@@ -329,31 +330,38 @@ return your_frame; // your_frame is retu
 
}
 

	
 
// 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(){
 
	int num1 = hcfjob+1; // to scan through jobs
 
	int num2 = 0;		 // to scan through frames
 

	
 
	if(blendjob[num1].priority = 0)  //If the job after the highest consecutively finished job is finished
 
		hcfjob+1;  // adds 1 to the highest consecutively finished job
 

	
 
	while(num1 <= highest_jobnum){
 
		if(blendjob[num1].frameset[num2].priority != 0){
 
		if(blendjob[num1].frameset[num2].priority != 0){ // If the job is not done, scan it
 

	
 
			int finished_frames = 0; // variable that counts the completed frames
 
			while(num2 <= blendjob[jobnum].total_frames){
 
				int finished_frames = 0;
 
				if(blendjob[jobnum].frameset[num2])
 
					finished_frames++;
 

	
 
				num2++;
 
			}
 
		}
 

	
 
		blendjob[num1].completed_frames = finished_frames;
 

	
 
		num1++;
 
	}
 

	
 
}
 

	
 
// This function makes the value of the frame 2, which means its completed.
 
void the_finisher(int frame){
 
	blendjob[jobnum].frameset[frame]++;
 
}
 

	
 
// Queuer: this function should add files to the queue
 
// Type: 0 = blender, 1 = luxrender
 
// jobnum is the current job number
0 comments (0 inline, 0 general)