Changeset 4d9c807 in mainline for uspace/lib/display/src
- Timestamp:
- 2019-12-13T19:02:10Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- fdc8e40
- Parents:
- 4fbdc3d
- Location:
- uspace/lib/display/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/display/src/disp_srv.c
r4fbdc3d r4d9c807 62 62 { 63 63 sysarg_t wnd_id; 64 ipc_call_t call; 65 display_wnd_params_t params; 66 size_t size; 64 67 errno_t rc; 65 68 66 69 printf("display_window_create_srv\n"); 70 71 if (!async_data_write_receive(&call, &size)) { 72 async_answer_0(&call, EREFUSED); 73 async_answer_0(icall, EREFUSED); 74 return; 75 } 76 77 if (size != sizeof(display_wnd_params_t)) { 78 async_answer_0(&call, EINVAL); 79 async_answer_0(icall, EINVAL); 80 return; 81 } 82 83 rc = async_data_write_finalize(&call, ¶ms, size); 84 if (rc != EOK) { 85 async_answer_0(&call, rc); 86 async_answer_0(icall, rc); 87 return; 88 } 67 89 68 90 if (srv->ops->window_create == NULL) { … … 71 93 } 72 94 73 rc = srv->ops->window_create(srv->arg, & wnd_id);95 rc = srv->ops->window_create(srv->arg, ¶ms, &wnd_id); 74 96 async_answer_1(icall, rc, wnd_id); 75 97 } -
uspace/lib/display/src/display.c
r4fbdc3d r4d9c807 36 36 #include <ipcgfx/client.h> 37 37 #include <loc.h> 38 #include <mem.h> 38 39 #include <stdlib.h> 39 40 … … 133 134 } 134 135 136 /** Initialize window parameters structure. 137 * 138 * @param params Window parameters structure 139 */ 140 void display_wnd_params_init(display_wnd_params_t *params) 141 { 142 memset(params, 0, sizeof(*params)); 143 } 144 135 145 /** Create a display window. 136 146 * 137 147 * @param display Display 148 * @param params Window parameters 138 149 * @param cb Callback functions 139 150 * @param cb_arg Argument to callback functions … … 141 152 * @return EOK on success or an error code 142 153 */ 143 errno_t display_window_create(display_t *display, display_wnd_ cb_t *cb,144 void *cb_arg, display_window_t **rwindow)154 errno_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) 145 156 { 146 157 display_window_t *window; 147 158 async_exch_t *exch; 148 sysarg_t wnd_id; 159 aid_t req; 160 ipc_call_t answer; 149 161 errno_t rc; 150 162 … … 154 166 155 167 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; 164 179 165 180 window->display = display; 166 window->id = wnd_id;181 window->id = ipc_get_arg1(&answer); 167 182 window->cb = cb; 168 183 window->cb_arg = cb_arg;
Note:
See TracChangeset
for help on using the changeset viewer.