Commit Graph

71 Commits

Author SHA1 Message Date
Carsten Haitzler fc9218087d adjust default memprool alloc sizes. too big imho.
SVN revision: 72249
2012-06-17 01:32:10 +00:00
Carsten Haitzler 0ccd4cdf2a FRom daniel zaoui -> spotted issues with callback deletionon evas_free
that may cause evas's to not be freed. fixxxxors!



SVN revision: 71552
2012-05-30 10:41:19 +00:00
Hyoyoung Chang 0c74d1c82d From: Hyoyoung Chang <hyoyoung@gmail.com>
Subject: [E-devel] [patch] evas - preventing retard mouse event
process in evas_object_event_callback_call

I made a small patch to prevent retard mouse event process.
At certain circumstance (like as genlist select callback + naviframe
item push),
some events are repeat processed.

If some evas_objects're iterating in evas_event_feed_mouse_up and
mouse_out event's emitted by other interrupt(such as naviframe item
push),
then some evas_objects events are multiple processed by
evas_object_event_callback_call.

More elaborating it with a example.
There are a genlist and a multibuttonentry on genlist item.
When a user clicks multibuttonentry then evas will process mouse down
and up.
in evas_event_feed_mouse_up, it gets evas object list to process mouse
events.
Then in the evas object list, there are two evas objects - rect and
textblock.
Two objects have its own parents.

the rect has below parents.
----------------------------------------
edje  - genlist item
elm_genlist_pan
edje
multibuttonentry
box
entry
els_scroller  (0x2a601788)
rect                                      <== the rect

the textblock has below parents.
----------------------------------------------
edje - genlist item
elm_genlist_pan
edje
multibuttonentry
box
entry
els_scroller(0x2a601788)
edje
elm_pan
edje
textblock                           <== the textblock

(note : two evas object have same parent (els_scroller))

So normally mouse up callbacks event propagates to its own parent.
the rect is processed to genlist item. and the textblock is processed
to genlist item.
but when els_scroller is processed, it's blocked by checking event
type and event id checking.

Mouse Up(rect) ->  Mouse Up(textblock)
event_id (3)      ->   event_id (3)

evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type
type, void *event_info, int event_id)
{
   ...
      if ((obj->delete_me) || (!obj->layer)) return;
         if ((obj->last_event == event_id) &&
                (obj->last_event_type == type)) return;
                     <=== blocked
                     
                     However if naviframe item is pushed in the middle
of mouse up processing.
It can break into mouse up. So it's processed like below.

Mouse Up(rect) -> Mouse Out(rect) -> Mouse Out(textblock) -> Mouse
Up(textblock)
event_id (3)      -> event_id(4)         -> event_id(4)
-> event_id(3)
(note Mouse_Out is made by naviframe item push for event freezing)

If that, there's no mechanism to block that repeat processing same
event.
So I suggest this patch.
This patch blocks old events if there's no reason to process.
(It blocks old mouse_up event because mouse_out is processed.)

And I think it also clear the bug in
"[E-devel] event repetition with elm_naviframe/elm_genlist"



SVN revision: 67879
2012-02-13 11:25:23 +00:00
Jiyoun Park 36e658e20a bug fix related with evas event counter
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
2011-12-15 06:23:53 +00:00
Jiyoun Park 69a659fbb8 remove white space
SVN revision: 66233
2011-12-15 05:56:19 +00:00
Carsten Haitzler f1bdb3a902 for now - revers eumni touch events patch until we get press state
"getter" api patch. :)



SVN revision: 64140
2011-10-18 08:32:03 +00:00
EunMi Lee c6681aa189 From: EunMi Lee <eunmi15.lee@samsung.com>
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
2011-10-04 07:30:22 +00:00
Tom Hacohen 9f23c221d6 Evas callbacks: Do the same change daniel did to smart callbacks.
Spank Spank for not applying it here as well.

SVN revision: 62798
2011-08-25 10:06:12 +00:00
Tom Hacohen ef8476152d Evas callbacks: Added priority to evas callbacks.
This includes evas_event, evas_object_event and evas_object_smart
callbacks.
See the added docs for more info.

SVN revision: 62533
2011-08-17 11:55:29 +00:00
Hyoyoung Chang 24a3c5a092 From: Hyoyoung Chang <hyoyoung.chang@samsung.com>
Subject: [E-devel] [patch] evas - add checking event type

Dear developers.

I found a bug about evas event handling.
In some situation, evas blocks some events by checking _evas_event_counter.
So I made a patch that is checking event type also event counter.

Reproduce steps:
1. make a window
2. show window before adding a elementary/genlist widget

--- codes ---
void _gl_mousedown_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
{
  printf("_gl_mousedown_cb !! \n");
}

static Eina_Bool create_main_win(App *app)
{
  app->win = elm_win_add(NULL, "genlist-win", ELM_WIN_BASIC);
  evas_object_show(app->win);          <-- position 1
              
  Evas_Object *genlist = elm_genlist_add(app->win);
  elm_win_resize_object_add(app->win, genlist);
  evas_object_event_callback_add(genlist, EVAS_CALLBACK_MOUSE_DOWN, _gl_mousedown_cb, NULL);
  evas_object_show(genlist);
  
  evas_object_resize(app->win, 320, 240);
//evas_object_show(app->win);          <-- position 2
        
  return EINA_TRUE;
}
--- codes ---

