Enlightenment CVS committal
Author : lordchaos
Project : e17
Module : proto
Dir : e17/proto/entropy/src/plugins
Modified Files:
filesystem.c
Log Message:
* Make 'struct stat' a part of entropy_generic_file. No point in discarding
useful data
* More threading protection - fixed a nasty oversight where the file cache was
accessed outside a mutex lock. Could have potentially caused issues
* More migration to a static core
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/filesystem.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- filesystem.c 20 Nov 2005 03:04:29 -0000 1.21
+++ filesystem.c 21 Nov 2005 10:49:21 -0000 1.22
@@ -12,8 +12,6 @@
#define URI_POSIX "posix"
-/*static Ecore_Hash* file_interest_list;
-static Ecore_Hash* folder_interest_list;*/
Ecore_Hash* folder_monitor_hash;
Ecore_Hash* stat_request_hash;
@@ -60,7 +58,7 @@
entropy_generic_file* file;
- if (
!ecore_hash_get(((entropy_gui_component_instance*)key)->core->file_interest_list,
md5) ) {
+ if ( ! (listener =
entropy_core_file_cache_retrieve(md5)) ) {
file =
entropy_generic_file_new();
/*For now, just make an
entropy_generic_file for this object*/
@@ -78,9 +76,6 @@
entropy_free(folder);
} else {
- listener =
ecore_hash_get(((
-
entropy_gui_component_instance*)key)->core->file_interest_list, md5);
-
file=listener->file;
entropy_free(md5); /*We
don't need this one, we're returning an old ref*/
entropy_free(folder);
@@ -162,11 +157,7 @@
/*Retrieve the file. This is bad - the file
might not exist anymore! */
- file_stat->file =
((entropy_file_listener*)ecore_hash_get(((
-
entropy_gui_component_instance*)instance)->core->file_interest_list,
md5))->file;
-
-
-
+ file_stat->file =
entropy_core_file_cache_retrieve(md5)->file;
/*Build up the gui_event wrapper*/
gui_event =
entropy_malloc(sizeof(entropy_gui_event));
@@ -253,7 +244,7 @@
char* md5 =
md5_entropy_path_file(folder, filename);
/*Now create, or grab, a file*/
- if (
!ecore_hash_get(filesystem_core->file_interest_list, md5) ) {
+ if ( ! (listener =
entropy_core_file_cache_retrieve(md5)) ) {
file =
entropy_generic_file_new();
/*For now, just make an
entropy_generic_file for this object*/
@@ -298,7 +289,6 @@
} else {
- listener =
ecore_hash_get(filesystem_core->file_interest_list, md5);
file=listener->file;
entropy_free(md5); /*We don't
need this one, we're returning an old ref*/
}
@@ -404,8 +394,6 @@
}
void entropy_plugin_init(entropy_core* core) {
- /*file_interest_list = ecore_hash_new(ecore_str_hash,
ecore_str_compare);
- folder_interest_list = ecore_hash_new(ecore_direct_hash,
ecore_direct_compare);*/
folder_monitor_hash = ecore_hash_new(ecore_direct_hash,
ecore_direct_compare);
stat_request_hash = ecore_hash_new(ecore_str_hash, ecore_str_compare);
evfs_dir_requests = ecore_hash_new(ecore_str_hash, ecore_str_compare);
@@ -538,7 +526,7 @@
md5 = md5_entropy_path_file(dire,
de->d_name);
/*printf("Looking for key %s\n", md5);
*/
- if (
!ecore_hash_get(request->core->file_interest_list, md5) ) {
+ if ( ! (listener =
entropy_core_file_cache_retrieve(md5)) ) {
/*printf ("File not found in
hash, making new instance\n");*/
ef = entropy_generic_file_new();
@@ -554,14 +542,19 @@
ecore_list_append(el, ef);
+
+ /*Save this file's stat
structure*/
+ ef->retrieved_stat = 1;
+ memcpy(&ef->properties, &st,
sizeof(struct stat));
+
/*Register a new listener for
this file*/
listener =
entropy_malloc(sizeof(entropy_file_listener));
listener->file = ef;
listener->count = 0;
+
entropy_core_file_cache_add(request->core,md5, listener);
} else {
- listener =
ecore_hash_get(request->core->file_interest_list, md5);
ecore_list_append(el,
listener->file);
entropy_free(md5); /*We don't
need this one, we're returning an old ref*/
}
-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
Register for a JBoss Training Course. Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs