Changes in uspace/lib/display/src/disp_srv.c [5d380b6:c9927c66] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/display/src/disp_srv.c
r5d380b6 rc9927c66 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2021 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; 130 params.idev_id = eparams.idev_id; 89 async_answer_0(icall, ENOTSUP); 90 return; 91 } 131 92 132 93 rc = srv->ops->window_create(srv->arg, ¶ms, &wnd_id); … … 153 114 { 154 115 sysarg_t wnd_id; 155 sysarg_t pos_id;156 116 ipc_call_t call; 157 117 gfx_coord2_t pos; … … 160 120 161 121 wnd_id = ipc_get_arg1(icall); 162 pos_id = ipc_get_arg2(icall);163 122 164 123 if (!async_data_write_receive(&call, &size)) { … … 186 145 } 187 146 188 rc = srv->ops->window_move_req(srv->arg, wnd_id, &pos , pos_id);147 rc = srv->ops->window_move_req(srv->arg, wnd_id, &pos); 189 148 async_answer_0(icall, rc); 190 149 } … … 244 203 245 204 if (!async_data_read_receive(&call, &size)) { 246 async_answer_0(&call, EREFUSED);247 205 async_answer_0(icall, EREFUSED); 248 206 return; … … 263 221 264 222 rc = async_data_read_finalize(&call, &dpos, size); 265 if (rc != EOK) {266 async_answer_0(&call, rc);267 async_answer_0(icall, rc);268 return;269 }270 271 async_answer_0(icall, EOK);272 }273 274 static void display_window_get_max_rect_srv(display_srv_t *srv,275 ipc_call_t *icall)276 {277 sysarg_t wnd_id;278 ipc_call_t call;279 gfx_rect_t rect;280 size_t size;281 errno_t rc;282 283 wnd_id = ipc_get_arg1(icall);284 285 if (srv->ops->window_get_max_rect == NULL) {286 async_answer_0(icall, ENOTSUP);287 return;288 }289 290 if (!async_data_read_receive(&call, &size)) {291 async_answer_0(&call, EREFUSED);292 async_answer_0(icall, EREFUSED);293 return;294 }295 296 rc = srv->ops->window_get_max_rect(srv->arg, wnd_id, &rect);297 if (rc != EOK) {298 async_answer_0(&call, rc);299 async_answer_0(icall, rc);300 return;301 }302 303 if (size != sizeof(gfx_rect_t)) {304 async_answer_0(&call, EINVAL);305 async_answer_0(icall, EINVAL);306 return;307 }308 309 rc = async_data_read_finalize(&call, &rect, size);310 223 if (rc != EOK) { 311 224 async_answer_0(&call, rc); … … 323 236 display_wnd_rsztype_t rsztype; 324 237 gfx_coord2_t pos; 325 sysarg_t pos_id;326 238 size_t size; 327 239 errno_t rc; … … 329 241 wnd_id = ipc_get_arg1(icall); 330 242 rsztype = (display_wnd_rsztype_t) ipc_get_arg2(icall); 331 pos_id = ipc_get_arg3(icall);332 243 333 244 if (!async_data_write_receive(&call, &size)) { … … 355 266 } 356 267 357 rc = srv->ops->window_resize_req(srv->arg, wnd_id, rsztype, &pos, 358 pos_id); 268 rc = srv->ops->window_resize_req(srv->arg, wnd_id, rsztype, &pos); 359 269 async_answer_0(icall, rc); 360 270 } … … 399 309 } 400 310 401 static void display_window_minimize_srv(display_srv_t *srv, ipc_call_t *icall)402 {403 sysarg_t wnd_id;404 errno_t rc;405 406 wnd_id = ipc_get_arg1(icall);407 408 if (srv->ops->window_minimize == NULL) {409 async_answer_0(icall, ENOTSUP);410 return;411 }412 413 rc = srv->ops->window_minimize(srv->arg, wnd_id);414 async_answer_0(icall, rc);415 }416 417 static void display_window_maximize_srv(display_srv_t *srv, ipc_call_t *icall)418 {419 sysarg_t wnd_id;420 errno_t rc;421 422 wnd_id = ipc_get_arg1(icall);423 424 if (srv->ops->window_maximize == NULL) {425 async_answer_0(icall, ENOTSUP);426 return;427 }428 429 rc = srv->ops->window_maximize(srv->arg, wnd_id);430 async_answer_0(icall, rc);431 }432 433 static void display_window_unmaximize_srv(display_srv_t *srv, ipc_call_t *icall)434 {435 sysarg_t wnd_id;436 errno_t rc;437 438 wnd_id = ipc_get_arg1(icall);439 440 if (srv->ops->window_unmaximize == NULL) {441 async_answer_0(icall, ENOTSUP);442 return;443 }444 445 rc = srv->ops->window_unmaximize(srv->arg, wnd_id);446 async_answer_0(icall, rc);447 }448 449 311 static void display_window_set_cursor_srv(display_srv_t *srv, ipc_call_t *icall) 450 312 { … … 463 325 rc = srv->ops->window_set_cursor(srv->arg, wnd_id, cursor); 464 326 async_answer_0(icall, rc); 465 }466 467 static void display_window_set_caption_srv(display_srv_t *srv,468 ipc_call_t *icall)469 {470 sysarg_t wnd_id;471 ipc_call_t call;472 char *caption;473 size_t size;474 errno_t rc;475 476 wnd_id = ipc_get_arg1(icall);477 478 if (!async_data_write_receive(&call, &size)) {479 async_answer_0(&call, EREFUSED);480 async_answer_0(icall, EREFUSED);481 return;482 }483 484 caption = calloc(size + 1, 1);485 if (caption == NULL) {486 async_answer_0(&call, ENOMEM);487 async_answer_0(icall, ENOMEM);488 return;489 }490 491 rc = async_data_write_finalize(&call, caption, size);492 if (rc != EOK) {493 free(caption);494 async_answer_0(&call, rc);495 async_answer_0(icall, rc);496 return;497 }498 499 if (srv->ops->window_set_caption == NULL) {500 free(caption);501 async_answer_0(icall, ENOTSUP);502 return;503 }504 505 rc = srv->ops->window_set_caption(srv->arg, wnd_id, caption);506 async_answer_0(icall, rc);507 free(caption);508 327 } 509 328 … … 529 348 /* Transfer event data */ 530 349 if (!async_data_read_receive(&call, &size)) { 531 async_answer_0(&call, EREFUSED);532 350 async_answer_0(icall, EREFUSED); 533 351 return; … … 564 382 /* Transfer information */ 565 383 if (!async_data_read_receive(&call, &size)) { 566 async_answer_0(&call, EREFUSED);567 384 async_answer_0(icall, EREFUSED); 568 385 return; … … 628 445 display_window_get_pos_srv(srv, &call); 629 446 break; 630 case DISPLAY_WINDOW_GET_MAX_RECT:631 display_window_get_max_rect_srv(srv, &call);632 break;633 447 case DISPLAY_WINDOW_RESIZE_REQ: 634 448 display_window_resize_req_srv(srv, &call); … … 637 451 display_window_resize_srv(srv, &call); 638 452 break; 639 case DISPLAY_WINDOW_MINIMIZE:640 display_window_minimize_srv(srv, &call);641 break;642 case DISPLAY_WINDOW_MAXIMIZE:643 display_window_maximize_srv(srv, &call);644 break;645 case DISPLAY_WINDOW_UNMAXIMIZE:646 display_window_unmaximize_srv(srv, &call);647 break;648 453 case DISPLAY_WINDOW_SET_CURSOR: 649 454 display_window_set_cursor_srv(srv, &call); 650 break;651 case DISPLAY_WINDOW_SET_CAPTION:652 display_window_set_caption_srv(srv, &call);653 455 break; 654 456 case DISPLAY_GET_EVENT:
Note:
See TracChangeset
for help on using the changeset viewer.