Changes in uspace/lib/display/src/disp_srv.c [35cffea:cdd6fc9] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/display/src/disp_srv.c
r35cffea rcdd6fc9 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 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; 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); … … 203 241 204 242 if (!async_data_read_receive(&call, &size)) { 243 async_answer_0(&call, EREFUSED); 205 244 async_answer_0(icall, EREFUSED); 206 245 return; … … 247 286 248 287 if (!async_data_read_receive(&call, &size)) { 288 async_answer_0(&call, EREFUSED); 249 289 async_answer_0(icall, EREFUSED); 250 290 return; … … 353 393 } 354 394 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 355 411 static void display_window_maximize_srv(display_srv_t *srv, ipc_call_t *icall) 356 412 { … … 401 457 rc = srv->ops->window_set_cursor(srv->arg, wnd_id, cursor); 402 458 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); 403 502 } 404 503 … … 424 523 /* Transfer event data */ 425 524 if (!async_data_read_receive(&call, &size)) { 525 async_answer_0(&call, EREFUSED); 426 526 async_answer_0(icall, EREFUSED); 427 527 return; … … 458 558 /* Transfer information */ 459 559 if (!async_data_read_receive(&call, &size)) { 560 async_answer_0(&call, EREFUSED); 460 561 async_answer_0(icall, EREFUSED); 461 562 return; … … 530 631 display_window_resize_srv(srv, &call); 531 632 break; 633 case DISPLAY_WINDOW_MINIMIZE: 634 display_window_minimize_srv(srv, &call); 635 break; 532 636 case DISPLAY_WINDOW_MAXIMIZE: 533 637 display_window_maximize_srv(srv, &call); … … 538 642 case DISPLAY_WINDOW_SET_CURSOR: 539 643 display_window_set_cursor_srv(srv, &call); 644 break; 645 case DISPLAY_WINDOW_SET_CAPTION: 646 display_window_set_caption_srv(srv, &call); 540 647 break; 541 648 case DISPLAY_GET_EVENT:
Note:
See TracChangeset
for help on using the changeset viewer.