4 #include "bs_profiler.h"
5 #include "bs_rubberband.h"
7 +static struct timeval beginTime; /* Time of the benchmark start */
8 +static int cur_step; /* Current benchmark phase. Used to subsequently increase number of objects each 10 seconds */
10 typedef struct bs_main_data_st
12 bs_cairo_sdl_t *pCairoSdl;
15 SDL_UserEvent userevent;
16 bs_main_data_t *pMainData;
18 + struct timeval curTime;
21 pMainData = (bs_main_data_t*) pUserData;
23 userevent.type = SDL_USEREVENT;
25 userevent.data1 = NULL;
26 userevent.data2 = NULL;
28 + gettimeofday(&curTime, NULL);
29 + hunsec = curTime.tv_sec - beginTime.tv_sec;
31 + /* increase cur_step each 10 seconds */
32 + if (cur_step < hunsec / 10) {
33 + printf("%d objects = %.2f fps\n", 1 << (cur_step + 1), pMainData->fps);
34 + userevent.code = 2; /* add more objects */
38 + /* exit if requested number of objects is reached */
42 event.type = SDL_USEREVENT;
43 event.user = userevent;
46 pMainData->newTimerInterval = 50;
47 pMainData->fps = 20.0;
48 pMainData->running = TRUE;
55 + gettimeofday(&beginTime, NULL);
56 gettimeofday(&startTime, NULL);
57 pMainData->lastFrameTimeStamp = startTime.tv_sec * 1000 + startTime.tv_usec / 1000;
59 SDL_AddTimer(50, bs_main_sdl_timer_callback, pMainData);
61 + bs_blob_collective_split(pMainData->pCollective);
65 SDL_WaitEvent(&event);
70 - if(event.user.code == 1)
72 + if (event.user.code == 1) {
73 gettimeofday(&startTime, NULL);
74 bs_main_update_simulation(pMainData);
75 bs_main_redraw(pMainData);
80 - pMainData->newTimerInterval = usedTime;
84 + pMainData->newTimerInterval = usedTime;
85 + } else if (event.user.code == 2) {
87 + for (i = 0; i < (1 << cur_step); i++)
88 + bs_blob_collective_split(pMainData->pCollective);
89 + } else if (event.user.code == 3) {