}
int
-tbm_drm_helper_wl_auth_server_init(void *wl_display, int fd, const char *device_name, uint32_t flags)
+tbm_drm_helper_wl_auth_server_init(void *wl_display, int fd, const char *device_name, uint32_t flags)
{
if (!tbm_drm_auth_srv) {
TBM_RETURN_VAL_IF_FAIL(wl_display != NULL, 0);
TBM_RETURN_VAL_IF_FAIL(tbm_drm_auth_srv != NULL, 0);
tbm_drm_auth_srv->display = (struct wl_display *)wl_display;
- tbm_drm_auth_srv->device_name = strdup(device_name);
+ if (!device_name) {
+ tbm_drm_auth_srv->device_name = drmGetDeviceNameFromFd(fd);
+ if (!tbm_drm_auth_srv->device_name) {
+ TBM_ERR("fail to get device name!\n");
+ return 0;
+ }
+ } else {
+ tbm_drm_auth_srv->device_name = strdup(device_name);
+ }
tbm_drm_auth_srv->fd = fd;
tbm_drm_auth_srv->flags = flags;