From: Junkyeong Kim Date: Tue, 10 May 2016 00:51:38 +0000 (+0900) Subject: fix open module lost X-Git-Tag: submit/tizen/20160511.051004^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f37dc48624157b3cb0bdbd902151b6efe1d4adaa;p=platform%2Fcore%2Fuifw%2Flibgbm.git fix open module lost Change-Id: I2ebae8d762513fc68fccb90649b27a37ac596407 Signed-off-by: Junkyeong Kim --- diff --git a/src/backend.c b/src/backend.c index 332d960..13f705f 100644 --- a/src/backend.c +++ b/src/backend.c @@ -37,6 +37,8 @@ #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 @@ -64,6 +66,9 @@ load_backend(const struct backend_desc *backend) if (backend == NULL) return NULL; + if (g_gbm_module) + return NULL; + name = backend->name; if (backend->builtin) { @@ -87,6 +92,7 @@ load_backend(const struct backend_desc *backend) return NULL; } } + g_gbm_module = module; return init; } @@ -132,3 +138,13 @@ _gbm_create_device(int fd) return dev; } + +void +_gbm_close_device(void) +{ + if (g_gbm_module) { + dlclose(g_gbm_module); + g_gbm_module = NULL; + } +} + diff --git a/src/backend.h b/src/backend.h index 4a64375..8609196 100644 --- a/src/backend.h +++ b/src/backend.h @@ -32,5 +32,7 @@ struct gbm_device * _gbm_create_device(int fd); +void +_gbm_close_device(void); #endif diff --git a/src/gbm.c b/src/gbm.c index b6d207c..e62b694 100644 --- a/src/gbm.c +++ b/src/gbm.c @@ -104,8 +104,10 @@ GBM_EXPORT void 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