From ab5e79a4ff96ac99dde25f76782066c4c181d3ca Mon Sep 17 00:00:00 2001 From: Boram Park Date: Wed, 27 Dec 2017 14:57:36 +0900 Subject: [PATCH] vblank: get the client pid of a vblank object. Change-Id: I7fa29f1b03720ec93344893ea8a8bf3e0c8a6c72 --- include/tdm.h | 10 ++++++++++ src/tdm_vblank.c | 25 +++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/include/tdm.h b/include/tdm.h index 9f8ea82..c843eef 100644 --- a/include/tdm.h +++ b/include/tdm.h @@ -37,6 +37,7 @@ #define _TDM_H_ #include +#include #include #include #include @@ -1322,6 +1323,15 @@ void tdm_vblank_destroy(tdm_vblank *vblank); /** + * @brief Get the client PID for a vblank object + * @param[in] vblank A vblank object + * @param[out] pid PID of vblank's client + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + */ +tdm_error +tdm_vblank_get_client_pid(tdm_vblank *vblank, pid_t *pid); + +/** * @brief Set the name to a vblank object * @details The default name is "unknown" * @param[in] vblank A vblank object diff --git a/src/tdm_vblank.c b/src/tdm_vblank.c index bb62f42..91d04f4 100644 --- a/src/tdm_vblank.c +++ b/src/tdm_vblank.c @@ -715,6 +715,31 @@ tdm_vblank_destroy(tdm_vblank *vblank) } EXTERN tdm_error +tdm_vblank_get_client_pid(tdm_vblank *vblank, pid_t *pid) +{ + tdm_private_vblank *private_vblank = vblank; + struct wl_client *client; + + TDM_RETURN_VAL_IF_FAIL(tdm_vblank_is_valid(vblank), TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(pid != NULL, TDM_ERROR_INVALID_PARAMETER); + + if (!private_vblank->resource) { + *pid = 0; + return TDM_ERROR_NONE; + } + + client = wl_resource_get_client(private_vblank->resource); + if (!client) { + *pid = 0; + return TDM_ERROR_NONE; + } + + wl_client_get_credentials(client, pid, NULL, NULL); + + return TDM_ERROR_NONE; +} + +EXTERN tdm_error tdm_vblank_set_name(tdm_vblank *vblank, const char *name) { tdm_private_vblank *private_vblank = vblank; -- 2.7.4