#include <pthread.h>
#include <tbm_surface.h>
#include <tbm_surface_internal.h>
+#include "tbm_wayland.h"
#define DEBUG
#define USE_DMAIMPORT
void* hashBos;
int use_dma_fence;
+
+ int fd_owner;
};
char *STR_DEVICE[]=
bufmgr_dumb->hashBos = NULL;
}
+ if (bufmgr_dumb->fd_owner)
+ close(bufmgr_dumb->fd);
+
free (bufmgr_dumb);
}
return 0;
}
- bufmgr_dumb->fd = fd;
- if (bufmgr_dumb->fd < 0)
+ if (fd < 0)
+ {
+ bufmgr_dumb->fd = tbm_bufmgr_get_drm_fd_wayland();
+ bufmgr_dumb->fd_owner = 1;
+ }
+ else
+ bufmgr_dumb->fd = fd;
+
+ if (bufmgr_dumb->fd < 0)
{
TBM_DUMB_LOG ("error: Fail to create drm!\n");
free (bufmgr_dumb);
TBM_DUMB_LOG ("error: Fail to create drm!\n");
if (bufmgr_dumb->hashBos)
drmHashDestroy (bufmgr_dumb->hashBos);
+
+ if (bufmgr_dumb->fd_owner)
+ close(bufmgr_dumb->fd);
+
free (bufmgr_dumb);
return 0;
}
if (!tbm_backend_init (bufmgr, bufmgr_backend))
{
TBM_DUMB_LOG ("error: Fail to init backend!\n");
+
+ if (bufmgr_dumb->fd_owner)
+ close(bufmgr_dumb->fd);
+
tbm_backend_free (bufmgr_backend);
free (bufmgr_dumb);
return 0;