Commit Graph

155 Commits

Author SHA1 Message Date
Gustavo Sverzut Barbieri d58031f5fc evas preload: do not lock mutex aready locked.
SVN revision: 38749
2009-01-23 22:21:04 +00:00
Gustavo Sverzut Barbieri 018af5b44c Fix image cache shutdown.
we should just remove entries pending preload from the cache being
shutdown, not all of them.

this is untested as it is hard to force this situation, but should be
more correct than the previous.



SVN revision: 38747
2009-01-23 21:08:35 +00:00
Gustavo Sverzut Barbieri 14a88b52d4 evas preload: keep the preload thread alive.
before, when no more images were to be preloaded asynchronously, the
thread exited, but were not collected. This leads to a huge leak if
the process is doing aggressive use of image preloading (ie: photo
wall).

collecting dead threads in a proper way (read: without race
conditions) is a bit harder than keeping just one thread alive,
forever. As we do that for evas_pipe (the renderer), let's do the same
with preload and save code.



SVN revision: 38746
2009-01-23 20:36:04 +00:00
Gustavo Sverzut Barbieri 763999fa8b Remove all images pending preload before cache shuts down.
SVN revision: 38703
2009-01-23 00:09:10 +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
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 363ddc283d fix locking around entry_surface_alloc.
we must make sure flags are consistent with actual values, so lock
around use and set of these variables as well.



SVN revision: 38322
2008-12-26 12:50:55 +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 586979c07b fix bugs spotted by clang static analyser.
We had some problems with preload and after running LLVM's CLang
Static Analyser we found out that current->target could be NULL after
loop.

Also fixed some GCC and CLang warnings, kudos to these wonderful tools
that "Saved The Day".

PS: we should put some CLang Static Analyser results so others can
help fix other parts of E.



SVN revision: 38293
2008-12-23 18:14:16 +00:00
Gustavo Sverzut Barbieri 089b1c7925 fix image preload signature and make it callback if already preloaded.
evas_object_image_preload() should not use object as const because it
will mdofiy the object state (so it's semantic makes more sense).

if data was already loaded, then callback before ignored it (return).



SVN revision: 38246
2008-12-20 13:39:15 +00:00
Sebastian Dransfeld 0b2c10c1c6 Add function prototypes to header.
SVN revision: 38154
2008-12-15 20:31:26 +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
Vincent Torri d250e5501b Big patch to make Evas work (more or less) with Windows CE:
* when fopen used, open in binary mode
 * use Evil when fopen is used
 * clean a bit some Makefile.am and add Evil dependency where needed
 * in evas_path.c, remove useless old Windows CE code. It's managed by Evil, now
 * in Evas_Data.h, move Eina.h before EAPI is defined for Evas.
 * define _WIN32_WCE when the host is windows cee


SVN revision: 37476
2008-11-05 17:21:04 +00:00
Cedric BAIL 9840ad8c4e eina_hash_foreach doesn't allow safe removal of entry during iteration anymore.
SVN revision: 37354
2008-10-31 11:07:10 +00:00
Cedric BAIL 465b76a017 Remove Evas_List from Evas.
SVN revision: 36942
2008-10-21 16:31:05 +00:00
Cedric BAIL f9e815645f Replace heavy snprintf by eina convertion functions.
SVN revision: 36751
2008-10-17 11:59:49 +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 1cec65e922 Switch evas internal use of evas_stringshare to eina_stringshare.
SVN revision: 36674
2008-10-15 14:38:34 +00:00
Cedric BAIL 0d82a4a75a Remove duplicated declaration.
SVN revision: 36654
2008-10-14 12:43:45 +00:00
Cedric BAIL ad1525e5f9 Make evas depend on eina. No change in the code yet, so just fix your build system and no bug must show up.
SVN revision: 36621
2008-10-13 15:58:56 +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 899a60456c Need to correctly initialize this value.
SVN revision: 35581
2008-08-20 13:49:04 +00:00
Cedric BAIL 9181503f9f * evas/src/lib/cache/evas_cache_image.c: Fix a typo that should have broken svg rendering in some case.
SVN revision: 35580
2008-08-20 12:14:30 +00:00
doursse 6a87729269 add some vim headers
SVN revision: 35183
2008-07-21 16:44:58 +00:00
doursse ac88597078 make cache functions link properly when using c++ compiler
SVN revision: 35144
2008-07-17 20:42:22 +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
Cedric BAIL 4c9f900c60 Check the correct colorspace.
SVN revision: 34796
2008-06-10 14:21:06 +00:00
Cedric BAIL 346b2c922d Fix width correctly depending on colorspace.
SVN revision: 34791
2008-06-10 09:20:41 +00:00
Cedric BAIL 2b8c136ad9 Fix a little bug with alpha flags not being correctly set.
SVN revision: 34734
2008-06-04 08:20: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 0ca6c0a0bb Add a private data member to cache image structure.
SVN revision: 34700
2008-05-30 13:33:40 +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
Christopher Michael 355b22f3a7 Add missing prototype for _evas_cache_image_entry_delete because it was
being used before the function was defined.


SVN revision: 34516
2008-05-09 19:04:49 +00:00
Cedric BAIL d31b0db3ca Fix a bug when a file change when it's still in use. Thanks to Adriano Rezende for helping tracking the bug.
SVN revision: 34513
2008-05-09 16:18:18 +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
Cedric BAIL 47c7f1aa08 Fix a bug caused by duplicated entry in the activ and dirty cache list.
SVN revision: 34302
2008-04-17 15:30:03 +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
Gustavo Sverzut Barbieri 1def3acd63 Missing const to callback parameter.
SVN revision: 33712
2008-02-08 20:54:18 +00:00
Gustavo Sverzut Barbieri 7cb7216314 Add const: evas_hash.c
As agreed on IRC, evas_hash_foreach() now takes const, to make clear
that hash shouldn't be changed. If one wants to change he must do a
cast and return 0.  However this will require users to be updated in
applications.


SVN revision: 33708
2008-02-08 19:55:03 +00:00
Carsten Haitzler c1441e1c3a e:
1. configure/build changes to allow cross-compiling painlessly
2. pager module namespace changes - this was still dirty afdter the namespace
cleanup, so clean it up
3. add a powersave subsystem - doesnt have an "automatic" way to turn on and
off right now, this i think is best provided by modules (that do things like
monitor acpi status's (eg close lid of laptop), AC power status etc. etc.
this allows e to nicely defer "power" expensive actions to avoid disk
spinups etc.
4. move to use the new ecore poller system  - discussed long ago as part of
power management/saving issues. now it exists
5. add a canvas idle flush call that helsp cope with the new shm greedy
software x11 engine stuff
6. use the new powersave subsystem where appropriate
7. fix non-zeroed/initted memory access in e_fm_main
8. fix mem leak for e menus
9. remove ipc handlers for changed/removed config values
10. use animaotr not timer for menu scrolls - then menu scrolls obey the fps
config
11. fix up timer/poll happienss of cursor idle stuff
12. remove avoid damage from popups for now - causing problems
13. change battery and temp readouts to b e shorter so they fit
14. pager can emit signals on focus change for mini-windows now
15. temperature module now uses a slave process and uses stdin/out to talk to
it and get output - this makes e smoother as in my expereicne i found getting
the temp on my laptop actually took like 200ms so e "hang" for 200ms while
reading the acpi files - so now the subprocess does it and just writesa back
to e when it gets it.

ecore:
1. add ecore_pollers. see the documentation on them in doxygen comments :)
2. fix timers to only go off when they have to - bug there that made e's
select time out a LOT more than it needed to. defensive coding hid the
problem. now fixed. e should be much more power friendly now.
3. formatting/niceness in ecore_exe stuff
4. some comments on comments with SIGIO ideas vs. select
5. add call to be able to add an idle enterer at the start of the list of
them, not just the end (as has been the default)
6. fix ecore_evas to support auto evas idler calls after 0.5 secs of idle in
all canvases - and to do it right
7. if argb destination - set the shape EVENT shape (to mask out events in
transparent regions much like shape does withotu translucency)
8. in ecore_x add support for the event shape

evas:
1. fix cache to work properly and not just always fill up (as it seemed to
like to think cahce useage dropped below 0 when it didnt and thus just
over-fill)
2. software x11 engine now ONLY uses shm segments - no ximages over the
socket. this ximage hack was there to avoid the 2 round trips involved in
setting up an shm image - now i mitigated that wih an shm image cache pool.
it keeps shm images around and repurposes them for new update regions if
appropriate. this means many fewer shm creates (about 1/100th the number) and
since we recycle the memory less 0 memory page filling by the kernel - in the
end, i recorded about a 10-20% speedup over the old software x11 engine.
simple tests i have seen up to 120% speedups. idle flush now does something -
it frees all the cached shm segments. it has a hard-coded limit of 4mb worth
of shm segments (or 32 segments - whichever comes first) to keep around. once
can never complain much about speedups methinks :). also evas will defer sync
until the NEXT frame is written - this means evas can calculate the next
frame of data while x dma's/copies the images to the screen at the same time
(if you hve a dual core or multi-cpu machnike or your xserver is able to use
DMA to copy image data to the screen/video ram then this should see a decent
speedup).


