| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | #include "easy2d.h"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // FreePool <20>ͷųص<C5B3>ʵ<EFBFBD>ֻ<EFBFBD><D6BB>ƣ<EFBFBD>
 | 
					
						
							|  |  |  |  | /// Object <20><><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>m_nRef<65><66><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʹ<EFBFBD>ð<EFBFBD>ȫ
 | 
					
						
							|  |  |  |  | /// <20><><EFBFBD><EFBFBD>¼<EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0 ʱ<><CAB1>FreePool <20><><EFBFBD>Զ<EFBFBD><D4B6>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | /// <20><><EFBFBD>е<EFBFBD> Object <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ڱ<EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Text <20><><EFBFBD>ӵ<EFBFBD><D3B5>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>У<EFBFBD>
 | 
					
						
							|  |  |  |  | /// <20><><EFBFBD><EFBFBD> retain <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>ö<EFBFBD><C3B6><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> release <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | /// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ͷ<EFBFBD>
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20>ͷų<CDB7><C5B3><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | static std::vector<Object*> pool; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void FreePool::__flush() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	std::vector<Object*>::iterator iter; | 
					
						
							|  |  |  |  | 	// ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	for (iter = pool.begin(); iter != pool.end();) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õļ<C3B5><C4BC><EFBFBD>Ϊ 0
 | 
					
						
							|  |  |  |  | 		if ((*iter)->m_nRef == 0) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			// <20>ͷŸö<C5B8><C3B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 			delete (*iter); | 
					
						
							|  |  |  |  | 			// <20><><EFBFBD>ͷų<CDB7><C5B3><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 			iter = pool.erase(iter); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			iter++;		// <20>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void FreePool::add(Object * nptr) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-09-12 12:53:34 +08:00
										 |  |  |  | 	pool.push_back(nptr);	// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷų<CDB7><C5B3><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | } |