diff options
author | Seunghun Lee <shiin.lee@samsung.com> | 2015-06-02 16:17:38 +0900 |
---|---|---|
committer | Seunghun Lee <shiin.lee@samsung.com> | 2015-06-04 16:06:39 +0900 |
commit | 89cf7850d55a0d251fa0001b03c37242b7acf1b1 (patch) | |
tree | 9418ab08b58a6a54d1267fc1d69db6acc5106ef6 | |
parent | ab72d18d542e4b926bf4b4b468dd9bb92e2ba066 (diff) | |
download | efl-89cf7850d55a0d251fa0001b03c37242b7acf1b1.tar.gz |
ecore-buffer: change the passing argument of tbm_surface_internal_create_with_bos() by updating API of libtbm.
This patch is for updating libtbm's API.
Change-Id: I83673bc69ffde3216773ff5b344b08d91996617b
-rw-r--r-- | src/modules/ecore_buffer/tbm/ecore_buffer_tbm.c | 27 | ||||
-rw-r--r-- | src/modules/ecore_buffer/x11_dri2/ecore_buffer_x11_dri2.c | 37 | ||||
-rw-r--r-- | src/modules/ecore_buffer/x11_dri3/ecore_buffer_x11_dri3.c | 19 |
3 files changed, 75 insertions, 8 deletions
diff --git a/src/modules/ecore_buffer/tbm/ecore_buffer_tbm.c b/src/modules/ecore_buffer/tbm/ecore_buffer_tbm.c index 8f8abfb25b..4f747ac7d6 100644 --- a/src/modules/ecore_buffer/tbm/ecore_buffer_tbm.c +++ b/src/modules/ecore_buffer/tbm/ecore_buffer_tbm.c @@ -229,6 +229,8 @@ _ecore_buffer_tbm_buffer_import(Ecore_Buffer_Module_Data bmdata, int w, int h, E Ecore_Buffer_Module_Tbm_Data *bm = bmdata; Ecore_Buffer_Tbm_Data *buf; tbm_bo bo; + tbm_surface_info_s info; + int i, num_plane; if (type != EXPORT_TYPE_FD) return NULL; if (export_id < 1) return NULL; @@ -244,15 +246,36 @@ _ecore_buffer_tbm_buffer_import(Ecore_Buffer_Module_Data bmdata, int w, int h, E buf->is_imported = EINA_TRUE; bo = tbm_bo_import_fd(bm->tbm_mgr, export_id); - buf->tbm_surface = tbm_surface_internal_create_with_bos(buf->w, buf->h, format, &bo, 1); - tbm_bo_unref(bo); + if (!bo) + { + free(buf); + return NULL; + } + num_plane = _buf_get_num_planes(format); + info.width = w; + info.height = h; + info.format = format; + info.bpp = _buf_get_bpp(format); + info.size = w * h * info.bpp; + info.num_planes = num_plane; + for ( i = 0 ; i < num_plane ; i++) + { + info.planes[i].size = w * h * info.bpp; + info.planes[i].stride = w * info.bpp; + info.planes[i].offset = 0; + } + + buf->tbm_surface = tbm_surface_internal_create_with_bos(&info, &bo, 1); if (!buf->tbm_surface) { + tbm_bo_unref(bo); free(buf); return NULL; } + tbm_bo_unref(bo); + return buf; } diff --git a/src/modules/ecore_buffer/x11_dri2/ecore_buffer_x11_dri2.c b/src/modules/ecore_buffer/x11_dri2/ecore_buffer_x11_dri2.c index e51d9edddb..304e3ea31b 100644 --- a/src/modules/ecore_buffer/x11_dri2/ecore_buffer_x11_dri2.c +++ b/src/modules/ecore_buffer/x11_dri2/ecore_buffer_x11_dri2.c @@ -303,6 +303,8 @@ _ecore_buffer_x11_dri2_buffer_alloc(Ecore_Buffer_Module_Data bmdata, int width, int num_plane; int rw, rh, rcount; unsigned int attachment = DRI2BufferFrontLeft; + tbm_surface_info_s info; + int i; bpp = _buf_get_bpp(format); if (bpp != 32) @@ -343,8 +345,20 @@ _ecore_buffer_x11_dri2_buffer_alloc(Ecore_Buffer_Module_Data bmdata, int width, if (!bo) goto on_error; - buf->tbm.surface = - tbm_surface_internal_create_with_bos(buf->w, buf->h, format, &bo, 1); + info.width = width; + info.height = height; + info.format = format; + info.bpp = bpp; + info.size = width * bufs->pitch; + info.num_planes = num_plane; + for ( i = 0 ; i < num_plane ; i++) + { + info.planes[i].size = width * bufs->pitch; + info.planes[i].stride = bufs->pitch; + info.planes[i].offset = 0; + } + + buf->tbm.surface = tbm_surface_internal_create_with_bos(&info, &bo, 1); if (!buf->tbm.surface) goto on_error; @@ -433,6 +447,8 @@ _ecore_buffer_x11_dri2_buffer_import(Ecore_Buffer_Module_Data bmdata EINA_UNUSED tbm_bo bo = NULL; int rcount; unsigned int attachment = DRI2BufferFrontLeft; + tbm_surface_info_s info; + int num_plane,i; if (type != EXPORT_TYPE_ID) return NULL; @@ -467,8 +483,21 @@ _ecore_buffer_x11_dri2_buffer_import(Ecore_Buffer_Module_Data bmdata EINA_UNUSED if (!bo) goto on_error; - buf->tbm.surface = - tbm_surface_internal_create_with_bos(buf->w, buf->h, format, &bo, 1); + num_plane = _buf_get_num_planes(format); + info.width = w; + info.height = h; + info.format = format; + info.bpp = _buf_get_bpp(format); + info.size = w * bufs->pitch; + info.num_planes = num_plane; + for ( i = 0 ; i < num_plane ; i++) + { + info.planes[i].size = w * bufs->pitch; + info.planes[i].stride = bufs->pitch; + info.planes[i].offset = 0; + } + + buf->tbm.surface = tbm_surface_internal_create_with_bos(&info, &bo, 1); if (!buf->tbm.surface) goto on_error; diff --git a/src/modules/ecore_buffer/x11_dri3/ecore_buffer_x11_dri3.c b/src/modules/ecore_buffer/x11_dri3/ecore_buffer_x11_dri3.c index b3c0c545d1..83d1f45278 100644 --- a/src/modules/ecore_buffer/x11_dri3/ecore_buffer_x11_dri3.c +++ b/src/modules/ecore_buffer/x11_dri3/ecore_buffer_x11_dri3.c @@ -491,6 +491,8 @@ _ecore_buffer_x11_dri3_buffer_import(Ecore_Buffer_Module_Data bmdata, int w, int Ecore_Buffer_Module_X11_Dri3_Data *bm = bmdata; Ecore_Buffer_X11_Dri3_Data *buf; tbm_bo bo; + tbm_surface_info_s info; + int i, num_plane; if (!bm) return NULL; @@ -519,8 +521,21 @@ _ecore_buffer_x11_dri3_buffer_import(Ecore_Buffer_Module_Data bmdata, int w, int return NULL; } - buf->tbm_surface = - tbm_surface_internal_create_with_bos(buf->w, buf->h, format, &bo, 1); + num_plane = _buf_get_num_planes(format); + info.width = w; + info.height = h; + info.format = format; + info.bpp = _buf_get_bpp(format); + info.size = w * h * info.bpp; + info.num_planes = num_plane; + for ( i = 0 ; i < num_plane ; i++) + { + info.planes[i].size = w * h * info.bpp; + info.planes[i].stride = w * info.bpp; + info.planes[i].offset = 0; + } + + buf->tbm_surface = tbm_surface_internal_create_with_bos(&info, &bo, 1); if (!buf->tbm_surface) { tbm_bo_unref(bo); |