tbm_backend: fix the handle casting.
[platform/core/uifw/libtbm.git] / src / tbm_backend.c
index 4c9ce19..4da842c 100644 (file)
@@ -95,7 +95,10 @@ tbm_backend_bufmgr_register_bufmgr_func(tbm_bufmgr bufmgr, tbm_backend_bufmgr_fu
        TBM_RETURN_VAL_IF_FAIL(bufmgr, TBM_ERROR_INVALID_PARAMETER);
        TBM_RETURN_VAL_IF_FAIL(func, TBM_ERROR_INVALID_PARAMETER);
 
-       bufmgr->bufmgr_func = func;
+       // The tbm_bufmgr from backend module is actually tbm_module memory in libtbm.
+       // libtbm initializes module init with this tbm_module which is casted with tbm_bufmgr.
+       tbm_module *module = (tbm_module *)bufmgr;
+       module->bufmgr_func = func;
 
        return TBM_ERROR_NONE;
 }
@@ -134,7 +137,10 @@ tbm_backend_bufmgr_register_bo_func(tbm_bufmgr bufmgr, tbm_backend_bo_func *func
        TBM_RETURN_VAL_IF_FAIL(bufmgr, TBM_ERROR_INVALID_PARAMETER);
        TBM_RETURN_VAL_IF_FAIL(func, TBM_ERROR_INVALID_PARAMETER);
 
-       bufmgr->bo_func = func;
+       // The tbm_bufmgr from backend module is actually tbm_module memory in libtbm.
+       // libtbm initializes module init with this tbm_module which is casted with tbm_bufmgr.
+       tbm_module *module = (tbm_module *)bufmgr;
+       module->bo_func = func;
 
        return TBM_ERROR_NONE;
 }