| 
									
										
										
										
											2012-11-13 22:30:32 +09:00
										 |  |  | #include "../cache.h"
 | 
					
						
							|  |  |  | #include "progress.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-23 15:40:38 -03:00
										 |  |  | static void null_progress__update(struct ui_progress *p __maybe_unused) | 
					
						
							| 
									
										
										
										
											2012-11-13 22:30:32 +09:00
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-23 14:08:48 -03:00
										 |  |  | static struct ui_progress_ops null_progress__ops = | 
					
						
							| 
									
										
										
										
											2012-11-13 22:30:32 +09:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-10-23 14:08:48 -03:00
										 |  |  | 	.update = null_progress__update, | 
					
						
							| 
									
										
										
										
											2012-11-13 22:30:32 +09:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-23 14:08:48 -03:00
										 |  |  | struct ui_progress_ops *ui_progress__ops = &null_progress__ops; | 
					
						
							| 
									
										
										
										
											2012-11-13 22:30:32 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-23 15:40:38 -03:00
										 |  |  | void ui_progress__update(struct ui_progress *p, u64 adv) | 
					
						
							| 
									
										
										
										
											2012-11-13 22:30:32 +09:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-10-23 15:40:38 -03:00
										 |  |  | 	p->curr += adv; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (p->curr >= p->next) { | 
					
						
							|  |  |  | 		p->next += p->step; | 
					
						
							|  |  |  | 		ui_progress__ops->update(p); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void ui_progress__init(struct ui_progress *p, u64 total, const char *title) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	p->curr = 0; | 
					
						
							|  |  |  | 	p->next = p->step = total / 16; | 
					
						
							|  |  |  | 	p->total = total; | 
					
						
							|  |  |  | 	p->title = title; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-13 22:30:32 +09:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2012-11-13 22:30:34 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | void ui_progress__finish(void) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2013-10-23 14:08:48 -03:00
										 |  |  | 	if (ui_progress__ops->finish) | 
					
						
							|  |  |  | 		ui_progress__ops->finish(); | 
					
						
							| 
									
										
										
										
											2012-11-13 22:30:34 +09:00
										 |  |  | } |