Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_intl.c e_main.c e_place.c Log Message: was wrokign on intl stuff but got distracted by optimising. will come back to intl. optimised some code paths. e_place.c is evil. the smart place function NEEDS speeding up. this may mean a re-think of how it works. not sure. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.226 retrieving revision 1.227 diff -u -3 -r1.226 -r1.227 --- e_border.c 26 May 2005 12:38:53 -0000 1.226 +++ e_border.c 28 May 2005 05:03:25 -0000 1.227 @@ -109,9 +109,12 @@ static int _e_border_cb_focus_fix(void *data); +static char *_e_border_winid_str_get(Ecore_X_Window win); + /* local subsystem globals */ static Evas_List *handlers = NULL; static Evas_List *borders = NULL; +static Evas_Hash *borders_hash = NULL; static E_Border *focused = NULL; static E_Border *resize = NULL; @@ -354,7 +357,9 @@ bd->desk = e_desk_current_get(bd->zone); e_container_border_add(bd); borders = evas_list_append(borders, bd); - + borders_hash = evas_hash_add(borders_hash, _e_border_winid_str_get(bd->client.win), bd); + borders_hash = evas_hash_add(borders_hash, _e_border_winid_str_get(bd->bg_win), bd); + borders_hash = evas_hash_add(borders_hash, _e_border_winid_str_get(bd->win), bd); managed = 1; ecore_x_window_prop_card32_set(win, E_ATOM_MANAGED, &managed, 1); ecore_x_window_prop_card32_set(win, E_ATOM_CONTAINER, &bd->zone->container->num, 1); @@ -1138,58 +1143,24 @@ E_Border * e_border_find_by_client_window(Ecore_X_Window win) { - Evas_List *l; - - for (l = borders; l; l = l->next) - { - E_Border *bd; - - bd = l->data; - if (bd->client.win == win) - { - if (!e_object_is_del(E_OBJECT(bd))) - return bd; - } - } + E_Border *bd; + + bd = evas_hash_find(borders_hash, _e_border_winid_str_get(win)); + if ((bd) && (!e_object_is_del(E_OBJECT(bd)))) + return bd; return NULL; } E_Border * e_border_find_by_frame_window(Ecore_X_Window win) { - Evas_List *l; - - for (l = borders; l; l = l->next) - { - E_Border *bd; - - bd = l->data; - if (bd->bg_win == win) - { - if (!e_object_is_del(E_OBJECT(bd))) - return bd; - } - } - return NULL; + return e_border_find_by_client_window(win); } E_Border * e_border_find_by_window(Ecore_X_Window win) { - Evas_List *l; - - for (l = borders; l; l = l->next) - { - E_Border *bd; - - bd = l->data; - if (bd->win == win) - { - if (!e_object_is_del(E_OBJECT(bd))) - return bd; - } - } - return NULL; + return e_border_find_by_client_window(win); } E_Border * @@ -1484,6 +1455,9 @@ ecore_x_window_del(bd->win); e_container_border_remove(bd); + borders_hash = evas_hash_del(borders_hash, _e_border_winid_str_get(bd->client.win), bd); + borders_hash = evas_hash_del(borders_hash, _e_border_winid_str_get(bd->bg_win), bd); + borders_hash = evas_hash_del(borders_hash, _e_border_winid_str_get(bd->win), bd); borders = evas_list_remove(borders, bd); free(bd); @@ -4351,3 +4325,23 @@ } return 1; } + +static char * +_e_border_winid_str_get(Ecore_X_Window win) +{ + const char *vals = "qWeRtYuIoP5-$&<~"; + static char id[9]; + unsigned int val; + + val = (unsigned int)win; + id[0] = vals[(val >> 28) & 0xf]; + id[1] = vals[(val >> 24) & 0xf]; + id[2] = vals[(val >> 20) & 0xf]; + id[3] = vals[(val >> 16) & 0xf]; + id[4] = vals[(val >> 12) & 0xf]; + id[5] = vals[(val >> 8) & 0xf]; + id[6] = vals[(val >> 4) & 0xf]; + id[7] = vals[(val ) & 0xf]; + id[8] = 0; + return id; +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_intl.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -3 -r1.29 -r1.30 --- e_intl.c 19 May 2005 09:23:54 -0000 1.29 +++ e_intl.c 28 May 2005 05:03:26 -0000 1.30 @@ -71,9 +71,32 @@ return 1; } +/* FIXME: finish this */ +static Evas_List * +_e_intl_dir_scan(char *dir) +{ + Ecore_List *files; + char *file; + + files = ecore_file_ls(dir); + if (!files) return NULL; + + ecore_list_goto_first(files); + while ((file = ecore_list_current(files))) + { + free(file); + ecore_list_remove(files); + ecore_list_next(files); + } + return NULL; +} + void e_intl_language_set(const char *lang) { + /* 1 list ~/.e/e/locale contents */ + /* 2 list LOCALE_DIR contents */ + /* FIXME: determine if in user or system locale dir */ if (_e_intl_language) free(_e_intl_language); if (!lang) lang = getenv("LANG"); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_main.c,v retrieving revision 1.86 retrieving revision 1.87 diff -u -3 -r1.86 -r1.87 --- e_main.c 27 May 2005 10:04:53 -0000 1.86 +++ e_main.c 28 May 2005 05:03:26 -0000 1.87 @@ -566,7 +566,8 @@ "%s/.e/e/applications/restart", "%s/.e/e/applications/trash", "%s/.e/e/modules", - "%s/.e/e/config" + "%s/.e/e/config", + "%s/.e/e/locale" }; int i; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_place.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_place.c 13 May 2005 14:01:05 -0000 1.6 +++ e_place.c 28 May 2005 05:03:27 -0000 1.7 @@ -65,6 +65,14 @@ E_Border_List *bl; E_Border *bd; +#if 0 + /* DISABLE placement entirely for speed testing */ + *rx = x; + *ry = y; + return 1; +#endif + + /* FIXME: this NEEDS optimizing */ a_w = 2; a_h = 2; a_x = E_NEW(int, 2); ------------------------------------------------------- This SF.Net email is sponsored by Yahoo. Introducing Yahoo! Search Developer Network - Create apps using Yahoo! Search APIs Find out how you can build Yahoo! directly into your own Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs