Changeset 35cffea in mainline for uspace/lib/display/src/disp_srv.c


Ignore:
Timestamp:
2022-05-19T08:02:31Z (2 years ago)
Author:
Jiri Svoboda <jiri@…>
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)
Message:

Maximizing/unmaximizing a window

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/display/src/disp_srv.c

    rfd05ea6 r35cffea  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2022 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    230230}
    231231
     232static 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
    232276static void display_window_resize_req_srv(display_srv_t *srv, ipc_call_t *icall)
    233277{
     
    306350        rc = srv->ops->window_resize(srv->arg, wnd_id, &wresize.offs,
    307351            &wresize.nrect);
     352        async_answer_0(icall, rc);
     353}
     354
     355static 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
     371static 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);
    308384        async_answer_0(icall, rc);
    309385}
     
    445521                        display_window_get_pos_srv(srv, &call);
    446522                        break;
     523                case DISPLAY_WINDOW_GET_MAX_RECT:
     524                        display_window_get_max_rect_srv(srv, &call);
     525                        break;
    447526                case DISPLAY_WINDOW_RESIZE_REQ:
    448527                        display_window_resize_req_srv(srv, &call);
     
    450529                case DISPLAY_WINDOW_RESIZE:
    451530                        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);
    452537                        break;
    453538                case DISPLAY_WINDOW_SET_CURSOR:
Note: See TracChangeset for help on using the changeset viewer.