summaryrefslogtreecommitdiff
path: root/src/lib/eio
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2019-09-04 13:39:42 -0400
committerMike Blumenkrantz <zmike@samsung.com>2019-09-04 13:39:43 -0400
commitd794a0d3d95c3addcb21df75606c444c6e3ed6d8 (patch)
tree15f8b5995b67c1a80d7f32d35b17267b1c47d321 /src/lib/eio
parent917b5feb27d491801495962226e38a0c171daeef (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
Diffstat (limited to 'src/lib/eio')
-rw-r--r--src/lib/eio/efl_io_model.c81
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 e6b6149..06f27f5 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
765static 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
813static 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}