Changeset 7cc30e9 in mainline for uspace/lib/display/src/disp_srv.c
- Timestamp:
- 2022-10-24T17:50:46Z (3 years ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 913add60
- Parents:
- 7a05d924
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/display/src/disp_srv.c
r7a05d924 r7cc30e9 63 63 sysarg_t wnd_id; 64 64 ipc_call_t call; 65 display_wnd_params_enc_t eparams; 65 66 display_wnd_params_t params; 67 char *caption; 66 68 size_t size; 67 69 errno_t rc; … … 73 75 } 74 76 75 if (size != sizeof(display_wnd_params_t)) { 76 async_answer_0(&call, EINVAL); 77 async_answer_0(icall, EINVAL); 78 return; 79 } 80 81 rc = async_data_write_finalize(&call, ¶ms, size); 82 if (rc != EOK) { 77 if (size != sizeof(display_wnd_params_enc_t)) { 78 async_answer_0(&call, EINVAL); 79 async_answer_0(icall, EINVAL); 80 return; 81 } 82 83 rc = async_data_write_finalize(&call, &eparams, size); 84 if (rc != EOK) { 85 async_answer_0(&call, rc); 86 async_answer_0(icall, rc); 87 return; 88 } 89 90 caption = calloc(eparams.caption_size + 1, 1); 91 if (caption == NULL) { 92 async_answer_0(icall, ENOMEM); 93 return; 94 } 95 96 if (!async_data_write_receive(&call, &size)) { 97 free(caption); 98 async_answer_0(&call, EREFUSED); 99 async_answer_0(icall, EREFUSED); 100 return; 101 } 102 103 if (size != eparams.caption_size) { 104 free(caption); 105 async_answer_0(&call, EINVAL); 106 async_answer_0(icall, EINVAL); 107 return; 108 } 109 110 rc = async_data_write_finalize(&call, caption, eparams.caption_size); 111 if (rc != EOK) { 112 free(caption); 83 113 async_answer_0(&call, rc); 84 114 async_answer_0(icall, rc); … … 87 117 88 118 if (srv->ops->window_create == NULL) { 89 async_answer_0(icall, ENOTSUP); 90 return; 91 } 119 free(caption); 120 async_answer_0(icall, ENOTSUP); 121 return; 122 } 123 124 /* Decode the parameters from transport */ 125 params.rect = eparams.rect; 126 params.caption = caption; 127 params.min_size = eparams.min_size; 128 params.pos = eparams.pos; 129 params.flags = eparams.flags; 92 130 93 131 rc = srv->ops->window_create(srv->arg, ¶ms, &wnd_id); … … 401 439 rc = srv->ops->window_set_cursor(srv->arg, wnd_id, cursor); 402 440 async_answer_0(icall, rc); 441 } 442 443 static void display_window_set_caption_srv(display_srv_t *srv, 444 ipc_call_t *icall) 445 { 446 sysarg_t wnd_id; 447 ipc_call_t call; 448 char *caption; 449 size_t size; 450 errno_t rc; 451 452 wnd_id = ipc_get_arg1(icall); 453 454 if (!async_data_write_receive(&call, &size)) { 455 async_answer_0(&call, EREFUSED); 456 async_answer_0(icall, EREFUSED); 457 return; 458 } 459 460 caption = calloc(size + 1, 1); 461 if (caption == NULL) { 462 async_answer_0(&call, ENOMEM); 463 async_answer_0(icall, ENOMEM); 464 return; 465 } 466 467 rc = async_data_write_finalize(&call, caption, size); 468 if (rc != EOK) { 469 free(caption); 470 async_answer_0(&call, rc); 471 async_answer_0(icall, rc); 472 return; 473 } 474 475 if (srv->ops->window_set_caption == NULL) { 476 free(caption); 477 async_answer_0(icall, ENOTSUP); 478 return; 479 } 480 481 rc = srv->ops->window_set_caption(srv->arg, wnd_id, caption); 482 async_answer_0(icall, rc); 483 free(caption); 403 484 } 404 485 … … 538 619 case DISPLAY_WINDOW_SET_CURSOR: 539 620 display_window_set_cursor_srv(srv, &call); 621 break; 622 case DISPLAY_WINDOW_SET_CAPTION: 623 display_window_set_caption_srv(srv, &call); 540 624 break; 541 625 case DISPLAY_GET_EVENT:
Note:
See TracChangeset
for help on using the changeset viewer.