Go to file
Raphael Kubo da Costa 29dd8e2b47 evas: Stop initializing and shutting Fontconfig down
A few days ago I was investigating a bug in the EFL WebKit port and
noticed WebKit's and Evas' handling of Fontconfig are somewhat
incompatible: while the evas_font code calls both FcInit() and FcFini()
when on initialization and shutdown, respectively, WebKit keeps some
Fontconfig objects alive until the process exits. In practice, this
means that shutting Evas down will cause FcFini() to assert because
there are objects which have not been properly destroyed.

This is not really a WebKit-specific problem, as any program which also
uses Fontconfig directly and shuts Evas down before destroying all FC
resources it has allocated is going to crash in the same way.

Other libraries such as Qt, Pango and Cairo do not explicitly initialize
and shut Fontconfig down. Evas itself got this code in r40242 and was
later adjusted in r45829 and r74870.

Since we can't completely control the lifetime of all Fontconfig objects
used in client code, I was thinking of doing the same thing as other
libraries do and get rid of the calls to FcInit() and FcFini(). The part
which is really important is not calling FcFini() -- this was already
done for a while in the r45829 which I mentioned. Valgrind will complain
about some "still reachable" memory blocks, but that's not really
important (as raster said in that revision's commit message, "things may
look like they leak in Valgrind - they dont. in reality").

Note: tasn tried to talk about it with fc guys and it's the
way to go. They won't implemented refcount as suggested in our ml.

Patch by: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>



SVN revision: 83605
2013-02-04 15:37:41 +00:00
data fix distcheck. 2013-01-16 18:28:43 +00:00
dbus-services merge ethumb. 2013-01-12 01:15:45 +00:00
doc Efl: revert committing that damned images.mk. 2013-01-29 16:50:54 +00:00
licenses add missing licenses references, fix copyright, add link result notice. 2013-01-16 21:48:14 +00:00
m4 Add wayland-client as a dependency for the evas wayland shm engine. 2013-01-24 09:13:48 +00:00
old merge ethumb. 2013-01-12 01:15:45 +00:00
pc Add modules and module_arch variables to ecore_imf.pc 2013-01-25 12:34:10 +00:00
po efl i18n: french update. 2013-02-02 13:04:35 +00:00
spec The OBS stuff is an utter catastrophe, so I'm trying to make this 2012-12-26 08:55:47 +00:00
src evas: Stop initializing and shutting Fontconfig down 2013-02-04 15:37:41 +00:00
.gitignore efl: Update .gitignore with more example binaries 2013-02-01 09:16:48 +00:00
AUTHORS add missing authors. 2013-01-16 21:47:37 +00:00
COPYING add missing licenses references, fix copyright, add link result notice. 2013-01-16 21:48:14 +00:00
ChangeLog efl/eina: prevent denial of service on eina_hash. 2013-02-04 07:52:56 +00:00
Makefile.am efl: Actually install the ecore-audio.pc file 2013-01-25 13:51:29 +00:00
NEWS efl/eina: prevent denial of service on eina_hash. 2013-02-04 07:52:56 +00:00
README efl: add back valgrind check, with enable option and warning. 2013-01-07 22:24:53 +00:00
autogen.sh lets remove cache files on autogen. 2012-11-12 14:44:30 +00:00
configure.ac efl: Add switch to enable edje-multisense 2013-01-28 15:15:32 +00:00

README

EFL 1.7.99

******************************************************************************

 FOR ANY ISSUES PLEASE EMAIL:
 enlightenment-devel@lists.sourceforge.net

******************************************************************************

EFL is a collection of libraries for handling many common tasks a
developer man have such as data structures, communication, rendering,
widgets and more.

VALGRIND DEPENDENCY:
------------------------------------------------------------------------------
EFL uses the concept of memory pools (mempool) and this will confuse
valgrind memcheck tool. By using memory pool, the memory is still
owned by EFL, then valgrind won't alert on memory leaks or use of
unused memory. EFL will use memcheck.h from valgrind to declare its
memory pools to valgrind, producing better debugging results.

However valgrind is only available to limited platforms, making us
hard to declare it a mandatory requirement. Based on
--with-profile={dev,debug} valgrind will be used if available or will
be issued a warning. You can force valgrind with --enable-valgrind, or
disable it and the warning with --disable-valgrind.

EFL does NOT link to valgrind libraries. Then there is NO runtime
dependency on valgrind.


BULLET PHYSICS DEPENDENCY:
------------------------------------------------------------------------------
EFL comes with EPhysics(a physics wrapper library) enabled by default, to
build it the user must have BulletPhysics engine installed.

More informations about BulletPhysics can be obtained in the upstream project
web site at: http://bulletphysics.org.

We have received many reports about BulletPhysics installation and distros
packages in bad shape, some without even a package. If your distro doesn't
ship a BulletPhysics package or you want to build it from source code follow the
instructions below:

* Required Packages:
You should have cmake installed. Bullet comes with autotools and cmake build
systems, do not use the autotools alternative, it's unstable, bogus and hasn't
been maintained for quite some time.

* Download the tarball from:
http://code.google.com/p/bullet/downloads/list

NOTE: the current supported version is 2.80 or greater.

* Compiling and Installing:
Uncompress it to(say) ~/bullet and:

$ cd ~/bullet/build
$ cmake .. -DBUILD_CPU_DEMOS=OFF -DBUILD_DEMOS=OFF -DBUILD_SHARED_LIBS=ON
$ make
$ sudo make install

* Ubuntu Users:
Alternatively ubuntu users have the option to install the BulletPhysics from
our official EFL PPA:

https://launchpad.net/~efl/+archive/trunk

------------------------------------------------------------------------------
COMPILING AND INSTALLING:

  ./configure
  make
(do this as root unless you are installing in your users directories):
  make install

EFL build is based on "profiles". It will default to "dev" for
unreleased software and "release" for official tarballs. One can
change it with --with-profile=NAME, where NAME is one of:

  * dev: extra checks useful to test software.

  * debug: superset of dev, with debug features and assert().

  * release: optimizations and less checks so it runs faster.


CRYPTOGRAPHIC SYSTEM: EFL officially uses "openssl" library to do
signature, cipher and related. Alternatively one can use "gnutls"
(some distros are strict about licenses and want gnutls instead of
openssl) or disable it. One can change it with --with-crypto=NAME,
where NAME is one of: "openssl", "gnutls" and "none".