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
}
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;