summaryrefslogtreecommitdiffstats
path: root/meta-agl-profile-core/recipes-test/blobsallad/blobsallad/0002-auto.patch
blob: b61da2c1fa2683ca7384ee8da31f3ee92e3a3273 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
--- a/bs_main.c
+++ b/bs_main.c
@@ -11,6 +11,9 @@
 #include "bs_profiler.h"
 #include "bs_rubberband.h"
 
+static struct timeval beginTime; /* Time of the benchmark start */
+static int cur_step; /* Current benchmark phase. Used to subsequently increase number of objects each 10 seconds */
+
 typedef struct bs_main_data_st 
 {
   bs_cairo_sdl_t *pCairoSdl; 
@@ -113,7 +116,9 @@
   SDL_Event event;
   SDL_UserEvent userevent;
   bs_main_data_t *pMainData; 
-  
+  struct timeval curTime;
+  int hunsec;
+
   pMainData = (bs_main_data_t*) pUserData; 
   
   userevent.type = SDL_USEREVENT;
@@ -121,6 +126,20 @@
   userevent.data1 = NULL;
   userevent.data2 = NULL;
 
+  gettimeofday(&curTime, NULL);
+  hunsec = curTime.tv_sec - beginTime.tv_sec;
+
+  /* increase cur_step each 10 seconds */
+  if (cur_step < hunsec / 10) {
+	printf("%d objects = %.2f fps\n", 1 << (cur_step + 1), pMainData->fps);
+	userevent.code = 2; /* add more objects */
+	cur_step++;
+  }
+
+  /* exit if requested number of objects is reached */
+  if (cur_step == 4)
+	userevent.code = 3;
+
   event.type = SDL_USEREVENT;
   event.user = userevent;
 
@@ -152,14 +171,19 @@
   pMainData->newTimerInterval = 50; 
   pMainData->fps = 20.0; 
   pMainData->running = TRUE; 
-  
+ 
+  cur_step = 0;
+ 
   bs_profiler_init();
   
+  gettimeofday(&beginTime, NULL); 
   gettimeofday(&startTime, NULL); 
   pMainData->lastFrameTimeStamp = startTime.tv_sec * 1000 + startTime.tv_usec / 1000; 
   
   SDL_AddTimer(50, bs_main_sdl_timer_callback, pMainData); 
   
+  bs_blob_collective_split(pMainData->pCollective); 
+
   for(;;)
   {
     SDL_WaitEvent(&event); 
@@ -253,8 +277,7 @@
         break; 
       
       case SDL_USEREVENT:
-        if(event.user.code == 1)
-        {
+        if (event.user.code == 1) {
           gettimeofday(&startTime, NULL); 
           bs_main_update_simulation(pMainData);
           bs_main_redraw(pMainData);       
@@ -268,10 +291,15 @@
             usedTime = 50; 
           }
             
-          pMainData->newTimerInterval = usedTime;                        
-        }          
-        break; 
-      
+          pMainData->newTimerInterval = usedTime;
+	} else if (event.user.code == 2) {
+		int i;
+		for (i = 0; i < (1 << cur_step); i++)
+			bs_blob_collective_split(pMainData->pCollective);
+	} else if (event.user.code == 3) {
+		exit(0);
+        }
+	break;
       case SDL_QUIT: 
         exit(0); 
         break;