Changes in uspace/lib/display/src/disp_srv.c [cdd6fc9:35cffea] in mainline
- File:
-
- 1 edited
-
uspace/lib/display/src/disp_srv.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/display/src/disp_srv.c
rcdd6fc9 r35cffea 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2022 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 63 63 sysarg_t wnd_id; 64 64 ipc_call_t call; 65 display_wnd_params_enc_t eparams;66 65 display_wnd_params_t params; 67 char *caption;68 66 size_t size; 69 67 errno_t rc; … … 75 73 } 76 74 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); 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) { 113 83 async_answer_0(&call, rc); 114 84 async_answer_0(icall, rc); … … 117 87 118 88 if (srv->ops->window_create == NULL) { 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; 89 async_answer_0(icall, ENOTSUP); 90 return; 91 } 130 92 131 93 rc = srv->ops->window_create(srv->arg, ¶ms, &wnd_id); … … 241 203 242 204 if (!async_data_read_receive(&call, &size)) { 243 async_answer_0(&call, EREFUSED);244 205 async_answer_0(icall, EREFUSED); 245 206 return; … … 286 247 287 248 if (!async_data_read_receive(&call, &size)) { 288 async_answer_0(&call, EREFUSED);289 249 async_answer_0(icall, EREFUSED); 290 250 return; … … 393 353 } 394 354 395 static void display_window_minimize_srv(display_srv_t *srv, ipc_call_t *icall)396 {397 sysarg_t wnd_id;398 errno_t rc;399 400 wnd_id = ipc_get_arg1(icall);401 402 if (srv->ops->window_minimize == NULL) {403 async_answer_0(icall, ENOTSUP);404 return;405 }406 407 rc = srv->ops->window_minimize(srv->arg, wnd_id);408 async_answer_0(icall, rc);409 }410 411 355 static void display_window_maximize_srv(display_srv_t *srv, ipc_call_t *icall) 412 356 { … … 457 401 rc = srv->ops->window_set_cursor(srv->arg, wnd_id, cursor); 458 402 async_answer_0(icall, rc); 459 }460 461 static void display_window_set_caption_srv(display_srv_t *srv,462 ipc_call_t *icall)463 {464 sysarg_t wnd_id;465 ipc_call_t call;466 char *caption;467 size_t size;468 errno_t rc;469 470 wnd_id = ipc_get_arg1(icall);471 472 if (!async_data_write_receive(&call, &size)) {473 async_answer_0(&call, EREFUSED);474 async_answer_0(icall, EREFUSED);475 return;476 }477 478 caption = calloc(size + 1, 1);479 if (caption == NULL) {480 async_answer_0(&call, ENOMEM);481 async_answer_0(icall, ENOMEM);482 return;483 }484 485 rc = async_data_write_finalize(&call, caption, size);486 if (rc != EOK) {487 free(caption);488 async_answer_0(&call, rc);489 async_answer_0(icall, rc);490 return;491 }492 493 if (srv->ops->window_set_caption == NULL) {494 free(caption);495 async_answer_0(icall, ENOTSUP);496 return;497 }498 499 rc = srv->ops->window_set_caption(srv->arg, wnd_id, caption);500 async_answer_0(icall, rc);501 free(caption);502 403 } 503 404 … … 523 424 /* Transfer event data */ 524 425 if (!async_data_read_receive(&call, &size)) { 525 async_answer_0(&call, EREFUSED);526 426 async_answer_0(icall, EREFUSED); 527 427 return; … … 558 458 /* Transfer information */ 559 459 if (!async_data_read_receive(&call, &size)) { 560 async_answer_0(&call, EREFUSED);561 460 async_answer_0(icall, EREFUSED); 562 461 return; … … 631 530 display_window_resize_srv(srv, &call); 632 531 break; 633 case DISPLAY_WINDOW_MINIMIZE:634 display_window_minimize_srv(srv, &call);635 break;636 532 case DISPLAY_WINDOW_MAXIMIZE: 637 533 display_window_maximize_srv(srv, &call); … … 642 538 case DISPLAY_WINDOW_SET_CURSOR: 643 539 display_window_set_cursor_srv(srv, &call); 644 break;645 case DISPLAY_WINDOW_SET_CAPTION:646 display_window_set_caption_srv(srv, &call);647 540 break; 648 541 case DISPLAY_GET_EVENT:
Note:
See TracChangeset
for help on using the changeset viewer.
