From 8bd17e55805dadd575dfc648b329cabd67428cc7 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 2 Feb 2018 09:47:06 +0900 Subject: [PATCH] add tdm_vblank_set_client_ignore_global_fps Change-Id: I9b627988ed02dd6e22a2e6d52cd97d205497e857 --- include/tdm.h | 10 ++++++++++ src/tdm_vblank.c | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/include/tdm.h b/include/tdm.h index 18ef948..cb112f7 100644 --- a/include/tdm.h +++ b/include/tdm.h @@ -1268,6 +1268,16 @@ tdm_error tdm_vblank_set_client_vblank_fps(unsigned int pid, const char *name, unsigned int fps); /** + * @brief Set the ignore global fps for the given PID and name. + * @param[in] pid The process ID + * @param[in] name The client vblank name + * @param[in] ignore 1: ignore 0:not ignore(default) + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + */ +tdm_error +tdm_vblank_set_client_ignore_global_fps(unsigned int pid, const char *name, unsigned int ignore); + +/** * @brief Set the vblank global fps for the entire system. * @param[in] enable 1:enable, 0:disable * @param[in] fps The vblank global fps diff --git a/src/tdm_vblank.c b/src/tdm_vblank.c index d9738fb..21dd98b 100644 --- a/src/tdm_vblank.c +++ b/src/tdm_vblank.c @@ -490,6 +490,46 @@ tdm_vblank_set_client_vblank_fps(unsigned int pid, const char *name, unsigned in } EXTERN tdm_error +tdm_vblank_set_client_ignore_global_fps(unsigned int pid, const char *name, unsigned int ignore) +{ + tdm_private_vblank *v = NULL; + + TDM_RETURN_VAL_IF_FAIL(pid > 0, TDM_ERROR_INVALID_PARAMETER); + + TDM_INFO("pid: %u, name: %s, ignore: %u", pid, name, ignore); + + pthread_mutex_lock(&valid_list_lock); + LIST_FOR_EACH_ENTRY(v, &valid_vblank_list, valid_link) { + struct wl_client *client; + pid_t client_pid = 0; + + if (!v->resource) + continue; + + client = wl_resource_get_client(v->resource); + if (!client) + continue; + + wl_client_get_credentials(client, &client_pid, NULL, NULL); + + if (client_pid != pid) + continue; + + if (name && strncmp(name, TDM_VBLANK_DEFAULT_NAME, TDM_NAME_LEN)) { + if (strncmp(v->name, name, TDM_NAME_LEN)) + continue; + } + + tdm_vblank_ignore_global_fps(v, ignore); + + TDM_INFO("(pid:%u) '%s' ignore changed: %u", pid, v->name, ignore); + } + pthread_mutex_unlock(&valid_list_lock); + + return TDM_ERROR_NONE; +} + +EXTERN tdm_error tdm_vblank_enable_global_fps(unsigned int enable, unsigned int fps) { tdm_private_vblank *v = NULL; -- 2.7.4