forked from enlightenment/enlightenment
a9a0752791
This cache is very simple and should work fine when system does not change, it keeps a direct association of mime-types and found icons, remembering theme and icon size. Search is very fast since it uses stringshared strings and thus direct pointer comparison in hash search. We could optimize it even more if we assumed stringshared strings to come in, so no need to eina_stringshare_add() (which is a hash per se), using just eina_stringshare_ref(). Cache population is limited to compile-time value and just values older than a given threshold are deleted. I do not keep a LRU explicit list, so you might have some old but unused items always alive. I don't find this too bad, sure it will consume more memory, but will not hurt performance. We can change this to purge all expired items by not checking for number of items to remove, removing all that match. Next I plan to find out a good way to cache and speed up file->mime discovery. I plan to do auto-generated state-machine to match extensions, so you don't need to check the same extension character more than once. Example: Input: bla.edc Extensions: edc edj eps png bmp It would first try to match against 'e', 'p' and 'b'. It will match 'e' and then check for 'd' (edc or edj) or 'p' (eps). It will match 'd' and then check for 'c' or 'j'. This will reduce number of comparisons considerably. As I'm running out of time (4am, not much time left on this month), I could use some help here. SVN revision: 39343 |
||
---|---|---|
config | ||
data | ||
debian | ||
doc | ||
intl | ||
lib | ||
m4 | ||
po | ||
src | ||
.cvsignore | ||
AUTHORS | ||
BUGS | ||
COPYING | ||
COPYING-PLAIN | ||
ChangeLog | ||
INSTALL | ||
Makefile.am | ||
NEWS | ||
README | ||
autogen.sh | ||
configure.ac | ||
enlightenment.pc.in | ||
enlightenment.spec.in | ||
netwm.txt | ||
x-ui.sh | ||
xnest.sh |
README
Enlightenment 0.17.0 - IN DEVELOPMENT... not a RELEASE. Requirements: ------------- Must: libc libm libX11 libXext evas ecore ecore-evas ecore-file ecore-ipc ecore-con ecore-job ecore-imf ecore-img-evas edje eet embryo efreet efreet-mime edbus ecore-txt [png loader in evas, jpeg loader in evas, eet loader in evas, software_x11 engine in evas, buffer engine in evas] Recommended: libpam [xrender engine in evas] NOTE: Users of DR16 will need to rename the $prefix/bin/enlightenment file prior to installing DR17 or it will be overwritten. You can also use the configure --prefix option to put e17 in a separate tree of its own (recommended) like: ./configure --prefix=/usr/local/e17 You will, as usual need to add the subsequent bin dir to your $PATH etc. NOTES: * do NOT use -mfpmath=sse in CFLAGS - we are not sure, but it may have bugds and screws up things in edje, evas and e17. if your gcc uses this by default (which apparently gcc4.x does on amd64), turn it off with a -fpmath=387 in your CFLAGS. * your freetype2 version must be > 2.1.7 * i remember hearing of bugs with later versions of freetype on some distributions (2.1.9 and 2.1.10) with certain patches or missing certain patches. be aware of this as a possible font problem.