diff options
Diffstat (limited to 'ivi-layermanagement-api/ilmInput')
-rw-r--r-- | ivi-layermanagement-api/ilmInput/include/ilm_input.h | 12 | ||||
-rw-r--r-- | ivi-layermanagement-api/ilmInput/src/ilm_input.c | 24 |
2 files changed, 36 insertions, 0 deletions
diff --git a/ivi-layermanagement-api/ilmInput/include/ilm_input.h b/ivi-layermanagement-api/ilmInput/include/ilm_input.h index 7c0008e..fd1fa91 100644 --- a/ivi-layermanagement-api/ilmInput/include/ilm_input.h +++ b/ivi-layermanagement-api/ilmInput/include/ilm_input.h @@ -117,6 +117,18 @@ ilmErrorTypes ilm_getInputFocus(t_ilm_surface **surfaceIDs, ilmInputDevice** bitmasks, t_ilm_uint *num_ids); +/** + * \brief get the name of default seat + * \ingroup ilmControl + * \param[out] seat_name A pointer to the memory where the seat name is + * stored. It is the caller's responsibility to free + * this memory after use. + * \return ILM_SUCCESS if the default seat is available + * \return ILM_FAILED if the default seat isn't available + */ +ilmErrorTypes +ilm_getDefaultSeat(t_ilm_string *seat_name); + #ifdef __cplusplus } /**/ #endif /* __cplusplus */ diff --git a/ivi-layermanagement-api/ilmInput/src/ilm_input.c b/ivi-layermanagement-api/ilmInput/src/ilm_input.c index eae9b61..979bf56 100644 --- a/ivi-layermanagement-api/ilmInput/src/ilm_input.c +++ b/ivi-layermanagement-api/ilmInput/src/ilm_input.c @@ -333,3 +333,27 @@ ilm_getInputFocus(t_ilm_surface **surfaceIDs, ilmInputDevice **bitmasks, return ILM_SUCCESS; } + +ILM_EXPORT ilmErrorTypes +ilm_getDefaultSeat(t_ilm_string *seat_name) +{ + struct ilm_control_context *ctx = NULL; + struct seat_context *seat = NULL; + + if (seat_name == NULL) { + fprintf(stderr, "Invalid Argument\n"); + return ILM_FAILED; + } + + *seat_name = NULL; + ctx = sync_and_acquire_instance(); + wl_list_for_each(seat, &ctx->wl.list_seat, link) { + if (seat->is_default) { + *seat_name = strdup(seat->seat_name); + break; + } + } + + release_instance(); + return (*seat_name) ? ILM_SUCCESS : ILM_FAILED; +} |