Changeset dc5c303 in mainline for uspace/srv/hid/display/cfgops.c
- Timestamp:
- 2023-12-28T13:59:23Z (15 months ago)
- Children:
- 6b66de6b
- Parents:
- 42c2e65 (diff), f87ff8e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - git-author:
- boba-buba <120932204+boba-buba@…> (2023-12-28 13:59:23)
- git-committer:
- GitHub <noreply@…> (2023-12-28 13:59:23)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/display/cfgops.c
r42c2e65 rdc5c303 50 50 static errno_t dispc_dev_assign(void *, sysarg_t, sysarg_t); 51 51 static errno_t dispc_dev_unassign(void *, sysarg_t); 52 static errno_t dispc_get_asgn_dev_list(void *, sysarg_t, dispcfg_dev_list_t **); 52 53 static errno_t dispc_get_event(void *, dispcfg_ev_t *); 53 54 … … 59 60 .dev_assign = dispc_dev_assign, 60 61 .dev_unassign = dispc_dev_unassign, 62 .get_asgn_dev_list = dispc_get_asgn_dev_list, 61 63 .get_event = dispc_get_event, 62 64 }; … … 195 197 ds_cfgclient_t *cfgclient = (ds_cfgclient_t *)arg; 196 198 ds_seat_t *seat; 199 ds_seat_t *s; 197 200 198 201 log_msg(LOG_DEFAULT, LVL_DEBUG, "dispcfg_seat_delete()"); … … 203 206 ds_display_unlock(cfgclient->display); 204 207 return ENOENT; 208 } 209 210 /* Verify we are not deleting the last seat */ 211 s = ds_display_first_seat(cfgclient->display); 212 if (s == seat && ds_display_next_seat(s) == NULL) { 213 ds_display_unlock(cfgclient->display); 214 return EBUSY; 205 215 } 206 216 … … 281 291 } 282 292 293 /** Get assigned device list. 294 * 295 * @param arg Argument (CFG client) 296 * @param seat_id Seat ID 297 * @param rlist Place to store pointer to new list 298 * @return EOK on success or an error code 299 */ 300 static errno_t dispc_get_asgn_dev_list(void *arg, sysarg_t seat_id, 301 dispcfg_dev_list_t **rlist) 302 { 303 ds_cfgclient_t *cfgclient = (ds_cfgclient_t *)arg; 304 dispcfg_dev_list_t *list; 305 ds_seat_t *seat; 306 ds_idevcfg_t *idevcfg; 307 unsigned i; 308 309 log_msg(LOG_DEFAULT, LVL_DEBUG, "dispcfg_get_asgn_dev_list()"); 310 311 list = calloc(1, sizeof(dispcfg_dev_list_t)); 312 if (list == NULL) 313 return ENOMEM; 314 315 ds_display_lock(cfgclient->display); 316 317 seat = ds_display_find_seat(cfgclient->display, seat_id); 318 if (seat == NULL) { 319 ds_display_unlock(cfgclient->display); 320 free(list); 321 return ENOENT; 322 } 323 324 /* Count the number of devices */ 325 list->ndevs = 0; 326 idevcfg = ds_seat_first_idevcfg(seat); 327 while (idevcfg != NULL) { 328 ++list->ndevs; 329 idevcfg = ds_display_next_idevcfg(idevcfg); 330 } 331 332 /* Allocate array for device IDs */ 333 list->devs = calloc(list->ndevs, sizeof(sysarg_t)); 334 if (list->devs == NULL) { 335 ds_display_unlock(cfgclient->display); 336 free(list); 337 return ENOMEM; 338 } 339 340 /* Fill in device IDs */ 341 i = 0; 342 idevcfg = ds_seat_first_idevcfg(seat); 343 while (idevcfg != NULL) { 344 list->devs[i++] = idevcfg->svc_id; 345 idevcfg = ds_display_next_idevcfg(idevcfg); 346 } 347 348 ds_display_unlock(cfgclient->display); 349 *rlist = list; 350 return EOK; 351 } 352 283 353 /** Get display configuration event. 284 354 *
Note:
See TracChangeset
for help on using the changeset viewer.