From: Boram Park Date: Fri, 15 Sep 2017 04:15:14 +0000 (+0900) Subject: tbm_drm_helper: remove setenv usage in server side X-Git-Tag: accepted/tizen/4.0/unified/20170925.071801~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F20%2F150720%2F9;p=platform%2Fcore%2Fuifw%2Flibtbm.git tbm_drm_helper: remove setenv usage in server side Change-Id: I92280799de33036da24b848a7d4d1f22cbcefb5d --- diff --git a/src/tbm_drm_helper.h b/src/tbm_drm_helper.h index d25f6d8..97b240c 100644 --- a/src/tbm_drm_helper.h +++ b/src/tbm_drm_helper.h @@ -58,40 +58,33 @@ int tbm_drm_helper_wl_auth_server_init(void *wl_display, int fd, const char *de void tbm_drm_helper_wl_auth_server_deinit(void); /** - * @brief Get a fd from the specific enviroment variable. + * @brief Get a drm master fd. * @details - * This function will dup the fd of the given enviroment variable. + * This function will dup the drm master fd. The Caller SHOULD close the fd. - In DRM system, a drm-master-fd SHOULD be shared between TDM backend and - TBM backend in display server side by using "TDM_DRM_MASTER_FD" and "TBM_DRM_MASTER_FD". - * @param[in] env The given enviroment variable + In DRM system, a drm master fd SHOULD be shared between TDM backend and + TBM backend in display server side. * @return fd if success. Otherwise, -1. - * @see #tdm_helper_set_tbm_master_fd() + * @see #tbm_drm_helper_set_tbm_master_fd() + * @see #tbm_drm_helper_unset_tbm_master_fd() */ int tbm_drm_helper_get_master_fd(void); /** - * @brief Set the given fd to TBM_DRM_MASTER_FD enviroment variable. + * @brief Set a drm master fd with the given fd. * @details - * In DRM system, a drm-master-fd @b SHOULD be shared between TDM backend and - TBM backend in display server side by using "TDM_DRM_MASTER_FD" - and "TBM_DRM_MASTER_FD". + * In DRM system, a drm master fd @b SHOULD be shared between TDM backend and + TBM backend in display server side. * @param[in] fd The given fd - * @see #tdm_helper_set_tbm_master_fd() + * @see #tbm_drm_helper_get_master_fd() * @see #tbm_drm_helper_unset_tbm_master_fd() */ void tbm_drm_helper_set_tbm_master_fd(int fd); /** - * @brief Unset the TBM_DRM_MASTER_FD enviroment variable. - * @details - * In DRM system, a drm-master-fd @b SHOULD be shared between TDM backend and - TBM backend in display server side by using "TDM_DRM_MASTER_FD" - and "TBM_DRM_MASTER_FD". - * @param[in] env The given enviroment variable - * @param[in] fd The given fd - * @see #tdm_helper_set_tbm_master_fd() - * @see #tbm_drm_helper_unset_tbm_master_fd() + * @brief Unset a drm master fd. + * @see #tbm_drm_helper_get_master_fd() + * @see #tbm_drm_helper_set_tbm_master_fd() */ void tbm_drm_helper_unset_tbm_master_fd(void); diff --git a/src/tbm_drm_helper_server.c b/src/tbm_drm_helper_server.c index a440175..cb6254e 100644 --- a/src/tbm_drm_helper_server.c +++ b/src/tbm_drm_helper_server.c @@ -53,6 +53,8 @@ struct wayland_tbm_drm_auth_server { struct wayland_tbm_drm_auth_server *tbm_drm_auth_srv; +static int tbm_drm_master_fd = -1; + /* LCOV_EXCL_START */ static void _send_server_auth_info(struct wayland_tbm_drm_auth_server *tbm_drm_auth_srv, @@ -298,42 +300,47 @@ tbm_drm_helper_wl_auth_server_deinit(void) int tbm_drm_helper_get_master_fd(void) { - const char *value; - int flags, fd = -1; - int new_fd = -1; - char *end; - errno = 0; - - value = (const char*)getenv("TDM_DRM_MASTER_FD"); - if (!value) - return -1; + int new_fd, flags, fd = -1; - const long int sl = strtol(value, &end, 10); - if (end == value) { - TBM_LOG_E("%s: not a decimal number\n", value); - return -1; - } else if (*end != '\0') { - TBM_LOG_E("%s: extra characters at end of input: %s\n", value, end); - return -1; - } else if ((sl == LONG_MIN || sl == LONG_MAX) && errno == ERANGE) { - TBM_LOG_E("%s out of range of type long\n", value); - return -1; - } else if (sl >= INT_MAX) { - TBM_LOG_E("%ld greater than INT_MAX\n", sl); - return -1; - } else if (sl <= INT_MIN) { - TBM_LOG_E("%ld less than INT_MIN\n", sl); - return -1; - } else { - int fd_max = tbm_bufmgr_get_fd_limit(); - fd = (int)sl; - if (fd < 0 || fd > fd_max) { - TBM_LOG_E("%d out of fd range\n", fd); +#if 1 /* TODO: can't remove below at this time. This code SHOULD be removed later */ + const char *value = (const char*)getenv("TDM_DRM_MASTER_FD"); + if (value) { + char *end; + const long int sl = strtol(value, &end, 10); + + if (end == value) { + TBM_LOG_E("%s: not a decimal number\n", value); + return -1; + } else if (*end != '\0') { + TBM_LOG_E("%s: extra characters at end of input: %s\n", value, end); + return -1; + } else if ((sl == LONG_MIN || sl == LONG_MAX) && errno == ERANGE) { + TBM_LOG_E("%s out of range of type long\n", value); + return -1; + } else if (sl >= INT_MAX) { + TBM_LOG_E("%ld greater than INT_MAX\n", sl); + return -1; + } else if (sl <= INT_MIN) { + TBM_LOG_E("%ld less than INT_MIN\n", sl); return -1; + } else { + int fd_max = tbm_bufmgr_get_fd_limit(); + fd = (int)sl; + if (fd < 0 || fd > fd_max) { + TBM_LOG_E("%d out of fd range\n", fd); + return -1; + } } + } else +#endif + fd = tbm_drm_master_fd; + + if (fd == -1) { + TBM_LOG_I("no presetted TBM DRM MASTER FD"); + return -1; } - TBM_LOG_I("TDM_DRM_MASTER_FD: %d\n", fd); + TBM_LOG_I("TBM DRM MASTER FD: %d\n", fd); flags = fcntl(fd, F_GETFD); if (flags == -1) { @@ -361,30 +368,29 @@ tbm_drm_helper_get_master_fd(void) void tbm_drm_helper_set_tbm_master_fd(int fd) { - char buf[32]; - int ret; + int fd_max = tbm_bufmgr_get_fd_limit(); - snprintf(buf, sizeof(buf), "%d", fd); + if (tbm_drm_master_fd == fd) + return; - ret = setenv("TBM_DRM_MASTER_FD", (const char*)buf, 1); - if (ret) { - TBM_LOG_E("failed to set TIZEN_DRM_MASTER_FD to %d\n", fd); + if (fd < 0 || fd > fd_max) { + TBM_LOG_E("%d out of fd range\n", fd); return; } - TBM_LOG_I("TBM_DRM_MASTER_FD: %d\n", fd); + if (tbm_drm_master_fd != -1) + TBM_LOG_W("already has TBM DRM MASTER FD: %d\n", tbm_drm_master_fd); + + tbm_drm_master_fd = fd; + + TBM_LOG_I("TBM DRM MASTER FD: %d\n", tbm_drm_master_fd); } void tbm_drm_helper_unset_tbm_master_fd(void) { - int ret; - - ret = unsetenv("TBM_DRM_MASTER_FD"); - if (ret) { - TBM_LOG_E("failed to unset TBM_DRM_MASTER_FD\n"); - return; - } + tbm_drm_master_fd = -1; + TBM_LOG_I("TBM DRM MASTER FD: %d\n", tbm_drm_master_fd); } /* LCOV_EXCL_STOP */