typedef struct _tbm_bufmgr_exynos *tbm_bufmgr_exynos;
typedef struct _tbm_bo_exynos *tbm_bo_exynos;
-typedef struct _exynos_private {
- int ref_count;
- struct _tbm_bo_exynos *bo_priv;
-} PrivGem;
-
/* tbm buffor object for exynos */
struct _tbm_bo_exynos {
int fd;
unsigned int flags_exynos;
unsigned int flags_tbm;
- PrivGem *private;
-
pthread_mutex_t mutex;
struct dma_buf_fence dma_fence[DMA_FENCE_LIST_MAX];
int device;
bo_exynos->dmabuf = arg.fd;
}
- /* add bo to hash */
- PrivGem *privGem = calloc(1, sizeof(PrivGem));
-
- if (!privGem) {
- TBM_EXYNOS_ERROR("fail to calloc privGem\n");
- free(bo_exynos);
- return 0;
- }
-
- privGem->ref_count = 1;
- privGem->bo_priv = bo_exynos;
-
if (drmHashInsert(bufmgr_exynos->hashBos, bo_exynos->name,
- (void *)privGem) < 0) {
+ (void *)bo_exynos) < 0) {
TBM_EXYNOS_ERROR("Cannot insert bo to Hash(%d)\n", bo_exynos->name);
}
}
/* delete bo from hash */
- PrivGem *privGem = NULL;
int ret;
ret = drmHashLookup(bufmgr_exynos->hashBos, bo_exynos->name,
- (void **)&privGem);
+ (void **)&bo_exynos);
if (ret == 0) {
- privGem->ref_count--;
- if (privGem->ref_count == 0) {
- drmHashDelete(bufmgr_exynos->hashBos, bo_exynos->name);
- free(privGem);
- privGem = NULL;
- }
+ drmHashDelete(bufmgr_exynos->hashBos, bo_exynos->name);
} else {
TBM_EXYNOS_ERROR("Cannot find bo to Hash(%d), ret=%d\n",
bo_exynos->name, ret);
tbm_bufmgr_exynos bufmgr_exynos;
tbm_bo_exynos bo_exynos;
- PrivGem *privGem = NULL;
int ret;
bufmgr_exynos = (tbm_bufmgr_exynos)tbm_backend_get_bufmgr_priv(bo);
EXYNOS_RETURN_VAL_IF_FAIL(bufmgr_exynos != NULL, 0);
- ret = drmHashLookup(bufmgr_exynos->hashBos, key, (void **)&privGem);
+ ret = drmHashLookup(bufmgr_exynos->hashBos, key, (void **)&bo_exynos);
if (ret == 0)
- return privGem->bo_priv;
+ return bo_exynos;
struct drm_gem_open arg = {0, };
struct drm_exynos_gem_info info = {0, };
}
/* add bo to hash */
- privGem = NULL;
-
- privGem = calloc(1, sizeof(PrivGem));
- if (!privGem) {
- TBM_EXYNOS_ERROR("fail to calloc privGem\n");
- free(bo_exynos);
- return 0;
- }
-
- privGem->ref_count = 1;
- privGem->bo_priv = bo_exynos;
-
if (drmHashInsert(bufmgr_exynos->hashBos, bo_exynos->name,
- (void *)privGem) < 0) {
+ (void *)bo_exynos) < 0) {
TBM_EXYNOS_ERROR("Cannot insert bo to Hash(%d)\n", bo_exynos->name);
}
tbm_bufmgr_exynos bufmgr_exynos;
tbm_bo_exynos bo_exynos;
- PrivGem *privGem = NULL;
unsigned int name;
int ret;
char buf[STRERR_BUFSIZE];
return 0;
}
- ret = drmHashLookup(bufmgr_exynos->hashBos, name, (void **)&privGem);
+ ret = drmHashLookup(bufmgr_exynos->hashBos, name, (void **)&bo_exynos);
if (ret == 0) {
- if (gem == privGem->bo_priv->gem)
- return privGem->bo_priv;
+ if (gem == bo_exynos->gem)
+ return bo_exynos;
}
unsigned int real_size = -1;
}
/* add bo to hash */
- privGem = NULL;
-
- privGem = calloc(1, sizeof(PrivGem));
- if (!privGem) {
- TBM_EXYNOS_ERROR("fail to calloc privGem\n");
- free(bo_exynos);
- return 0;
- }
-
- privGem->ref_count = 1;
- privGem->bo_priv = bo_exynos;
-
if (drmHashInsert(bufmgr_exynos->hashBos, bo_exynos->name,
- (void *)privGem) < 0) {
+ (void *)bo_exynos) < 0) {
TBM_EXYNOS_ERROR("bo:%p Cannot insert bo to Hash(%d) from gem:%d, fd:%d\n",
bo, bo_exynos->name, gem, key);
}