#define _TDM_H_
#include <stdint.h>
+#include <sys/types.h>
#include <tbm_surface.h>
#include <tbm_surface_queue.h>
#include <tbm_surface_internal.h>
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
}
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;