Handle 'moving' nad 'resizing' of objects if they are not 'frame objects'
Add code for frame_object_get/set functions.
Fix some formatting.
SVN revision: 66536
Subject: Drawing objects by pixman
* Extend pixman support to allow other operations to use
pixman when doing software rendering. On x86 this isn't useful
but on ARMv7 with NEON pixman happens to do better with image
blending and nearest scale blending.
* Add tiled rotator for 32bit display as an option.
SVN revision: 66478
intel drivers don;'t like it for some odd reason - i'm trying to track
it down but i can't sanely try middlegrounds right now (eg dont
dlopen/dlsym but actually directly assign symbols etc.), so back out
and let's figure this out before it goes back in :(
SVN revision: 66308
1. Make Obj replacement and Par Sep less confusing.
2. We'll may, at some point, use the Unicode NewLine char instead of \n.
so it's now easily replaceable.
SVN revision: 66255
currently evas_object_event_callback_call checks _evas_event_counter
for preventing object's callback called several times in one evas event.
but it use global variable(_evas_event_counter), it can be changed while
procssing same event.
for example , evas_event_feed_mouse_up.
If there are several object in e->pointer.object.in and object 1's callback
create new evas event, object 2 cannot now event id.
so I change callback call api, and object callbacks can decide wheather it deal with that event.
SVN revision: 66234
addition to evas gl backend.
Working on different mobile devices, we've noticed that the cost of context
switch (MakeCurrent) in GL can be very expensive depending on the driver
implementation. To minimize the poorly written driver's context switch
overhead, I've implemented a state tracking layer on top of the driver
implemented GL.
Essentially, this layer wraps all the GL/Glue(GLX/EGL) APIs and manages its own
state changes. Internally, only one real GL context is created and logical
contexts are created every time a user requests context creation. The logical
contexts keep track of its states and sets only the necessary states
(the ones that are different than the current ones)
when there is a MakeCurrent request. The real MakeCurrent gets called when
there is a Surface/Window change request.
The GL library is dlopened and all the APIs are dlsym'ed and wrapped
accordingly. All the GL functions are in evas_gl_core.{h,c}.
Here's a very simply flow of the code.
- all the APIs are exported as function pointers (*glsym_glBegin),
(*glsm_eglCreatContext), and etc.
- all the native GL/Glue(GLX/EGL) APIs are dlsym'ed as _sym_glBegin,
_sym_eglCreateContext, and etc.
- all the fastpath APIs are implmemnted as fpgl_glBegin,
fpgl_eglCreateContext, and etc.
- if faspath is seletected, the exported APIs are set accordingly
ie. glsym_glBegin = fpgl_glBegin;
- default mode is the regular gl symbols are directly set.
ie. glsym_glBegin = _sym_glBegin;
I have an Environment variable where you can set it to three different Modes
EVAS_GL_FASTPATH = 0 // Default mode. Regular GL symbols are directly loaded
EVAS_GL_FASTPATH = 1 // Fastpath mode. Takes the path described above.
EVAS_GL_FASTPATH = 2 // Wrapped mode. All the regular GL functions are
wrapped once. This can be used for various
purposes
Since all the GL symbols are now loaded in this library, I took out all
the gl symbol loading parts in the evas gl backend as you'll see in the patch.
The changes to the engine and the backend itself is pretty minor.
There are still some known issues to hammer out but I thought we're at a good
place for an initial version so that my source doesn't diverge too much.
Known Issues and To Do's
* Current GL Fastpath version doesn't support multiple threads. Instead of
having one global real context, I would need to do it for each thread. I'll
get on this soon.
* Issues running Evas GL on certain conditions. When running the elementary
test (with gl engine), if you run ELMGLview test that runs in ON_DEMAND mode,
everything works fine. BUT, when you run the ELMGLView test in ALWAYS
mode, the subsequent elm tests shows blank screen. When you destroy the
GLView window, everything else comes on fine.
* Resource protection code. This actually applies to Evas GL code in general
as well. Since all the resources are shared among all the contexts that get
created, I would like to eventually have a resource protecting mechanism that
prevents access to resources outside of its context unless specifically
specified.
I'm attaching three files
- evas_gl_core.h, evas_gl_core.c, fastpath.patch
To get the code running...
- copy evas_gl_core.{c,h} to src/modules/engine/gl_common/
- apply the fastpath.patch
- compile/install evas
- to run with fastpath GL (ie. % EVAS_GL_FASTPATH=1 ./evasgl_sample1)
SVN revision: 65891
Subject: Fix Neon build with Thumb-2
In assembly part of function evas_common_convert_rgba_to_32bpp_rgb_8888_rot_90:
Don't use 3-operand add instructions (e.g. add r2, r5, #2) as this is
not supported in unified syntax.
SVN revision: 65768
tweet: hey, SeoZ here, I really like Microsoft. I mean REALLY like them. I think they're a fantastic company and I hope everyone uses winmo!
SVN revision: 65469
quickly when uf your-encoded anything due to using IFAST decoder (and
encoder). this does drop speed for decode and encode (except encoding
< 60% quality where it now uses IFAST), but we don't see progressively
worse artifacts.
SVN revision: 65293
in most cases, it is performed twice inside and outside of the function in inefficient way.
and calling of events_frozen in the passes_through() is not understable in the view of functional consistency.
Check is separately would be better.
SVN revision: 65269
Subject: [E-devel] [Patch][Evas] Fix wrong location of
_evas_touch_point_remove()
I have a small patch to fix the wrong location of _evas_touch_point_remove().
_evas_touch_point_remove() should be called in the evas_event_feed_mouse_up(),
but it is called in the evas_event_feed_mouse_cancel() in the current code.
Would you apply attached patch?
SVN revision: 65005
There was a possible segfault because we don't check if the current item
is a text item or a format item. I just removed the loop which triggered it
because it's not needed anyway, and now it works. Removing the loop also
let me remove some code that was only needed in the case of a loop.
SVN revision: 64816
Fix multiple storage bug.
* __forceinline is the equivalent of __always_inline__ on Windows. It has
'extern' as storage, so static must not be used with it
* use __always_inline__ and not always_inline as attribute value instead.
No need to add storage class with __always_inline__ too.
* static inline is fine
SVN revision: 64767
Subject: [E-devel] [E-Devel][Patch] Evas GL Color Format Enum change
(and ElmGLview changes accordingly)
I'm submitting a patch that changes the color format for Evas GL.
When I first wrote Evas_GL, I just had EVAS_GL_RGB_8 and EVAS_GL_RGBA_8 and etc
but it was misleading for some people. It was more of a filler since I couldn't decide on
a name. I'm finally changing it to make it more clear.
SVN revision: 64491
Subject: [E-devel] [Patch] [Evas] Patch to provide information of
touched points
Hello,
I made a new patch to get information of current touched point instead
of Touch Event.
I added touch_points (Eina_List) to the Evas structure and it maintains touched points on the evas.
New touched point is added to the touch_points when we get Mouse_Down and Multi_Down,
touched point is updated when we get Mouse_Move and Mult_Move,
and touched point is removed when we get Mouse_Up and Multi_Up.
The each touch point has coordinate, id and state information as follows:
id - identifier. 0 for Mouse Event and device id for Multi Event. coordinate - (x, y) coordinate of point.
state - state of point. type is Evas_Touch_Point_State enum.
(EVAS_TOUCH_POINT_DOWN, EVAS_TOUCH_POINT_UP, EVAS_TOUCH_POINT_MOVE,
EVAS_TOUCH_POINT_STILL, EVAS_TOUCH_POINT_CANCEL)
There are 4 new APIs to get touch point's information as follows:
unsigned int evas_touch_point_list_count(Evas *e);
void evas_touch_point_list_nth_xy_get(Evas *e, unsigned int n, Evas_Coord *x, Evas_Coord *y);
int evas_touch_point_list_nth_id_get(Evas *e, unsigned int n);
Evas_Touch_Point_State evas_touch_point_list_nth_state_get(Evas *e, unsigned int n);
I added APIs to get each information instead of exposing whole
structure to make it easy to expand in the future as you mentioned in
the below e-mail :)
SVN revision: 64373
CC evas_cserve_tool.o
evas_cserve_main.c: In function ‘message’:
evas_cserve_main.c:993:14: warning: braces around scalar initializer
evas_cserve_main.c:993:14: warning: (near initialization for ‘lopt.degree’)
evas_cserve_main.c:993:14: warning: excess elements in scalar initializer
evas_cserve_main.c:993:14: warning: (near initialization for ‘lopt.degree’)
evas_cserve_main.c:993:14: warning: excess elements in scalar initializer
evas_cserve_main.c:993:14: warning: (near initialization for ‘lopt.degree’)
evas_cserve_main.c:993:14: warning: excess elements in scalar initializer
evas_cserve_main.c:993:14: warning: (near initialization for ‘lopt.degree’)
Signed-off-by: Mike McCormack <mikem@ring3k.org>
SVN revision: 64310
libpng 1.2.8 does not have the symbol png_set_expand_gray_1_2_4_to_8.
It seems that 1.2.10 has no problem, so we check for libpng >= 1.2.10
and we drop libpng 1.0.*
SVN revision: 64303
This was causing the fb engine to draw incorrectly when the virtual size
was different from the size (xres != xres_virtual). For example, it
happens an additional monitor is plugged into a notebook.
Patch for SiT.
SVN revision: 64259
Subject: [E-devel] [Patch] Add scale down decoding feature to evas png loader
I add scale down decoding feature to evas png loader. 5515X3986 size png image need 80~90M memory,
but scale down(scale num=2) option can reduce memory to 25~30M.
I use down sample method for scale down.
(there is more efficient algorithm for scale down, I'll add this to my
todo list)
SVN revision: 64170
Subject: Re: [E-devel] [Patch] Implement scale down decoding feature of bmp loader
I implement scale down decoding feature of bmp loader using down sample algorithm.
Desktop have low risk to go wrong memory problem during big image decoding,
but mobile device is different.
Raster said it is life (meet memory problem during big image decoding),
and it is enough to return decoding fail.
But I think it seems a bit harsh, because 2 or 3 bmp image (5000X5000 size: for example)
can cause application close because of memory lack.
SVN revision: 64163
Subject: [E-devel] [Patch] modify gl engine's animated function
related with cache entry
I modified the gl engine code related with animated images
This is very trivial. Evas image object passes images to the engine.
In the software engine, it is a cache entry , but in the GL engine, it is
an Evas_GL Image. So I modified the gl engine code to get the cache entry
from the gl image.
SVN revision: 64143
Subject: Re: [E-devel] [E-Devel][Review][Patch] Evas GL Extensions + a
bug fix
Here's an initial attempt at the GL extensions issue for Evas GL.
I have been in discussion with a few EFL developers regarding how we should
provide extensions. Essentially, there are two ways to go about doing this.
1. provide evas_gl_proc_address_get() function as it is done in other
glue layers
2. provide all the extension functions in the EVAS_GL_API struct.
#1 approach is how it's done in other glue layers and the driver implementor can
provide new extensions easily. It is however pretty annoying to get the
function prototypes right and use the function pointers and etc.
#2 approach provides all the extension functions in the struct so it's
definitely easier to use. Adding new extensions can be a pain as people may
have to wait for new version releases.
For now, we thought it was OK to just throw them in the struct as in
#2 and try it out. So, I've implemented this approach. As for the extensions,
I've basically included all the extensions in gl2ext.h as EvasGL currently
provides all the GLES 2.0 functions. In order to display the right
information, I had to override glGetString() with GL_EXTENSIONS as parameter to properly
display the supported extensions.
Also, I've added a few EGL extensions that have been
modified for EvasGL use. For example, eglCreateImage/eglDestroyImage has been
defined as folllows.
EvasGLImage (*evasglCreateImage) (int target, void* buffer, int*
attrib_list); void
(*evasglDestroyImage)
(EvasGLImage image);
const char *evas_gl_string_query() function was added to return a string of
supported EvasGL extensions. So essentially, a user can search this string to see
if the desired extension is supported. if it is, he can use the functions. He can
always check if the function pointers are NULL as well.
Take a look at the pach and let me know what you think.
______________
While I was adding the extension code, I've added a few fixes/ changes
to the EvasGL.
1. glDeletBuffers bug
- When I wad destroying evasgl context, I was deleting the context FBO with
glDeleteBuffers instead of glDeleteFramebuffers. This code in effect was
deleting BOs in other contexts and we had some funky behaviors as a
result. The
bug has been fixed.
2. make_current
- I've made some changes to the make current code and also added a resource
context to the engine data. the resource context is used for creating surface
texture/ fbos when surface/ context is created. Before, i was using evas'
context but thought it'd be a good idea to use a separate context.
SVN revision: 64139
Sorry mate, but they broke API without bumping version, that's why I
didn't do this myself. You should probably add your version of harfbuzz.
This reverts commit 64057.
SVN revision: 64134
You can't compile a gl_common .c file based on whether or not the SDL
header was included. The .c file will result in only one .o and since
the Evas_Engine_Sdl.h is not included by evas_gl_context.c itself, then
that ifdef will never be true.
gl_common should request a callback function pointer from the evas engine
for doing symbol resolution. This needs a refactor.
SVN revision: 64086
Rather than trying to avoid removing the list element that is
currently being processed, keep two lists and move elements
to the processed list before recalculating them.
Remove items from the list head only, and always append them
to the tail.
Use the fact that an item can be removed from a clist without
needing to know which list it is in.
Signed-off-by: Mike McCormack <mj.mccormack@samsung.com>
SVN revision: 64030