In common use case, apps don't show main window at position 1.
However to reproduce, it can be at position 1. Then, focus is at just on main window.
In that situation, if a user clicks a genlist, its event is dropped by evas.
Because in mouse down callback, it give focus to genlist.

Then two events is made. First is mouse down, second is focus handling.
In event callback, evas processes mouse down after focus handling.
But evas found that mouse event is retarded event than focus handling.
So it ignores it.

This patch is introduce event handling type checking to
evas_object_event_callback_call.




SVN revision: 61026
2011-07-05 01:33:59 +00:00
Cedric BAIL c708610cbc evas: remove a few shadow variable.
SVN revision: 58874
2011-04-24 20:21:07 +00:00
Carsten Haitzler 09069b6172 doxy move to header.
SVN revision: 58477
2011-04-08 07:26:20 +00:00
Carsten Haitzler c75b63a482 evas -> use mempool for many objects and things. but.. disable it for
now. use old calloc+free thing for 1.0 and enable mpool for 1.1. this
is just done in advance but disabled for some testing purposes looking
for some bugs.



SVN revision: 55006
2010-11-26 10:01:18 +00:00
Lucas De Marchi 85815e306c Fix common misspellings
Following misspellings were fixed:

accomodate->accommodate
achive->achieve
beacuse->because
caluclate->calculate
cant->can't
carefull->careful
convertion->conversion
dependancy->dependency
dependant->dependent
doesnt->doesn't
existant->existent
extention->extension
fucntion->function
impliment->implement
inital->initial
lenght->length
occured->occurred
occuring->occurring
onyl->only
positon->position
possibilty->possibility
postion->position
proccessing->processing
proccess->process
propogate->propagate
recieve->receive
sucessive->successive
teh->the
ther->there
throught->through
thsi->this
wasnt->wasn't
whcih->which
wheras->whereas




SVN revision: 51965
2010-09-08 03:51:24 +00:00
Carsten Haitzler f3faf1730b can optimise this a bit and avoid magic checks as its internal.
SVN revision: 51735
2010-08-29 22:59:11 +00:00
Brett Nash ee5ef216ef Suppress warnign about dropping const (AKA: C is stupid)
SVN revision: 49914
2010-06-28 05:14:36 +00:00
Carsten Haitzler db0679543f oops - call params in right order.
SVN revision: 48627
2010-05-05 16:17:23 +00:00
Carsten Haitzler 7041c968bf oooh you'd love to know why this is here.. won't you? :)
SVN revision: 48613
2010-05-04 15:58:10 +00:00
Carsten Haitzler 5f309b5d9f actually fix evas event cb leak for good. work ast smart desc leak.
SVN revision: 47552
2010-03-29 05:03:25 +00:00
Carsten Haitzler 46e1d8a866 fix small leak - cannvas callbacks not cleaned.
SVN revision: 47551
2010-03-29 02:40:49 +00:00
Carsten Haitzler 264c2d5b1d fix event count issue with feeding hold from callback
SVN revision: 47364
2010-03-22 07:04:04 +00:00
Carsten Haitzler f2b1114521 actually... do canvas free.
SVN revision: 47362
2010-03-22 05:33:46 +00:00
Gustavo Sverzut Barbieri fd2659c572 evas: mega documentation improving commit.
This commit moves Evas.h contents a lot, but it should not change code
(some conts were added, some function attributes were changed).

The purpose of such is to define the order that doxygen show modules
in its documentation.

I also splitted documentation a bit more, and added a src/examples to
list useful example code. Right now it is just a pure-evas
draw-and-save using buffer engine.

NOTE: there is lots to document, and the @todo list is quite long but
      I guess lots of things there were done already. Raster, could
      you review this list?




SVN revision: 47308
2010-03-18 04:57:40 +00:00
Cedric BAIL d790cbfd00 * evas: Now an object will only receive once the same event.
Previously, due to propagation to parent, an event could have
	been received more than once by an object. This triggered
	strange behaviour in edje for example where you could receive
	mouse,down,1 signal many time for one swallowed object.

	This patch is a fix for that problem, I hope it doesn't break
	anything (e17 and elementary_test run fine here, but report
	any break related to events please).


SVN revision: 46869
2010-03-04 14:48:21 +00:00
Gustavo Sverzut Barbieri e133d2f300 API break: proper Canvas events callback.
Canvas was (ab)using the same callback signature as Objects, so you
always got a confusing NULL parameter.

Just clean it up to be Evas_Object_Event_Cb and Evas_Event_Cb, each
with its own signature.



SVN revision: 46206
2010-02-16 12:59:37 +00:00
Carsten Haitzler f35fa585c4 add 3 things
1. the concept of callbacks for a canvas as a whole. add/ del/ del_full these
2. focus in+out events for the canvas as a whole - can help solve some issues
with inoput methods + ecore-imf + entries (like edje_entry)
3. add callabcks to be called before/after flush of display.



