tdm_error (*display_get_fd)(tdm_backend_data *bdata, int *fd);
/**
- * @brief Get the file descriptor for the memory-management framework of a backend module
- * @param[in] bdata The backend module data
- * @param[out] fd The fd of a backend module
- * @return #TDM_ERROR_NONE if success. Otherwise, error value.
- * @see display_handle_events() function of #tdm_func_display
- * This buffer fd will be passed to tbm_bufmgr_init.
- */
- tdm_error (*display_get_buffer_fd)(tdm_backend_data *bdata, int *fd);
-
- /**
* @brief Handle the events which happens on the fd of a backend module
* @param[in] bdata The backend module data
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
return ret;
}
-static tdm_error
-_tdm_display_init_bufmgr(tdm_private_display *private_display)
-{
- tdm_func_display *func_display = &private_display->func_display;
- int buffer_fd = -1;
- tdm_error ret;
-
- if (func_display->display_get_buffer_fd) {
- ret = func_display->display_get_buffer_fd(private_display->bdata, &buffer_fd);
- if (ret != TDM_ERROR_NONE) {
- TDM_ERR("failed to get buffer fd");
- return ret;
- }
- }
-
- private_display->bufmgr = tbm_bufmgr_init(buffer_fd);
- if (!private_display->bufmgr) {
- TDM_ERR("failed to init TBM bufmgr: fd(%d)", buffer_fd);
- return TDM_ERROR_OUT_OF_MEMORY;
- }
-
- TDM_INFO("init TBM bufmgr: fd(%d)", buffer_fd);
-
- return TDM_ERROR_NONE;
-}
-
-
EXTERN tdm_error
tdm_display_update(tdm_display *dpy)
{
if (ret != TDM_ERROR_NONE)
goto failed_update;
- TDM_TRACE_BEGIN(Bufmgr_Init);
- ret = _tdm_display_init_bufmgr(private_display);
- TDM_TRACE_END();
- if (ret != TDM_ERROR_NONE)
- goto failed_update;
-
private_display->init_count = 1;
g_private_display = private_display;
pthread_mutex_lock(&private_display->lock);
- if (private_display->bufmgr)
- tbm_bufmgr_deinit(private_display->bufmgr);
-
_tdm_display_destroy_private_display(private_display);
_tdm_display_unload_module(private_display);