From 7aee6c3de35e9284c752a749a0d4a5a7de88ede3 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Wed, 12 Aug 2015 13:38:00 +0900 Subject: [PATCH] Calculate surfcae and plane size when create with bos if surface size and plane size is less than zeo Change-Id: I5fdc43790914ea45d052dabb480debe7f3716a4b --- src/tbm_surface_internal.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/tbm_surface_internal.c b/src/tbm_surface_internal.c index d4eb022..e9740dd 100755 --- a/src/tbm_surface_internal.c +++ b/src/tbm_surface_internal.c @@ -484,15 +484,31 @@ tbm_surface_internal_create_with_bos (tbm_surface_info_s *info, tbm_bo *bos, int surf->info.height = info->height; surf->info.format = info->format; surf->info.bpp = info->bpp; - surf->info.size = info->size; surf->info.num_planes = info->num_planes; /* get size, stride and offset */ for (i = 0; i < info->num_planes; i++) { - surf->info.planes[i].size = info->planes[i].size; surf->info.planes[i].offset = info->planes[i].offset; surf->info.planes[i].stride = info->planes[i].stride; + + if (info->planes[i].size > 0) + surf->info.planes[i].size = info->planes[i].size; + else + surf->info.planes[i].size += surf->info.planes[i].stride * info->height; + } + + if (info->size > 0) + { + surf->info.size = info->size; + } + else + { + surf->info.size = 0; + for (i = 0; i < info->num_planes; i++) + { + surf->info.size += surf->info.planes[i].size; + } } surf->flags = TBM_BO_DEFAULT; -- 2.7.4