Changeset a35b458 in mainline for uspace/app/barber/barber.c
- Timestamp:
- 2018-03-02T20:10:49Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/barber/barber.c
r3061bc1 ra35b458 106 106 } 107 107 } 108 108 109 109 return true; 110 110 } … … 120 120 load_t *load = stats_get_load(&count); 121 121 load_t load_val; 122 122 123 123 if ((load != NULL) && (count > 0)) { 124 124 load_val = load[0]; … … 126 126 } else 127 127 load_val = 0; 128 128 129 129 return load_val; 130 130 } … … 138 138 * a lower threshold. 139 139 */ 140 140 141 141 suseconds_t delta = 1000000 / fps; 142 142 load_t load = get_load(); 143 143 144 144 if ((delta >= render_time) && (load < MIN_LOAD)) 145 145 fps++; 146 146 147 147 if (fps > MAX_FPS) 148 148 fps = MAX_FPS; 149 149 150 150 /* 151 151 * If we lack behind then immediately 152 152 * go to the lowest FPS. 153 153 */ 154 154 155 155 if (delta < render_time) 156 156 fps = MIN_FPS; 157 157 158 158 /* 159 159 * Crank down the FPS if the current 160 160 * load is above an upper threshold. 161 161 */ 162 162 163 163 if (load > MAX_LOAD) 164 164 fps--; 165 165 166 166 if (fps < MIN_FPS) 167 167 fps = MIN_FPS; 168 168 169 169 delta = 1000000 / fps; 170 170 171 171 fibril_timer_set(frame_timer, delta, frame_timer_callback, NULL); 172 172 } … … 175 175 { 176 176 pixel_t next_led_color = led_colors[led_color]; 177 177 178 178 led_color++; 179 179 if (led_color >= LED_COLORS) 180 180 led_color = 0; 181 181 182 182 list_foreach(led_devs, link, led_dev_t, dev) { 183 183 if (dev->sess) 184 184 led_dev_color_set(dev->sess, next_led_color); 185 185 } 186 186 187 187 plan_led_timer(); 188 188 } … … 192 192 struct timeval prev; 193 193 getuptime(&prev); 194 194 195 195 frame++; 196 196 if (frame >= FRAMES) 197 197 frame = 0; 198 198 199 199 update_canvas(frame_canvas, frames[frame]); 200 200 201 201 struct timeval cur; 202 202 getuptime(&cur); 203 203 204 204 plan_frame_timer(tv_sub_diff(&cur, &prev)); 205 205 } … … 211 211 if (rc != EOK) 212 212 return; 213 213 214 214 service_id_t *svcs; 215 215 size_t count; … … 217 217 if (rc != EOK) 218 218 return; 219 219 220 220 for (size_t i = 0; i < count; i++) { 221 221 bool known = false; 222 222 223 223 /* Determine whether we already know this device. */ 224 224 list_foreach(led_devs, link, led_dev_t, dev) { … … 228 228 } 229 229 } 230 230 231 231 if (!known) { 232 232 led_dev_t *dev = (led_dev_t *) calloc(1, sizeof(led_dev_t)); 233 233 if (!dev) 234 234 continue; 235 235 236 236 link_initialize(&dev->link); 237 237 dev->svc_id = svcs[i]; 238 238 dev->sess = loc_service_connect(svcs[i], INTERFACE_DDF, 0); 239 239 240 240 list_append(&dev->link, &led_devs); 241 241 } 242 242 } 243 243 244 244 // FIXME: Handle LED device removal 245 245 246 246 free(svcs); 247 247 } … … 253 253 return 1; 254 254 } 255 255 256 256 list_initialize(&led_devs); 257 257 errno_t rc = loc_register_cat_change_cb(loc_callback); … … 260 260 return 1; 261 261 } 262 262 263 263 led_timer = fibril_timer_create(NULL); 264 264 if (!led_timer) { … … 266 266 return 1; 267 267 } 268 268 269 269 frame_timer = fibril_timer_create(NULL); 270 270 if (!frame_timer) { … … 272 272 return 1; 273 273 } 274 274 275 275 if (!decode_frames()) 276 276 return 1; 277 277 278 278 winreg = argv[1]; 279 279 window_t *main_window = window_open(argv[1], NULL, … … 283 283 return 1; 284 284 } 285 285 286 286 frame_canvas = create_canvas(window_root(main_window), NULL, 287 287 FRAME_WIDTH, FRAME_HEIGHT, frames[frame]); 288 288 289 289 if (!frame_canvas) { 290 290 window_close(main_window); … … 292 292 return 1; 293 293 } 294 294 295 295 window_resize(main_window, 0, 0, FRAME_WIDTH + 8, FRAME_HEIGHT + 28, 296 296 WINDOW_PLACEMENT_RIGHT | WINDOW_PLACEMENT_BOTTOM); 297 297 window_exec(main_window); 298 298 299 299 plan_led_timer(); 300 300 plan_frame_timer(0); 301 301 302 302 task_retval(0); 303 303 async_manager(); 304 304 305 305 return 0; 306 306 }
Note:
See TracChangeset
for help on using the changeset viewer.