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
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
perfect" with 90 degree rotations. i really should have actually
special cased them, for for now i made the generic routine try and punt
out the right numbers.
SVN revision: 63986
The old version works because in every function in which
this macro is used ``l'' is the length and ``d'' is the
destination. This patch prevents future headaches when
those constraints no longer hold.
Patch by: Jim Kukunas <james.t.kukunas@linux.intel.com>
SVN revision: 63856
Subject: [E-devel] [Patch] Evas touch event patch.
Nice to meet you.
I'm Eunmi Lee, developing mobile web browser and working on WebKit EFL port.
I need new type of event for touch, so I've made patch to add
EVAS_CALLBACK_TOUCH event to the evas.
I will explain history of this patch.
Currently, many web applications and sites use TouchEvent and they can
do everything(scrolling, zooming and so on) like native application
using TouchEvent.
So, I'm also want to provide TouchEvent for web in the WebKit EFL port,
but I got a problem during making TouchEvent because EFL's touch
event's structure (Mouse, Multi Event) is different from Web
TouchEvent's one.
Let me explain about Web TouchEvent firstly.
Web TouchEvent is consist of type and touch points list simply.
There are 3 kinds of type.
TouchStart: Happens every time a finger is placed on the screen.
TouchEnd: Happens every time a finger is removed from the screen.
TouchMove: Happens as a finger already placed on the screen is moved
across the screen.
for example, we can make (1 finger starts to touch), (2 fingers are
moving), (1 finger is released duirng 3 fingers are moving) and so on.
You can see the detailed information in the following url:
http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone
However, EFL's touch event is consist of six kinds of type :
MOUSE_DOWN, MOUSE_UP, MOUSE_MOVE, MULTI_DOWN, MULTI_UP, MULTI_MOVE.
So, I have to make a converter to make web touch event from EFL's
touch event.
You can reference attatched image file : evas_touch_event.png.
To tell the truth, converting code is not a big one.
But, I want to reduce this additional job and make code simple.
In the WebKit QT port, they don't have to make converting code for
TouchEvent,
because they have QTouchEvent, it has type and touchPoints list and
they can be mapped to Web TouchEvent one by one.
I think iPhone and Android also have such kind of event.
That's all why I want to add new touch event type to the evas.
about my patch:
- EVAS_CALLBACK_TOUCH event is added
- touch_points Eina_List is added to the Evas structure to maintain
current touch lists.
- process MOUSE/MULTI UP, DOWN, MOVE to make TOUCH event.
It is my first time to modify eves codes and actually I don't know too
much about evas.
So, I will be grateful if you send any feedback and comments.
SVN revision: 63796
several problems with it... but SOMEONE... (lucas) committed it
without even so much as replying to the list saying he was going to...
:)
SVN revision: 63705
mul_256_sse3
sub4_alpha_sse3
interp4_256_sse3
mul_sym_sse3
mul4_sym_sse3
mul3_sym_sse3
LOOP_ALIGNED_U1_A48_SSE3
__attribute__((always_inline)) is needed to coax GCC (< 4.6.0)
into inlining the common blend ops. Not inlining these functions
causes a steep performance penalty.
Patch by: Jim Kukunas <james.t.kukunas@linux.intel.com>
SVN revision: 63698
Reported by WooHyun. Thanks a lot, great catch, also told me where and what
the issue is exactly.
Also added a test to verify this works.
SVN revision: 63493
This possibly doesn't scale as good but it's good enough for everything I've
tried. It's a lot easier to maintain comparing to the rbtree, and takes a
lot less memory. Next step is probably changing the array size according
to the actual content of the textblock.
SVN revision: 63474
The problem was that our rbtree implementation doesn't support chaining
duplicates and with no fonts, all the paragraphs had the same y coord (0).
Changing the paragraph index to work on line_no for sorting fixes it,
as line numbers are also correct when there are no fonts.
Thanks a lot to KaKaRoTo for letting me know about this issue.
SVN revision: 63188
The "pixels" pointer was set in the beginning of evas_object_image_render(),
and never updated, even after pixels_get() changed the content of
o->engine_data.
This patch updates that pointer if it becomes different from engine_data.
SVN revision: 63090
an obj is already queued we dont push it FURTHEr down the queue if
smart recalc is enabled. now at least we keep order of operation/calc
correctly!
SVN revision: 62944
Now, smart callback is prepended among the same priorities. After the
discussion with hermet and raster.
I fixed this because I think it's better keeping the default behavior
even we have new priority option. This is for evas backward
compatibility and for the world peace. Although I know there is no
official policy and it's not recommended to rely on the smart callback
calling sequence in application, I really hope evas needs to have
compatibility. Otherwise we need to adopt the new policy in next
version of evas.
SVN revision: 62792
Subject: [E-devel] [Review] [Patch] Evas_GL bug fixes/updates
I've fixed some minor issues that I've been pushing off for later.
The patch does the following:
1. Evas_GL and Evas had an issue where the viewport parameters were
being reset in the wrong context. Previously, this issue was temporarily
patched by flushing evas' pipeline and setting
evas_gl_common_context_use(NULL) in EvasGL's
make current. I know, it was pretty hacky. It turns out that in
evas_engine,
there was a code evas_gl_common_context_resize(NULL) without doing
eng_window_use() first. So i've added that part and problem went was
resolved properly. :-)
2. Naturally, I've taken out the temporary patch from 1.
3. I've added code that took care of glBindFramebuffer(..., fbo) where
the
fbo had to be saved and restored in case the user wanted to use his
own fbo.
Also, I've had to take care of the case when fbo is 0 since 0 need to
point
to evas_gl surface.
4. I've updated make_current a little as well.
SVN revision: 62780
Subject: [E-devel] [Patch] evas gl engine's texture creation
Hello.
1. _pool_tex_dynamic_new function, it didnt set pt to NULL when secsym_eglCreateImage function failed.
In this case, it returns wrong pt pointer and it has possibility to make crash.
So I add free pt code and return NULL code into _pool_tex_dynamic_new function.
2. I modified eng_image_data_get of gl engine.
If Evas_GL_Image's texture creation failed and evas_gl_image's cache image was droped,
Im->im can be NULL. So I add check code.
Example: evas_gl_common_image_content_hint_set
1) EVAS_IMAGE_CONTENT_HINT_DYNAMIC , it drop cache image
2) if evas_gl_common_texture_dynamic_new failed
3) then, im->im =NULL, im->tex=NULL
In this situation, if application call's evas_object_image_data_get function,
It make crash in evas_cache_image_load_data function.
3. I think function's related with evas_object's engine data have to be return NULL if it failed.
If function's returns null, evas object code can handle error more easily.
But evas object's code was implemented differently each case. Does my suggestion right?
I add engine data null check code to evas_object_image based on upper consumtion.
If it is wrong , the patch code related with evas object image have to be removed.
If it is right , I will survey other evas object type also.
SVN revision: 62775
Sometimes, gif loader can miss some previous frame.
In that case, display can be dirty.
If frame N loaded without N-1 make these problem.
I fixed this problem.
And I modified wrong document.
SVN revision: 62712
SPANK SPANK, they broke compilation. Please use the builtin revert
functions when you revert commits. Either:
GIT: 'git revert <commit hash>' (yeah, git is better).
or
SVN: 'svn merge -c <revision> .'
This will prevent this kind of erros from happenning in the future.
Also, plesae compile before committing.
SVN revision: 62678
Subject: RE: [E-devel] [Patch] Animation gif feature patch
Animated gif suport in evas and api's to handle animated images and
frame flipping. from jy.
SVN revision: 62331
Until now, it only supported MARKUP, now it also supports plain.
Haven't tested it much, but it seems to be working. It can help a lot to
people who want to analyse the text, for example when implementing a spell
checker, or "search", as now the text maps exactly like the cursors map.
Still have to decide if that's the wanted API and set it in stone, or not
promise this and expose a different API for these kind of tasks.
SVN revision: 62011
FcNameParse is pretty bad, not only that it's pretty bad, it doesn't
work well in some cases. Also this makes our lives a lot easier since
we want to allow overriding style/weight/width and etc from markup.
We now parse the "font" markup ourselves, populating a font description
structure that we created, and then override values in it as needed.
SVN revision: 61936
With the following example text: "aa<b>a <i>bbb</i> ccc", adding a </b>
at the end wouldn't cause an invalidation to happen as expected.
SVN revision: 61805
It's more correct as you won't get unwanted translations you would have
in some cases, or even worse, breaking markup get when you have synonymous
tags.
SVN revision: 61748
#0 0xb7e92786 in evas_cache_image_flush (cache=0x0) at evas_cache_image.c:1353
#1 0xb7e9192e in evas_cache_image_drop (im=0xb6aa4d38) at evas_cache_image.c:913
#2 0xb7ee3d8b in eng_image_free (data=0xb6a020c0, image=0xb6aa4d38) at evas_engine.c:383
#3 0xb7e4b8e6 in evas_object_image_free (obj=0xb7517178) at evas_object_image.c:2478
#4 0xb7e4f403 in evas_object_free (obj=0xb7517178, clean_layer=0) at evas_object_main.c:45
#5 0xb7e41c95 in evas_layer_free_objects (lay=0xb6a5d8b0) at evas_layer.c:80
#6 0xb7e42656 in evas_free (e=0xb6a98cd8) at evas_main.c:204
#7 0xb7f27ad3 in _ecore_evas_free (ee=0xb6ab18e8) at ecore_evas.c:2822
#8 0xb7f24161 in ecore_evas_free (ee=0xb6ab18e8) at ecore_evas.c:839
#9 0xb7df2f7f in _deferred_ecore_evas_free (data=0xb6ab18e8) at elm_win.c:477
#10 0x4b0fd858 in _ecore_job_event_handler (data=0x0, type=14, ev=0xb6a99c58) at ecore_job.c:131
#11 0x4b0f907e in _ecore_event_call () at ecore_events.c:693
#12 0x4b0ff93e in _ecore_main_loop_iterate_internal (once_only=0) at ecore_main.c:1750
#13 0x4b0fe195 in ecore_main_loop_begin () at ecore_main.c:848
SVN revision: 61736
Although the uv range of normal object is be localized to the it's geometry,
but the uv range of the image object is be localized it's image size but not geometry size.
In that case, user should find out the objects type and set the uv value differently between normal and image
why they do that?
SVN revision: 61577
Now they are calculated according to real line height, and not just line
height before this point. Furthermore, this also fixes some issues with
wrapping not being correct.
SVN revision: 61557
Until now, removing the <ps> when <b><ps></b> would have left the
<b></b> intact instead of removing them when using a range delete.
SVN revision: 61530