forked from enlightenment/efl
parent
2600ac9160
commit
d41e80a29c
|
@ -229,6 +229,8 @@ EAPI Eio_File *eio_dir_unlink(const char *path,
|
|||
Eio_Error_Cb error_cb,
|
||||
const void *data);
|
||||
|
||||
EAPI void *eio_file_container_get(Eio_File *ls);
|
||||
|
||||
EAPI Eina_Bool eio_file_cancel(Eio_File *ls);
|
||||
|
||||
/**
|
||||
|
|
|
@ -239,6 +239,8 @@ _eio_file_recursiv_ls(Ecore_Thread *thread,
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
eio_file_container_set(common, eina_iterator_container_get(it));
|
||||
|
||||
EINA_ITERATOR_FOREACH(it, info)
|
||||
{
|
||||
Eina_Bool filter = EINA_TRUE;
|
||||
|
@ -264,6 +266,8 @@ _eio_file_recursiv_ls(Ecore_Thread *thread,
|
|||
goto on_error;
|
||||
}
|
||||
|
||||
eio_file_container_set(common, NULL);
|
||||
|
||||
eina_iterator_free(it);
|
||||
it = NULL;
|
||||
|
||||
|
|
|
@ -131,6 +131,8 @@ _eio_file_heavy(void *data, Ecore_Thread *thread)
|
|||
return ;
|
||||
}
|
||||
|
||||
eio_file_container_set(&async->ls.common, eina_iterator_container_get(ls));
|
||||
|
||||
EINA_ITERATOR_FOREACH(ls, file)
|
||||
{
|
||||
Eina_Bool filter = EINA_TRUE;
|
||||
|
@ -147,6 +149,8 @@ _eio_file_heavy(void *data, Ecore_Thread *thread)
|
|||
break;
|
||||
}
|
||||
|
||||
eio_file_container_set(&async->ls.common, NULL);
|
||||
|
||||
eina_iterator_free(ls);
|
||||
}
|
||||
|
||||
|
@ -172,6 +176,8 @@ _eio_file_eina_ls_heavy(Ecore_Thread *thread, Eio_File_Direct_Ls *async, Eina_It
|
|||
return ;
|
||||
}
|
||||
|
||||
eio_file_container_set(&async->ls.common, eina_iterator_container_get(ls));
|
||||
|
||||
EINA_ITERATOR_FOREACH(ls, info)
|
||||
{
|
||||
Eina_Bool filter = EINA_TRUE;
|
||||
|
@ -197,6 +203,8 @@ _eio_file_eina_ls_heavy(Ecore_Thread *thread, Eio_File_Direct_Ls *async, Eina_It
|
|||
break;
|
||||
}
|
||||
|
||||
eio_file_container_set(&async->ls.common, NULL);
|
||||
|
||||
eina_iterator_free(ls);
|
||||
}
|
||||
|
||||
|
@ -826,6 +834,22 @@ eio_file_cancel(Eio_File *ls)
|
|||
return ecore_thread_cancel(ls->thread);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the container during EIO operation
|
||||
* @param ls The asynchronous IO operation to retrieve container from.
|
||||
* @return NULL if not available, a DIRP if it is.
|
||||
*
|
||||
* This is only available and make sense in the thread callback, not in
|
||||
* the mainloop.
|
||||
*/
|
||||
EAPI void *
|
||||
eio_file_container_get(Eio_File *ls)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(ls, EINA_FALSE);
|
||||
return ls->container;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Copy a file asynchronously
|
||||
* @param source Should be the name of the file to copy the data from.
|
||||
|
|
|
@ -67,6 +67,7 @@ struct _Eio_File
|
|||
{
|
||||
Ecore_Thread *thread;
|
||||
const void *data;
|
||||
void *container;
|
||||
|
||||
int error;
|
||||
|
||||
|
@ -192,6 +193,8 @@ Eina_Bool eio_long_file_set(Eio_File *common,
|
|||
Ecore_Thread_Cb end_cb,
|
||||
Ecore_Thread_Cb cancel_cb);
|
||||
|
||||
void eio_file_container_set(Eio_File *common, void *container);
|
||||
|
||||
void eio_file_error(Eio_File *common);
|
||||
void eio_file_thread_error(Eio_File *common, Ecore_Thread *thread);
|
||||
|
||||
|
|
|
@ -275,6 +275,7 @@ eio_long_file_set(Eio_File *common,
|
|||
common->data = data;
|
||||
common->error = 0;
|
||||
common->thread = NULL;
|
||||
common->container = NULL;
|
||||
|
||||
/* Be aware that ecore_thread_feedback_run could call cancel_cb if something goes wrong.
|
||||
This means that common would be destroyed if thread == NULL.
|
||||
|
@ -305,6 +306,7 @@ eio_file_set(Eio_File *common,
|
|||
common->data = data;
|
||||
common->error = 0;
|
||||
common->thread = NULL;
|
||||
common->container = NULL;
|
||||
|
||||
/* Be aware that ecore_thread_run could call cancel_cb if something goes wrong.
|
||||
This means that common would be destroyed if thread == NULL.
|
||||
|
@ -315,6 +317,12 @@ eio_file_set(Eio_File *common,
|
|||
return !!thread;
|
||||
}
|
||||
|
||||
void
|
||||
eio_file_container_set(Eio_File *common, void *container)
|
||||
{
|
||||
common->container = container;
|
||||
}
|
||||
|
||||
/**
|
||||
* @endcond
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue