Changeset 983052c in mainline for uspace/lib/ui
- Timestamp:
- 2023-10-10T12:30:54Z (2 years ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- bd2fab5
- Parents:
- 9bec33a
- git-author:
- Jiri Svoboda <jiri@…> (2023-10-09 18:30:06)
- git-committer:
- Jiri Svoboda <jiri@…> (2023-10-10 12:30:54)
- Location:
- uspace/lib/ui
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/include/ui/ui.h
r9bec33a r983052c 57 57 extern errno_t ui_suspend(ui_t *); 58 58 extern errno_t ui_resume(ui_t *); 59 extern bool ui_is_suspended(ui_t *); 59 60 extern void ui_lock(ui_t *); 60 61 extern void ui_unlock(ui_t *); -
uspace/lib/ui/private/ui.h
r9bec33a r983052c 61 61 /** Output owned by UI, clean up when destroying UI */ 62 62 bool myoutput; 63 /** @c true iff UI is suspended */ 64 bool suspended; 63 65 /** @c true if terminating */ 64 66 bool quit; -
uspace/lib/ui/src/ui.c
r9bec33a r983052c 338 338 switch (event->type) { 339 339 case CEV_KEY: 340 ui_lock(ui); 340 341 ui_window_send_kbd(awnd, &event->ev.key); 342 ui_unlock(ui); 341 343 break; 342 344 case CEV_POS: … … 348 350 claim = ui_wdecor_pos_event(awnd->wdecor, &pos); 349 351 /* Note: If event is claimed, awnd might not be valid anymore */ 350 if (claim == ui_unclaimed) 352 if (claim == ui_unclaimed) { 353 ui_lock(ui); 351 354 ui_window_send_pos(awnd, &pos); 355 ui_unlock(ui); 356 } 352 357 353 358 break; … … 454 459 errno_t ui_suspend(ui_t *ui) 455 460 { 456 if (ui->cgc == NULL) 461 errno_t rc; 462 463 assert(!ui->suspended); 464 465 if (ui->cgc == NULL) { 466 ui->suspended = true; 457 467 return EOK; 468 } 458 469 459 470 (void) console_set_caption(ui->console, ""); 460 return console_gc_suspend(ui->cgc); 471 rc = console_gc_suspend(ui->cgc); 472 if (rc != EOK) 473 return rc; 474 475 ui->suspended = true; 476 return EOK; 461 477 } 462 478 … … 477 493 cons_event_t ev; 478 494 479 if (ui->cgc == NULL) 495 assert(ui->suspended); 496 497 if (ui->cgc == NULL) { 498 ui->suspended = false; 480 499 return EOK; 500 } 481 501 482 502 rc = console_get_pos(ui->console, &col, &row); … … 510 530 return rc; 511 531 532 ui->suspended = false; 533 512 534 awnd = ui_window_get_active(ui); 513 535 if (awnd != NULL) 514 536 (void) console_set_caption(ui->console, awnd->wdecor->caption); 515 537 516 return gfx_cursor_set_visible(console_gc_get_ctx(ui->cgc), false); 538 rc = gfx_cursor_set_visible(console_gc_get_ctx(ui->cgc), false); 539 if (rc != EOK) 540 return rc; 541 542 return EOK; 543 } 544 545 /** Determine if UI is suspended. 546 * 547 * @param ui UI 548 * @return @c true iff UI is suspended 549 */ 550 bool ui_is_suspended(ui_t *ui) 551 { 552 return ui->suspended; 517 553 } 518 554 -
uspace/lib/ui/test/ui.c
r9bec33a r983052c 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 69 69 } 70 70 71 /** ui_suspend() / ui_resume() do nothing if we don't have a console */ 71 /** ui_suspend() / ui_resume() do nothing if we don't have a console, 72 * ui_is_suspended() returns suspend status 73 */ 72 74 PCUT_TEST(suspend_resume) 73 75 { … … 79 81 PCUT_ASSERT_NOT_NULL(ui); 80 82 83 PCUT_ASSERT_FALSE(ui_is_suspended(ui)); 84 81 85 rc = ui_suspend(ui); 82 86 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 87 88 PCUT_ASSERT_TRUE(ui_is_suspended(ui)); 89 83 90 rc = ui_resume(ui); 84 91 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 92 93 PCUT_ASSERT_FALSE(ui_is_suspended(ui)); 85 94 86 95 ui_destroy(ui);
Note:
See TracChangeset
for help on using the changeset viewer.