diff options
author | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2019-09-04 13:39:42 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@samsung.com> | 2019-09-04 13:39:43 -0400 |
commit | d794a0d3d95c3addcb21df75606c444c6e3ed6d8 (patch) | |
tree | 15f8b5995b67c1a80d7f32d35b17267b1c47d321 | |
parent | 917b5feb27d491801495962226e38a0c171daeef (diff) |
efl_io_model: remove custom counting logic
Summary:
this logic brings a few problems:
- When files are annonced here, without the monitor having the context
of the files, immidiat actions like deletion of the file are resulting
in no deletion event. Which is definitly a bug, so we need to wait here
for the monitor.
- When a new count is annonced before the files are there from the
monitor, we are heading towards the same issue - additionally, we might
already have files available, due to the custom counting that are not
annoncned through the monitor, which means, at a later pointer we are
annoncing a new file which is already available via the API.
Right now i do not see a way to continue with this code, it caused major
issues with our CI and the POLL backend, for now things do work again.
Depends on D9624
Reviewers: zmike, stefan_schmidt, cedric, felipealmeida
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9625
-rw-r--r-- | src/lib/eio/efl_io_model.c | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/src/lib/eio/efl_io_model.c b/src/lib/eio/efl_io_model.c index e6b6149288..06f27f52ae 100644 --- a/src/lib/eio/efl_io_model.c +++ b/src/lib/eio/efl_io_model.c | |||
@@ -762,63 +762,6 @@ _efl_io_model_efl_model_property_set(Eo *obj, | |||
762 | return efl_loop_future_rejected(obj, err); | 762 | return efl_loop_future_rejected(obj, err); |
763 | } | 763 | } |
764 | 764 | ||
765 | static void | ||
766 | _efl_io_model_children_list(void *data, Eina_Array *entries) | ||
767 | { | ||
768 | Eina_File_Direct_Info *info; | ||
769 | Efl_Model *obj = data; | ||
770 | Efl_Io_Model_Data *pd; | ||
771 | Efl_Model_Children_Event cevt = { 0 }; | ||
772 | Eina_Array_Iterator iterator; | ||
773 | unsigned int i; | ||
774 | |||
775 | pd = efl_data_scope_get(obj, EFL_IO_MODEL_CLASS); | ||
776 | if (!pd) return ; | ||
777 | |||
778 | EINA_ARRAY_ITER_NEXT(entries, i, info, iterator) | ||
779 | { | ||
780 | Efl_Io_Model_Info *mi; | ||
781 | |||
782 | if (_already_added(pd, info->path)) continue; | ||
783 | |||
784 | if (pd->filter.cb) | ||
785 | { | ||
786 | if (!pd->filter.cb(pd->filter.data, obj, info)) | ||
787 | continue ; | ||
788 | } | ||
789 | |||
790 | mi = calloc(1, sizeof (Efl_Io_Model_Info)); | ||
791 | if (!mi) continue ; | ||
792 | |||
793 | mi->path_length = info->path_length; | ||
794 | mi->path = eina_stringshare_add(info->path); | ||
795 | |||
796 | mi->name_start = info->name_start; | ||
797 | mi->name_length = info->name_length; | ||
798 | mi->type = _efl_io_model_info_type_get(info, NULL); | ||
799 | mi->parent_ref = EINA_FALSE; | ||
800 | mi->child_ref = EINA_TRUE; | ||
801 | |||
802 | cevt.index = eina_list_count(pd->files); | ||
803 | cevt.child = NULL; | ||
804 | |||
805 | pd->files = eina_list_append(pd->files, mi); | ||
806 | |||
807 | efl_event_callback_call(obj, EFL_MODEL_EVENT_CHILD_ADDED, &cevt); | ||
808 | } | ||
809 | |||
810 | efl_event_callback_call(obj, EFL_MODEL_EVENT_CHILDREN_COUNT_CHANGED, NULL); | ||
811 | } | ||
812 | |||
813 | static void | ||
814 | _efl_io_model_children_list_cleanup(Eo *o EINA_UNUSED, void *data, const Eina_Future *dead_future EINA_UNUSED) | ||
815 | { | ||
816 | Efl_Io_Model_Data *pd = data; | ||
817 | |||
818 | pd->request.listing = NULL; | ||
819 | pd->listed = EINA_TRUE; | ||
820 | } | ||
821 | |||
822 | /** | 765 | /** |
823 | * Children Count Get | 766 | * Children Count Get |
824 | */ | 767 | */ |
@@ -835,30 +778,6 @@ _efl_io_model_efl_model_children_count_get(const Eo *obj, Efl_Io_Model_Data *pd) | |||
835 | { | 778 | { |
836 | _eio_build_st(obj, pd); | 779 | _eio_build_st(obj, pd); |
837 | } | 780 | } |
838 | else if (!pd->listed && | ||
839 | !pd->request.listing && | ||
840 | pd->info->type == EINA_FILE_DIR) | ||
841 | { | ||
842 | Efl_Io_Manager *iom; | ||
843 | Eina_Future *f; | ||
844 | |||
845 | iom = efl_provider_find(obj, EFL_IO_MANAGER_CLASS); | ||
846 | if (!iom) | ||
847 | { | ||
848 | ERR("Could not find an Efl.Io.Manager on %p.", obj); | ||
849 | return 0; | ||
850 | } | ||
851 | |||
852 | f = efl_io_manager_direct_ls(iom, pd->path, EINA_FALSE, | ||
853 | (void*) obj, _efl_io_model_children_list, NULL); | ||
854 | |||
855 | //start monitoring before listing is done | ||
856 | //we will filter later on if we already published a file or not | ||
857 | _efl_io_model_efl_model_monitor_add(pd); | ||
858 | pd->request.listing = efl_future_then(obj, f, | ||
859 | .free = _efl_io_model_children_list_cleanup, | ||
860 | .data = pd); | ||
861 | } | ||
862 | 781 | ||
863 | return eina_list_count(pd->files); | 782 | return eina_list_count(pd->files); |
864 | } | 783 | } |