示例#1
0
文件: e_msg.c 项目: Deepspeed/moksha
EINTERN int
e_msg_shutdown(void)
{
   while (handlers) e_msg_handler_del(eina_list_data_get(handlers));
   E_EVENT_MSG = 0;
   if (hand) ecore_event_handler_del(hand);
   hand = NULL;
   return 1;
}
示例#2
0
static void
_evas_render2_all_sync(void)
{
   // wait for ALL canvases to stop rendering
   Eo *eo_e;

   if (!_rendering) return;
   eo_e = eina_list_data_get(eina_list_last(_rendering));
   _evas_render2_wait(eo_e);
}
示例#3
0
int
main()
{
  E_Notification_Daemon *d;
  E_Notification *n;
  Daemon_Data *dd;


  ecore_init();

  dd = calloc(1, sizeof(Daemon_Data));
  dd->open_notes = NULL;
  dd->history = NULL;
  dd->next_id = dd->history_start = 1;
  dd->max_history_length = 5;
  dd->default_timeout = 5;

  /* set up the daemon */
  d = e_notification_daemon_add("e_notification_module", "Enlightenment");
  e_notification_daemon_data_set(d, dd);
  dd->daemon = d;
  e_notification_daemon_callback_notify_set(d, cb_notify);
  e_notification_daemon_callback_close_notification_set(d, cb_close_notification);

  ecore_main_loop_begin();
  while (dd->open_notes)
    {
       n = eina_list_data_get(dd->open_notes);
       e_notification_unref(n);
       dd->open_notes = eina_list_remove_list(dd->open_notes, dd->open_notes);
    }
  while (dd->history)
    {
       n = eina_list_data_get(dd->history);
       e_notification_unref(n);
       dd->history = eina_list_remove_list(dd->history, dd->history);
    }
  free(dd);
  e_notification_daemon_free(d);
  ecore_shutdown();

  return 0;
}
示例#4
0
static JSBool
elixir_evas_objects_at_xy_get(JSContext *cx, uintN argc, jsval *vp)
{
   Eina_List *list;
   Eina_List *walker;
   JSObject *array;
   Evas *evas;
   int include_pass_events_objects;
   int include_hidden_objects;
   int x;
   int y;
   int i;
   elixir_value_t val[5];

   if (!elixir_params_check(cx, _evas_double_int_double_bool_params, val, argc, JS_ARGV(cx, vp)))
     return JS_FALSE;

   GET_PRIVATE(cx, val[0].v.obj, evas);
   x = val[1].v.num;
   y = val[2].v.num;
   include_pass_events_objects = val[3].v.bol;
   include_hidden_objects = val[4].v.bol;

   list = evas_objects_at_xy_get(evas, x, y, include_pass_events_objects, include_hidden_objects);
   if (!list)
     {
	JS_SET_RVAL(cx, vp, JSVAL_NULL);
	return JS_TRUE;
     }

   array = elixir_return_array(cx, vp);
   if (!array)
     {
	eina_list_free(list);
	return JS_FALSE;
     }

   for (i = 0, walker = list; walker; walker = eina_list_next(walker), ++i)
     {
	Evas_Object*	eobj;
	jsval		js_obj;

	eobj = eina_list_data_get(walker);
	evas_object_to_jsval(cx, eobj, &js_obj);
	if (JS_SetElement(cx, array, i, &js_obj) == JS_FALSE)
	  {
	     eina_list_free(list);
	     return JS_FALSE;
	  }
     }

   return JS_TRUE;
}
示例#5
0
Eina_Bool eli_highscore_entry_add(const char * game, const char * username,
                                  float points, pointsType type)
{
    Eina_List * l = NULL;
    Eli_Highscore_Entry * entry;
    
    int (*list_sort) (const void *, const void *);
    int count = 0;

    if (!game || !username || !eet_file_name) return 0;

    entry = _eli_entry_new(username, points, type);

    l = eli_highscore_get(game);
    if (l) count = eina_list_count(l);
    else count = 0;

    /* select the right sorting function */
    switch (type) {
    case POINTS_TYPE_INTEGER_BAD:
    case POINTS_TYPE_FLOAT_BAD:
        list_sort = _eli_highscore_list_sort_bad;
        break;
    default:
        list_sort = _eli_highscore_list_sort_good;
        break;
    }

    /* 10 entries should be enough */
    if (count >= 10) {
        Eina_List * last_l;
        Eli_Highscore_Entry * last_e;

        last_l = eina_list_last(l);
        last_e = eina_list_data_get(last_l);

        if ( list_sort(last_e, entry) < 0) {
            free(entry->username);
            free(entry);
            return 0;
        }
    }

    l = eina_list_append(l, entry);
    if (count) l = eina_list_sort(l, (count + 1), list_sort);
    if (count >= 10) l = eina_list_remove_list(l, eina_list_last(l));

    ecore_hash_set(hiscore_hash, strdup(game), l);
  
    _eli_highscore_write(game);
    
    return 1;
}
void
alarm_edje_text_set(char *part, char *text)
{
   Eina_List *l;

   for (l=alarm_config->instances; l; l=eina_list_next(l))
     {
        Instance *inst;

        inst = eina_list_data_get(l);
        edje_object_part_text_set(inst->obj, part, text);
     }
}
void
alarm_edje_signal_emit(const char *source, const char *message)
{
   Eina_List *l;

   for (l=alarm_config->instances; l; l=eina_list_next(l))
     {
        Instance *inst;

        inst = eina_list_data_get(l);
        edje_object_signal_emit(inst->obj, source, message);
     }
}
News_Config_Item *
news_config_item_add(const char *id)
{
   News_Config_Item *nic;
   Eina_List *l;
   char buf[128];

   DCONF(("Item new config"));

   if (!id)
     {
	int  num = 0;

	/* Create id */
	if (news->config->items)
	  {
	     const char *p;
	     nic = eina_list_last(news->config->items)->data;
	     p = strrchr(nic->id, '.');
	     if (p) num = atoi(p + 1) + 1;
	  }
	snprintf(buf, sizeof(buf), "%s.%d", _gc_name(), num);
	id = buf;
     }
   else
     {
	/* is there already an item config for this id ? */
	for (l=news->config->items; l; l=eina_list_next(l))
	  {
	     nic = eina_list_data_get(l);
	     if (!strcmp(nic->id, id))
	       {
		  DCONF(("config found ! %s", nic->id));
		  return nic;
	       }
	  }
     }

   DCONF(("config NOT found ! creating new one %s", id));
   /* no, create a new item config */
   nic = E_NEW(News_Config_Item, 1);

   nic->id = eina_stringshare_add(id);
   nic->view_mode = NEWS_ITEM_VIEW_MODE_DEFAULT;
   nic->openmethod = NEWS_ITEM_OPENMETHOD_DEFAULT;
   nic->browser_open_home = NEWS_ITEM_BROWSER_OPEN_HOME_DEFAULT;

   news->config->items = eina_list_append(news->config->items, nic);

   return nic;
}
示例#9
0
文件: eina_list.c 项目: jigpu/efl
static Eina_Bool
eina_list_iterator_prev(Eina_Iterator_List *it, void **data)
{
   EINA_MAGIC_CHECK_LIST_ITERATOR(it, EINA_FALSE);

   if (!it->current)
     return EINA_FALSE;

   *data = eina_list_data_get(it->current);

   it->current = eina_list_prev(it->current);

   return EINA_TRUE;
}
Eina_Bool play_done(void *data, int type, void *event)
{
  Ecore_Audio_Object *in = (Ecore_Audio_Object *)event;
  Eina_List *ins;
  fail_if(!in);

  ins = ecore_audio_output_inputs_get(out);
  fail_if(eina_list_count(ins) != 1);

  fail_if(eina_list_data_get(ins) != in);
  ecore_audio_output_input_del(ecore_audio_input_output_get(in), in);
  ecore_audio_input_del(in);
  ecore_audio_output_del(out);
  ecore_main_loop_quit();
}
void
news_config_item_del(News_Config_Item *nic)
{
   eina_stringshare_del(nic->id);

   while(eina_list_count(nic->feed_refs))
     {
        News_Feed_Ref *fr;
        fr = eina_list_data_get(nic->feed_refs);
        eina_stringshare_del(fr->name);
        nic->feed_refs = eina_list_remove(nic->feed_refs, fr);
     }

   news->config->items = eina_list_remove(news->config->items, nic);
   free(nic);
}
示例#12
0
void language_xml_clear(Language_XML *xml)
{
    Language_XML_Node *n_cur;

    if ((!xml) || (!xml->current))
    {
        DBG("One of values is NULL, returning with error.");
        return;
    }

    xml->current = xml->top;

    n_cur = xml->current;
    if (!n_cur)
    {
        DBG("One of values is NULL, returning with error.");
        return;
    }

    n_cur = n_cur->parent;

    if (n_cur)
    {
        Language_XML_Node *c_parent = n_cur;
        Eina_List *c_list = c_parent->children;
        void *data;

        c_list = eina_list_data_find_list(c_list, xml->current);
        EINA_LIST_FREE(c_list, data) E_FREE(data);
        if (!(n_cur = eina_list_data_get(c_list)))
            if (!(n_cur = eina_list_last(c_list))) n_cur = c_parent;
    }
    else
    {
        xml->top = NULL;
        void *data;
        if (xml->current)
        {
            eina_hash_free(xml->current->attributes);
            EINA_LIST_FREE(xml->current->children, data) E_FREE(data);
            E_FREE(xml->current);
        }
    }

    xml->current = n_cur;
}
示例#13
0
static JSBool
elixir_evas_object_smart_members_get(JSContext *cx, uintN argc, jsval *vp)
{
   Evas_Object *know = NULL;
   Eina_List *list;
   Eina_List *head;
   JSObject *array;
   int i;
   elixir_value_t val[1];

   if (!elixir_params_check(cx, _evas_object_smart_params, val, argc, JS_ARGV(cx, vp)))
     return JS_FALSE;

   GET_PRIVATE(cx, val[0].v.obj, know);

   list = (Eina_List*) evas_object_smart_members_get(know);
   if (!list)
     {
	JS_SET_RVAL(cx, vp, JSVAL_NULL);
	return JS_TRUE;
     }

   array = elixir_return_array(cx, vp);
   if (!array)
     {
	eina_list_free(list);
	return JS_FALSE;
     }

   for (i = 0, head = list; list; list = eina_list_next(list), ++i)
     {
	Evas_Object *obj;
	jsval js_obj;

	obj = eina_list_data_get(list);

	evas_object_to_jsval(cx, obj, &js_obj);
	if (JS_SetElement(cx, array, i, &js_obj) == JS_FALSE)
	  return JS_FALSE;
     }

   eina_list_free(head);

   return JS_TRUE;
}
示例#14
0
/* ***************************************************************************
 *     Internals				             
 * ***************************************************************************/
static void _eli_highscore_list_free(Eina_List * list)
{
    while (list) {
        Eli_Highscore_Entry * entry;

        entry = (Eli_Highscore_Entry *) eina_list_data_get(list);

        if (entry) {
            if (entry->username) {
                free(entry->username);
                entry->username = NULL;
            }
	    free(entry);
	}

        list = eina_list_remove_list(list, list);
    }
}
示例#15
0
static void
_elm_code_widget_undo_prev_clear(Evas_Object *widget)
{
   Elm_Code_Widget_Data *pd;
   Elm_Code_Widget_Change_Info *info;
   Eina_List *list;

   pd = efl_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
   if (!pd->undo_stack_ptr)
     return;

   for (list = eina_list_prev(pd->undo_stack_ptr); list; list = eina_list_prev(list))
     {
        info = eina_list_data_get(list);
        free(info->content);
        free(info);
     }
}
News_Item *
news_item_new(E_Gadcon_Client *gcc, Evas_Object *obj, const char *id)
{
   News_Item *ni;
   News_Config_Item *nic;
   Evas_Object *view;
   Eina_List *l;

   ni = E_NEW(News_Item, 1);

   news_theme_edje_set(obj, NEWS_THEME_ITEM);

   nic = news_config_item_add(id);
   ni->gcc = gcc;
   ni->obj = obj;
   ni->config = nic;

   evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN,
				  _cb_mouse_down, ni);
   evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_OUT,
				  _cb_mouse_out, ni);

   /* attach feeds */
   for (l=nic->feed_refs; l; l=eina_list_next(l))
     {
        News_Feed_Ref *ref;

        ref = eina_list_data_get(l);
        news_feed_attach(NULL, ref, ni);
     }
   news_feed_list_ui_refresh();

   /* main view */
   view = e_box_add(gcc->gadcon->evas);
   e_box_homogenous_set(view, 1);
   e_box_orientation_set(view, 1);
   edje_object_part_swallow(ni->obj, "view", view);
   evas_object_show(view);
   ni->view.box = view;

   news_item_refresh(ni, 1, 1, 1);

   return ni;
}
示例#17
0
static JSBool
elixir_evas_object_clipees_get(JSContext *cx, uintN argc, jsval *vp)
{
   Evas_Object *know = NULL;
   JSObject *array;
   Eina_List *list;
   int i;
   elixir_value_t val[1];

   if (!elixir_params_check(cx, _evas_object_params, val, argc, JS_ARGV(cx, vp)))
     return JS_FALSE;

   GET_PRIVATE(cx, val[0].v.obj, know);

   list = (Eina_List*) evas_object_clipees_get(know);
   if (!list)
     {
	JS_SET_RVAL(cx, vp, JSVAL_NULL);
	return JS_TRUE;
     }

   array = elixir_return_array(cx, vp);
   if (!array)
     {
	evas_render_method_list_free(list);
	return JS_FALSE;
     }

   for (i = 0; list; list = eina_list_next(list), ++i)
     {
	Evas_Object *obj;
	jsval js_obj;

	obj = eina_list_data_get(list);

	evas_object_to_jsval(cx, obj, &js_obj);

	if (JS_SetElement(cx, array, i, &js_obj) == JS_FALSE)
	  return JS_FALSE;
     }

   /* FIXME: We have a little memory leak here. */
   return JS_TRUE;
}
示例#18
0
void
run_default_handler(madshelf_state_t *state, const char *filename)
{
    fileinfo_t *fileinfo = fileinfo_create(filename);
    openers_t *handlers_list = openers_get(fileinfo->mime_type);
    fileinfo_destroy(fileinfo);

    if (!handlers_list)
        return;

    tag_add(state->tags, "recent", filename);

    Efreet_Desktop* handler = eina_list_data_get(handlers_list->apps);

    Eina_List *l = eina_list_append(NULL, filename);
    efreet_desktop_exec(handler, l, NULL);

    eina_list_free(l);
}
示例#19
0
文件: slide_utils.c 项目: Limsik/e17
static void _utils_slide_delete_cb(void *data, Evas_Object *obj, void *event_info)
{
    List_Item *item = (List_Item*) data;
    int i = 0;
    Eina_List *l;
    List_Item *_item;
    List_Item *item_prev = NULL;

    EINA_LIST_FOREACH(l_slides, l, _item)
    {
        if(item == _item)
            break;
        else
        {
            item_prev = _item;
            i++;
        }
    }

    //delete the slide
    eyelight_edit_slide_delete(eyelight_object_pres_get(pres), i);

    //remove the slide from the list
    slides_list_slide_delete(item);

    //remove the slide from the grid
    slides_grid_remove(item);

    //free the item
    l_slides = eina_list_remove(l_slides, item);
    free(item);

    //select an other slide
    if(item_prev)
        elm_genlist_item_selected_set(item_prev->item, 1);
    else if(l_slides)
    {
        List_Item *_item = eina_list_data_get(l_slides);
        elm_genlist_item_selected_set(_item->item,1);
    }

    evas_object_del(_inwin_delete_slide);
}
示例#20
0
unsigned int
_ecore_xcb_cookie_get (void)
{
   Ecore_Xcb_Data *data;
   unsigned int cookie;

   if (!_ecore_xcb_cookies)
      return 0;

   data = eina_list_data_get(_ecore_xcb_cookies);
   if (!data)
      return 0;

   _ecore_xcb_cookies = eina_list_remove_list(_ecore_xcb_cookies, _ecore_xcb_cookies);
   cookie = data->cookie;
   free(data);

   return cookie;
} /* _ecore_xcb_cookie_get */
void
alarm_edje_refresh_details(void)
{
   Eina_List *l;
   Alarm *al;
   Alarm *first;
   double first_epoch;
   char buf[32];

   first = NULL;
   first_epoch = LONG_MAX;

   for (l=alarm_config->alarms; l; l=eina_list_next(l))
     {
        al = eina_list_data_get(l);
        if (al->state == ALARM_STATE_OFF)
          continue;
        if (al->sched.date_epoch < first_epoch)
          {
             first = al;
             first_epoch = al->sched.date_epoch;
          }
     }

   if (!first)
     {
        alarm_edje_text_set("alarm_txt_line", "-- --:--");
        return;
     }
   else
     {
        struct tm *st;
        time_t t;
        char bufdate[32];
        
        t = first_epoch - (first->sched.hour*3600) - (first->sched.minute*60);
        st = localtime(&t);
        strftime(bufdate, sizeof(bufdate), "%d", st);
        snprintf(buf, sizeof(buf), "%.2s %.2d:%.2d",
                 bufdate, first->sched.hour, first->sched.minute);
        alarm_edje_text_set("alarm_txt_line", buf);
     }
}
示例#22
0
文件: pop_list.c 项目: Limsik/e17
Eina_Bool
email_pop3_stat_read(Email *e, const unsigned char *recv, size_t size)
{
   Email_Stat_Cb cb;
   int num;
   size_t len;

   cb = eina_list_data_get(e->cbs);
   if ((!email_op_ok((const unsigned char *)recv, size)) ||
       (sscanf((char*)recv, "+OK %u %zu", &num, &len) != 2))
     {
        ERR("Error with STAT");
        if (cb) cb(e, 0, 0);
        return EINA_TRUE;
     }
   INF("STAT returned %u messages (%zu octets)", num, len);
   if (cb) cb(e, num, len);
   return EINA_TRUE;
}
示例#23
0
SH_API Eina_Bool _read_stdin_list(void *data, Ecore_Fd_Handler *fd_handler)
{
   char **splitted;
   char *buffer;
   char c;
   int i = 0;
   int len = 0;
   Evas_Object *obj = data;

   if (!_stdin_prepare(fd_handler)) return 0;

   // allocate initial buffer
   buffer = malloc(sizeof(char));

   // get the buffer
   do {
     c = getc(stdin);
     buffer[i] = c;
     buffer = realloc(buffer, i + sizeof(buffer));
     i++;
   } while (c != EOF);

   // terminate the string.
   buffer[i - 1] = '\0';

   // split and append
   splitted = eina_str_split_full(buffer, "\n", 0, &len);

   for (i = 0; i < len; i++)
     elm_list_item_append(obj, splitted[i], NULL, NULL, NULL, NULL);

   elm_object_item_del(eina_list_data_get(eina_list_last(elm_list_items_get(obj))));

   elm_list_go(obj);

   // free the the pointers, delete handler when we don't need it
   E_FREE(splitted);
   E_FREE(buffer);
   ecore_main_fd_handler_del(fd_handler);
   return 0;

}
示例#24
0
文件: e_font.c 项目: Deepspeed/moksha
EAPI void
e_font_apply(void)
{
   char buf[1024];
   Eina_List *l;
   E_Border *bd;
   E_Font_Default *efd;
   E_Font_Fallback *eff;
   int blen, len;

   /* setup edje fallback list */
   blen = sizeof(buf) - 1;
   buf[0] = 0;
   buf[blen] = 0;
   l = e_config->font_fallbacks;
   if (l)
     {
        eff = eina_list_data_get(l);
        len = strlen(eff->name);
        if (len < blen)
          {
             strcpy(buf, eff->name);
             blen -= len;
          }
        EINA_LIST_FOREACH(eina_list_next(l), l, eff)
          {
             len = 1;
             if (len < blen)
               {
                  strcat(buf, ",");
                  blen -= len;
               }
             len = strlen(eff->name);
             if (len < blen)
               {
                  strcat(buf, eff->name);
                  blen -= len;
               }
          }
        edje_fontset_append_set(buf);
     }
示例#25
0
EINTERN void
e_xinerama_fake_screen_del(int num)
{
   Eina_List *l;
   E_Screen *scr, *lscr;
   int n = 0, x = 0;

   /* this assumes X number of identical horizontal screens */
   EINA_SAFETY_ON_NULL_RETURN(fake_screens);
   l = eina_list_nth_list(fake_screens, num);
   EINA_SAFETY_ON_NULL_RETURN(l);
   scr = eina_list_data_get(l);
   free(scr);
   fake_screens = eina_list_remove_list(fake_screens, l);
   EINA_LIST_FOREACH(fake_screens, l, lscr)
     {
        lscr->screen = n++;
        lscr->x = x;
        lscr->w = e_comp->w / eina_list_count(fake_screens);
        x = lscr->x + lscr->w;
     }
示例#26
0
void
epdf_index_item_delete(Epdf_Index_Item *item)
{
   if (!item)
     return;

   if (item->title)
     free(item->title);
   if (item->children)
     {
        while (item->children)
          {
             Epdf_Index_Item *item;

             item = (Epdf_Index_Item *)eina_list_data_get(item->children);
             epdf_index_item_delete (item);
             item->children = eina_list_remove_list(item->children, item->children);
          }
     }
   free(item);
}
示例#27
0
Eina_Bool
email_pop3_stat_read(Email *e, const unsigned char *recvbuf, size_t size)
{
   Email_Stat_Cb cb;
   Email_Operation *op;
   int num;
   size_t len;

   op = eina_list_data_get(e->ops);
   cb = op->cb;
   if ((!email_op_pop_ok((const unsigned char *)recvbuf, size)) ||
       (sscanf((char*)recvbuf, "+OK %u %zu", &num, &len) != 2))
     {
        ERR("Error with STAT");
        if (cb && (!op->deleted)) cb(op, 0, 0);
        return EINA_TRUE;
     }
   INF("STAT returned %u messages (%zu octets)", num, len);
   if (cb && (!op->deleted)) cb(op, num, len);
   return EINA_TRUE;
}
void
alarm_details_change(void)
{
   Eina_List *l;

   for(l=alarm_config->instances; l; l=eina_list_next(l))
     {
        Instance *i;

        i = eina_list_data_get(l);
        _gc_orient(i->gcc, -1);
     }

   if (alarm_config->alarms_details)
     {
        alarm_edje_refresh_details();
        alarm_edje_signal_emit(EDJE_SIG_SEND_ALARM_DETAILS_ON);
     }
   else
     alarm_edje_signal_emit(EDJE_SIG_SEND_ALARM_DETAILS_OFF);
}
示例#29
0
static void
new_object(void)
{
   char *id;
   int i;
   int handled = 0;

   id = stack_id();
   for (i = 0; i < object_handler_num(); i++)
     {
	if (!strcmp(object_handlers[i].type, id))
	  {
	     handled = 1;
	     if (object_handlers[i].func)
	       {
		  object_handlers[i].func();
	       }
	     break;
	  }
     }
   if (!handled)
     {
	for (i = 0; i < statement_handler_num(); i++)
	  {
	     if (!strcmp(statement_handlers[i].type, id))
	       {
		  free(id);
		  return;
	       }
	  }
     }
   if (!handled)
     {
	ERR("%s: Error. %s:%i unhandled keyword %s",
	    progname, file_in, line - 1,
	    (char *)eina_list_data_get(eina_list_last(stack)));
	exit(-1);
     }
   free(id);
}
示例#30
0
void
evas_font_free(Evas *eo_evas, void *font)
{
   Eina_List *l;
   Fndat *fd;
   Evas_Public_Data *evas = eo_data_get(eo_evas, EVAS_CLASS);

   EINA_LIST_FOREACH(fonts_cache, l, fd)
     {
	if (fd->font == font)
	  {
	     fd->ref--;
	     if (fd->ref == 0)
	       {
		  fonts_cache = eina_list_remove_list(fonts_cache, l);
		  fonts_zero = eina_list_append(fonts_zero, fd);
	       }
	     break;
	  }
     }
   while (fonts_zero
	  && eina_list_count(fonts_zero) > 42) /* 42 is arbitrary */
     {
	fd = eina_list_data_get(fonts_zero);

	if (fd->ref != 0) break;
	fonts_zero = eina_list_remove_list(fonts_zero, fonts_zero);

        if (fd->fdesc) evas_font_desc_unref(fd->fdesc);
	if (fd->source) eina_stringshare_del(fd->source);
	evas->engine.func->font_free(evas->engine.data.output, fd->font);
#ifdef HAVE_FONTCONFIG
	if (fd->set) FcFontSetDestroy(fd->set);
	if (fd->p_nm) FcPatternDestroy(fd->p_nm);
#endif
	free(fd);

	if (eina_list_count(fonts_zero) < 43) break;
     }
}