Commit Graph

435 Commits

Author SHA1 Message Date
Carsten Haitzler afe65d7c0a add ability to dump engine coontents (if engine supports it). this means
unload images it has loaded from disk, unload fonts, and more. dump dump dump!



SVN revision: 47947
2010-04-12 08:23:53 +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
Cedric BAIL 3d27a7b9e4 * evas: improve thread rendering by moving image loading in worker thread.
SVN revision: 47434
2010-03-24 19:07:59 +00:00
Cedric BAIL 1a51c662bf * evas: make map work with threaded rendering.
SVN revision: 47429
2010-03-24 16:39:39 +00:00
Cedric BAIL a859e60140 * evas: Make evas_object_move on Evas_Object_Polygon work.
TODO: Make evas_object_resize work also.


SVN revision: 47291
2010-03-16 13:23:37 +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 c0baeaeb68 1. fix fcfini issue i hit - yes . things may look like they leak in valgrind
- they dont. in reality.
2. major text rendeering speedups. up to 41% in textblock intl, 33% in
textblock basic, 12-20$ in other text rendering tests. generic eina hash's
are just tooo slow for what we are doing there. specialised "Fash"
blocked-array.
3. still LOTS of optimisations left.



SVN revision: 45829
2010-02-03 11:18:00 +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
Vincent Torri 20d5a675db * undef close() and open() in evas_module also for mingw
* init Evil in eina as it uses fcntl() with the winsock2 library
 * fix compilation of evas_cache_image.c with mingw
 * formatting


SVN revision: 45724
2010-01-30 00:09:29 +00:00
Iván Briano 3b160b4354 So... this breaks Smarts ABI, rebuild everything after updating Evas.
This patch adds some stuff for smart callback description/instropection, which
is still untested but doesn't break anything that's out there now. Should help
with bindings later on.

Also some parenting guidelines for smart objects, so it's easier to spawn a
subclass out of another. Look at Box and Table for an example on this.

And again, rebuild everything that uses smart objects after this update, or
the world will turn into a happy place where lawyers are no longer needed...
and we don't want to upset the lawyers.


SVN revision: 45043
2010-01-11 14:24:41 +00:00
Carsten Haitzler fa435074e0 1. line support in gl engine - as if anyone uses lines
2. fix clipping for gl maps - was setting them when it shouldnt.



SVN revision: 44782
2009-12-30 11:35:40 +00:00
Cedric BAIL 7c00860cc1 * evas: Loader can now tell if they could be used in another thread or not.
xpm and svg loader don't allow preload at this time.


SVN revision: 44714
2009-12-24 13:15:34 +00:00
Gustavo Sverzut Barbieri 51c00c6526 fix evas image loading error reporting.
Evas image load was always reporint "generic" error, since it was
disconnected from actual loader modules.

This commit will break the module loader API (as it's restricted to
inside Evas, this should be no problem). The return was turned into
"Eina_Bool" for clarity, while an extra "int *error" is responsible to
report errors. This approach was choosen to force compiler warnings
and to try avoid mistakes as EINA_FALSE == EVAS_LOAD_ERROR_NONE and
thus we'd get opposite behavior if something slips.

