On Fri, 15 Feb 2008 15:56:12 +0100 "Cedric BAIL" <[EMAIL PROTECTED]> babbled:
i found a wonderful nasty "bug"...
1. edje keeps the eet handle open.
2. edje uses the string dictionary
3. what happens if you delete the edj file edje is depending on and it then
tries to make use of any o the strings from the dictionary... :) (hint: some
signal around #11 :)).
:)
try this. use some theme X in e. have the source and recompile it (be nice -
delete the original. recompiling the theme in-place is even worse as u screw
with the file that eet has mmaped() in with string dictionary data):
rm X.edj; edje_cc X.edc
now go move your mouse around. move a window. bam. segv. :)
> So here we go with the big dangerous patch that could break every thing :-)
>
> I did change the file format to this version finally :
>
> /* Version 3 */
> /* NB: all int's are stored in network byte order on disk */
> /* file format: */
> int magic; /* magic number ie 0x1ee70f42 */
> int num_directory_entries; /* number of directory entries to follow */
> int num_dictionary_entries; /* number of dictionary entries to follow */
> struct
> {
> int data_offset; /* bytes offset into file for data chunk */
> int size; /* size of the data chunk */
> int data_size; /* size of the (uncompressed) data chunk */
> int name_offset; /* bytes offset into file for name string */
> int name_size; /* length in bytes of the name field */
> int flags; /* flags - for now 0 = uncompressed, 1 = compressed */
> } directory[num_directory_entries];
> struct
> {
> int hash;
> int offset;
> int size;
> int prev;
> int next;
> } dictionary[num_dictionary_entries];
> /* now start the string stream. */
> /* and right after them the data stream. */
>
> All directory and dictionary entry are now aligned, this simplify a
> lot the reading code. With this patch data decoding and encoding use
> the dictionary if provided for string, double and float. As float and
> double are now uniq string, the dictionary act also like a cache for
> float and double string conversion. Old eet_flush is still present in
> eet_lib for archeologist, but as we want compatibility with previous
> eet file format previous eet_internal_read is still in use and work.
>
> I also provide a patch for edje, that should be applied with the eet
> patch. It use the new eet API to prevent unecessary
> evas_stringshare_add and switch edc source file to the new
> EET_T_INLINED_STRING type (This string are compressed inside the
> encoded data and not put inside the dictionary). Previous edje file
> should still work with this update, but only new one will benefit from
> this upgrade.
>
> --
> Cedric BAIL
>
--
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler) [EMAIL PROTECTED]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel