From: Enlightenment S. <no-...@en...> - 2011-04-24 07:36:22
|
Log: use new eina prefix finder. Author: raster Date: 2011-04-24 00:36:15 -0700 (Sun, 24 Apr 2011) New Revision: 58850 Trac: http://trac.enlightenment.org/e/changeset/58850 Removed: trunk/edje/src/bin/edje_prefix.c trunk/edje/src/bin/edje_prefix.h Modified: trunk/edje/src/bin/Makefile.am trunk/edje/src/bin/edje_cc.c trunk/edje/src/bin/edje_cc.h trunk/edje/src/bin/edje_cc_out.c trunk/edje/src/bin/edje_cc_parse.c trunk/edje/src/bin/edje_convert.c trunk/edje/src/bin/edje_convert_main.c Modified: trunk/edje/src/bin/Makefile.am =================================================================== --- trunk/edje/src/bin/Makefile.am 2011-04-24 07:35:52 UTC (rev 58849) +++ trunk/edje/src/bin/Makefile.am 2011-04-24 07:36:15 UTC (rev 58850) @@ -16,8 +16,7 @@ edje_cc_parse.c \ edje_cc_mem.c \ edje_cc_handlers.c \ -edje_cc_sources.c \ -edje_prefix.c +edje_cc_sources.c edje_cc_CPPFLAGS = \ -I$(top_srcdir)/src/bin \ @@ -69,5 +68,5 @@ edje_external_inspector_LDFLAGS = @lt_enable_auto_import@ -EXTRA_DIST = @EDJE_RECC_PRG@ edje_prefix.h edje_cc.h edje_convert.h edje_convert.c edje_convert_main.c edje_data_convert.c +EXTRA_DIST = @EDJE_RECC_PRG@ edje_cc.h edje_convert.h edje_convert.c edje_convert_main.c edje_data_convert.c EXTRA_SCRIPTS = edje_recc Modified: trunk/edje/src/bin/edje_cc.c =================================================================== --- trunk/edje/src/bin/edje_cc.c 2011-04-24 07:35:52 UTC (rev 58849) +++ trunk/edje/src/bin/edje_cc.c 2011-04-24 07:36:15 UTC (rev 58850) @@ -8,10 +8,11 @@ #include <sys/stat.h> #include "edje_cc.h" -#include "edje_prefix.h" int _edje_cc_log_dom = -1; static void main_help(void); +Eina_Prefix *pfx = NULL; + Eina_List *img_dirs = NULL; Eina_List *fnt_dirs = NULL; Eina_List *defines = NULL; @@ -147,7 +148,16 @@ exit(-1); } - e_prefix_determine(argv[0]); + pfx = eina_prefix_new(argv[0], /* argv[0] value (optional) */ + main, /* an optional symbol to check path of */ + "EDJE", /* env var prefix to use (XXX_PREFIX, XXX_BIN_DIR etc. */ + "edje", /* dir to add after "share" (PREFIX/share/DIRNAME) */ + "include/edje.inc", /* a magic file to check for in PREFIX/share/DIRNAME for success */ + PACKAGE_BIN_DIR, /* package bin dir @ compile time */ + PACKAGE_LIB_DIR, /* package lib dir @ compile time */ + PACKAGE_DATA_DIR, /* package data dir @ compile time */ + PACKAGE_DATA_DIR /* if locale needed use LOCALE_DIR */ + ); /* check whether file_in exists */ #ifdef HAVE_REALPATH @@ -216,6 +226,9 @@ data_process_script_lookups(); data_write(); + eina_prefix_free(pfx); + pfx = NULL; + edje_shutdown(); eina_log_domain_unregister(_edje_cc_log_dom); eina_shutdown(); Modified: trunk/edje/src/bin/edje_cc.h =================================================================== --- trunk/edje/src/bin/edje_cc.h 2011-04-24 07:35:52 UTC (rev 58849) +++ trunk/edje/src/bin/edje_cc.h 2011-04-24 07:36:15 UTC (rev 58850) @@ -3,6 +3,8 @@ #include <edje_private.h> +extern Eina_Prefix *pfx; + /* * On Windows, if the file is not opened in binary mode, * read does not return the correct size, because of Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2011-04-24 07:35:52 UTC (rev 58849) +++ trunk/edje/src/bin/edje_cc_out.c 2011-04-24 07:36:15 UTC (rev 58850) @@ -27,7 +27,6 @@ #include <Ecore_Evas.h> #include "edje_cc.h" -#include "edje_prefix.h" #include "edje_convert.h" #include <lua.h> @@ -796,7 +795,7 @@ snprintf(buf, sizeof(buf), "embryo_cc -i %s/include -o %s %s", - e_prefix_data_get(), output, source); + eina_prefix_data_get(pfx), output, source); ret = system(buf); /* accept warnings in the embryo code */ Modified: trunk/edje/src/bin/edje_cc_parse.c =================================================================== --- trunk/edje/src/bin/edje_cc_parse.c 2011-04-24 07:35:52 UTC (rev 58849) +++ trunk/edje/src/bin/edje_cc_parse.c 2011-04-24 07:36:15 UTC (rev 58850) @@ -30,7 +30,6 @@ #include <math.h> #include "edje_cc.h" -#include "edje_prefix.h" #include <Ecore.h> #include <Ecore_File.h> @@ -743,7 +742,8 @@ * Run the input through the C pre-processor. */ ret = -1; - snprintf(buf2, sizeof(buf2), "%s/edje/utils/epp"EPP_EXT, e_prefix_lib_get()); + snprintf(buf2, sizeof(buf2), "%s/edje/utils/epp" EPP_EXT, + eina_prefix_lib_get(pfx)); if (ecore_file_exists(buf2)) { snprintf(buf, sizeof(buf), "%s %s -I%s %s -o %s", Modified: trunk/edje/src/bin/edje_convert.c =================================================================== --- trunk/edje/src/bin/edje_convert.c 2011-04-24 07:35:52 UTC (rev 58849) +++ trunk/edje/src/bin/edje_convert.c 2011-04-24 07:36:15 UTC (rev 58850) @@ -1,7 +1,6 @@ #include "edje_private.h" #include "edje_cc.h" -#include "edje_prefix.h" #include "edje_convert.h" static const Edje_File *_current_edje_file = NULL; Modified: trunk/edje/src/bin/edje_convert_main.c =================================================================== --- trunk/edje/src/bin/edje_convert_main.c 2011-04-24 07:35:52 UTC (rev 58849) +++ trunk/edje/src/bin/edje_convert_main.c 2011-04-24 07:36:15 UTC (rev 58850) @@ -8,7 +8,6 @@ #include <sys/stat.h> #include "edje_cc.h" -#include "edje_prefix.h" #include "edje_convert.h" extern Eet_Data_Descriptor *_edje_edd_old_edje_file; |
From: Enlightenment S. <no-...@en...> - 2011-06-14 07:02:27
|
Log: From: Vincent Torri <vt...@un...> Subject: [E-devel] Edje: using fdopen instead of fopen in edje_cc On windows, using open() followed by fopen() does not work. Hence, in edje_cc, where mkstemp (which uses open) is followed by fopen, edje_cc fails. Instead of fopen, we can use fdopen. I pasted a patch below. Can you comment it (like, instead of keeping the filename in the function that i modified, why not using it for the fd? (changes - closefd) removed from data_write_scripts() as fclose() handles that) Author: raster Date: 2011-06-14 00:02:14 -0700 (Tue, 14 Jun 2011) New Revision: 60299 Trac: http://trac.enlightenment.org/e/changeset/60299 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2011-06-14 05:19:19 UTC (rev 60298) +++ trunk/edje/src/bin/edje_cc_out.c 2011-06-14 07:02:14 UTC (rev 60299) @@ -708,9 +708,9 @@ } static void -create_script_file(Eet_File *ef, const char *filename, const Code *cd) +create_script_file(Eet_File *ef, const char *filename, const Code *cd, int fd) { - FILE *f = fopen(filename, "wb"); + FILE *f = fdopen(fd, "wb"); if (!f) error_and_abort(ef, "Unable to open temp file \"%s\" for script " "compilation.\n", filename); @@ -787,7 +787,7 @@ static void compile_script_file(Eet_File *ef, const char *source, const char *output, - int script_num) + int script_num, int fd) { FILE *f; char buf[4096]; @@ -802,7 +802,7 @@ if (ret < 0 || ret > 1) error_and_abort(ef, "Compiling script code not clean.\n"); - f = fopen(output, "rb"); + f = fdopen(fd, "rb"); if (!f) error_and_abort(ef, "Unable to open script object \"%s\" for reading.\n", output); @@ -864,8 +864,7 @@ error_and_abort(ef, "Unable to open temp file \"%s\" for script " "compilation.\n", tmpn); - create_script_file(ef, tmpn, cd); - close(fd); + create_script_file(ef, tmpn, cd, fd); snprintf(tmpo, PATH_MAX, "%s/edje_cc.amx-tmp-XXXXXX", tmp_dir); fd = mkstemp(tmpo); @@ -875,10 +874,8 @@ error_and_abort(ef, "Unable to open temp file \"%s\" for script " "compilation.\n", tmpn); } + compile_script_file(ef, tmpn, tmpo, i, fd); - compile_script_file(ef, tmpn, tmpo, i); - close(fd); - unlink(tmpn); unlink(tmpo); |
From: Enlightenment S. <no-...@en...> - 2011-06-15 09:38:18
|
Log: From: Ulrich Eckhardt <doo...@kn...> Subject: [E-devel] Provide sensible errors for edje utilities If you start edje_player or edje_inspector with a path to a file that doesn't exist you get a bogus error message saying that the file doesn't contain any groups. The attached patch uses access() to check if the program can read the file, giving a sensible error message if not. I have checked the other utilities there, too, and they work, with the exception of edje_external_inspector. I'm not sure how this one works at all, but it seems not to take a file but a list of modules, maybe someone with greater insight can take a look at that. Going through things installed under bin, I'll take a look if those behave properly and create patches for those, too, if this one is okay. Author: raster Date: 2011-06-15 02:38:08 -0700 (Wed, 15 Jun 2011) New Revision: 60338 Trac: http://trac.enlightenment.org/e/changeset/60338 Modified: trunk/edje/src/bin/edje_inspector.c trunk/edje/src/bin/edje_player.c Modified: trunk/edje/src/bin/edje_inspector.c =================================================================== --- trunk/edje/src/bin/edje_inspector.c 2011-06-15 09:34:16 UTC (rev 60337) +++ trunk/edje/src/bin/edje_inspector.c 2011-06-15 09:38:08 UTC (rev 60338) @@ -11,6 +11,7 @@ #include <Ecore_Getopt.h> #include <locale.h> #include <fnmatch.h> +#include <unistd.h> static int _log_dom; #define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__) @@ -1577,6 +1578,15 @@ file = argv[arg_index]; + // check if the file is accessible + if (access(file, R_OK) == -1) + { + int e = errno; + ERR("File '%s' not accessible, error %d (%s).\n", + file, e, strerror(e)); + ret = 1; + goto error_getopt; + } DBG("mode=%s, detail=%d(%s), group=%s, part=%s, program=%s, api-only=" FMT_UCHAR ", api-fix=" FMT_UCHAR ", machine=" FMT_UCHAR ", file=%s", Modified: trunk/edje/src/bin/edje_player.c =================================================================== --- trunk/edje/src/bin/edje_player.c 2011-06-15 09:34:16 UTC (rev 60337) +++ trunk/edje/src/bin/edje_player.c 2011-06-15 09:38:08 UTC (rev 60338) @@ -674,6 +674,15 @@ ecore_app_args_set(argc, (const char **)argv); edje_scale_set(opts.scale); + // check if the given edj file is there + if (access(argv[args], R_OK) == -1) + { + int e = errno; + fprintf(stderr, "ERROR: file '%s' not accessible, error %d (%s).\n", + argv[args], e, strerror(e)); + goto end; + } + opts.file = argv[args]; if (opts.list_groups) { |
From: Enlightenment S. <no-...@en...> - 2011-10-13 00:09:12
|
Log: oooh bad memory pointer handling as part of group inheritance (part overriding) patches....!!!!! fix! Author: raster Date: 2011-10-12 17:09:04 -0700 (Wed, 12 Oct 2011) New Revision: 64028 Trac: http://trac.enlightenment.org/e/changeset/64028 Modified: trunk/edje/src/bin/edje_cc_handlers.c Modified: trunk/edje/src/bin/edje_cc_handlers.c =================================================================== --- trunk/edje/src/bin/edje_cc_handlers.c 2011-10-12 23:22:26 UTC (rev 64027) +++ trunk/edje/src/bin/edje_cc_handlers.c 2011-10-13 00:09:04 UTC (rev 64028) @@ -2647,13 +2647,14 @@ check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = pc->parts[pc->parts_count - 1]; + ep = current_part; ep->name = parse_str(0); + if (ep->name) { unsigned int i; - for (i = 0; i < pc->parts_count - 1; ++i) + for (i = 0; i < (pc->parts_count - 1); i++) { if (pc->parts[i]->name && (!strcmp(pc->parts[i]->name, ep->name))) { @@ -2669,7 +2670,7 @@ free(ep); pc->parts_count--; pc->parts = realloc(pc->parts, pc->parts_count * sizeof (Edje_Part *)); - current_part = pc->parts[i]; + ep = current_part = pc->parts[i]; epp->can_override = EINA_FALSE; } } |
From: Enlightenment S. <no-...@en...> - 2011-10-19 09:41:24
|
Log: From: Jaehwan Kim <jae...@sa...> Subject: [E-devel] [Patch] change rel1.to to default when using group inherit When using group inherit, if rel1.to is set in parent group, we cannot change the part name of rel1.to to default (the default is that dont have the part name) in child group. So I changed edje_cc_out.c. After patching, we can change rel1.to to default by using "". (ex > rel1.to: "";) Author: raster Date: 2011-10-19 02:41:17 -0700 (Wed, 19 Oct 2011) New Revision: 64171 Trac: http://trac.enlightenment.org/e/changeset/64171 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2011-10-19 09:04:34 UTC (rev 64170) +++ trunk/edje/src/bin/edje_cc_out.c 2011-10-19 09:41:17 UTC (rev 64171) @@ -1277,7 +1277,13 @@ if ((pl->pc == pc) && (pl->dest == dest)) { free(pl->name); - pl->name = mem_strdup(name); + if (strlen(name) > 0) + pl->name = mem_strdup(name); + else + { + part_lookups = eina_list_remove(part_lookups, pl); + free(pl); + } return; } } |
From: Enlightenment S. <no-...@en...> - 2011-11-05 11:25:49
|
Log: and be explicit.. unsigned.. INT! Author: raster Date: 2011-11-05 04:25:42 -0700 (Sat, 05 Nov 2011) New Revision: 64754 Trac: http://trac.enlightenment.org/e/changeset/64754 Modified: trunk/edje/src/bin/edje_multisense_convert.c Modified: trunk/edje/src/bin/edje_multisense_convert.c =================================================================== --- trunk/edje/src/bin/edje_multisense_convert.c 2011-11-05 08:41:51 UTC (rev 64753) +++ trunk/edje/src/bin/edje_multisense_convert.c 2011-11-05 11:25:42 UTC (rev 64754) @@ -85,7 +85,7 @@ const char* _edje_multisense_encode_to_flac(char *snd_path, SF_INFO sfinfo) { - unsigned total_samples = 0; /* can use a 32-bit number due to WAVE size limitations */ + unsigned int total_samples = 0; /* can use a 32-bit number due to WAVE size limitations */ FLAC__bool ok = 1; FLAC__StreamEncoder *encoder = 0; FLAC__StreamEncoderInitStatus init_status; |
From: Enlightenment S. <no-...@en...> - 2011-11-06 09:27:34
|
Log: add warning on decc Author: raster Date: 2011-11-06 01:27:28 -0800 (Sun, 06 Nov 2011) New Revision: 64807 Trac: http://trac.enlightenment.org/e/changeset/64807 Modified: trunk/edje/src/bin/edje_decc.c Modified: trunk/edje/src/bin/edje_decc.c =================================================================== --- trunk/edje/src/bin/edje_decc.c 2011-11-06 09:22:50 UTC (rev 64806) +++ trunk/edje/src/bin/edje_decc.c 2011-11-06 09:27:28 UTC (rev 64807) @@ -104,6 +104,9 @@ if (!decomp()) return -1; output(); + printf("WARNING! If any Image or audio data was encoded in a LOSSY way, then\n" + "re-encoding will drop quality even more. You need access to the original\n" + "data to ensure no loss of quality.\n"); eet_close(ef); edje_shutdown(); eina_log_domain_unregister(_edje_cc_log_dom); |
From: Enlightenment S. <no-...@en...> - 2011-11-23 10:38:50
|
Log: aaah allow type to be set on group inherit or part inherit... you just really shouldnt set it to a different type as its not very sensible. Author: raster Date: 2011-11-23 02:38:43 -0800 (Wed, 23 Nov 2011) New Revision: 65534 Trac: http://trac.enlightenment.org/e/changeset/65534 Modified: trunk/edje/src/bin/edje_cc_handlers.c Modified: trunk/edje/src/bin/edje_cc_handlers.c =================================================================== --- trunk/edje/src/bin/edje_cc_handlers.c 2011-11-23 08:49:47 UTC (rev 65533) +++ trunk/edje/src/bin/edje_cc_handlers.c 2011-11-23 10:38:43 UTC (rev 65534) @@ -2965,13 +2965,6 @@ "EXTERNAL", EDJE_PART_TYPE_EXTERNAL, "PROXY", EDJE_PART_TYPE_PROXY, NULL); - - if (current_part->default_desc || current_part->other.desc_count > 0) - { - ERR("%s: Error. parse error %s:%i. You can't change the part type in inherited group. (part: %s)", - progname, file_in, line - 1, current_part->name); - exit(-1); - } } /** |
From: Enlightenment S. <no-...@en...> - 2011-11-23 10:43:08
|
Log: lookup duplicate targets and skip new target if already in list. Author: raster Date: 2011-11-23 02:42:58 -0800 (Wed, 23 Nov 2011) New Revision: 65535 Trac: http://trac.enlightenment.org/e/changeset/65535 Modified: trunk/edje/src/bin/edje_cc_handlers.c Modified: trunk/edje/src/bin/edje_cc_handlers.c =================================================================== --- trunk/edje/src/bin/edje_cc_handlers.c 2011-11-23 10:38:43 UTC (rev 65534) +++ trunk/edje/src/bin/edje_cc_handlers.c 2011-11-23 10:42:58 UTC (rev 65535) @@ -7571,6 +7571,15 @@ char *copy; name = parse_str(0); + + EINA_LIST_FOREACH(ep->targets, l, etw) + { + if (!strcmp(name, (char*) (etw + 1))) + { + free(name); + return; + } + } et = mem_alloc(SZ(Edje_Program_Target) + strlen(name) + 1); ep->targets = eina_list_append(ep->targets, et); @@ -7599,14 +7608,6 @@ progname, file_in, line - 1); exit(-1); } - EINA_LIST_FOREACH(ep->targets, l, etw) - if (et != etw && strcmp(name, (char*) (etw + 1)) == 0) - { - ERR("%s: Error. parse error %s:%i. " - "target is targetted twice", - progname, file_in, line - 1); - exit(-1); - } free(name); } } |
From: Enlightenment S. <no-...@en...> - 2011-12-15 14:01:29
|
Log: lets not use uninitialized vars shall we? Author: raster Date: 2011-12-15 06:01:17 -0800 (Thu, 15 Dec 2011) New Revision: 66257 Trac: http://trac.enlightenment.org/e/changeset/66257 Modified: trunk/edje/src/bin/edje_cc_handlers.c Modified: trunk/edje/src/bin/edje_cc_handlers.c =================================================================== --- trunk/edje/src/bin/edje_cc_handlers.c 2011-12-15 13:03:58 UTC (rev 66256) +++ trunk/edje/src/bin/edje_cc_handlers.c 2011-12-15 14:01:17 UTC (rev 66257) @@ -4137,7 +4137,7 @@ { Edje_Part_Collection *pc; Edje_Part *ep; - Edje_Part_Description_Common *ed; + Edje_Part_Description_Common *ed = NULL; pc = eina_list_data_get(eina_list_last(edje_collections)); ep = current_part; |
From: Enlightenment S. <no-...@en...> - 2011-12-16 00:29:12
|
Log: back out: r66257 <- another small fix on the real problem r66250 <- a small fix on the real problem r66242 <- the real problem jaewhan - your commit yesterday (r66242) has made edje_cc very unstable and it will randomly segv (sometimes yes, sometimes no). as such it's at the point i can't even compile e and elm without it segving somewhere during build, so this gets backed out. review your change carefully and look for issues. Author: raster Date: 2011-12-15 16:29:05 -0800 (Thu, 15 Dec 2011) New Revision: 66265 Trac: http://trac.enlightenment.org/e/changeset/66265 Modified: trunk/edje/src/bin/edje_cc_handlers.c trunk/edje/src/bin/edje_cc_mem.c trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_handlers.c =================================================================== --- trunk/edje/src/bin/edje_cc_handlers.c 2011-12-15 22:27:59 UTC (rev 66264) +++ trunk/edje/src/bin/edje_cc_handlers.c 2011-12-16 00:29:05 UTC (rev 66265) @@ -832,7 +832,7 @@ } static Edje_Part_Description_Common * -_edje_part_description_alloc(Edje_Part_Description_Common *ced, unsigned char type, const char *collection, const char *part) +_edje_part_description_alloc(unsigned char type, const char *collection, const char *part) { Edje_Part_Description_Common *result = NULL; @@ -841,15 +841,14 @@ case EDJE_PART_TYPE_RECTANGLE: case EDJE_PART_TYPE_SWALLOW: case EDJE_PART_TYPE_GROUP: - result = mem_realloc(ced, SZ(Edje_Part_Description_Common)); + result = mem_alloc(SZ(Edje_Part_Description_Common)); break; case EDJE_PART_TYPE_TEXT: case EDJE_PART_TYPE_TEXTBLOCK: { Edje_Part_Description_Text *ed; - ed = mem_realloc(ced, SZ(Edje_Part_Description_Text)); - memset(&(ed->text), 0, SZ(Edje_Part_Description_Spec_Text)); + ed = mem_alloc(SZ(Edje_Part_Description_Text)); ed->text.color3.r = 0; ed->text.color3.g = 0; @@ -867,8 +866,7 @@ { Edje_Part_Description_Image *ed; - ed = mem_realloc(ced, SZ(Edje_Part_Description_Image)); - memset(&(ed->image), 0, SZ(Edje_Part_Description_Spec_Image)); + ed = mem_alloc(SZ(Edje_Part_Description_Image)); ed->image.id = -1; @@ -881,8 +879,7 @@ { Edje_Part_Description_Proxy *ed; - ed = mem_realloc(ced, SZ(Edje_Part_Description_Proxy)); - memset(&(ed->proxy), 0, SZ(Edje_Part_Description_Spec_Proxy)); + ed = mem_alloc(SZ(Edje_Part_Description_Proxy)); ed->proxy.id = -1; @@ -895,8 +892,7 @@ { Edje_Part_Description_Box *ed; - ed = mem_realloc(ced, SZ(Edje_Part_Description_Box)); - memset(&(ed->box), 0, SZ(Edje_Part_Description_Spec_Box)); + ed = mem_alloc(SZ(Edje_Part_Description_Box)); ed->box.layout = NULL; ed->box.alt_layout = NULL; @@ -912,8 +908,7 @@ { Edje_Part_Description_Table *ed; - ed = mem_realloc(ced, SZ(Edje_Part_Description_Table)); - memset(&(ed->table), 0, SZ(Edje_Part_Description_Spec_Table)); + ed = mem_alloc(SZ(Edje_Part_Description_Table)); ed->table.homogeneous = EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE; ed->table.align.x = FROM_DOUBLE(0.5); @@ -928,8 +923,7 @@ { Edje_Part_Description_External *ed; - ed = mem_realloc(ced, SZ(Edje_Part_Description_External)); - ed->external_params = NULL; + ed = mem_alloc(SZ(Edje_Part_Description_External)); ed->external_params = NULL; @@ -948,53 +942,6 @@ } static void -_edje_part_description_lookup_del(Edje_Part_Collection *pc, Edje_Part_Description_Common *ced, unsigned char type) -{ - switch (type) - { - case EDJE_PART_TYPE_RECTANGLE: - case EDJE_PART_TYPE_SWALLOW: - case EDJE_PART_TYPE_GROUP: - break; - case EDJE_PART_TYPE_TEXT: - case EDJE_PART_TYPE_TEXTBLOCK: - { - Edje_Part_Description_Text *ed = (Edje_Part_Description_Text*)ced; - - data_queue_part_lookup(pc, NULL, &(ed->text.id_source)); - data_queue_part_lookup(pc, NULL, &(ed->text.id_text_source)); - break; - } - case EDJE_PART_TYPE_IMAGE: - { - int i; - Edje_Part_Description_Image *ed = (Edje_Part_Description_Image*)ced; - Edje_Part_Image_Id *iid; - - data_queue_image_lookup(NULL, &(ed->image.id), NULL); - - for (i = 0; i < ed->image.tweens_count; i++) - { - iid = ed->image.tweens[i]; - data_queue_image_lookup(NULL, &(iid->id), NULL); - } - break; - } - case EDJE_PART_TYPE_PROXY: - { - Edje_Part_Description_Proxy *ed = (Edje_Part_Description_Proxy*)ced; - - data_queue_part_lookup(pc, NULL, &(ed->proxy.id)); - break; - } - case EDJE_PART_TYPE_BOX: - case EDJE_PART_TYPE_TABLE: - case EDJE_PART_TYPE_EXTERNAL: - break; - } -} - -static void _edje_program_check(const char *name, Edje_Program *me, Edje_Program **pgrms, unsigned int count) { Edje_Part_Collection *pc; @@ -2998,22 +2945,9 @@ static void st_collections_group_parts_part_type(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - int i; - check_arg_count(1); - pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = current_part; - - if (ep->default_desc) - _edje_part_description_lookup_del(pc, ep->default_desc, ep->type); - - for (i = 0; i < ep->other.desc_count; i++) - _edje_part_description_lookup_del(pc, ep->other.desc[i], ep->type); - - ep->type = parse_enum(0, + current_part->type = parse_enum(0, "NONE", EDJE_PART_TYPE_NONE, "RECT", EDJE_PART_TYPE_RECTANGLE, "TEXT", EDJE_PART_TYPE_TEXT, @@ -3026,11 +2960,6 @@ "EXTERNAL", EDJE_PART_TYPE_EXTERNAL, "PROXY", EDJE_PART_TYPE_PROXY, NULL); - if (ep->default_desc) - ep->default_desc = _edje_part_description_alloc(ep->default_desc, ep->type, pc->part, ep->name); - - for (i = 0; i < ep->other.desc_count; i++) - ep->other.desc[i] = _edje_part_description_alloc(ep->other.desc[i], ep->type, pc->part, ep->name); } /** @@ -4137,12 +4066,12 @@ { Edje_Part_Collection *pc; Edje_Part *ep; - Edje_Part_Description_Common *ed = NULL; + Edje_Part_Description_Common *ed; pc = eina_list_data_get(eina_list_last(edje_collections)); ep = current_part; - ed = _edje_part_description_alloc(ed, ep->type, pc->part, ep->name); + ed = _edje_part_description_alloc(ep->type, pc->part, ep->name); if (!ep->default_desc) { Modified: trunk/edje/src/bin/edje_cc_mem.c =================================================================== --- trunk/edje/src/bin/edje_cc_mem.c 2011-12-15 22:27:59 UTC (rev 66264) +++ trunk/edje/src/bin/edje_cc_mem.c 2011-12-16 00:29:05 UTC (rev 66265) @@ -26,22 +26,6 @@ return NULL; } -void * -mem_realloc(void *p, size_t size) -{ - void *mem; - - if (!p) - mem = calloc(1, size); - else - mem = realloc(p, size); - if (mem) return mem; - ERR("%s: Error. %s:%i memory allocation of " FMT_SIZE_T " bytes failed. %s", - progname, file_in, line, size, strerror(errno)); - exit(-1); - return NULL; -} - char * mem_strdup(const char *s) { Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2011-12-15 22:27:59 UTC (rev 66264) +++ trunk/edje/src/bin/edje_cc_out.c 2011-12-16 00:29:05 UTC (rev 66265) @@ -1391,7 +1391,7 @@ if ((pl->pc == pc) && (pl->dest == dest)) { free(pl->name); - if (name && name[0]) + if (name[0]) pl->name = mem_strdup(name); else { @@ -1401,7 +1401,7 @@ return; } } - if (!name || !name[0]) return; + if (!name[0]) return; pl = mem_alloc(SZ(Part_Lookup)); part_lookups = eina_list_append(part_lookups, pl); @@ -1536,25 +1536,8 @@ void data_queue_image_lookup(char *name, int *dest, Eina_Bool *set) { - Eina_List *l, *ln; Image_Lookup *il; - EINA_LIST_FOREACH_SAFE(image_lookups, l, ln, il) - { - if (il->dest == dest) - { - free(il->name); - if (name && name[0]) - il->name = mem_strdup(name); - else - { - image_lookups = eina_list_remove_list(image_lookups, l); - free(il); - } - } - } - if (!name || !name[0]) return; - il = mem_alloc(SZ(Image_Lookup)); image_lookups = eina_list_append(image_lookups, il); il->name = mem_strdup(name); |
From: Enlightenment S. <no-...@en...> - 2012-04-19 03:35:40
|
Log: small improvement - allow part names of "-" to mean "remove part name itd and reset back to -1 - ie none". useful for to/to_x/to_y etc. Author: raster Date: 2012-04-18 20:35:29 -0700 (Wed, 18 Apr 2012) New Revision: 70315 Trac: http://trac.enlightenment.org/e/changeset/70315 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-04-19 00:44:07 UTC (rev 70314) +++ trunk/edje/src/bin/edje_cc_out.c 2012-04-19 03:35:29 UTC (rev 70315) @@ -1707,25 +1707,32 @@ Edje_Part *ep; unsigned int i; - for (i = 0; i < part->pc->parts_count; ++i) - { - ep = part->pc->parts[i]; + if (!strcmp(part->name, "-")) + { + *(part->dest) = -1; + } + else + { + for (i = 0; i < part->pc->parts_count; ++i) + { + ep = part->pc->parts[i]; + + if ((ep->name) && (!strcmp(ep->name, part->name))) + { + handle_slave_lookup(part_slave_lookups, part->dest, ep->id); + *(part->dest) = ep->id; + break; + } + } - if ((ep->name) && (!strcmp(ep->name, part->name))) - { - handle_slave_lookup(part_slave_lookups, part->dest, ep->id); - *(part->dest) = ep->id; - break; - } - } + if (i == part->pc->parts_count) + { + ERR("%s: Error. Unable to find part name \"%s\".", + progname, part->name); + exit(-1); + } + } - if (i == part->pc->parts_count) - { - ERR("%s: Error. Unable to find part name \"%s\".", - progname, part->name); - exit(-1); - } - free(part->name); free(part); } |
From: Enlightenment S. <no-...@en...> - 2012-05-16 02:15:52
|
Log: and clean up some of the work on parallelized edje_cc. code less ugly now. Author: raster Date: 2012-05-15 19:15:45 -0700 (Tue, 15 May 2012) New Revision: 71138 Trac: http://trac.enlightenment.org/e/changeset/71138 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-05-16 01:39:53 UTC (rev 71137) +++ trunk/edje/src/bin/edje_cc_out.c 2012-05-16 02:15:45 UTC (rev 71138) @@ -111,8 +111,23 @@ Eina_Bool set; }; -typedef struct _Script_Compile +typedef struct _Script_Lua_Writer Script_Lua_Writer; + +struct _Script_Lua_Writer { + char *buf; + int size; +}; + +typedef struct _Script_Write Script_Write;; +typedef struct _Head_Write Head_Write; +typedef struct _Fonts_Write Fonts_Write; +typedef struct _Image_Write Image_Write; +typedef struct _Sound_Write Sound_Write; +typedef struct _Group_Write Group_Write; + +struct _Script_Write +{ Eet_File *ef; Code *cd; int i; @@ -121,8 +136,47 @@ char tmpn[PATH_MAX]; char tmpo[PATH_MAX]; char *errstr; -} Script_Compile; +}; +struct _Head_Write +{ + Eet_File *ef; + char *errstr; +}; + +struct _Fonts_Write +{ + Eet_File *ef; + Font *fn; + char *errstr; +}; + +struct _Image_Write +{ + Eet_File *ef; + Edje_Image_Directory_Entry *img; + Evas_Object *im; + int w, h; + int alpha; + unsigned int *data; + char *path; + char *errstr; +}; + +struct _Sound_Write +{ + Eet_File *ef; + Edje_Sound_Sample *sample; + int i; +}; + +struct _Group_Write +{ + Eet_File *ef; + Edje_Part_Collection *pc; + char *errstr; +}; + static int pending_threads = 0; static void data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void (*func)(Edje_Part_Collection *pc, char *name, char* ptr, int len)); @@ -261,12 +315,6 @@ } } -typedef struct _Head_Write -{ - Eet_File *ef; - char *errstr; -} Head_Write; - static void data_thread_head(void *data, Ecore_Thread *thread __UNUSED__) { @@ -360,17 +408,10 @@ NULL, hw); } -typedef struct _Fonts_Compile -{ - Eet_File *ef; - Font *fn; - char *errstr; -} Fonts_Compile; - static void data_thread_fonts(void *data, Ecore_Thread *thread __UNUSED__) { - Fonts_Compile *fc = data; + Fonts_Write *fc = data; void *fdata = NULL; int fsize = 0; Eina_List *ll; @@ -469,7 +510,7 @@ static void data_thread_fonts_end(void *data, Ecore_Thread *thread __UNUSED__) { - Fonts_Compile *fc = data; + Fonts_Write *fc = data; pending_threads--; if (pending_threads <= 0) ecore_main_loop_quit(); if (fc->errstr) @@ -491,9 +532,9 @@ it = eina_hash_iterator_data_new(edje_file->fonts); EINA_ITERATOR_FOREACH(it, fn) { - Fonts_Compile *fc; + Fonts_Write *fc; - fc = calloc(1, sizeof(Fonts_Compile)); + fc = calloc(1, sizeof(Fonts_Write)); if (!fc) continue; fc->ef = ef; fc->fn = fn; @@ -548,6 +589,9 @@ "pgm", "ppm", "pnm", + "bmp", + "ico", + "tga", NULL }; @@ -586,17 +630,6 @@ file, file_out, errmsg, hint); } -typedef struct _Image_Write -{ - Eet_File *ef; - Edje_Image_Directory_Entry *img; - Evas_Object *im; - int w, h; - int alpha; - unsigned int *data; - char *errstr; -} Image_Write; - static void data_thread_image(void *data, Ecore_Thread *thread __UNUSED__) { @@ -677,8 +710,7 @@ snprintf(buf, sizeof(buf), "Unable to write image part " "\"%s\" as \"%s\" part entry to " - "%s\n", iw->img->entry, buf, - file_out); + "%s\n", iw->img->entry, buf, file_out); iw->errstr = strdup(buf); return; } @@ -689,8 +721,7 @@ snprintf(buf, sizeof(buf), "Unable to load image part " "\"%s\" as \"%s\" part entry to " - "%s\n", iw->img->entry, buf, - file_out); + "%s\n", iw->img->entry, buf, file_out); iw->errstr = strdup(buf); return; } @@ -698,17 +729,13 @@ if (verbose) { struct stat st; - const char *file = NULL; -/* - evas_object_image_file_get(im, &file, NULL); - if (!file || (stat(file, &st) != 0)) - st.st_size = 0; + + if (!iw->path || (!stat(iw->path, &st))) st.st_size = 0; printf("%s: Wrote %9i bytes (%4iKb) for \"%s\" image entry \"%s\" compress: [raw: %2.1f%%] [real: %2.1f%%]\n", - progname, bytes, (bytes + 512) / 1024, buf, img->entry, - 100 - (100 * (double)bytes) / ((double)(im_w * im_h * 4)), + progname, bytes, (bytes + 512) / 1024, buf, iw->img->entry, + 100 - (100 * (double)bytes) / ((double)(iw->w * iw->h * 4)), 100 - (100 * (double)bytes) / ((double)(st.st_size)) ); - */ } } @@ -724,6 +751,7 @@ error_and_abort(iw->ef, iw->errstr); free(iw->errstr); } + if (iw->path) free(iw->path); evas_object_del(iw->im); free(iw); } @@ -739,7 +767,6 @@ ecore_thread_run(data_thread_image, data_thread_image_end, NULL, iw); } -// WARNING - uses evas to LOAD image... this can't be done in threads! :( static void data_write_images(Eet_File *ef, int *image_num) { @@ -756,7 +783,7 @@ "load.\n"); evas = ecore_evas_get(ee); - for (i = 0; i < edje_file->image_dir->entries_count; i++) + for (i = 0; i < (int)edje_file->image_dir->entries_count; i++) { Edje_Image_Directory_Entry *img; @@ -790,6 +817,8 @@ load_err = evas_object_image_load_error_get(im); if (load_err == EVAS_LOAD_ERROR_NONE) { + *image_num += 1; + iw->path = strdup(buf); pending_threads++; evas_object_image_preload(im, 0); using_file(buf); @@ -802,6 +831,8 @@ load_err = evas_object_image_load_error_get(im); if (load_err == EVAS_LOAD_ERROR_NONE) { + *image_num += 1; + iw->path = strdup(img->entry); pending_threads++; evas_object_image_preload(im, 0); using_file(img->entry); @@ -814,13 +845,6 @@ } } -typedef struct _Sound_Write -{ - Eet_File *ef; - Edje_Sound_Sample *sample; - int i; -} Sound_Write; - static void data_thread_sounds(void *data, Ecore_Thread *thread __UNUSED__) { @@ -928,9 +952,6 @@ static void data_write_sounds(Eet_File *ef, int *sound_num) { - int bytes = 0; - int total_bytes = 0; - if ((edje_file) && (edje_file->sound_dir)) { int i; @@ -978,13 +999,6 @@ } } -typedef struct _Group_Write -{ - Eet_File *ef; - Edje_Part_Collection *pc; - char *errstr; -} Group_Write; - static void data_thread_group(void *data, Ecore_Thread *thread __UNUSED__) { @@ -1132,7 +1146,7 @@ static void data_thread_script(void *data, Ecore_Thread *thread __UNUSED__) { - Script_Compile *sc = data; + Script_Write *sc = data; FILE *f; int size; char buf[PATH_MAX]; @@ -1210,7 +1224,7 @@ static void data_thread_script_end(void *data, Ecore_Thread *thread __UNUSED__) { - Script_Compile *sc = data; + Script_Write *sc = data; pending_threads--; if (pending_threads <= 0) ecore_main_loop_quit(); if (sc->errstr) @@ -1224,7 +1238,7 @@ static Eina_Bool data_scripts_exe_del_cb(void *data __UNUSED__, int evtype __UNUSED__, void *evinfo) { - Script_Compile *sc = data; + Script_Write *sc = data; Ecore_Exe_Event_Del *ev = evinfo; if (!ev->exe) return ECORE_CALLBACK_RENEW; @@ -1256,14 +1270,14 @@ for (i = 0, l = codes; l; l = eina_list_next(l), i++) { Code *cd = eina_list_data_get(l); - Script_Compile *sc; + Script_Write *sc; char buf[PATH_MAX]; if (cd->is_lua) continue; if ((!cd->shared) && (!cd->programs)) continue; - sc = calloc(1, sizeof(Script_Compile)); + sc = calloc(1, sizeof(Script_Write)); sc->ef = ef; sc->cd = cd; sc->i = i; @@ -1293,22 +1307,14 @@ } } -typedef struct _Edje_Lua_Script_Writer_Struct Edje_Lua_Script_Writer_Struct; - -struct _Edje_Lua_Script_Writer_Struct -{ - char *buf; - int size; -}; - #ifdef LUA_BINARY static int _edje_lua_script_writer(lua_State *L __UNUSED__, const void *chunk_buf, size_t chunk_size, void *_data) { - Edje_Lua_Script_Writer_Struct *data; + Script_Lua_Writer *data; void *old; - data = (Edje_Lua_Script_Writer_Struct *)_data; + data = (Script_Lua_Writer *)_data; old = data->buf; data->buf = malloc(data->size + chunk_size); memcpy(data->buf, old, data->size); @@ -1321,7 +1327,7 @@ #endif void -_edje_lua_error_and_abort(lua_State *L, int err_code, Script_Compile *sc) +_edje_lua_error_and_abort(lua_State *L, int err_code, Script_Write *sc) { char buf[PATH_MAX]; char *err_type; @@ -1352,12 +1358,12 @@ static void data_thread_lua_script(void *data, Ecore_Thread *thread __UNUSED__) { - Script_Compile *sc = data; + Script_Write *sc = data; char buf[PATH_MAX]; lua_State *L; int ln = 1; luaL_Buffer b; - Edje_Lua_Script_Writer_Struct dat; + Script_Lua_Writer dat; Eina_List *ll; Code_Program *cp; #ifdef LUA_BINARY @@ -1448,7 +1454,7 @@ static void data_thread_lua_script_end(void *data, Ecore_Thread *thread __UNUSED__) { - Script_Compile *sc = data; + Script_Write *sc = data; pending_threads--; if (pending_threads <= 0) ecore_main_loop_quit(); if (sc->errstr) @@ -1468,7 +1474,7 @@ for (i = 0, l = codes; l; l = eina_list_next(l), i++) { Code *cd; - Script_Compile *sc; + Script_Write *sc; cd = (Code *)eina_list_data_get(l); if (!cd->is_lua) @@ -1476,7 +1482,7 @@ if ((!cd->shared) && (!cd->programs)) continue; - sc = calloc(1, sizeof(Script_Compile)); + sc = calloc(1, sizeof(Script_Write)); sc->ef = ef; sc->cd = cd; sc->i = i; |
From: Enlightenment S. <no-...@en...> - 2012-05-16 07:43:20
|
Log: work around race condition bug in ecore for now so edje_cc is reliable again. CEDRIIIIIIIIIIIIIIIIIIIC! Author: raster Date: 2012-05-16 00:43:14 -0700 (Wed, 16 May 2012) New Revision: 71144 Trac: http://trac.enlightenment.org/e/changeset/71144 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-05-16 07:28:29 UTC (rev 71143) +++ trunk/edje/src/bin/edje_cc_out.c 2012-05-16 07:43:14 UTC (rev 71144) @@ -178,6 +178,7 @@ }; static int pending_threads = 0; +int threads = 1; static void data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void (*func)(Edje_Part_Collection *pc, char *name, char* ptr, int len)); @@ -404,8 +405,13 @@ hw = calloc(1, sizeof(Head_Write)); hw->ef = ef; pending_threads++; - ecore_thread_run(data_thread_head, data_thread_head_end, - NULL, hw); + if (threads) + ecore_thread_run(data_thread_head, data_thread_head_end, NULL, hw); + else + { + data_thread_head(hw, NULL); + data_thread_head_end(hw, NULL); + } } static void @@ -538,8 +544,14 @@ if (!fc) continue; fc->ef = ef; fc->fn = fn; - ecore_thread_run(data_thread_fonts, data_thread_fonts_end, - NULL, fc); + pending_threads++; + if (threads) + ecore_thread_run(data_thread_fonts, data_thread_fonts_end, NULL, fc); + else + { + data_thread_fonts(fc, NULL); + data_thread_fonts_end(fc, NULL); + } *font_num += 1; } eina_iterator_free(it); @@ -764,7 +776,13 @@ evas_object_image_size_get(o, &iw->w, &iw->h); iw->alpha = evas_object_image_alpha_get(o); iw->data = evas_object_image_data_get(o, 0); - ecore_thread_run(data_thread_image, data_thread_image_end, NULL, iw); + if (threads) + ecore_thread_run(data_thread_image, data_thread_image_end, NULL, iw); + else + { + data_thread_image(iw, NULL); + data_thread_image_end(iw, NULL); + } } static void @@ -967,8 +985,13 @@ sw->i = i; *sound_num += 1; pending_threads++; - ecore_thread_run(data_thread_sounds, data_thread_sounds_end, - NULL, sw); + if (threads) + ecore_thread_run(data_thread_sounds, data_thread_sounds_end, NULL, sw); + else + { + data_thread_sounds(sw, NULL); + data_thread_sounds_end(sw, NULL); + } } } } @@ -1059,8 +1082,13 @@ gw->ef = ef; gw->pc = pc; pending_threads++; - ecore_thread_run(data_thread_group, data_thread_group_end, - NULL, gw); + if (threads) + ecore_thread_run(data_thread_group, data_thread_group_end, NULL, gw); + else + { + data_thread_group(gw, NULL); + data_thread_group_end(gw, NULL); + } *collection_num += 1; } } @@ -1249,8 +1277,13 @@ return ECORE_CALLBACK_CANCEL; } pending_threads++; - ecore_thread_run(data_thread_script, data_thread_script_end, - NULL, sc); + if (threads) + ecore_thread_run(data_thread_script, data_thread_script_end, NULL, sc); + else + { + data_thread_script(sc, NULL); + data_thread_script_end(sc, NULL); + } return ECORE_CALLBACK_CANCEL; } @@ -1487,8 +1520,13 @@ sc->cd = cd; sc->i = i; pending_threads++; - ecore_thread_run(data_thread_lua_script, data_thread_lua_script_end, - NULL, sc); + if (threads) + ecore_thread_run(data_thread_lua_script, data_thread_lua_script_end, NULL, sc); + else + { + data_thread_lua_script(sc, NULL); + data_thread_lua_script_end(sc, NULL); + } } } @@ -1571,13 +1609,25 @@ printf("lua scripts: %3.5f\n", ecore_time_get() - t); t = ecore_time_get(); } pending_threads++; - ecore_thread_run(data_thread_source, data_thread_source_end, NULL, ef); + if (threads) + ecore_thread_run(data_thread_source, data_thread_source_end, NULL, ef); + else + { + data_thread_source(ef, NULL); + data_thread_source_end(ef, NULL); + } if (verbose) { printf("source: %3.5f\n", ecore_time_get() - t); t = ecore_time_get(); } pending_threads++; - ecore_thread_run(data_thread_fontmap, data_thread_fontmap_end, NULL, ef); + if (threads) + ecore_thread_run(data_thread_fontmap, data_thread_fontmap_end, NULL, ef); + else + { + data_thread_fontmap(ef, NULL); + data_thread_fontmap_end(ef, NULL); + } if (verbose) { printf("fontmap: %3.5f\n", ecore_time_get() - t); t = ecore_time_get(); @@ -1597,13 +1647,18 @@ { printf("sounds: %3.5f\n", ecore_time_get() - t); t = ecore_time_get(); } - - ecore_main_loop_begin(); + if (pending_threads > 0) ecore_main_loop_begin(); + // XXX: workaround ecore thread bug where it creates an internal worker + // thread task we don't know about and it is STILL active at this point + // and in the middle of shutting down, so if we get to exit the process + // it's still busy and will crash accessing stuff + while ((ecore_thread_active_get() + ecore_thread_pending_get()) > 0) + ecore_main_loop_iterate(); if (verbose) { printf("THREADS: %3.5f\n", ecore_time_get() - t); t = ecore_time_get(); } - + eet_close(ef); if (verbose) |
From: Enlightenment S. <no-...@en...> - 2012-05-16 11:04:50
|
Log: work around the workaround so it works until ecore thread goop fixed. Author: raster Date: 2012-05-16 04:04:40 -0700 (Wed, 16 May 2012) New Revision: 71155 Trac: http://trac.enlightenment.org/e/changeset/71155 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-05-16 11:04:11 UTC (rev 71154) +++ trunk/edje/src/bin/edje_cc_out.c 2012-05-16 11:04:40 UTC (rev 71155) @@ -1566,6 +1566,7 @@ int sound_num = 0; int font_num = 0; int collection_num = 0; + int i; double t; if (!edje_file) @@ -1652,8 +1653,14 @@ // thread task we don't know about and it is STILL active at this point // and in the middle of shutting down, so if we get to exit the process // it's still busy and will crash accessing stuff + i = 0; while ((ecore_thread_active_get() + ecore_thread_pending_get()) > 0) - ecore_main_loop_iterate(); + { + ecore_main_loop_iterate(); + usleep(1); + i++; + if (i > 100) break; + } if (verbose) { printf("THREADS: %3.5f\n", ecore_time_get() - t); t = ecore_time_get(); |
From: Enlightenment S. <no-...@en...> - 2012-05-22 09:10:02
|
Log: dont eet_close on error/abort as it can cause segv's now due to threads. Author: raster Date: 2012-05-22 02:09:52 -0700 (Tue, 22 May 2012) New Revision: 71309 Trac: http://trac.enlightenment.org/e/changeset/71309 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-05-22 08:48:03 UTC (rev 71308) +++ trunk/edje/src/bin/edje_cc_out.c 2012-05-22 09:09:52 UTC (rev 71309) @@ -201,7 +201,6 @@ static Eina_List *image_slave_lookups= NULL; #define ABORT_WRITE(eet_file, file) \ - eet_close(eet_file); \ unlink(file); \ exit(-1); |
From: Enlightenment S. <no-...@en...> - 2012-05-23 03:12:31
|
Log: found scrollbar bug in e17 theme... something to do with my making part lookups faster (O(1)). disable new part lookup code until i've figured it out. Author: raster Date: 2012-05-22 20:12:25 -0700 (Tue, 22 May 2012) New Revision: 71341 Trac: http://trac.enlightenment.org/e/changeset/71341 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-05-23 02:26:40 UTC (rev 71340) +++ trunk/edje/src/bin/edje_cc_out.c 2012-05-23 03:12:25 UTC (rev 71341) @@ -1771,6 +1771,7 @@ gl->part = part; } +//#define NEWPARTLOOKUP 1 static Eina_Hash *_part_lookups_hash = NULL; static Eina_Hash *_part_lookups_dest_hash = NULL; @@ -1780,7 +1781,8 @@ Part_Lookup *pl = NULL; char buf[256]; Eina_List *l; - + +#ifdef NEWPARTLOOKUP snprintf(buf, sizeof(buf), "%lu-%lu", (unsigned long)name, (unsigned long)dest); if (_part_lookups_hash) pl = eina_hash_find(_part_lookups_hash, buf); @@ -1799,6 +1801,23 @@ } return; } +#else + EINA_LIST_FOREACH(part_lookups, l, pl) + { + if ((pl->pc == pc) && (pl->dest == dest)) + { + free(pl->name); + if (name[0]) + pl->name = mem_strdup(name); + else + { + part_lookups = eina_list_remove(part_lookups, pl); + free(pl); + } + return; + } + } +#endif if (!name[0]) return; pl = mem_alloc(SZ(Part_Lookup)); @@ -1806,6 +1825,7 @@ pl->pc = pc; pl->name = mem_strdup(name); pl->dest = dest; +#ifdef NEWPARTLOOKUP if (!_part_lookups_hash) _part_lookups_hash = eina_hash_string_superfast_new(NULL); eina_hash_add(_part_lookups_hash, buf, pl); @@ -1824,6 +1844,7 @@ l = eina_list_append(l, pl); eina_hash_add(_part_lookups_dest_hash, buf, l); } +#endif } void @@ -1833,6 +1854,7 @@ Part_Lookup *pl; char buf[256]; +#ifdef NEWPARTLOOKUP if (!_part_lookups_dest_hash) return; snprintf(buf, sizeof(buf), "%lu", (unsigned long)src); list = eina_hash_find(_part_lookups_dest_hash, buf); @@ -1840,6 +1862,13 @@ { data_queue_part_lookup(pc, pl->name, dest); } +#else + EINA_LIST_FOREACH(part_lookups, l, pl) + { + if (pl->dest == src) + data_queue_part_lookup(pc, pl->name, dest); + } +#endif } void |
From: Enlightenment S. <no-...@en...> - 2012-05-23 04:22:47
|
Log: add brackets.. to if... Author: raster Date: 2012-05-22 21:22:41 -0700 (Tue, 22 May 2012) New Revision: 71344 Trac: http://trac.enlightenment.org/e/changeset/71344 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-05-23 04:21:43 UTC (rev 71343) +++ trunk/edje/src/bin/edje_cc_out.c 2012-05-23 04:22:41 UTC (rev 71344) @@ -461,7 +461,7 @@ snprintf(buf, sizeof(buf), "edje/fonts/%s", fc->fn->name); bytes = eet_write(fc->ef, buf, m, eina_file_size_get(f), compress_mode); - if (bytes <= 0 || eina_file_map_faulted(f, m)) + if ((bytes <= 0) || eina_file_map_faulted(f, m)) { eina_file_map_free(f, m); eina_file_close(f); |
From: Enlightenment S. <no-...@en...> - 2012-05-24 03:59:10
|
Log: add a -threads mode and make non-threaded compile the default... no pending threads then. we can change this later for more testing. trying to narrow down issues anyway. Author: raster Date: 2012-05-23 20:59:02 -0700 (Wed, 23 May 2012) New Revision: 71378 Trac: http://trac.enlightenment.org/e/changeset/71378 Modified: trunk/edje/src/bin/edje_cc.c trunk/edje/src/bin/edje_cc.h trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc.c =================================================================== --- trunk/edje/src/bin/edje_cc.c 2012-05-24 02:38:59 UTC (rev 71377) +++ trunk/edje/src/bin/edje_cc.c 2012-05-24 03:59:02 UTC (rev 71378) @@ -30,6 +30,7 @@ int min_quality = 0; int max_quality = 100; int compress_mode = EET_COMPRESSION_DEFAULT; +int threads = 0; static void main_help(void) @@ -55,6 +56,7 @@ "-Ddefine_val=to CPP style define to define input macro definitions to the .edc source\n" "-fastcomp Use a faster compression algorithm (LZ4) (mutually exclusive with -fastdecomp)\n" "-fastdecomp Use a faster decompression algorithm (LZ4HC) (mutually exclusive with -fastcomp)\n" + "-threads Compile the edje file using multiple parallel threads\n" ,progname); } @@ -147,14 +149,18 @@ if (max_quality < 0) max_quality = 0; if (max_quality > 100) max_quality = 100; } - else if ((!strcmp(argv[i], "-fastcomp")) && (i < (argc - 1))) + else if (!strcmp(argv[i], "-fastcomp")) { compress_mode = EET_COMPRESSION_SUPERFAST; } - else if ((!strcmp(argv[i], "-fastdecomp")) && (i < (argc - 1))) + else if (!strcmp(argv[i], "-fastdecomp")) { compress_mode = EET_COMPRESSION_VERYFAST; } + else if (!strcmp(argv[i], "-threads")) + { + threads = 1; + } else if (!strncmp(argv[i], "-D", 2)) { defines = eina_list_append(defines, mem_strdup(argv[i])); Modified: trunk/edje/src/bin/edje_cc.h =================================================================== --- trunk/edje/src/bin/edje_cc.h 2012-05-24 02:38:59 UTC (rev 71377) +++ trunk/edje/src/bin/edje_cc.h 2012-05-24 03:59:02 UTC (rev 71378) @@ -228,5 +228,6 @@ extern New_Object_Handler object_handlers[]; extern New_Statement_Handler statement_handlers[]; extern int compress_mode; +extern int threads; #endif Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-05-24 02:38:59 UTC (rev 71377) +++ trunk/edje/src/bin/edje_cc_out.c 2012-05-24 03:59:02 UTC (rev 71378) @@ -178,7 +178,6 @@ }; static int pending_threads = 0; -int threads = 1; static void data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void (*func)(Edje_Part_Collection *pc, char *name, char* ptr, int len)); |
From: Enlightenment S. <no-...@en...> - 2012-05-24 05:37:44
|
Log: fix async embryo_cc stuff. it was losing all the embyro compiles! Author: raster Date: 2012-05-23 22:37:36 -0700 (Wed, 23 May 2012) New Revision: 71387 Trac: http://trac.enlightenment.org/e/changeset/71387 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-05-24 05:07:22 UTC (rev 71386) +++ trunk/edje/src/bin/edje_cc_out.c 2012-05-24 05:37:36 UTC (rev 71387) @@ -1224,7 +1224,7 @@ { Script_Write *sc = data; Ecore_Exe_Event_Del *ev = evinfo; - + if (!ev->exe) return ECORE_CALLBACK_RENEW; if (ecore_exe_data_get(ev->exe) != sc) return ECORE_CALLBACK_RENEW; if (ev->exit_code != 0) @@ -1232,14 +1232,19 @@ error_and_abort(sc->ef, "Compiling script code not clean.\n"); return ECORE_CALLBACK_CANCEL; } - pending_threads++; if (threads) - ecore_thread_run(data_thread_script, data_thread_script_end, NULL, sc); + { + pending_threads++; + ecore_thread_run(data_thread_script, data_thread_script_end, NULL, sc); + } else { + pending_threads++; data_thread_script(sc, NULL); data_thread_script_end(sc, NULL); } + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); return ECORE_CALLBACK_CANCEL; } @@ -1290,6 +1295,7 @@ snprintf(buf, sizeof(buf), "embryo_cc -i %s/include -o %s %s", eina_prefix_data_get(pfx), sc->tmpo, sc->tmpn); + pending_threads++; sc->exe = ecore_exe_run(buf, sc); ecore_event_handler_add(ECORE_EXE_EVENT_DEL, data_scripts_exe_del_cb, sc); @@ -1544,6 +1550,7 @@ ecore_thread_max_set(ecore_thread_max_get() * 2); + pending_threads++; t = ecore_time_get(); data_write_header(ef); if (verbose) @@ -1604,6 +1611,7 @@ { printf("sounds: %3.5f\n", ecore_time_get() - t); t = ecore_time_get(); } + pending_threads--; if (pending_threads > 0) ecore_main_loop_begin(); // XXX: workaround ecore thread bug where it creates an internal worker // thread task we don't know about and it is STILL active at this point |
From: Enlightenment S. <no-...@en...> - 2012-07-07 02:12:28
|
Log: thats it. threads off in edje_cc by default. we need to focus on stability now. Author: raster Date: 2012-07-06 19:12:22 -0700 (Fri, 06 Jul 2012) New Revision: 73432 Trac: http://trac.enlightenment.org/e/changeset/73432 Modified: trunk/edje/src/bin/edje_cc.c Modified: trunk/edje/src/bin/edje_cc.c =================================================================== --- trunk/edje/src/bin/edje_cc.c 2012-07-07 01:44:48 UTC (rev 73431) +++ trunk/edje/src/bin/edje_cc.c 2012-07-07 02:12:22 UTC (rev 73432) @@ -30,7 +30,7 @@ int min_quality = 0; int max_quality = 100; int compress_mode = EET_COMPRESSION_DEFAULT; -int threads = 1; +int threads = 0; static void main_help(void) |
From: Enlightenment S. <no-...@en...> - 2012-07-07 03:25:38
|
Log: edje_cc -> nothreads means we should avoid evas preload too.. grrr. Author: raster Date: 2012-07-06 20:25:31 -0700 (Fri, 06 Jul 2012) New Revision: 73436 Trac: http://trac.enlightenment.org/e/changeset/73436 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-07-07 03:24:53 UTC (rev 73435) +++ trunk/edje/src/bin/edje_cc_out.c 2012-07-07 03:25:31 UTC (rev 73436) @@ -610,7 +610,7 @@ data_thread_image(void *data, Ecore_Thread *thread __UNUSED__) { Image_Write *iw = data; - char buf[PATH_MAX]; + char buf[PATH_MAX], buf2[PATH_MAX]; unsigned int *start, *end; Eina_Bool opaque = EINA_TRUE; int bytes = 0; @@ -683,21 +683,21 @@ 0, qual, 1); if (bytes <= 0) { - snprintf(buf, sizeof(buf), + snprintf(buf2, sizeof(buf2), "Unable to write image part " "\"%s\" as \"%s\" part entry to " "%s\n", iw->img->entry, buf, file_out); - iw->errstr = strdup(buf); + iw->errstr = strdup(buf2); return; } } else { - snprintf(buf, sizeof(buf), + snprintf(buf2, sizeof(buf2), "Unable to load image part " "\"%s\" as \"%s\" part entry to " "%s\n", iw->img->entry, buf, file_out); - iw->errstr = strdup(buf); + iw->errstr = strdup(buf2); return; } @@ -729,6 +729,7 @@ if (iw->path) free(iw->path); evas_object_del(iw->im); free(iw); + printf("@@@ IMAGE DONE: %i\n", pending_threads); } static void @@ -785,10 +786,11 @@ iw->ef = ef; iw->img = img; iw->im = im = evas_object_image_add(evas); - evas_object_event_callback_add(im, - EVAS_CALLBACK_IMAGE_PRELOADED, - data_image_preload_done, - iw); + if (threads) + evas_object_event_callback_add(im, + EVAS_CALLBACK_IMAGE_PRELOADED, + data_image_preload_done, + iw); EINA_LIST_FOREACH(img_dirs, ll, s) { char buf[PATH_MAX]; @@ -801,8 +803,11 @@ *image_num += 1; iw->path = strdup(buf); pending_threads++; - evas_object_image_preload(im, 0); + if (threads) + evas_object_image_preload(im, 0); using_file(buf); + if (!threads) + data_image_preload_done(iw, evas, im, NULL); break; } } @@ -815,8 +820,11 @@ *image_num += 1; iw->path = strdup(img->entry); pending_threads++; - evas_object_image_preload(im, 0); + if (threads) + evas_object_image_preload(im, 0); using_file(img->entry); + if (!threads) + data_image_preload_done(iw, evas, im, NULL); } else error_and_abort_image_load_error @@ -1241,6 +1249,7 @@ data_thread_script_end(sc, NULL); } pending_threads--; + printf("@@@ SCRIPT DONE: %i\n", pending_threads); if (pending_threads <= 0) ecore_main_loop_quit(); return ECORE_CALLBACK_CANCEL; } @@ -1607,6 +1616,7 @@ printf("sounds: %3.5f\n", ecore_time_get() - t); t = ecore_time_get(); } pending_threads--; + printf("@@@ PENDING: %i\n", pending_threads); if (pending_threads > 0) ecore_main_loop_begin(); if (verbose) { |
From: Enlightenment S. <no-...@en...> - 2012-07-07 03:41:44
|
Log: printf-- Author: raster Date: 2012-07-06 20:41:38 -0700 (Fri, 06 Jul 2012) New Revision: 73437 Trac: http://trac.enlightenment.org/e/changeset/73437 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-07-07 03:25:31 UTC (rev 73436) +++ trunk/edje/src/bin/edje_cc_out.c 2012-07-07 03:41:38 UTC (rev 73437) @@ -729,7 +729,6 @@ if (iw->path) free(iw->path); evas_object_del(iw->im); free(iw); - printf("@@@ IMAGE DONE: %i\n", pending_threads); } static void @@ -1249,7 +1248,6 @@ data_thread_script_end(sc, NULL); } pending_threads--; - printf("@@@ SCRIPT DONE: %i\n", pending_threads); if (pending_threads <= 0) ecore_main_loop_quit(); return ECORE_CALLBACK_CANCEL; } |
From: Enlightenment S. <no-...@en...> - 2012-07-07 08:25:17
|
Log: printf-- Author: raster Date: 2012-07-07 01:25:09 -0700 (Sat, 07 Jul 2012) New Revision: 73447 Trac: http://trac.enlightenment.org/e/changeset/73447 Modified: trunk/edje/src/bin/edje_cc_out.c Modified: trunk/edje/src/bin/edje_cc_out.c =================================================================== --- trunk/edje/src/bin/edje_cc_out.c 2012-07-07 06:34:16 UTC (rev 73446) +++ trunk/edje/src/bin/edje_cc_out.c 2012-07-07 08:25:09 UTC (rev 73447) @@ -1614,7 +1614,6 @@ printf("sounds: %3.5f\n", ecore_time_get() - t); t = ecore_time_get(); } pending_threads--; - printf("@@@ PENDING: %i\n", pending_threads); if (pending_threads > 0) ecore_main_loop_begin(); if (verbose) { |
From: Enlightenment S. <no-...@en...> - 2012-07-13 02:53:37
|
Log: add docs -> rect parts only for clip_to Author: raster Date: 2012-07-12 19:53:30 -0700 (Thu, 12 Jul 2012) New Revision: 73785 Trac: http://trac.enlightenment.org/e/changeset/73785 Modified: trunk/edje/src/bin/edje_cc_handlers.c Modified: trunk/edje/src/bin/edje_cc_handlers.c =================================================================== --- trunk/edje/src/bin/edje_cc_handlers.c 2012-07-13 02:50:58 UTC (rev 73784) +++ trunk/edje/src/bin/edje_cc_handlers.c 2012-07-13 02:53:30 UTC (rev 73785) @@ -3350,7 +3350,8 @@ [another part's name] @effect Only renders the area of part that coincides with another part's - container. Overflowing content will not be displayed. + container. Overflowing content will not be displayed. Note that + the part being clipped to can only be a rectangle part. @endproperty */ static void |