Changeset 342
- Timestamp:
- Feb 3, 2011, 10:39:34 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ticker.cpp
r289 r342 31 31 todolist(0), autolist(0), 32 32 nentities(0), 33 frame(0), deltams(0), bias(0) 33 frame(0), deltams(0), bias(0), 34 quit(0), quitframe(0), quitdelay(20) 34 35 { 35 36 for (int i = 0; i < Entity::ALLGROUP_END; i++) … … 61 62 62 63 /* Fixed framerate management */ 63 int frame , quitframe;64 int frame; 64 65 Timer timer; 65 66 float deltams, bias; 67 68 /* Shutdown management */ 69 int quit, quitframe, quitdelay; 66 70 } 67 71 tickerdata; … … 153 157 data->bias += data->deltams; 154 158 159 /* If shutdown is stuck, kick the first entity we meet and see 160 * whether it makes things better. Note that it is always a bug to 161 * have referenced entities after 20 frames, but at least this 162 * safeguard makes it possible to exit the program cleanly. */ 163 if (data->quit && !((data->frame - data->quitframe) % data->quitdelay)) 164 { 165 Entity *entity = NULL; 166 for (int i = 0; i < Entity::ALLGROUP_END && !entity; i++) 167 entity = data->list[i]; 168 if (entity && entity->ref) 169 { 170 #if !FINAL_RELEASE 171 fprintf(stderr, "ERROR: %i entities stuck after %i frames\n", 172 data->nentities, data->quitdelay); 173 #endif 174 entity->ref--; 175 data->quitdelay = data->quitdelay > 1 ? data->quitdelay / 2 : 1; 176 } 177 } 178 155 179 /* Garbage collect objects that can be destroyed. We can do this 156 180 * before inserting awaiting objects, because only objects already in … … 289 313 } 290 314 315 data->quit = 1; 291 316 data->quitframe = data->frame; 292 317 }
Note: See TracChangeset
for help on using the changeset viewer.