summaryrefslogtreecommitdiff
path: root/xf86drm.c
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2015-09-04 08:08:02 -0400
committerRob Clark <robclark@freedesktop.org>2015-09-04 08:40:57 -0400
commiteb7c2d5e63e0e9d133b16880e36c14676276d412 (patch)
tree39ed81b04f35ac8844a1423cce2b1704c5c81701 /xf86drm.c
parent7d98a93cec1c9b3b4b790799242fc35dbaf3a9c8 (diff)
downloadlibdrm-eb7c2d5e63e0e9d133b16880e36c14676276d412.tar.gz
libdrm-eb7c2d5e63e0e9d133b16880e36c14676276d412.tar.bz2
libdrm-eb7c2d5e63e0e9d133b16880e36c14676276d412.zip
drm: make individual drm_server_info fxns optional
For android / drm_gralloc, we want to hook up our own debug_print() without bothering with the reset of it. Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'xf86drm.c')
-rw-r--r--xf86drm.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/xf86drm.c b/xf86drm.c
index 4b666125..a5a7b413 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -134,7 +134,8 @@ drmMsg(const char *format, ...)
{
va_list ap;
const char *env;
- if (((env = getenv("LIBGL_DEBUG")) && strstr(env, "verbose")) || drm_server_info)
+ if (((env = getenv("LIBGL_DEBUG")) && strstr(env, "verbose")) ||
+ (drm_server_info && drm_server_info->debug_print))
{
va_start(ap, format);
if (drm_server_info) {
@@ -339,7 +340,7 @@ static int drmOpenDevice(dev_t dev, int minor, int type)
sprintf(buf, dev_name, DRM_DIR_NAME, minor);
drmMsg("drmOpenDevice: node name is %s\n", buf);
- if (drm_server_info) {
+ if (drm_server_info && drm_server_info->get_perms) {
drm_server_info->get_perms(&serv_group, &serv_mode);
devmode = serv_mode ? serv_mode : DRM_DEV_MODE;
devmode &= ~(S_IXUSR|S_IXGRP|S_IXOTH);
@@ -362,7 +363,7 @@ static int drmOpenDevice(dev_t dev, int minor, int type)
mknod(buf, S_IFCHR | devmode, dev);
}
- if (drm_server_info) {
+ if (drm_server_info && drm_server_info->get_perms) {
group = ((int)serv_group >= 0) ? serv_group : DRM_DEV_GID;
chown_check_return(buf, user, group);
chmod(buf, devmode);
@@ -407,7 +408,7 @@ wait_for_udev:
return DRM_ERR_NOT_ROOT;
remove(buf);
mknod(buf, S_IFCHR | devmode, dev);
- if (drm_server_info) {
+ if (drm_server_info && drm_server_info->get_perms) {
chown_check_return(buf, user, group);
chmod(buf, devmode);
}
@@ -735,7 +736,8 @@ int drmOpen(const char *name, const char *busid)
*/
int drmOpenWithType(const char *name, const char *busid, int type)
{
- if (!drmAvailable() && name != NULL && drm_server_info) {
+ if (!drmAvailable() && name != NULL && drm_server_info &&
+ drm_server_info->load_module) {
/* try to load the kernel module */
if (!drm_server_info->load_module(name)) {
drmMsg("[drm] failed to load kernel module \"%s\"\n", name);