+ Wonsik
On 5 January 2016 at 20:27, Christopher Michael <[email protected]> wrote: > On 01/05/2016 03:07 AM, Wonsik Jung wrote: > > jpeg pushed a commit to branch master. > > > > > http://git.enlightenment.org/core/efl.git/commit/?id=7db9613e8c95268acfa6d51ea6aa45418ee8e697 > > > > commit 7db9613e8c95268acfa6d51ea6aa45418ee8e697 > > Author: Wonsik Jung <[email protected]> > > Date: Tue Jan 5 16:41:14 2016 +0900 > > > > Evas_Engine: add TBM surface and clean up Native Struct > > > > Summary: > > Add TBM surface in wayland and clean up Native struct on Evas > Engine. > > Previous TBM surface for evas_object_image's native_surface_set is > only in Evas X11 backend. > > This patch has the code for wayland backend. > > In addition, evas_native_tbm.c is moved to software_generic. > Becuase this file is common. > > And, Native in Evas_Engine is clean-up. > > > > @feature > > > > Test Plan: > > TBM surface is tested with spacegrapher's test app(tbm.c) in Tizen > Device. > > Pixmap surface is tested in ubuntu with same test app. > > EvasGL is tested with elementary_test. > > > > Reviewers: jpeg, spacegrapher, raster, cedric > > > > Subscribers: dkdk, scholb.kim, JoogabYun > > > > Differential Revision: https://phab.enlightenment.org/D3501 > > --- > > <snip> > > > diff --git a/src/modules/evas/engines/wayland_shm/evas_engine.c > b/src/modules/evas/engines/wayland_shm/evas_engine.c > > index 8250090..e6a810c 100644 > > --- a/src/modules/evas/engines/wayland_shm/evas_engine.c > > +++ b/src/modules/evas/engines/wayland_shm/evas_engine.c > > @@ -5,6 +5,11 @@ > > #endif > > > > #include "evas_engine.h" > > +#include "../software_generic/evas_native_common.h" > > + > > +#ifdef HAVE_DLSYM > > +# include <dlfcn.h> > > +#endif > > > > /* logging domain variable */ > > int _evas_engine_way_shm_log_dom = -1; > > @@ -12,6 +17,8 @@ int _evas_engine_way_shm_log_dom = -1; > > /* evas function tables - filled in later (func and parent func) */ > > static Evas_Func func, pfunc; > > > > +Evas_Native_Tbm_Surface_Image_Set_Call > glsym_evas_native_tbm_surface_image_set = NULL; > > + > > /* engine structure data */ > > typedef struct _Render_Engine Render_Engine; > > struct _Render_Engine > > @@ -77,6 +84,22 @@ err: > > return NULL; > > } > > > > +static void > > +_symbols(void) > > +{ > > + static int done = 0; > > + > > + if (done) return; > > + > > +#define LINK2GENERIC(sym) \ > > + glsym_##sym = dlsym(RTLD_DEFAULT, #sym); > > + > > + // Get function pointer to native_common that is now provided > through the link of SW_Generic. > > + LINK2GENERIC(evas_native_tbm_surface_image_set); > > + > > + done = 1; > > +} > > + > > /* ENGINE API FUNCTIONS WE PROVIDE */ > > static void * > > eng_info(Evas *eo_evas EINA_UNUSED) > > @@ -242,6 +265,71 @@ eng_output_resize(void *data, int w, int h) > > re->generic.h = h; > > } > > > > +static void * > > +eng_image_native_set(void *data EINA_UNUSED, void *image, void *native) > > +{ > > + Evas_Native_Surface *ns = native; > > + Image_Entry *ie = image; > > + RGBA_Image *im = image, *im2; > > + > > + if (!im || !ns) return im; > > + > > + if (ns->type == EVAS_NATIVE_SURFACE_TBM) > > + { > > + if (im->native.data) > > + { > > + //image have native surface already > > + Evas_Native_Surface *ens = im->native.data; > > + > > + if ((ens->type == ns->type) && > > + (ens->data.tbm.buffer == ns->data.tbm.buffer)) > > + return im; > > + } > > + } > > + > > + if ((ns->type == EVAS_NATIVE_SURFACE_OPENGL) && > > + (ns->version == EVAS_NATIVE_SURFACE_VERSION)) > > + im2 = evas_cache_image_data(evas_common_image_cache_get(), > > + ie->w, ie->h, > > + ns->data.x11.visual, 1, > > + EVAS_COLORSPACE_ARGB8888); > > This looks wrong here... How are we going to have an X11 Visual if we > are running in Wayland ?? Is this a typo/copy & paste error perhaps ?? > Accessing ns->data.x11.visual seems like it's going to fail as we won't > have any X11 visuals... > Good catch! Let's ask Wonsik :) > > dh > > > + else > > + im2 = evas_cache_image_data(evas_common_image_cache_get(), > > + ie->w, ie->h, > > + NULL, 1, > > + EVAS_COLORSPACE_ARGB8888); > > + > > + if (im->native.data) > > + { > > + if (im->native.func.free) > > + im->native.func.free(im->native.func.data, im); > > + } > > + > > +#ifdef EVAS_CSERVE2 > > + if (evas_cserve2_use_get() && evas_cache2_image_cached(ie)) > > + evas_cache2_image_close(ie); > > + else > > +#endif > > + evas_cache_image_drop(ie); > > + im = im2; > > + > > + if (ns->type == EVAS_NATIVE_SURFACE_TBM) > > + return glsym_evas_native_tbm_surface_image_set(NULL, im, ns); > > + > > + return im; > > +} > > + > > +static void * > > +eng_image_native_get(void *data EINA_UNUSED, void *image) > > +{ > > + RGBA_Image *im = image; > > + Native *n; > > + if (!im) return NULL; > > + n = im->native.data; > > + if (!n) return NULL; > > + return &(n->ns); > > +} > > + > > /* EVAS MODULE FUNCTIONS */ > > static int > > module_open(Evas_Module *em) > > @@ -273,7 +361,10 @@ module_open(Evas_Module *em) > > ORD(setup); > > ORD(output_free); > > ORD(output_resize); > > + ORD(image_native_set); > > + ORD(image_native_get); > > > > + _symbols(); > > /* advertise our own engine functions */ > > em->functions = (void *)(&func); > > > > > > > > ------------------------------------------------------------------------------ > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > -- Jean-Philippe André ------------------------------------------------------------------------------ _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
