From: Joogab Yun Date: Tue, 11 Oct 2016 02:23:59 +0000 (+0900) Subject: [evas_sw] I change the location getting the tbm surface X-Git-Tag: accepted/tizen/common/20161013.161055~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F03%2F91703%2F3;p=platform%2Fupstream%2Fefl.git [evas_sw] I change the location getting the tbm surface and tbm_surface_internal_ref() Change-Id: I23c9bd4786c072bb704f396c8be98d53913b40e9 --- diff --git a/src/modules/evas/engines/wayland_shm/evas_tbmbuf.c b/src/modules/evas/engines/wayland_shm/evas_tbmbuf.c index 2ba1a48..ca82b4d 100755 --- a/src/modules/evas/engines/wayland_shm/evas_tbmbuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_tbmbuf.c @@ -87,6 +87,7 @@ struct _Tbmbuf_Surface struct wl_registry *registry; struct wayland_tbm_client *tbm_client; tbm_surface_h tbm_surface; + tbm_surface_info_s tbm_info; void *tbm_queue; int wait_release; Eina_Bool resize : 1; @@ -367,31 +368,14 @@ _evas_tbmbuf_surface_assign(Surface *s) return 0; } + // check num of tbm surface int num_surface; tbm_surface_h surfaces[5]; sym_tbm_surface_queue_get_surfaces(surface->tbm_queue, surfaces, &num_surface); - if (num_surface == 1) return 0; - - return num_surface; -} - - -static void * -_evas_tbmbuf_surface_data_get(Surface *s, int *w, int *h) -{ - - Tbmbuf_Surface *surface; - - surface = s->surf.tbm; - - if (!surface) - { - ERR("surface is NULL"); - return 0; - } if (surface->resize) { + // reset tbm_surface int width, height, format; width = surface->w; height = surface->h; @@ -430,16 +414,35 @@ _evas_tbmbuf_surface_data_get(Surface *s, int *w, int *h) wl_buffer_add_listener(buffer, &buffer_listener, surface->tbm_surface); } - void *image; tbm_surface_info_s info; sym_tbm_surface_map(surface->tbm_surface, TBM_SURF_OPTION_READ|TBM_SURF_OPTION_WRITE, &info); + surface->tbm_info = info; - image = info.planes[0].ptr; + if (num_surface == 1) return 0; + return num_surface; +} + + +static void * +_evas_tbmbuf_surface_data_get(Surface *s, int *w, int *h) +{ + ERR("_evas_tbmbuf_surface_data_get"); + Tbmbuf_Surface *surface; + void *image; - surface->stride = info.planes[0].stride; + surface = s->surf.tbm; + if (!surface) + { + ERR("surface is NULL"); + return 0; + } + + image = surface->tbm_info.planes[0].ptr; + + surface->stride = surface->tbm_info.planes[0].stride; if (w) *w = surface->stride / 4; - if (h) *h = info.height; + if (h) *h = surface->tbm_info.height; return image; } @@ -485,13 +488,13 @@ _evas_tbmbuf_surface_post(Surface *s, Eina_Rectangle *rects, unsigned int count) frame_callback = wl_surface_frame(surface->wl_surface); wl_callback_add_listener(frame_callback, &frame_listener, surface->tbm_surface); + sym_tbm_surface_internal_ref(surface->tbm_surface); wl_surface_commit(surface->wl_surface); sym_tbm_surface_internal_unref(surface->tbm_surface); sym_tbm_surface_queue_enqueue(surface->tbm_queue, surface->tbm_surface); sym_tbm_surface_queue_acquire(surface->tbm_queue, &surface->tbm_surface); - sym_tbm_surface_internal_ref(surface->tbm_surface); return; }