Changes in uspace/lib/ui/src/ui.c [983052c:26edcd6] in mainline
- File:
-
- 1 edited
-
uspace/lib/ui/src/ui.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/ui.c
r983052c r26edcd6 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2026 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 326 326 } 327 327 328 /** Resize UI after screen size change. 329 * 330 * @param ui UI 331 * @param rect New screen rectangle. 332 */ 333 static void ui_resize(ui_t *ui, gfx_rect_t *rect) 334 { 335 ui_window_t *wnd; 336 337 ui->rect = *rect; 338 339 /* Reposition/resize windows */ 340 wnd = ui_window_first(ui); 341 while (wnd != NULL) { 342 ui_window_update_placement(wnd); 343 wnd = ui_window_next(wnd); 344 } 345 346 /* 347 * XXX Resizing cleared console GC so we need to repaint the 348 * background. 349 */ 350 (void)ui_paint(ui); 351 } 352 328 353 static void ui_cons_event_process(ui_t *ui, cons_event_t *event) 329 354 { … … 331 356 ui_evclaim_t claim; 332 357 pos_event_t pos; 358 sysarg_t cols, rows; 359 gfx_rect_t rect; 360 errno_t rc; 333 361 334 362 awnd = ui_window_get_active(ui); … … 357 385 358 386 break; 387 case CEV_RESIZE: 388 rc = console_gc_resize(ui->cgc); 389 if (rc != EOK) { 390 /* XXX No good way to recover. */ 391 console_done(ui->console); 392 exit(1); 393 } 394 395 rc = console_get_size(ui->console, &cols, &rows); 396 if (rc != EOK) { 397 /* XXX No good way to recover. */ 398 console_done(ui->console); 399 exit(1); 400 } 401 402 ui_lock(ui); 403 404 rect.p0.x = 0; 405 rect.p0.y = 0; 406 rect.p1.x = cols; 407 rect.p1.y = rows; 408 409 ui_resize(ui, &rect); 410 ui_unlock(ui); 411 break; 359 412 } 360 413 } … … 407 460 errno_t rc; 408 461 gfx_context_t *gc; 409 ui_window_t * awnd;462 ui_window_t *wnd; 410 463 gfx_color_t *color = NULL; 411 464 … … 434 487 gfx_color_delete(color); 435 488 436 /* XXX Should repaint all windows */ 437 awnd = ui_window_get_active(ui); 438 if (awnd == NULL) 439 return EOK; 440 441 rc = ui_wdecor_paint(awnd->wdecor); 442 if (rc != EOK) 443 return rc; 444 445 return ui_window_paint(awnd); 489 /* Repaint all windows */ 490 wnd = ui_window_first(ui); 491 while (wnd != NULL) { 492 rc = ui_wdecor_paint(wnd->wdecor); 493 if (rc != EOK) 494 return rc; 495 496 rc = ui_window_paint(wnd); 497 if (rc != EOK) 498 return rc; 499 500 wnd = ui_window_next(wnd); 501 } 502 503 return EOK; 446 504 } 447 505 … … 563 621 void ui_lock(ui_t *ui) 564 622 { 623 if (ui->display != NULL) 624 display_lock(ui->display); 565 625 fibril_mutex_lock(&ui->lock); 566 626 } … … 577 637 { 578 638 fibril_mutex_unlock(&ui->lock); 639 if (ui->display != NULL) 640 display_unlock(ui->display); 579 641 } 580 642
Note:
See TracChangeset
for help on using the changeset viewer.
