Commit Graph

88 Commits

Author SHA1 Message Date
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 a27c701f27 * evas: Remove lot's of warning.
SVN revision: 44629
2009-12-21 15:52:12 +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
Cedric BAIL c259d8addd * evas: Use eina_log.
Patch from Matthieu.


SVN revision: 42598
2009-09-21 16:08:51 +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
Cedric BAIL 1676145494 * evas: Reduce code duplication.
SVN revision: 41228
2009-07-01 14:05:04 +00:00
Carsten Haitzler d92a6d99a7 more cserver work for sharede cache- improvements
SVN revision: 40524
2009-05-06 12:36:06 +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
Carsten Haitzler 9dbf47682d oops and fix the flags!
SVN revision: 39762
2009-03-27 14:11:27 +00:00
Carsten Haitzler 66cc98b0f4 also be able to free orig data now (and reload)
SVN revision: 39743
2009-03-27 06:06:45 +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 f344743dae fix some warnings reported by llvm (see http://local.profusion.mobi:8081/~lfelipe/output-efl/)
* mainly unused parameters
 * in src/lib/imaging/evas_imaging.c, set font to NULL
 * in src/lib/canvas/evas_object_gradient.c, add unititialized member

there are a *lot* of reported warnings by llvm, i'll fix them later

there are also *lots* of unused parameters (compile evas with -W). I'll
fix them later too



SVN revision: 39172
2009-02-24 08:31:31 +00:00
Gustavo Sverzut Barbieri 83783665f5 Let's try to shutdown cache and fix delete problem.
SVN revision: 38702
2009-01-23 00:08:11 +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
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
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 193c21da9e remove tons of trailing spaces
SVN revision: 35171
2008-07-19 17:40:52 +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
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
Carsten Haitzler 7752c8a3e5 and fix the gradient bug - yes. it is a GRADIENT BUG. you emms() when u are
totally done and may hand control back to a non rendering codepath - or
before u do any fp ops u are unsure of the cpu state beforehand. see the big
fat comment.

i was right. it was a missing emms.


SVN revision: 34707
2008-05-31 04:16:39 +00:00
Carsten Haitzler 0d42705593 adapt to newer valgrind goop
SVN revision: 34605
2008-05-19 03:29:54 +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
Carsten Haitzler 0688234e2f notes - cedric... i think i may have found a problem here...
SVN revision: 34443
2008-05-03 08:31:26 +00:00
Carsten Haitzler 42facfffe6 1. dont free/realoc if no_free is set.
2. free then malloc otherwise realloc might ALSO have to memcpy if it cant
resize the segment whihc means overhead we dont need/want.


SVN revision: 34441
2008-05-03 06:38:45 +00:00
Carsten Haitzler 184bfa989d fix image dirties with yuv and software rendering
SVN revision: 34272
2008-04-15 15:20:53 +00:00
Carsten Haitzler ae1977a214 cedric's cache changes patch
SVN revision: 34253
2008-04-12 00:32:30 +00:00
doursse 219831980f * Remove Windows code in evas_module.c and use evilness instead
* Allow Windows Mobile to correctly load dll's
 * Use correct scheme for EAPI on Windows and include config.h when necessary
 * add -mwin32 to compiler flags when compiling with cegcc


SVN revision: 34024
2008-03-14 16:49:49 +00:00
Carsten Haitzler 0112fdc383 patches, caching fixes, zone dynamic creation/deletion handling, stuff.
SVN revision: 33127
2007-12-14 05:57:16 +00:00
Carsten Haitzler cd2e7767fd resolved bug from leonardo.cunha@openbossa.org
SVN revision: 32180
2007-10-28 04:01:56 +00:00
doursse ffb74463b2 remove c99 structure initialization
SVN revision: 31458
2007-08-22 15:06:04 +00:00
Carsten Haitzler 287d8779fb fix the cache code - it was basically broken and wouldnt free things from
cache. it also didnt account cache USAGE (cache is ref == 0 count images
speculatively hanging around in case theyare needed).


SVN revision: 31227
2007-08-08 23:41:31 +00:00
Carsten Haitzler b8b5b958f2 i spyed me a bug that captin'! aye! comments in the code about it - hack
around it for now.


SVN revision: 30933
2007-07-22 16:25:24 +00:00
Carsten Haitzler 694cab4e14 0
cedric's patches broke emotion - fix.


SVN revision: 30888
2007-07-18 04:42:23 +00:00
codewarrior ec8ea7c7dd fix Bug#: 111
http://bugzilla.enlightenment.org/show_bug.cgi?id=111


SVN revision: 30870
2007-07-17 10:08:16 +00:00
Carsten Haitzler 6c167c3a6d cedric's sdl patch.
SVN revision: 30845
2007-07-16 07:25:35 +00:00
Carsten Haitzler 78408fe60a 1. fix a lot of things so they pass make distcheck - so many things have
broken. guys - need to be more careful!
2. asparagus
3. some extra docs/comments for evas


SVN revision: 30696
2007-07-10 00:13:26 +00:00
Carsten Haitzler 16df9e0047 add in the work I did for a 16bit engine - for now, a dormant project until i
can be convinced it provides real and significant speedups that warrant the
significant effort.


SVN revision: 29770
2007-04-29 15:45:40 +00:00
Carsten Haitzler ecfa6af1ec just spotted a bug - i think its efreet related, but this is to make sure it
is or isnt as this struct was overwritten or seemingly pointing to an efreet
data struct


SVN revision: 29643
2007-04-22 07:01:44 +00:00
Carsten Haitzler 2d2ad07524 yuv call removed if yuv support not built
SVN revision: 29553
2007-04-16 14:30:22 +00:00
Carsten Haitzler 921304555c now limit stats per any 1 file to STAT_GAP (2 seconds).
SVN revision: 28544
2007-03-03 09:04:47 +00:00
Carsten Haitzler 63a4cbb869 chasing somethnig really bizarre... but this works right now.
SVN revision: 28533
2007-03-02 23:12:10 +00:00
Carsten Haitzler e58afbca6e i've put back timestamp checks - but evas wont stata file more frequently
than once per 2 seconds to avoid overhead.


SVN revision: 28532
2007-03-02 22:27:52 +00:00
Carsten Haitzler 635e741438 oh dear - when i added load opts - i broke speculative caching. fixed!
SVN revision: 28531
2007-03-02 22:09:18 +00:00
Sebastian Dransfeld 4b1cf1116c Fix warning. First compute value then increment pointer.
SVN revision: 27588
2006-12-28 12:37:37 +00:00
Christopher Michael 90a63b2699 Be a little more paranoid about freeing image data by adding some missing
checks for valid im->cs.data and im->image->data before trying to compare
them.


SVN revision: 27526
2006-12-19 23:51:44 +00:00
Carsten Haitzler f83220c857 not complete yet - actually i need help with the fragment shader.
in evas_gl_texture.c i have a frag shader, and it tries to use a set of 3
textures that act as the yuv planes, BUT the u and v textures (Utex and Vtex)
are simply getting values from the Ytex - regardless of what i try. grrr.
what's up with that?


SVN revision: 27495
2006-12-17 15:48:52 +00:00
Carsten Haitzler 9781eb9b38 1. evas gets a pipeline with deferred rendering ability (sometimes faster,
sometimes slower)
2. --enable-pthreads will enable multi-threaded rendering (current support is
for up to 4 threads so if you have a new fanled quad core or dual cpu dual
core box or whatever you will in theory be able to max moe of its cpu grunt
with the software rendering engine. this can only be done because i added the
pipelines which means almsot entirely lock-free multithreading internally in
evas. the only locks are for fonts but with a little work i might be able to
remove some/most of those too)

for now pthreaded rendering likely will be linux only (it relies on sched.h
for setting scheduler params to force the slave threads to run on separate
cpu's as linux likes to keep them on the same cpu otherwise and thus we get
no speedups at all - only slowdowns).

aso note that it is a bit of a mixed bag. complex ops (like smooth scaling
with alpha blending) get speedups, but simple ops (like blits/fills) slow down.

this all neds examination and tweaking still - but it's a start.


SVN revision: 27098
2006-11-13 23:23:44 +00:00