// functions used between the split up parts of the efm view

static void            _command              (Smart_Data *sd, const char *cmd);
static void            _process              (Smart_Data_Thread *std, Ecore_Thread *th, Eina_List *batch);

static Eina_Bool       _cb_exe_del           (void *data, int ev_type EINA_UNUSED, void *event);
static Eina_Bool       _cb_exe_data          (void *data, int ev_type EINA_UNUSED, void *event);
static Eina_Bool       _cb_exe_pending_timer (void *data);

static void            _cb_thread_main       (void *data, Ecore_Thread *th);
static void            _cb_thread_notify     (void *data, Ecore_Thread *th EINA_UNUSED, void *msg);
static void            _cb_thread_done       (void *data, Ecore_Thread *th EINA_UNUSED);

static void            _icon_object_clear    (Icon *icon);
static void            _icon_object_add      (Icon *icon, Smart_Data *sd, Evas *e, const char *theme_edj_file, Eina_Bool clip_set, int num);
static void            _icon_free            (Icon *icon);
static void            _block_free           (Block *block);
static void            _cb_reblock           (void *data);

static void            _drag_start           (Icon *icon);