SVN revision: 33448
2008-01-11 07:33:57 +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
doursse e21fb0f122 autostuff improvements:
* use non deprecated version of AC_INIT and AM_INIT_AUTOMAKE
   and check the required minimal versions.
 * add bzipped distribution archive
 * add AC_LIBTOOL_WIN32_DLL
 * forbid libtool to check fortran
 * compute libtool versioning from the version of the package
 * pass the directories based on ${prefix} to the preoprocessor
   with the -D option
 * replace INCLUDES, wich is deprecated since 2001 by AM_CPPFLAGS
 * remove useless -L flags in *_la_LDFLAGS


SVN revision: 32337
2007-11-04 09:21:50 +00:00
Carsten Haitzler f5c14b41ee actually - 0 by default.
SVN revision: 32002
2007-10-07 11:17:09 +00:00
Carsten Haitzler afdefa4305 4mb imge cache by default - stupid to have it unlimited.
SVN revision: 32001
2007-10-07 11:10:19 +00:00
Sebastian Dransfeld 8ef049c3da As cache_key uses evas_stringshare, it should be const.
Don't free stringshare'd strings.
Formatting.


SVN revision: 31291
2007-08-13 05:30:17 +00:00
Carsten Haitzler f23f99bf84 and actively remove images when they are KNOWN to have been removed from disk
or the cached copies have 0 refs and are too old (thus wasting cache space).


SVN revision: 31243
2007-08-11 12:22:43 +00:00
Carsten Haitzler c28878389d and use timestamp (mtime) for cache
SVN revision: 31242
2007-08-11 12:14:17 +00:00
Carsten Haitzler ee6e3e6a9a \use direct hash - doesnt strdup the string key. also stringshare the img key
- just in case.


SVN revision: 31232
2007-08-09 14:44:36 +00:00
Carsten Haitzler 14024931d1 fix cache accounting
SVN revision: 31230
2007-08-09 12:21:21 +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 6c167c3a6d cedric's sdl patch.
SVN revision: 30845
2007-07-16 07:25:35 +00:00