Changeset 4d9c807 in mainline for uspace/lib/display/src/display.c


Ignore:
Timestamp:
2019-12-13T19:02:10Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
fdc8e40
Parents:
4fbdc3d
Message:

Communicate window dimensions to display server

File:
1 edited

Legend:

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

    r4fbdc3d r4d9c807  
    3636#include <ipcgfx/client.h>
    3737#include <loc.h>
     38#include <mem.h>
    3839#include <stdlib.h>
    3940
     
    133134}
    134135
     136/** Initialize window parameters structure.
     137 *
     138 * @param params Window parameters structure
     139 */
     140void display_wnd_params_init(display_wnd_params_t *params)
     141{
     142        memset(params, 0, sizeof(*params));
     143}
     144
    135145/** Create a display window.
    136146 *
    137147 * @param display Display
     148 * @param params Window parameters
    138149 * @param cb Callback functions
    139150 * @param cb_arg Argument to callback functions
     
    141152 * @return EOK on success or an error code
    142153 */
    143 errno_t display_window_create(display_t *display, display_wnd_cb_t *cb,
    144     void *cb_arg, display_window_t **rwindow)
     154errno_t display_window_create(display_t *display, display_wnd_params_t *params,
     155    display_wnd_cb_t *cb, void *cb_arg, display_window_t **rwindow)
    145156{
    146157        display_window_t *window;
    147158        async_exch_t *exch;
    148         sysarg_t wnd_id;
     159        aid_t req;
     160        ipc_call_t answer;
    149161        errno_t rc;
    150162
     
    154166
    155167        exch = async_exchange_begin(display->sess);
    156         rc = async_req_0_1(exch, DISPLAY_WINDOW_CREATE, &wnd_id);
    157 
    158         async_exchange_end(exch);
    159 
    160         if (rc != EOK) {
    161                 free(window);
    162                 return rc;
    163         }
     168        req = async_send_0(exch, DISPLAY_WINDOW_CREATE, &answer);
     169        rc = async_data_write_start(exch, params, sizeof (display_wnd_params_t));
     170        async_exchange_end(exch);
     171        if (rc != EOK) {
     172                async_forget(req);
     173                return rc;
     174        }
     175
     176        async_wait_for(req, &rc);
     177        if (rc != EOK)
     178                return rc;
    164179
    165180        window->display = display;
    166         window->id = wnd_id;
     181        window->id = ipc_get_arg1(&answer);
    167182        window->cb = cb;
    168183        window->cb_arg = cb_arg;
Note: See TracChangeset for help on using the changeset viewer.