Most loaders play well, except by eet that does not provide means to
know if the file open failed due missing file, incorrect format or
corrupted file :-(

Please report any issues. I added eina_log debugging to loader
functions, just run your Evas application as:

     EINA_LOG_LEVELS=evas_main:4 your_app




SVN revision: 44666
2009-12-22 23:11:57 +00:00
Cedric BAIL bd60dfd40e * evas: Fix build when pipe rendering is disabled.
SVN revision: 44651
2009-12-22 12:58:07 +00:00
Cedric BAIL a27c701f27 * evas: Remove lot's of warning.
SVN revision: 44629
2009-12-21 15:52:12 +00:00
Cedric BAIL b0ffd95878 * evas: Complete rewrite of evas image preload code.
This code should be cleaner and easier to understand. It also provides
	the ability to spread image decompression on all CPU core. I currently
	set it to the exact number of CPU core you have in your machine, if you
	find case where it slow down your EFL apps too much, we can reduce this
	to give at least one core to evas.
	   All previous bugs related with async preload are gone, hopefully no
	new one are in. Please report any problem with backtrace to me.


SVN revision: 44537
2009-12-18 11:03:31 +00:00
Carsten Haitzler 87e5e70a9d fix anothe rmap draw bug.
SVN revision: 43917
2009-11-23 10:07:07 +00:00
Carsten Haitzler 8ce36a26c9 0x0 smarts will no be rendered again - well children will be... but its still
bad form to do this. oddly - the desktop panning in e does this. need to check.



SVN revision: 43799
2009-11-19 08:37:22 +00:00
Carsten Haitzler 730661d3da move check to more unlikely position in chekc order
SVN revision: 43585
2009-11-09 15:20:32 +00:00
Carsten Haitzler 9af8993332 god damnt that took some time! fixed some bugs with map + smart objcs +
repainting etc. etc. - seems to be working now in complex smart obj tests and
simple ones.



SVN revision: 43584
2009-11-09 15:18:37 +00:00
Cedric BAIL a82d161c27 * evas_cache_image: Attempt to make a definitiv fix for race condition on cancel.
WARNING: If you continue to see any segv in E17, please report to me with a backtrace. Thanks.


SVN revision: 43465
2009-11-05 17:38:51 +00:00
Carsten Haitzler 9791b27a18 map coords in mapped objects.
SVN revision: 43463
2009-11-05 15:24:48 +00:00
Carsten Haitzler bd0541a0b0 and fix the dual geometry thing - use the clip cache for uv geometry. perfect!
SVN revision: 43432
2009-11-03 15:41:36 +00:00
Carsten Haitzler 069de70853 add color to the vertexes in map. this allows for fading/shading of
reflections, goraud shading for smooth 3d surfaces, mor realistic lighting
etc. etc. it comes at a small cost, but worth it.



SVN revision: 43384
2009-11-01 01:32:23 +00:00
Carsten Haitzler 1545cc226e more map work. now only re-render map surface if size changed or any contents
changed. still renders all, but better now. keeps map surfacer around for
shits and giggles until map unset or object deleted. als be able to set
smooth map and disable alpha (for smart objects)



SVN revision: 43362
2009-10-31 09:08:01 +00:00
Carsten Haitzler bb3824803c finally! smart objects work with map!
SVN revision: 43343
2009-10-30 10:11:15 +00:00
Carsten Haitzler 5cc7803ef9 the start of other objects being able to map! text objects work.. tested.
SVN revision: 43323
2009-10-28 08:59:01 +00:00
Gustavo Sverzut Barbieri 6982f7b9c6 evas_map: more extensible and safe. add docs
change evas_map to return a structure that serves as an array of
points. This way we'll know for sure the number of points in it. Right
now it's hardcoded to 4, so check it, but in future we can just allow
more points and it should work.

added docs. I'm not sure about most of it, so it would be good to have
someone to review and fill in more, maybe that's raster? Grep for
"TODO" and you'll see the missing stuff. It would be good to add
examples in evas_map_point_coord_set() and
evas_map_point_image_uv_set()



SVN revision: 43211
2009-10-22 20:11:33 +00:00
Cedric BAIL 8984a75799 * evas: Cleanup move to eina log.
Patch from Mathieu Taillefumier.


SVN revision: 43200
2009-10-22 15:22:22 +00:00
Carsten Haitzler 8bf3f50b2c map code... works.. with bugs... but works. visually...
SVN revision: 43163
2009-10-20 16:03:57 +00:00
Carsten Haitzler c50ea6b1c8 map image... not used yet.
SVN revision: 43131
2009-10-17 10:25:51 +00:00
Carsten Haitzler 46996c95d3 mini-speedups!
SVN revision: 43037
2009-10-12 15:22:38 +00:00
Carsten Haitzler 37b66e806b new gl engine. no one uses it anyway. not 100% complete, but much better than
the old. and it ALSO does GLES2.0 as well asn GL.



SVN revision: 42982
2009-10-09 12:10:27 +00:00
Tom 39b6c9148c From: Tom <tom@stosb.com> (tasn)
Hey raster,

Here is the non intrusive patch I talked to you about. Please apply it as it
introduces some fixes, some improvements and mostly and underlying
infrastructure for future RTL improvements.

(note hebrew & yiddish seem fine, but things expedite test seems to show are
wrong (why i don't know as i dont speak the langs- just comparing to pango /
gtk output):

arabic seems lsightl wrong (maybe composition chars not working?)
gujarati - also seems wrong
malayam - also looks wrong
persian - looks wrong
sinhala - looks wrong
tamil - looks wrong

these are what, appear to me, to look wrong. why they look wrong, i don't
know. i'm guessing its compositiong not being handled. but i dont's peak,
read or write any of these languages so i am unsure of what it really should
be like, why and how to fix it.

anyone want to put up a hand? (everything else is displaying fine as best i
can tell - the langauges i read/speak/somewhat understand are working fine).



SVN revision: 42814
2009-09-30 04:23:21 +00:00
Carsten Haitzler 526b6e8f3b and fix async load thing hanging around... put in shared queue and be able to
remove targets from the queue.



SVN revision: 42754
2009-09-28 03:51:21 +00:00
Carsten Haitzler 58fc0273fe account for padding too for too-big
SVN revision: 42678
2009-09-24 14:44:05 +00:00
Vincent Torri f12c2099d4 * export _evas_log_dom_global as it can be used in modules
* don't include non microsoft header files when vc++ is used
 * declare alloca before standard C header files
 * minor formatting

SVN revision: 42663
2009-09-24 05:10:49 +00:00
Carsten Haitzler 85c9ee14e1 and much pain and ganshing of teeth.. this took too long... no more hanging
preload cancels. u can cancel a preload (explicitly or implicitly) with no
lock penalty. now i can get on with my other fun.



SVN revision: 42616
2009-09-22 07:02:14 +00:00
Cedric BAIL c259d8addd * evas: Use eina_log.
Patch from Matthieu.


SVN revision: 42598
2009-09-21 16:08:51 +00:00
Gustavo Sverzut Barbieri 8e56bad0e6 dunno what's this crazy math, but it overflows on 64 bits... ensure it's unsigned long long...
SVN revision: 42523
2009-09-16 19:20:26 +00:00
Carsten Haitzler 65f147aa81 make loaders use "big image" macro to detect an image that is going to just
be way too big to ever allocate. probably code can do with other fixes too.

also make jpeg loader rudametarily understand load regions. very brute-force.
but enough for just this moment to do testing.



SVN revision: 42507
2009-09-16 09:48:05 +00:00
Carsten Haitzler f780cc2c8f add "region" load opt. no loader handles it... yet
SVN revision: 42494
2009-09-15 13:34:12 +00:00
dieb c2fde2fa75 Trailing whitespaces--, remove wrong tabs.
SVN revision: 42454
2009-09-13 03:04:20 +00:00
Carsten Haitzler 7ee7fb5604 1. make max image size a #define
2. max image size > 65536x65536
3. fix cserve leak
4. fix cserve+async load to work together.



SVN revision: 42406
2009-09-11 13:44:53 +00:00
Cedric BAIL 5784d74daa * eina: Add eina_cpu_count.
SVN revision: 41543
2009-07-30 16:45:15 +00:00
Carsten Haitzler d6a6cc63e8 cserve for evas now has a threaded loader - much better when multiple clients
aare hammering it with load requests



SVN revision: 41293
2009-07-10 06:52:09 +00:00
Cedric BAIL a7f2974e13 * evas: break engine API !!!
Improvements: Now evas rendering loop is the one responsible to
	initialize the surface to 0 correctly (taking into account surface
	alpha and object opacity). This will reduce the number of memset
	we do.

	Note: Current software_x11 (xlib and xcb) are buggy. They are
	copying too much data when the surface use a mask. That's why
	two memset are left in their code. They could be removed, but
	we should fix the surface we copy on change (look at mxob user
	and evas_software_xlib_x_output_buffer_paste).


SVN revision: 41206
2009-06-26 13:26:52 +00:00
Vincent Torri 4c09519e99 remove trailing spaces
SVN revision: 41191
2009-06-25 04:20:34 +00:00
Cedric BAIL 0c9aead634 Evas_Rectangle are gone. We now use Eina_Rectangle and memory pool is
shared accross the application.


SVN revision: 41170
2009-06-23 13:57:27 +00:00
Gustavo Sverzut Barbieri 1c0ca5dfbb fix memory leak introduced with recent layer destruction.
also rename evas_layer_free() to evas_layer_free_objects() as what it
do now, make _evas_layer_free() as static and use it both cases.



SVN revision: 41123
2009-06-20 07:17:40 +00:00
Cedric BAIL 5d0a773fef * evas: Use Eina hash improvements.
SVN revision: 41101
2009-06-18 12:14:29 +00:00
Cedric BAIL 6d0ee81526 * evas: Remove Evas_Bool.
SVN revision: 41067
2009-06-17 10:01:52 +00:00
Cedric BAIL 0839ec65ea * Evas: Improve RGBA_Font_* cache using hash and stringshare correctly.
Note: This should not impact font rendering, but if you notice anything
	wrong, please don't hesitate to report this to me.


SVN revision: 41050
2009-06-15 15:07:13 +00:00
Cedric BAIL fdca8644a2 * Evas: Add another delay before reducing number of unused font in the
cache.

	Note: This is usefull when you are scaling up and down a font during an
	animation.


SVN revision: 41049
2009-06-15 14:37:14 +00:00
Cedric BAIL 14693fd070 * evas: Fix SEGV when smart object's child come from another layer than
the parent.

	When we insert object inside a smart object, they could be attached to
	another layer. As long as ref counting work, nothing wrong will happen.
	But during destruction of an Evas, we were just looping over all layers,
	destroying each of them, without checking for refcounting. This could
	cause SEGV.
	      This patch introduce a third loop for wiping out all layers after
	destroying all Evas_Object. So no more SEGV, and no performance
	regression.

	Note: Do not rely on evas_object_layer_get on smart object's child, it
	could give you the wrong answer.


SVN revision: 41046
2009-06-15 14:25:21 +00:00
Vincent Torri 6842103267 revert the patch for RTL text rendering in software_16 engine
SVN revision: 40789
2009-05-23 09:23:01 +00:00
Carsten Haitzler 974bbfd19f header miss!
SVN revision: 40784
2009-05-22 23:10:01 +00:00
Carsten Haitzler c3b8b4ee14 revertg big R to L patches because they break cursors and selection.... BACK
boy BACK!



SVN revision: 40783
2009-05-22 21:12:32 +00:00
Carsten Haitzler e999c88e80 tasn's rtl pathes and improvements... continued!
SVN revision: 40715
2009-05-18 06:08:15 +00:00
Carsten Haitzler 5b7c1be3eb fix a strange issue with re-connect after explicit disconnect to cserve
SVN revision: 40587
2009-05-11 13:09:43 +00:00
Carsten Haitzler 85bff718d6 1. scale cache now allows you to hint at the object if its dynamic, static or
none (ie default) and the engines actually understand it and use it.
2. fixes to scalecache and cserver too. more toto's done and its now been
stress tested by me - and i think cserve is ready to go gold. just enable it
with export EVAS_CSERVE=1 in your env for any eflapps - and run evas_cserve
(cmd-line options avalable plus cmd-line tol to query settings change on the
fly and query statsitics and state)



SVN revision: 40536
2009-05-07 13:29:56 +00:00
Carsten Haitzler 46e8aa1b0d shared cache server++
is it ok?

1. it can be --disabled in evas's configure, but i think it works WITHOUT
disabling it (runtime) as it falls back to the old way of loading
2. it may cause build problems on some platforms - without it being enabled
we won't find out, so enable.
3. it needs enabling runtime to make use of it so it should be safe for now
until you enable it.

what is it?

it is a SHARED cache server - that means images loaded are loaded BY the
cache server (not by the actual process using evas). images are shared via
shared memory segments (shm_open + mmap). this means only 1 copy is in all
ram at any time - no matter how many processes need it , and its only loaded
once. also if another app has already loaded the same data - and its in the
cache or active hash, then another process needing the same stuff will avoid
the loads as it will just get instant replies from the cache of "image already
there". as it runs in its own process it can also time-out images from the
cache too.

right now you enable it by doing 2 things

1. run evas_cserve (it has cmd-line options to configure cache etc.
2. export EVAS_CSERVE=1 (im the environment of apps that should use the cache
server).

it works (for me) without crashes or problems. except for the following:

1. preloading doesnt work so its disabled if cserve is enabled. thisis
because the load threads interfere withthe unix comms socket causing
problems. this need to really change and have the cserve know about/do
preload and let the select() on the evas async events fd listen for the
unsolicited reply "load done". but it's not broken - simple preloads are
syncronous and forced if cserve is enabled (at build time).
2. if cserve is killed/crashes every app using it will have a bad day. baaad
day. so dont do it. also cserve may be vulnerable to apps crashing on it - it
may also exit with sigpipe. this needs fixing.
3. if the apps load using relative paths - this will break as it doesnt
account for the CWD of the client currently. will be fixed.
4. no way to change cache config runtime (yet)
5. no way to get internal cache state (yet).
6. if cache server exist - it wont clean up the shmem file nodes in /dev/shm
- it will clean on restart (remove the old junk). this needs fixing.

if you fine other issues - let me know.

things for the future:

1. now its a separate server.. the server could do async http etc. loads too
2. as a server it could monitor history of usage of files and images and
auto-pre-load files it knows historically are loaded then whose data is 
immediately accessed.
3. the same infra could be used to share font loads (freetype and/or 
fontconfig data).
4. ultimately being able to share rendered font glyphs will help a lot too.
5. it could, on its own, monitor "free memory" and when free memory runs
load, reduce cache size dynamically. (improving low memory situations).
6. it should get a gui to query cache state/contents and display visually.
this would be awesome to have a list of thumbnails that show whats in the
cache, how many referencesa they have, last active timestamps etc.

blah blah.

please let me know if the build is broken asap though as i will vanish
offline for a bit in about 24hrs...



SVN revision: 40478
2009-05-01 07:11:07 +00:00
Vincent Torri 1893ae93be fix compilation with c++ compilers (needed for Windows too)
patch by Lars Munch


SVN revision: 40103
2009-04-16 10:41:27 +00:00
Cedric BAIL 10a15524cc * evas: Finally remove as much free/malloc from the render path. Will need certainly
need some tunning on the number of Evas_Rectangle allocated in advance.


SVN revision: 40084
2009-04-15 13:40:37 +00:00
Cedric BAIL 55e281b4ff * evas: Now all Evas_Rectangle are part of a pool. Next step would be to
remove free at the end of evas_object_render_pre_effect_updates and only
	do it on idle.


SVN revision: 40040
2009-04-14 12:15:07 +00:00
Cedric BAIL fa4c0f3ea3 * evas: Another attempt to fix clip cache. Now invalid clip cache every time
we change cur.geometry in the code (did a grep to locate this). I hope I did
	spot all users, as I didn't see bug in exec_buf, efm and in window title, I
	am confident enought to break svn again.

	* WARNING * This change can cause visual bug. Please report.



SVN revision: 40039
2009-04-14 10:47:15 +00:00
Cedric BAIL d40e3ac01a * evas: Add a mempool. More speedup to come, depend on timing with "break" freeze.
SVN revision: 40037
2009-04-14 09:27:27 +00:00
Carsten Haitzler de96594bde revert - spotted clip bug in titlebar in e17.
SVN revision: 39966
2009-04-11 07:10:26 +00:00
Cedric BAIL d3a9b8307f * evas: This patch reintroduce the use of cache for clip. I don't know
why it was disable the first time, so it could lead to some graphic bug.
	Please report any strange behaviour.

	*WARNING* This could really introduce some visual bug.



SVN revision: 39940
2009-04-10 15:14:40 +00:00
Cedric BAIL df60ff6129 * evas: Make one more function inline.
SVN revision: 39894
2009-04-08 11:08:02 +00:00
Carsten Haitzler e0a8a97b6d now enough logic to know when to unload original... now just need to make
unloaidng possible without instant-reload.



SVN revision: 39742
2009-03-27 03:50:03 +00:00
Carsten Haitzler 1a224311d6 make pipe renderer separate to thread support - off by default.
SVN revision: 39740
2009-03-27 01:48:58 +00:00
Carsten Haitzler 29216b4a78 for now... enable scalecache. i havent seen it crash e or expedite or
elementary nor leak... so .. let's see. not 100% done yet. but good.



SVN revision: 39724
2009-03-26 12:47:44 +00:00
Carsten Haitzler a3f68ea9d9 1. a bunch of neon asm infra and some asm, but only the neon that works is
enabled. the blending is not working/complete. the neon for fills and copies
isnt actually faster though currently :(
2. scalecache infra - disabled for now. working on it.



SVN revision: 39723
2009-03-26 07:14:08 +00:00
Vincent Torri b61328192f API break (well, kind of...)
* evas_engine_info_set() returns now an int, to inform if
   an error occured or not when setting the info of the engine.
 * in the Evas_Func structure, the setup() method returns an int
 * all the engines are updated

I'll fix ecore_evas and ewl later (the compilation is still fine).

Gustavo: should I add EINA_WARN_UNUSED_RESULT at the end of the
evas_engine_info_set() function ?



SVN revision: 39670
2009-03-24 09:05:32 +00:00
Gustavo Sverzut Barbieri 8347690e99 evas now use eina attribute macros.
let's stop replicating these macros over and over again, also flag
evas functions with attributes to help with optimizations.

TODO:

 * move functions returning "int" as boolean to Eina_Bool

 * move api entry to EINA_SAFETY_*

 * document api



SVN revision: 39598
2009-03-20 01:03:15 +00:00
Carsten Haitzler eba0aaffd6 preliminary neon asm support. do NOT use!
SVN revision: 39474
2009-03-14 06:48:25 +00:00
Carsten Haitzler 6bc4266805 patch from Tiago Falcão - unroll loops in evas a bit.
SVN revision: 39467
2009-03-13 15:18:39 +00:00
Carsten Haitzler 9062c9050a and support obscured rects for clip-out if middle of bordered image set to
solid. speedup.



SVN revision: 39051
2009-02-17 04:53:03 +00:00
Cedric BAIL b70ae3c927 * evas/src/lib/include/evas_common.h,
* evas/src/lib/engines/common/evas_font.h,
	* evas/src/lib/engines/common/evas_font_draw.c,
	* evas/src/lib/engines/common/evas_font_load.c,
	* evas/src/lib/engines/common/evas_font_query.c: Add cache for font kerning.

This patch give something around 2% for all tests around text in expedite,
except for Textblock Intl where it give a 3 times boost.

Regarding text rendering speed, something is strange when used by evas_pipe.
All tests using Styles are around 40% faster without evas_pipe. 30% faster
for Text Change. But Text Basic 7% slower. So it should be possible to have
faster rendering when using evas_pipe for font rendering.


SVN revision: 38993
2009-02-10 15:53:17 +00:00
Cedric BAIL 5621e47f1c Correctly cancel each image object and not all at once.
SVN revision: 38658
2009-01-20 14:56:37 +00:00
Cedric BAIL 011bc06ecc * evas/src/lib/cache/evas_cache_image.c,
* evas/src/lib/include/evas_common.h: Now you should receive a async call for each image object that does async preload.


SVN revision: 38643
2009-01-19 14:06:09 +00:00
Gustavo Sverzut Barbieri 68bd5fb68b Possible last try to fix async imagre preload race conditions.
1 - use inlist as regular list uses non-thread safe mempool;
 2 - lock around image loading, so if main thread requests pixels right
     before worker thread is loading them, you don't get ie->info.module
     to NULL while it would be used (triggered from engines/common).
     Maybe this should be handled by a global mutex elsewhere instead of
     per-image mutex, but it has more granularity now.
 3 - emit "preloaded" callback if it was canceled to be loaded from main
     thread.

Please someone review these changes.



SVN revision: 38312
2008-12-23 23:07:48 +00:00
Gustavo Sverzut Barbieri 4821dcf1f8 always call image preloaded callback.
if image was already preloaded, inform user.

regular use case is to have image hidden, ask for preload and then
show image on callback, if there is no callback, image is never shown.



SVN revision: 38236
2008-12-19 21:56:31 +00:00
Cedric BAIL 2b278b9419 Remove use of evas_hash from evas and use directly eina.
SVN revision: 38066
2008-12-09 17:56:31 +00:00
Carsten Haitzler a2cd677cdc ok - revert scalecache until leak fixed.
SVN revision: 37899
2008-12-02 02:33:09 +00:00
Carsten Haitzler 72c25fd2fc quick - evas scalecache put this in svn do i dont lose my patch. i'll revert
and work on gettign the leak fixed.



SVN revision: 37898
2008-12-02 02:32:22 +00:00
Carsten Haitzler ad5c292def fix #defines for arm - 5e on supports pld! :)
SVN revision: 37874
2008-12-01 03:56:34 +00:00
Carsten Haitzler 7e6fb27b4c make scale set apply immediately on objects that do scaling...
SVN revision: 37656
2008-11-15 10:39:46 +00:00
Carsten Haitzler 9705e3c741 hmmm after some talking - for now put the transform patch on hold - we need
tyo fix up some of these breaks first and there isn't a lot of time devoted
to this. so revert this. it's in svn history so we can dig it out any time we
like.



SVN revision: 37453
2008-11-04 09:19:35 +00:00
Carsten Haitzler 3e984fee34 jose's transform patches. some things to note:
1. nearest scaling is now broken - it's always linear interpolation. this
will lead to slowdowns. i need to fix this - a must.
2. i think it's time i put in a transformed image cache that can cache an
image object at a transform (and share it) automatically.
3. transforms in non-software-engines will not work - broken. need to at
least do xrender and gl engines.

any volunteers to help?



SVN revision: 37447
2008-11-03 22:50:54 +00:00
Cedric BAIL cdf08d5696 Fix bug when shutting down all engine and still have some font in the cache.
Draw back: When we are destroying an Evas canvas, we loose all cached font
that are not used anymore.

A correct fix would be to link Fndat to the Evas that provide and use them.
And only delete them when no more Evas reference them.


SVN revision: 37353
2008-10-31 10:46:46 +00:00
Sebastian Dransfeld 88c695c2ad Only unix should depend on signal.h
SVN revision: 37043
2008-10-24 06:49:44 +00:00
Cedric BAIL 465b76a017 Remove Evas_List from Evas.
SVN revision: 36942
2008-10-21 16:31:05 +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
Cedric BAIL e692738d22 Remove Evas_Array.
SVN revision: 36716
2008-10-16 12:27:07 +00:00
Cedric BAIL 1cec65e922 Switch evas internal use of evas_stringshare to eina_stringshare.
SVN revision: 36674
2008-10-15 14:38:34 +00:00
Cedric BAIL 5b87d765b6 Fix for CPU_* use with evas_pipe.c.
SVN revision: 36673
2008-10-15 14:25:27 +00:00
Carsten Haitzler 07447cf079 add align, weight and padding hints for evas objects.
SVN revision: 36429
2008-10-04 16:11:23 +00:00
Cedric BAIL bd2c5d6648 Add image preloading support.
This should work without performance impact for all engine.


SVN revision: 36018
2008-09-16 14:52:57 +00:00
Cedric BAIL 665ee944ee When you know what you do, it could make sense to remove all magic check
from Evas and win some speed boost. Use really carefully.

Still turn MAGIC_DEBUG on by default.


SVN revision: 35965
2008-09-12 13:14:08 +00:00
Carsten Haitzler d06c5e9efb and add a scale factor per object. right now text and textblock use it.
that's about it. a bit hacky - but works and frankly.. the idea is that u'd
set a scale factor once really and not change it per obj... most likely.




SVN revision: 35896
2008-09-09 14:14:26 +00:00
Gustavo Sverzut Barbieri 58a49c2f69 Add calculate callback to Evas_Smart_Class.
Some people is using it for some time now without problems, so I'm
adding it to SVN to get some broader use. Remember to recompile ALL
libraries that depend on Evas as it will change the
EVAS_SMART_CLASS_VERSION and old classes will fail to load.

This will also change Edje so it will postpone _edje_recalc() to
render time, calculate() callback, however some methods will force
early recalculation.



SVN revision: 35860
2008-09-07 01:25:49 +00:00
Carsten Haitzler d73b8c5d7b updated patches from jose!
SVN revision: 35756
2008-08-31 02:04:31 +00:00
Carsten Haitzler c1fe72d7e4 jose has some new gradient work - these are his patches. nice work joseg! yes
- some enignes break as they dont have the stubbed out functions, and
xrender/gl engines dont even implement the drawing and need to (but are
stubbed out).



SVN revision: 35677
2008-08-26 05:45:04 +00:00
doursse 9c58ab7087 * move blend functions declaration to their own header files
* add vim header


SVN revision: 35182
2008-07-21 16:10:48 +00:00
doursse 60391e746d * move draw functions declaration to their own file
* add missing headers


SVN revision: 35181
2008-07-21 15:52:09 +00:00
doursse 3f28e61186 * move image declaration funtions to their own header file
* add vim header


SVN revision: 35173
2008-07-19 18:32:32 +00:00
doursse 83c733fbf7 * move line, polygon, rectangle API to their own files
* add vim header


SVN revision: 35172
2008-07-19 18:05:54 +00:00
doursse 261189e2e2 * move font and gradient declarations to their own files
* add vim headers
 * remove some trailing spaces


SVN revision: 35170
2008-07-19 17:13:42 +00:00
Carsten Haitzler 986b3ded31 fix build. build properly.
SVN revision: 35163
2008-07-18 14:17:05 +00:00
doursse 21a5e030f2 not needed anymore as they are in their source file, now
SVN revision: 35156
2008-07-18 11:11:04 +00:00
doursse 47e866557d add cast for c++ compilers. Patch from Dmitriy Mazovka
SVN revision: 35138
2008-07-17 07:45:42 +00:00
doursse 0fd75a462a move pipe function declarations to their own file
SVN revision: 35064
2008-07-11 08:21:25 +00:00
doursse 493eb069a3 * remove trailing spaces in evas_pipe.c
* move scale function declarations to their own files


SVN revision: 35063
2008-07-11 06:36:30 +00:00
doursse 739be5c6b7 move evas_convert_main.h to evas_common.h
SVN revision: 35062
2008-07-11 05:50:56 +00:00
doursse 2679ced73b move evas_object_list declaration from evas_common.h to Evas_Data.h
SVN revision: 35061
2008-07-11 05:42:44 +00:00
doursse fb9313c024 * move convert function declarations to their own header file
* add vim header in the files I modified
 * fix minor warnings

i think i don't break compilation on that commit :)


SVN revision: 35058
2008-07-10 22:53:33 +00:00
doursse 9b35bc26f3 * move evas_mempool from main.c to it's own file in data/ as it's only
used by evas_list
 * add a header files for evas_cache, evas_path and evas_module
 * remove trailing spaces in evas_list.c


SVN revision: 35052
2008-07-10 16:38:54 +00:00
doursse 993697fec7 * move _Evas_Object_List and _Evas_Hash structures to Evas_Data.h
* move Evas_Array_Hash and Evas_Object_List declarations to Evas_Data.h
 * move evas_array_hash.c from engines/common/ to data/
 * remove Evas_Array_Double_Hash declaration (not used)


SVN revision: 35042
2008-07-09 16:50:33 +00:00
Carsten Haitzler 3242217c16 cedric rect + arrays patch for reducing allocs
SVN revision: 35024
2008-07-07 21:29:29 +00:00
doursse a9e090a81b * move Evas_Hash_El from evas_common.h to evas_hash.c as
it is not used outside evas_hash.c
 * move data types api from Evas.h to Evas_Data.h


SVN revision: 34974
2008-07-02 04:44:38 +00:00
Carsten Haitzler d4e8f592bb fix arrya state engin issue... redraws vanishing. fixed!
SVN revision: 34808
2008-06-12 13:22:26 +00:00
Cedric BAIL eaedf88d4d Fix osbcuring case with evas_render cache.
SVN revision: 34737
2008-06-04 16:42:39 +00:00
Cedric BAIL 9feac9ef8b Fix common 16bpp engine use of alpha.
SVN revision: 34729
2008-06-03 14:45:39 +00:00
Cedric BAIL d102e3db82 * Make RGBA_IMAGE_HAS_ALPHA and RGBA_IMAGE_ALPHA_SPARSE part of
Image_Entry flag structure. This fix a bug with 16 bpp software engine.

        * Change image loader module API to take any Image_Entry. Same goes
        for evas_common_image_premul and evas_common_image_set_alpha_sparse.

        * Use new eet API: eet_data_image_read_to_surface.


SVN revision: 34728
2008-06-03 09:09:39 +00:00
Cedric BAIL 0c85857e57 Fix a typo.
SVN revision: 34701
2008-05-30 13:55:51 +00:00
Cedric BAIL 0ca6c0a0bb Add a private data member to cache image structure.
SVN revision: 34700
2008-05-30 13:33:40 +00:00
doursse 7f47953b78 missing EAPI in front of evas_common_gradient_geometer_get()
other gradient related functions (lines 1138 - 1143) seem to
be used only internally. Maybe we should move them elsewhere.


SVN revision: 34694
2008-05-30 05:56:53 +00:00
doursse 37eed61ee8 put unistd.h after sys/types.h. Seems to be needed for vc++. Thanks to Dmitriy Mazovka
SVN revision: 34691
2008-05-29 05:48:16 +00:00
Cedric BAIL c766fe91db Add array type to evas.
SVN revision: 34676
2008-05-26 13:17:12 +00:00
Cedric BAIL 777410eac2 Make the most used functions inline functions.
SVN revision: 34675
2008-05-26 13:08:54 +00:00
doursse 5ce3b6752b fix compilation with a c++ compiler, add EAPI in front of all cache function declarations
SVN revision: 34659
2008-05-24 18:26:51 +00:00
Gustavo Sverzut Barbieri a4ed92a1a5 Remove bugs with bitfield usage, make boolean usage clear.
This patch fixes the problem with bitfield of signed types (ie: char),
where the bit would be used for the signal, so 1 is considered -0 and
thus 0.

Move all the single bit fields to Evas_Bool, making it clear and also
avoiding these problems since Evas_Bool is unsigned char.


SVN revision: 34631
2008-05-20 20:56:39 +00:00
Carsten Haitzler 5887bde860 colorspace stuff in cvs.
SVN revision: 34604
2008-05-19 03:13:16 +00:00
doursse fb826a2200 remove trailing spaces
SVN revision: 34586
2008-05-16 04:55:31 +00:00
doursse db311f0b05 wrong inclusion of Evas.h
SVN revision: 34561
2008-05-13 20:58:15 +00:00
Cedric BAIL 5f41def624 Only call the allocation surface when required and correctly handle no_free.
SVN revision: 34480
2008-05-06 11:20:29 +00:00
Gustavo Sverzut Barbieri 27437c83cf Make layer number a short and Save 8 bytes.
By having a layer as a short (16 bits) we can pack it together with
the bitfields, saving 4 bytes per sub-struct, 8 bytes in total, also
bringing the struct down from 4 to 3 cachelines on my laptop.

Rationale: layers are mostly used to differentiate groups of objects
and they stacking, usually we have few layers and we use very large or
very small numbers to make a layer be at the top or at the bottom, but
usually we don't need so many layers.

Caution: code that use values like 999999 will break, so fix your
code! I'll provide another patch to fix all the CVS using these large
values.


SVN revision: 34420
2008-05-01 06:18:21 +00:00
Gustavo Sverzut Barbieri 7a82a3e43d Save 20 bytes moving smart data to its specific object struct.
This saves 20 bytes, bringing Evas_Object to 200 bytes, by moving data
specific to smart objects to their own struct (Evas_Object_Smart).

There is still one remaining member that could be removed:
smart.smart, this is used mainly to identify if one object is a smart
object or not. One possibility would be to add a bitfield to state
that, but another possibility is to check Evas_Object::object_data
and see if it's a smart or not.


SVN revision: 34419
2008-05-01 05:48:03 +00:00
Gustavo Sverzut Barbieri 4bc8043a10 Save 8 bytes from Evas_Object by packing interpolation.color_space.
Interpolation color_space (now ASHV or ARGB) was being used inside a
struct with 4 byte alignment. Remove it from the struct and make it a
bitfield so can be packed with the other fields. This saves 2
integers, so 8 bytes.


SVN revision: 34418
2008-05-01 04:14:08 +00:00
Gustavo Sverzut Barbieri 625e124f05 Reorganize Evas_Object to save 20 bytes.
This is a repack of bitfield members, was tested on GNU/Linux + GCC 4.1.2
and works fine. Needs further testing on other compilers.


SVN revision: 34417
2008-05-01 03:52:20 +00:00
Gustavo Sverzut Barbieri 80f8e23d77 Use more specific types in Evas_Object.
SVN revision: 34416
2008-05-01 03:42:21 +00:00
Gustavo Sverzut Barbieri 29549249c4 Cosmetic: add name to structs: Evas_Coord_Rectangle.
Non-intrusive change to name structs of Evas_Coord x, y, w, h.

TODO: intrusive changes to use this struct, will need to fix ".c"


SVN revision: 34414
2008-04-30 23:58:43 +00:00
Gustavo Sverzut Barbieri dbf35460a6 Cosmetic: Visual alignment of member name.
SVN revision: 34413
2008-04-30 23:44:03 +00:00
Gustavo Sverzut Barbieri b46fc2a2f4 Save memory related to size hints.
Size hints are useful, but wasting 36 bytes for it on every object is a bit
too much: clippers and lots of other objects will have no need for it.

Now it's a pointer to a struct that will be allocated just when some value
is set, wasting 4/8 bytes more for the pointer when it is used, but saving
32/28 bytes when it is not.

This will also help to have alignment properties in future, that can come
as hints, without too much impact on memory consumption.


SVN revision: 34412
2008-04-30 22:51:08 +00:00
Gustavo Sverzut Barbieri 54c06677b4 Export missing size_hints methods.
SVN revision: 34411
2008-04-30 22:13:50 +00:00
Cedric BAIL 2a123c0d6a Add support for evas asynchronous events.
SVN revision: 34410
2008-04-30 12:21:31 +00:00