Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/display/cfgops.c

    r8a4ceaa rb3eeae5  
    5050static errno_t dispc_dev_assign(void *, sysarg_t, sysarg_t);
    5151static errno_t dispc_dev_unassign(void *, sysarg_t);
    52 static errno_t dispc_get_asgn_dev_list(void *, sysarg_t, dispcfg_dev_list_t **);
    5352static errno_t dispc_get_event(void *, dispcfg_ev_t *);
    5453
     
    6059        .dev_assign = dispc_dev_assign,
    6160        .dev_unassign = dispc_dev_unassign,
    62         .get_asgn_dev_list = dispc_get_asgn_dev_list,
    6361        .get_event = dispc_get_event,
    6462};
     
    197195        ds_cfgclient_t *cfgclient = (ds_cfgclient_t *)arg;
    198196        ds_seat_t *seat;
    199         ds_seat_t *s;
    200197
    201198        log_msg(LOG_DEFAULT, LVL_DEBUG, "dispcfg_seat_delete()");
     
    206203                ds_display_unlock(cfgclient->display);
    207204                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;
    215205        }
    216206
     
    291281}
    292282
    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 
    353283/** Get display configuration event.
    354284 *
Note: See TracChangeset for help on using the changeset viewer.