SVN revision: 45761
2010-02-01 04:26:55 +00:00
Jonathan Atton 75303b4b5b Evas :The doc say "This function removes the most recently added callback", consequently we have te prepend the items
SVN revision: 43103
2009-10-15 20:50:15 +00:00
Iván Briano 5c3b4fa74e Improve documentation for Evas, Ecore, Edje and Elementary.
Work by:
 - Thiago R. Masaki (mostly)
 - Fabiano Fidencio
 - Gustavo Lima


SVN revision: 42550
2009-09-17 22:38:10 +00:00
Vincent Torri ac3dae2a80 remove trailing spaces
SVN revision: 42238
2009-09-04 05:13:19 +00:00
Davide Andreoli f38e74e550 * remove \'too small\' categories
SVN revision: 37387
2008-11-01 22:21:10 +00:00
Davide Andreoli f526e28ac0 * More better cats\'
* remove some @ingroup in favor of @addtogroup

SVN revision: 37386
2008-11-01 21:50:36 +00:00
Cedric BAIL 68d377afe6 Rename EINA_INLIST_ITER_NEXT/EINA_INLIST_ITER_LAST to EINA_INLIST_FOREACH/
EINA_INLIST_REVERSE_FOREACH so it best match is behaviour. Asked by Gustavo.



SVN revision: 36928
2008-10-21 12:19:57 +00:00
Cedric BAIL bdfed791ea More use of iterator macro.
SVN revision: 36852
2008-10-20 12:36:48 +00:00
Carsten Haitzler f053582e31 1. fix no propagate
2. fix segv in textblock.



SVN revision: 36828
2008-10-19 23:58:56 +00:00
Cedric BAIL c99824328f Move from Evas_Object_List to Eina_Inlist and completly remove Evas_Object_List.
SVN revision: 36750
2008-10-17 11:23:18 +00:00
Carsten Haitzler e20edb01e2 revert patch - breaks etk "drag scrolling".
SVN revision: 35247
2008-07-30 07:57:05 +00:00
Carsten Haitzler 4ed5796b2f cedirc patchies!
SVN revision: 35228
2008-07-26 13:04:29 +00:00
Gustavo Sverzut Barbieri b802f4c94a Add evas_object_event_callback_del_full()
This will check both function and data before removing the callback,
this is useful when you have lots of children monitoring parent, when
one child want to remove its monitoring function, others will remain.

Name is quite difficult to choose, I opted for "_full", but could be
"_with_data" or similar.


SVN revision: 34731
2008-06-03 20:33:40 +00:00
Carsten Haitzler 23aef39670 ooh - a case where callbacks may be cleared but we call one - list entry not
nulled out. fix.


SVN revision: 33848
2008-02-26 09:16:17 +00:00
Gustavo Sverzut Barbieri eda1f13b33 Support for selectable pointer_mode.
Evas now support objects that do not grab mouse down event (NOGRAB) aside
with the default (AUTOGRAB). API is meant to be extensible.


SVN revision: 30950
2007-07-24 14:20:07 +00:00
Carsten Haitzler 5e691081ca extensive delete me handling for evas free's and list walks
SVN revision: 29776
2007-04-30 04:22:42 +00:00
Sebastian Dransfeld 61e9f0afd6 Remove unused code.
SVN revision: 29377
2007-04-05 15:40:51 +00:00
Carsten Haitzler 9ae24eeaeb ooh - and remove leak from callbacks not being freed! fixed!
SVN revision: 28426
2007-02-21 21:43:45 +00:00
Carsten Haitzler 18b973d1ac 1. fixed some inefficient edje loading - moved checks to the cache code where
it sould be
2. fixed edje handling of delete of objects so we don't lose clip info if we
move a swallowed object out
3. fix up norender stuff for evas a bit
4. pants.

5. coogee beach (sydney) in summer right now is beatiful - KICK ASS!


SVN revision: 28102
2007-01-22 12:44:57 +00:00
Carsten Haitzler 4021776111 nash patch
SVN revision: 27100
2006-11-14 02:00:23 +00:00
moom 424b6c5ffb * Fix a bug with double-click
SVN revision: 26381
2006-10-06 19:13:33 +00:00
moom 32147d1f6a * The mouse flags are now correctly calculated when the mouse
up/down event is propagated to smart parent


SVN revision: 25107
2006-08-25 20:47:32 +00:00
sebastid 3e41ec2fbd Remove EAPI warnings.
Remove duplicate defines.


SVN revision: 19579
2006-01-06 23:05:17 +00:00
Carsten Haitzler f56726798f add calls to tell evas to propagate (or not) events on an object to its
parent smart object IF there is a callback set. ie. if there is a key down
callback set and propagae is set to false then the key event will not
prpagate to the parent as long as the child gets the key down events and has
the callback set.


SVN revision: 18123
2005-10-30 05:07:51 +00:00
sebastid 3f776d358a Cleanup some headers.
Remove duplicate typedefs and declerations.


SVN revision: 15407
2005-06-18 01:00:32 +00:00