Changeset 35cffea in mainline for uspace/lib/display/src
- Timestamp:
- 2022-05-19T08:02:31Z (3 years ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ad698f4
- Parents:
- fd05ea6
- git-author:
- Jiri Svoboda <jiri@…> (2022-05-18 17:02:12)
- git-committer:
- Jiri Svoboda <jiri@…> (2022-05-19 08:02:31)
- Location:
- uspace/lib/display/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/display/src/disp_srv.c
rfd05ea6 r35cffea 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2022 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 230 230 } 231 231 232 static void display_window_get_max_rect_srv(display_srv_t *srv, 233 ipc_call_t *icall) 234 { 235 sysarg_t wnd_id; 236 ipc_call_t call; 237 gfx_rect_t rect; 238 size_t size; 239 errno_t rc; 240 241 wnd_id = ipc_get_arg1(icall); 242 243 if (srv->ops->window_get_max_rect == NULL) { 244 async_answer_0(icall, ENOTSUP); 245 return; 246 } 247 248 if (!async_data_read_receive(&call, &size)) { 249 async_answer_0(icall, EREFUSED); 250 return; 251 } 252 253 rc = srv->ops->window_get_max_rect(srv->arg, wnd_id, &rect); 254 if (rc != EOK) { 255 async_answer_0(&call, rc); 256 async_answer_0(icall, rc); 257 return; 258 } 259 260 if (size != sizeof(gfx_rect_t)) { 261 async_answer_0(&call, EINVAL); 262 async_answer_0(icall, EINVAL); 263 return; 264 } 265 266 rc = async_data_read_finalize(&call, &rect, size); 267 if (rc != EOK) { 268 async_answer_0(&call, rc); 269 async_answer_0(icall, rc); 270 return; 271 } 272 273 async_answer_0(icall, EOK); 274 } 275 232 276 static void display_window_resize_req_srv(display_srv_t *srv, ipc_call_t *icall) 233 277 { … … 306 350 rc = srv->ops->window_resize(srv->arg, wnd_id, &wresize.offs, 307 351 &wresize.nrect); 352 async_answer_0(icall, rc); 353 } 354 355 static void display_window_maximize_srv(display_srv_t *srv, ipc_call_t *icall) 356 { 357 sysarg_t wnd_id; 358 errno_t rc; 359 360 wnd_id = ipc_get_arg1(icall); 361 362 if (srv->ops->window_maximize == NULL) { 363 async_answer_0(icall, ENOTSUP); 364 return; 365 } 366 367 rc = srv->ops->window_maximize(srv->arg, wnd_id); 368 async_answer_0(icall, rc); 369 } 370 371 static void display_window_unmaximize_srv(display_srv_t *srv, ipc_call_t *icall) 372 { 373 sysarg_t wnd_id; 374 errno_t rc; 375 376 wnd_id = ipc_get_arg1(icall); 377 378 if (srv->ops->window_unmaximize == NULL) { 379 async_answer_0(icall, ENOTSUP); 380 return; 381 } 382 383 rc = srv->ops->window_unmaximize(srv->arg, wnd_id); 308 384 async_answer_0(icall, rc); 309 385 } … … 445 521 display_window_get_pos_srv(srv, &call); 446 522 break; 523 case DISPLAY_WINDOW_GET_MAX_RECT: 524 display_window_get_max_rect_srv(srv, &call); 525 break; 447 526 case DISPLAY_WINDOW_RESIZE_REQ: 448 527 display_window_resize_req_srv(srv, &call); … … 450 529 case DISPLAY_WINDOW_RESIZE: 451 530 display_window_resize_srv(srv, &call); 531 break; 532 case DISPLAY_WINDOW_MAXIMIZE: 533 display_window_maximize_srv(srv, &call); 534 break; 535 case DISPLAY_WINDOW_UNMAXIMIZE: 536 display_window_unmaximize_srv(srv, &call); 452 537 break; 453 538 case DISPLAY_WINDOW_SET_CURSOR: -
uspace/lib/display/src/display.c
rfd05ea6 r35cffea 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2022 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 350 350 } 351 351 352 /** Get display window maximized rectangle. 353 * 354 * Get the rectangle to which a window would be maximized. 355 * 356 * @param window Window 357 * @param rect Place to store maximized rectangle 358 * @return EOK on success or an error code 359 */ 360 errno_t display_window_get_max_rect(display_window_t *window, gfx_rect_t *rect) 361 { 362 async_exch_t *exch; 363 aid_t req; 364 ipc_call_t answer; 365 errno_t rc; 366 367 exch = async_exchange_begin(window->display->sess); 368 req = async_send_1(exch, DISPLAY_WINDOW_GET_MAX_RECT, window->id, 369 &answer); 370 rc = async_data_read_start(exch, rect, sizeof (gfx_rect_t)); 371 async_exchange_end(exch); 372 if (rc != EOK) { 373 async_forget(req); 374 return rc; 375 } 376 377 async_wait_for(req, &rc); 378 if (rc != EOK) 379 return rc; 380 381 return EOK; 382 } 383 352 384 /** Request a window resize. 353 385 * … … 453 485 454 486 return EOK; 487 } 488 489 /** Maximize window. 490 * 491 * @param window Window 492 * @return EOK on success or an error code 493 */ 494 errno_t display_window_maximize(display_window_t *window) 495 { 496 async_exch_t *exch; 497 errno_t rc; 498 499 exch = async_exchange_begin(window->display->sess); 500 rc = async_req_1_0(exch, DISPLAY_WINDOW_MAXIMIZE, window->id); 501 async_exchange_end(exch); 502 503 return rc; 504 } 505 506 /** Unmaximize window. 507 * 508 * @param window Window 509 * @return EOK on success or an error code 510 */ 511 errno_t display_window_unmaximize(display_window_t *window) 512 { 513 async_exch_t *exch; 514 errno_t rc; 515 516 exch = async_exchange_begin(window->display->sess); 517 rc = async_req_1_0(exch, DISPLAY_WINDOW_UNMAXIMIZE, window->id); 518 async_exchange_end(exch); 519 520 return rc; 455 521 } 456 522
Note:
See TracChangeset
for help on using the changeset viewer.