add tdm_vblank_set_client_ignore_global_fps 07/169007/2
authorBoram Park <boram1288.park@samsung.com>
Fri, 2 Feb 2018 00:47:06 +0000 (09:47 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Fri, 2 Feb 2018 05:46:16 +0000 (05:46 +0000)
Change-Id: I9b627988ed02dd6e22a2e6d52cd97d205497e857

include/tdm.h
src/tdm_vblank.c

index 18ef948..cb112f7 100644 (file)
@@ -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
index d9738fb..21dd98b 100644 (file)
@@ -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;