Change-Id: I2ebae8d762513fc68fccb90649b27a37ac596407
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
#define ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0]))
+static void *g_gbm_module;
+
#if HAVE_TBM
extern const struct gbm_backend gbm_tbm_backend;
#endif
if (backend == NULL)
return NULL;
+ if (g_gbm_module)
+ return NULL;
+
name = backend->name;
if (backend->builtin) {
return NULL;
}
}
+ g_gbm_module = module;
return init;
}
return dev;
}
+
+void
+_gbm_close_device(void)
+{
+ if (g_gbm_module) {
+ dlclose(g_gbm_module);
+ g_gbm_module = NULL;
+ }
+}
+
struct gbm_device *
_gbm_create_device(int fd);
+void
+_gbm_close_device(void);
#endif
gbm_device_destroy(struct gbm_device *gbm)
{
gbm->refcount--;
- if (gbm->refcount == 0)
+ if (gbm->refcount == 0) {
gbm->destroy(gbm);
+ _gbm_close_device();
+ }
}
/** Create a gbm device for allocating buffers