From: <enl...@li...> - 2005-10-27 12:13:17
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: ewl_icon_local_viewer.c filesystem.c Log Message: * Create the concept of 'bulk event commit'. Should make directory changes faster =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/ewl_icon_local_viewer.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- ewl_icon_local_viewer.c 27 Oct 2005 07:17:26 -0000 1.14 +++ ewl_icon_local_viewer.c 27 Oct 2005 12:12:22 -0000 1.15 @@ -162,7 +162,7 @@ ewl_widget_show(text); text = ewl_text_new(); - snprintf(itext, 100, "%d kb", file_stat->stat_obj->st_size / 1024); + snprintf(itext, 100, "%d kb", (int)(file_stat->stat_obj->st_size / 1024)); ewl_text_text_set(EWL_TEXT(text), itext); ewl_container_child_append(EWL_CONTAINER(hbox), text); ewl_widget_show(text); @@ -529,45 +529,33 @@ } -void ewl_icon_local_viewer_add_icon(entropy_gui_component_instance* comp, entropy_generic_file* list_item) { +gui_file* ewl_icon_local_viewer_add_icon(entropy_gui_component_instance* comp, entropy_generic_file* list_item) { entropy_icon_viewer* view = comp->data; - entropy_plugin* thumb; + Ewl_IconBox_Icon* icon; gui_file* gui_object; if (!ecore_hash_get(view->gui_hash, list_item)) { entropy_core_file_cache_add_reference(comp->core, list_item->md5); - char* mime; - /*printf("%s\n", list_item->filename);*/ - mime = entropy_mime_file_identify(comp->core->mime_plugins, list_item); - if (mime && strcmp(mime, ENTROPY_NULL_MIME)) { - thumb = entropy_thumbnailer_retrieve(comp->core->entropy_thumbnailers, mime); - } else { - thumb = NULL; - } icon = ewl_iconbox_icon_add(EWL_ICONBOX(view->iconbox), list_item->filename, PACKAGE_DATA_DIR "/icons/default.png"); + ewl_callback_append(EWL_WIDGET(icon), EWL_CALLBACK_MOUSE_DOWN, icon_click_cb, view); gui_object = gui_file_new(); gui_object->file = list_item; gui_object->thumbnail = NULL; - gui_object->instance = comp; /*This instance associated with this icon, for clicks*/ + gui_object->instance = comp; gui_object->icon = EWL_WIDGET(icon); - ewl_callback_append(EWL_WIDGET(icon), EWL_CALLBACK_MOUSE_DOWN, icon_click_cb, view); + ecore_hash_set(view->gui_hash, list_item, gui_object); ecore_hash_set(view->icon_hash, icon, gui_object); + + return gui_object; - /*If thre's a thumbnailer for this, Register request to thumbnail for this filename*/ - if (thumb) { - entropy_notify_event* ev = entropy_notify_request_register(comp->core->notify, comp, ENTROPY_NOTIFY_THUMBNAIL_REQUEST,thumb, "entropy_thumbnailer_thumbnail_get", list_item,NULL); - - entropy_notify_event_callback_add(ev, (void*)gui_event_callback, comp); - entropy_notify_event_commit(comp->core->notify,ev); - } } } @@ -578,6 +566,13 @@ switch (eevent->event_type) { case ENTROPY_NOTIFY_FILELIST_REQUEST_EXTERNAL: case ENTROPY_NOTIFY_FILELIST_REQUEST: { + Ecore_List* event_keys; + Ecore_List* events; + entropy_generic_file* event_file; + char* mime; + entropy_plugin* thumb; + + Ecore_List* el = (Ecore_List*)ret; entropy_file_request* request = eevent->data; /*A file request's data is the dest dir*/ @@ -597,10 +592,6 @@ view->gui_hash = ecore_hash_new(ecore_direct_hash, ecore_direct_compare); view->icon_hash = ecore_hash_new(ecore_direct_hash, ecore_direct_compare); - - - - /*Clear the view, if there's anything to nuke*/ ewl_iconbox_clear(EWL_ICONBOX(view->iconbox)); @@ -610,6 +601,34 @@ ewl_icon_local_viewer_add_icon(comp, list_item); } + event_keys = ecore_hash_keys(view->gui_hash); + events = ecore_list_new(); + while ( (event_file=ecore_list_remove_first(event_keys))) { + + /*printf("%s\n", list_item->filename);*/ + mime = entropy_mime_file_identify(comp->core->mime_plugins, event_file); + + + if (mime && strcmp(mime, ENTROPY_NULL_MIME)) { + thumb = entropy_thumbnailer_retrieve(comp->core->entropy_thumbnailers, mime); + } else { + thumb = NULL; + } + + if (thumb) { + entropy_notify_event* ev = entropy_notify_request_register(comp->core->notify, comp, ENTROPY_NOTIFY_THUMBNAIL_REQUEST,thumb, "entropy_thumbnailer_thumbnail_get", event_file,NULL); + + entropy_notify_event_callback_add(ev, (void*)gui_event_callback, comp); + + ecore_list_append(events, ev); + } + + } + ecore_list_destroy(event_keys); + + /*Now insert all these events inside one lock*/ + entropy_notify_event_bulk_commit(comp->core->notify,events); + /*Before we begin, see if our file hash is initialized, if so - we must destroy it first*/ /*TODO*/ @@ -618,16 +637,17 @@ - /*First, see if there is a custom BG image for this folder*/ + /*See if there is a custom BG image for this folder*/ if (entropy_config_str_get("iconbox_viewer", view->current_dir)) { ewl_iconbox_background_set(EWL_ICONBOX(view->iconbox), entropy_config_str_get("iconbox_viewer", view->current_dir)); } else { ewl_iconbox_background_set(EWL_ICONBOX(view->iconbox), NULL); } - /*Goto the root*/ + /*Goto the root of the iconbox*/ ewl_iconbox_scrollpane_recalculate(EWL_ICONBOX(view->iconbox)); ewl_iconbox_scrollpane_goto_root(EWL_ICONBOX(view->iconbox)); + } break; =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/filesystem.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- filesystem.c 24 Oct 2005 03:10:23 -0000 1.4 +++ filesystem.c 27 Oct 2005 12:12:22 -0000 1.5 @@ -483,6 +483,8 @@ } } closedir(dir); + + return entropy_generic_file_list_sort(el); } else { /*Not a posix call for a dir list - don't use our local optim function */ entropy_file_request* new_request; /*We need to make a copy of the request object because the original will be destroyed*/ @@ -518,7 +520,7 @@ } - return entropy_generic_file_list_sort(el); + } void entropy_plugin_backend_file_deregister_file_list() { |
From: <enl...@li...> - 2005-10-27 12:13:17
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src Modified Files: entropy_core.c notification_engine.c Log Message: * Create the concept of 'bulk event commit'. Should make directory changes faster =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/entropy_core.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- entropy_core.c 27 Oct 2005 10:23:59 -0000 1.8 +++ entropy_core.c 27 Oct 2005 12:12:22 -0000 1.9 @@ -558,6 +558,10 @@ void entropy_core_layout_notify_event(entropy_gui_component_instance* instance, entropy_gui_event* event, int event_type) { /*First get the layout hash*/ + entropy_gui_component_instance* iter; + Ecore_List* el; + Ecore_Hash* lay_hash; + entropy_gui_component_instance* layout = NULL; if (event_type == ENTROPY_EVENT_LOCAL) { @@ -574,9 +578,8 @@ //printf("Instance's core reference: instance: %p, %p\n", instance, instance->core); - Ecore_Hash* lay_hash = ecore_hash_get(instance->core->layout_gui_events, layout); - entropy_gui_component_instance* iter; - Ecore_List* el; + lay_hash = ecore_hash_get(instance->core->layout_gui_events, layout); + if (!lay_hash) { @@ -895,7 +898,7 @@ if (listener) { listener->count--; - if (listener->count == 0) { + if (listener->count == 0 && 0) { /*This should be a seperate function*/ entropy_generic_file_destroy(listener->file); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/notification_engine.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- notification_engine.c 27 Oct 2005 07:16:35 -0000 1.2 +++ notification_engine.c 27 Oct 2005 12:12:22 -0000 1.3 @@ -153,7 +153,7 @@ } - usleep(1000); + usleep(50); /*Allow the CPU to have a rest*/ } pthread_mutex_unlock(¬ify->loop_mutex); @@ -248,6 +248,22 @@ } +void entropy_notify_event_bulk_commit(entropy_notification_engine* engine, Ecore_List* list) { + entropy_notify_event* ev; + + pthread_mutex_lock(&engine->op_queue_mutex); + while ( (ev = ecore_list_remove_first(list))) { + ecore_list_append(engine->op_queue, ev); + } + pthread_mutex_unlock(&engine->op_queue_mutex); + + ecore_list_destroy(list); + +} + + + + void entropy_notify_lock_loop(entropy_notification_engine* notify) { pthread_mutex_lock(¬ify->op_queue_mutex); |
From: <enl...@li...> - 2005-10-28 22:33:43
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/include Modified Files: entropy.h entropy_core.h entropy_generic.h Log Message: Big changes: * The tar file browsing support (via evfs) is now in. * I've left a lot of debug statements in, so expect a screenful :) * The tar URI generation code is going to be rewritten later to be more generic, this is just a placeholder * If anyone finds any regressions because of this new URI code, let me know. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/include/entropy.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- entropy.h 27 Oct 2005 07:15:47 -0000 1.2 +++ entropy.h 28 Oct 2005 22:33:36 -0000 1.3 @@ -83,6 +83,7 @@ void entropy_core_string_lowcase(char *lc); void* entropy_malloc(size_t); void entropy_free(void* ref); +char* entropy_core_descent_for_mime_get(entropy_core*, char*); /*Logging stuff*/ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/include/entropy_core.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- entropy_core.h 20 Oct 2005 08:45:54 -0000 1.1 +++ entropy_core.h 28 Oct 2005 22:33:36 -0000 1.2 @@ -26,6 +26,7 @@ pthread_mutex_t file_cache_mutex; Ecore_List* selected_files; + Ecore_Hash* descent_hash; =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/include/entropy_generic.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- entropy_generic.h 24 Oct 2005 00:58:38 -0000 1.2 +++ entropy_generic.h 28 Oct 2005 22:33:36 -0000 1.3 @@ -21,6 +21,8 @@ entropy_thumbnail* thumbnail; + struct entropy_generic_file* parent; + char* md5; /*A reference to the md5sum made for this file*/ }; @@ -37,6 +39,11 @@ entropy_core* core; /*A reference into the system core */ void* requester; /*The object that requested this file/directory, for reference tracking purposes*/ int file_type; + int drill_down; /*Indicate if this request should drill down through the child's mime type + I.e. if the file's uri is 'posix', and the file's mime is 'application/x-tar, + produce a construct of the form posix://path/to/file#tar:/// ..etc */ + + int set_parent; }; typedef struct entropy_file_stat entropy_file_stat; |
From: <enl...@li...> - 2005-10-28 22:33:43
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: action_simple.c filesystem.c structure_viewer.c Log Message: Big changes: * The tar file browsing support (via evfs) is now in. * I've left a lot of debug statements in, so expect a screenful :) * The tar URI generation code is going to be rewritten later to be more generic, this is just a placeholder * If anyone finds any regressions because of this new URI code, let me know. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/action_simple.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- action_simple.c 20 Oct 2005 08:45:54 -0000 1.1 +++ action_simple.c 28 Oct 2005 22:33:36 -0000 1.2 @@ -4,6 +4,9 @@ #include <unistd.h> + + + int entropy_plugin_type_get() { return ENTROPY_PLUGIN_ACTION_PROVIDER; } @@ -16,17 +19,47 @@ void gui_event_callback(entropy_notify_event* eevent, void* requestor, void* obj, entropy_gui_component_instance* comp) { char fullname[1024]; entropy_gui_event* gui_event; + entropy_core* core = ((entropy_gui_component_instance*)requestor)->core; char* app; + char* uri; entropy_generic_file* file = (entropy_generic_file*)obj; - if (!strcmp(file->mime_type, "file/folder")) { + if (!strcmp(file->mime_type, "file/folder") && !file->parent) { + entropy_file_request* request = entropy_malloc(sizeof(entropy_file_request)); + request->file = file; + //printf("Action on a folder - change dirs!\n\n"); + /*Send an event to the core*/ gui_event = entropy_malloc(sizeof(entropy_gui_event)); gui_event->event_type = entropy_core_gui_event_get(ENTROPY_GUI_EVENT_FOLDER_CHANGE_CONTENTS); - gui_event->data = file; + gui_event->data = request; + entropy_core_layout_notify_event((entropy_gui_component_instance*)requestor, gui_event, ENTROPY_EVENT_LOCAL); + + return; + } else if ( (uri = entropy_core_descent_for_mime_get(core,file->mime_type)) || file->parent) { + entropy_file_request* request = entropy_malloc(sizeof(entropy_file_request)); + + printf("Requested a list of a descendable object\n"); + /*printf("URI would be: '%s://%s/%s#tar:///'\n", file->uri_base, file->path, file->filename);*/ + + + request->file = file; + if (uri) { + request->drill_down = 1; + } else { + request->drill_down = 0; + } + + //printf("Action on a folder - change dirs!\n\n"); + + + /*Send an event to the core*/ + gui_event = entropy_malloc(sizeof(entropy_gui_event)); + gui_event->event_type = entropy_core_gui_event_get(ENTROPY_GUI_EVENT_FOLDER_CHANGE_CONTENTS); + gui_event->data = request; entropy_core_layout_notify_event((entropy_gui_component_instance*)requestor, gui_event, ENTROPY_EVENT_LOCAL); return; @@ -62,6 +95,7 @@ entropy_core_component_event_register(core, instance, entropy_core_gui_event_get(ENTROPY_GUI_EVENT_ACTION_FILE)); + /*Load config*/ config = entropy_config_int_get("action_simple", "init"); if (!config) { @@ -82,12 +116,6 @@ /*Archives*/ entropy_config_str_set("action_simple", "application/x-gtar", "file-roller"); - - - - - - } return instance; =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/filesystem.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- filesystem.c 27 Oct 2005 12:12:22 -0000 1.5 +++ filesystem.c 28 Oct 2005 22:33:36 -0000 1.6 @@ -186,6 +186,7 @@ entropy_file_listener* listener; entropy_gui_event* gui_event; evfs_filereference* ref; + char* filename; char* folder; char *pos; @@ -204,12 +205,23 @@ while ( (ref= ecore_list_next(data->file_list.list)) ) { - //printf("(%s) Received file type for file: %d\n", ref->path, ref->file_type); + printf("(%s) Received file type for file: %d\n", ref->path, ref->file_type); folder = strdup((char*)ref->path); pos = rindex(folder, '/'); *pos = '\0'; + filename = strdup(pos+1); + + /*If we are the root dir (i.e. we only have one "/", replace it (so we can use it below), + * and assume this filename has length (BAD). */ + if (!strlen(folder)) { + *pos = '/'; + *(pos+1) = '\0'; + } + + printf("Calling folder is '%s'\n", folder); + /*If the calling request is currently NULL, we must go to the hash to retrieve that caller*/ if (!calling_request) { calling_request = ecore_hash_get(evfs_dir_requests, folder); @@ -225,9 +237,7 @@ //printf("Folder name: '%s', filename '%s'\n", folder, pos+1); /*Look for an existing file we have cached*/ - char* md5 = md5_entropy_path_file(folder, pos+1); - - + char* md5 = md5_entropy_path_file(folder, filename); /*Now create, or grab, a file*/ if ( !ecore_hash_get(filesystem_core->file_interest_list, md5) ) { @@ -235,7 +245,7 @@ file = entropy_generic_file_new(); /*For now, just make an entropy_generic_file for this object*/ strncpy(file->path, folder, 255); - strncpy(file->filename, pos+1, strlen(pos+1)+1); + strncpy(file->filename, filename, strlen(filename)+1); file->md5 = strdup(md5); /*Set the file type, if evfs provided it*/ @@ -246,6 +256,14 @@ //printf("Marked this file as a directory\n"); } else { //printf("Didn't mark this file, type %d\n",ref->file_type); + file->filetype = FILE_STANDARD; + } + + if (calling_request && (calling_request->drill_down || calling_request->set_parent)) { + printf("Calling request had a parent...\n"); + printf("File ('%s') parent's name is '%s'\n", file->filename, calling_request->file->filename); + + file->parent = calling_request->file; } /*Mark the file's uri FIXME do this properly*/ @@ -266,6 +284,7 @@ } free(folder); + free(filename); /*Add this file to our list*/ @@ -401,7 +420,7 @@ evfs_file_uri_path* dir_path; entropy_file_listener* listener; - if (!strcmp(request->file->uri_base, "posix")) { + if ( (!strcmp(request->file->uri_base, "posix")) && !request->drill_down && !request->file->parent) { /*If either the path, or the filename, is the root dir, we don't need another slash*/ if (strcmp(request->file->filename, "/") && strcmp(request->file->path, "/")) { snprintf(dire, 256, "%s/%s", request->file->path, request->file->filename); @@ -488,33 +507,93 @@ } else { /*Not a posix call for a dir list - don't use our local optim function */ entropy_file_request* new_request; /*We need to make a copy of the request object because the original will be destroyed*/ + + entropy_generic_file* source_file; char uri[512]; evfs_file_uri_path* path; //printf("*** Requested a '%s' dir list, calling evfs\n", request->file->uri_base); + // + // + /*If the file/location we are requesting has a 'parent' (i.e. it's inside another object), + * we have to grab the parent, not the file itself, as the base*/ + if (request->file->parent) { + source_file = request->file->parent; + } else + source_file = request->file; + // /*First build uri..*/ /*Do we have login information*/ /*TODO - wrap this up in some kind of entropy_generic_file_to_evfs_uri function*/ - if (!request->file->username) { - snprintf(uri, 512, "%s://%s/%s", request->file->uri_base, request->file->path, request->file->filename); + if (!source_file->username) { + snprintf(uri, 512, "%s://%s/%s", source_file->uri_base, source_file->path, source_file->filename); } else { - snprintf(uri, 512, "%s://%s:%s@%s/%s", request->file->uri_base, request->file->username, request->file->password, request->file->path, request->file->filename); + snprintf(uri, 512, "%s://%s:%s@%s/%s", source_file->uri_base, + source_file->username, source_file->password, + source_file->path, source_file->filename); + } + + /*If it's a drill down request, or the file has a parent */ + if (request->drill_down || request->file->parent) { + char* uri_retrieve; + char uri_build[255]; + + /*The file is a drill down request*/ + + + printf("EVFS says that this file descends through '%s'\n", uri); + + /*If we're a 'drill-down', we're at the root - so request the root*/ + if (request->drill_down) { + uri_retrieve = entropy_core_descent_for_mime_get(request->core,request->file->mime_type); + snprintf(uri_build, 255, "#%s:///", uri_retrieve); + printf("URI build says: '%s'\n", uri_build); + strcat(uri, uri_build); + } else if (request->file->parent) { + printf("Retrieving mime-descend from parent...'%s' for file with name '%s'\n", request->file->parent->mime_type, request->file->parent->filename); + uri_retrieve = entropy_core_descent_for_mime_get(request->core,request->file->parent->mime_type); + + /*Special case handler for the root dir - FIXME*/ + printf("Path: '%s', filename '%s'\n", request->file->path, request->file->filename); + if (!strcmp(request->file->path,"/")) { + snprintf(uri_build, 255, "#%s://%s%s", uri_retrieve, request->file->path, request->file->filename); + } else { + snprintf(uri_build, 255, "#%s://%s/%s", uri_retrieve, request->file->path, request->file->filename); + } + + strcat(uri, uri_build); + } + + + } - //printf("URI: %s\n", uri); + printf("URI: %s\n", uri); path = evfs_parse_uri(uri); evfs_client_dir_list(con, path->files[0]); new_request = entropy_malloc(sizeof(entropy_file_request)); - new_request->file = request->file; + + /*If this request/file has a parent, the new file listing's parent will be + * the same file - not the request file */ + + new_request->file = source_file; + if (request->file->parent) new_request->set_parent = 1; + + new_request->core = request->core; + new_request->drill_down = request->drill_down; new_request->requester = request->requester; new_request->file_type = request->file_type; - ecore_hash_set(evfs_dir_requests, path->files[0]->path, new_request); + if (request->drill_down) { + ecore_hash_set(evfs_dir_requests, "/", new_request); + } else { + ecore_hash_set(evfs_dir_requests, path->files[0]->path, new_request); + } return NULL; } =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/structure_viewer.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- structure_viewer.c 27 Oct 2005 10:23:59 -0000 1.4 +++ structure_viewer.c 28 Oct 2005 22:33:36 -0000 1.5 @@ -83,6 +83,7 @@ //printf (" Got %p\n", row); /*If we don't own this row, forget about doing something - we don't know about this*/ + if (row && !ecore_hash_get(viewer->loaded_dirs, row)) { @@ -104,7 +105,8 @@ ewl_tree_row_expand_set(row, EWL_TREE_NODE_EXPANDED); } else { - //printf ("We don't own this row\n"); + printf ("We don't own this row\n"); + printf("Looked for file '(%s)(%s) (%p)'\n", event_file->path, event_file->filename,event_file); /*printf("---------------------------------------------> This row already has children!!\n");*/ } } @@ -117,15 +119,19 @@ event_file_core* event = (event_file_core*)user_data; entropy_file_structure_viewer* viewer = (entropy_file_structure_viewer*)event->instance->data; entropy_gui_event* gui_event; + entropy_file_request* request = entropy_malloc(sizeof(entropy_file_request)); //printf("Clicked on %s%s\n", event->file->path, event->file->filename); /*-----------*/ /*Send an event to the core*/ + request->file = event->file; + request->drill_down = 0; + gui_event = entropy_malloc(sizeof(entropy_gui_event)); gui_event->event_type = entropy_core_gui_event_get(ENTROPY_GUI_EVENT_FOLDER_CHANGE_CONTENTS); - gui_event->data = event->file; + gui_event->data = request; entropy_core_layout_notify_event(event->instance, gui_event, ENTROPY_EVENT_LOCAL); if (viewer->last_selected_label) { |
From: <enl...@li...> - 2005-10-28 22:34:13
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src Modified Files: entropy_core.c entropy_file.c Log Message: Big changes: * The tar file browsing support (via evfs) is now in. * I've left a lot of debug statements in, so expect a screenful :) * The tar URI generation code is going to be rewritten later to be more generic, this is just a placeholder * If anyone finds any regressions because of this new URI code, let me know. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/entropy_core.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- entropy_core.c 27 Oct 2005 12:12:22 -0000 1.9 +++ entropy_core.c 28 Oct 2005 22:33:36 -0000 1.10 @@ -192,12 +192,16 @@ /*Show some details*/ //entropy_thumbnailer_plugin_print(core->entropy_thumbnailers); - - /*Initialize the selection engine*/ entropy_core_selection_engine_init(core); + /*Initialize the descent hash - this should be loaded from EVFS - FIXME*/ + /*Descent hash init - move this to a call to EVFS*/ + core->descent_hash = ecore_hash_new(ecore_str_hash, ecore_str_compare); + ecore_hash_set(core->descent_hash, "application/x-tar", "tar"); + + /*Initial layout initialize...*/ @@ -605,7 +609,6 @@ if (!strcmp(event->event_type,ENTROPY_GUI_EVENT_FOLDER_CHANGE_CONTENTS)) { - char fullpath[1024]; entropy_plugin* plugin; entropy_notify_event *ev; @@ -616,17 +619,16 @@ //printf("File says: %s %s\n", ((entropy_generic_file*)event->data)->path, ((entropy_generic_file*)event->data)->filename); /*Check if we need to put a slash between the path/file*/ - if (strcmp(((entropy_generic_file*)event->data)->filename, "/") && strcmp(((entropy_generic_file*)event->data)->path, "/")) { - sprintf(fullpath, "%s/%s", ((entropy_generic_file*)event->data)->path, ((entropy_generic_file*)event->data)->filename); - } else { - sprintf(fullpath, "%s%s", ((entropy_generic_file*)event->data)->path, ((entropy_generic_file*)event->data)->filename); + + if (((entropy_file_request*)event->data)->drill_down) { + printf("Request for drill down\n"); } - //printf("NOTIFY GETTING folder: %s\n", fullpath); - request->file = event->data; + request->file = ((entropy_file_request*)event->data)->file; request->requester = instance->layout_parent; /*Requester is the layout parent - after all - one dir per layout at one time*/ request->core = instance->core; request->file_type = FILE_ALL; + request->drill_down = ((entropy_file_request*)event->data)->drill_down; /*FIXME We should get the caller's current file plugin from the caller - i.e. the gui instance*/ @@ -649,7 +651,8 @@ /*Tell the notify engine we're ready to run*/ entropy_notify_event_commit(instance->core->notify, ev); - + /*Nuke the file_request object that was passed to us*/ + free(event->data); } else if (!strcmp(event->event_type,ENTROPY_GUI_EVENT_FILE_CHANGE)) { @@ -964,6 +967,12 @@ +char* entropy_core_descent_for_mime_get(entropy_core* core, char* mime) { + return ecore_hash_get(core->descent_hash, mime); +} + + + void entropy_log(char* message, const int level) { /*Levels: =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/entropy_file.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- entropy_file.c 21 Oct 2005 14:32:05 -0000 1.2 +++ entropy_file.c 28 Oct 2005 22:33:36 -0000 1.3 @@ -5,6 +5,7 @@ file->thumbnail = NULL; file->username = NULL; file->password = NULL; + file->parent = NULL; allocated_files++; print_allocation(); |
From: <enl...@li...> - 2005-10-28 22:45:48
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: filesystem.c Log Message: Make the structure viewer work with TAR files as well =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/filesystem.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- filesystem.c 28 Oct 2005 22:33:36 -0000 1.6 +++ filesystem.c 28 Oct 2005 22:45:41 -0000 1.7 @@ -261,9 +261,9 @@ if (calling_request && (calling_request->drill_down || calling_request->set_parent)) { printf("Calling request had a parent...\n"); - printf("File ('%s') parent's name is '%s'\n", file->filename, calling_request->file->filename); + printf("File ('%s') parent's name is '%s'\n", file->filename, calling_request->reparent_file->filename); - file->parent = calling_request->file; + file->parent = calling_request->reparent_file; } /*Mark the file's uri FIXME do this properly*/ @@ -581,8 +581,14 @@ /*If this request/file has a parent, the new file listing's parent will be * the same file - not the request file */ - new_request->file = source_file; - if (request->file->parent) new_request->set_parent = 1; + new_request->file = request->file; + + if (request->file->parent || request->drill_down) { + new_request->reparent_file = source_file; + new_request->set_parent = 1; + } + + new_request->core = request->core; |
From: <enl...@li...> - 2005-10-28 22:45:48
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/include Modified Files: entropy_generic.h Log Message: Make the structure viewer work with TAR files as well =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/include/entropy_generic.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- entropy_generic.h 28 Oct 2005 22:33:36 -0000 1.3 +++ entropy_generic.h 28 Oct 2005 22:45:41 -0000 1.4 @@ -36,6 +36,8 @@ struct entropy_file_request { entropy_generic_file* file; entropy_generic_file* file2; + entropy_generic_file* reparent_file; + entropy_core* core; /*A reference into the system core */ void* requester; /*The object that requested this file/directory, for reference tracking purposes*/ int file_type; |
From: <enl...@li...> - 2005-10-28 23:09:06
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: layout_ewl_simple.c structure_viewer.c Log Message: Avoid code duplication - make the structure viewers descend folders in the same way the icon viewer does =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/layout_ewl_simple.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- layout_ewl_simple.c 27 Oct 2005 10:23:59 -0000 1.10 +++ layout_ewl_simple.c 28 Oct 2005 23:08:58 -0000 1.11 @@ -319,6 +319,9 @@ entropy_generic_file* file = entropy_core_parse_uri(uri); + /*Mark this file as a 'folder' - more of a bootstrap. Should we really do this? FIXME*/ + strcpy(file->mime_type, "file/folder"); + //printf("***** Adding structure viewer\n"); /*Main drive viewer*/ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/structure_viewer.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- structure_viewer.c 28 Oct 2005 22:33:36 -0000 1.5 +++ structure_viewer.c 28 Oct 2005 23:08:58 -0000 1.6 @@ -119,20 +119,17 @@ event_file_core* event = (event_file_core*)user_data; entropy_file_structure_viewer* viewer = (entropy_file_structure_viewer*)event->instance->data; entropy_gui_event* gui_event; - entropy_file_request* request = entropy_malloc(sizeof(entropy_file_request)); //printf("Clicked on %s%s\n", event->file->path, event->file->filename); /*-----------*/ /*Send an event to the core*/ - request->file = event->file; - request->drill_down = 0; gui_event = entropy_malloc(sizeof(entropy_gui_event)); - gui_event->event_type = entropy_core_gui_event_get(ENTROPY_GUI_EVENT_FOLDER_CHANGE_CONTENTS); - gui_event->data = request; - entropy_core_layout_notify_event(event->instance, gui_event, ENTROPY_EVENT_LOCAL); + gui_event->event_type = entropy_core_gui_event_get(ENTROPY_GUI_EVENT_ACTION_FILE); + gui_event->data = event->file; + entropy_core_layout_notify_event(event->instance, gui_event, ENTROPY_EVENT_GLOBAL); if (viewer->last_selected_label) { ewl_text_cursor_position_set(EWL_TEXT(viewer->last_selected_label), 0); |
From: <enl...@li...> - 2005-10-29 02:00:26
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/images Modified Files: Makefile.am Log Message: * Make the structure viewer's descent-object navigation work * Scale thumbnail images properly according to aspect ratio =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/images/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- Makefile.am 27 Oct 2005 10:23:59 -0000 1.3 +++ Makefile.am 29 Oct 2005 02:00:19 -0000 1.4 @@ -2,7 +2,7 @@ FILES = c.png default.png document.png folder.png folder_structure.png \ html.png jar.png java.png mp3.png pdf.png perl.png spreadsheet.png \ - tgz.png wmv.png xml.png mpeg.png bz2.png tar.png + tgz.png wmv.png xml.png mpeg.png bz2.png tar.png txt.png miscdir = $(pkgdatadir)/icons misc_DATA = $(FILES) |
From: <enl...@li...> - 2005-10-29 02:00:28
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: ewl_icon_local_viewer.c mime.c thumbnail_generic.c thumbnail_system.c Log Message: * Make the structure viewer's descent-object navigation work * Scale thumbnail images properly according to aspect ratio =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/ewl_icon_local_viewer.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- ewl_icon_local_viewer.c 27 Oct 2005 12:12:22 -0000 1.15 +++ ewl_icon_local_viewer.c 29 Oct 2005 02:00:19 -0000 1.16 @@ -5,6 +5,9 @@ #include <dlfcn.h> #include <time.h> +#define DONT_DO_MIME 0 +#define DO_MIME 1 + typedef struct gui_file gui_file; struct gui_file { entropy_generic_file* file; @@ -529,7 +532,7 @@ } -gui_file* ewl_icon_local_viewer_add_icon(entropy_gui_component_instance* comp, entropy_generic_file* list_item) { +gui_file* ewl_icon_local_viewer_add_icon(entropy_gui_component_instance* comp, entropy_generic_file* list_item, int do_mime) { entropy_icon_viewer* view = comp->data; @@ -554,6 +557,27 @@ ecore_hash_set(view->gui_hash, list_item, gui_object); ecore_hash_set(view->icon_hash, icon, gui_object); + if (do_mime == DO_MIME) { + char* mime; + entropy_plugin* thumb; + + mime = entropy_mime_file_identify(comp->core->mime_plugins, list_item); + + + if (mime && strcmp(mime, ENTROPY_NULL_MIME)) { + thumb = entropy_thumbnailer_retrieve(comp->core->entropy_thumbnailers, mime); + } else { + thumb = NULL; + } + + if (thumb) { + entropy_notify_event* ev = entropy_notify_request_register(comp->core->notify, comp, ENTROPY_NOTIFY_THUMBNAIL_REQUEST,thumb, "entropy_thumbnailer_thumbnail_get", list_item,NULL); + entropy_notify_event_callback_add(ev, (void*)gui_event_callback, comp); + entropy_notify_event_commit(comp->core->notify, ev); + } + + } + return gui_object; } @@ -598,7 +622,7 @@ ecore_list_goto_first(el); while ( (list_item = ecore_list_next(el)) ) { - ewl_icon_local_viewer_add_icon(comp, list_item); + ewl_icon_local_viewer_add_icon(comp, list_item, DONT_DO_MIME); } event_keys = ecore_hash_keys(view->gui_hash); @@ -687,7 +711,7 @@ case ENTROPY_NOTIFY_FILE_CREATE: { //printf ("Received file create event at icon viewer for file %s \n", ((entropy_generic_file*)ret)->filename); - ewl_icon_local_viewer_add_icon(comp, (entropy_generic_file*)ret); + ewl_icon_local_viewer_add_icon(comp, (entropy_generic_file*)ret, DO_MIME); } break; =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/mime.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- mime.c 27 Oct 2005 10:23:59 -0000 1.4 +++ mime.c 29 Oct 2005 02:00:19 -0000 1.5 @@ -39,6 +39,7 @@ ecore_hash_set(mime_hash, ".tgz", "application/x-gtar"); ecore_hash_set(mime_hash, ".bz2", "application/x-bzip2"); ecore_hash_set(mime_hash, ".tar", "application/x-tar"); + ecore_hash_set(mime_hash, ".txt", "text/plain"); } =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/thumbnail_generic.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- thumbnail_generic.c 27 Oct 2005 07:16:35 -0000 1.2 +++ thumbnail_generic.c 29 Oct 2005 02:00:19 -0000 1.3 @@ -151,13 +151,24 @@ imlib_context_set_image(image); - imlib_context_set_cliprect(0,0,w,h); + { + iw = imlib_image_get_width(); + ih = imlib_image_get_height(); + + if (iw>ih) { + w = 64; + h = (64*ih)/iw; + } else { + h = 64; + w = (64*iw)/ih; + } + + imlib_context_set_cliprect(0,0,w,h); + thumbnail = imlib_create_cropped_scaled_image(0,0,iw,ih,w,h); + + imlib_free_image(); /*Free the master image*/ + } - iw = imlib_image_get_width(); - ih = imlib_image_get_height(); - - thumbnail = imlib_create_cropped_scaled_image(0,0,iw,ih,w,h); - imlib_free_image(); /*Free the master image*/ imlib_context_set_image(thumbnail); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/thumbnail_system.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- thumbnail_system.c 27 Oct 2005 10:23:59 -0000 1.3 +++ thumbnail_system.c 29 Oct 2005 02:00:19 -0000 1.4 @@ -30,6 +30,7 @@ ecore_list_append(types, "video/mpeg"); ecore_list_append(types, "application/x-bzip2"); ecore_list_append(types, "application/x-tar"); + ecore_list_append(types, "text/plain"); //ecore_list_append(types, "video/x-msvideo"); } @@ -76,11 +77,14 @@ strcpy(thumb->thumbnail_filename, PACKAGE_DATA_DIR "/icons/bz2.png"); } else if (!strcmp(file->mime_type, "application/x-tar")) { strcpy(thumb->thumbnail_filename, PACKAGE_DATA_DIR "/icons/tar.png"); + } else if (!strcmp(file->mime_type, "text/plain")) { + strcpy(thumb->thumbnail_filename, PACKAGE_DATA_DIR "/icons/txt.png"); } + thumb->parent = file; file->thumbnail = thumb; |
From: <enl...@li...> - 2005-10-29 06:57:45
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: Makefile.am thumbnail_generic.c Log Message: * Commit a new Epsilon-based thumbnailer. Seems to be stable - let me know if it isn't. This means a big performance increase in thumbnailing (esp. for jpegs, as Epsilon uses epeg if available). We also fully conform to the FreeDesktop standard now =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/Makefile.am,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- Makefile.am 26 Oct 2005 21:40:07 -0000 1.5 +++ Makefile.am 29 Oct 2005 06:57:39 -0000 1.6 @@ -55,14 +55,14 @@ mime_la_LDFLAGS = -module -avoid-version imlib_thumbnailer_la_SOURCES = thumbnailer.c thumbnail_generic.c md5.c $(top_srcdir)/src/entropy_debug.c -imlib_thumbnailer_la_CFLAGS = @ECORE_CFLAGS@ @IMLIB2_CFLAGS@ +imlib_thumbnailer_la_CFLAGS = @ECORE_CFLAGS@ @IMLIB2_CFLAGS@ @EPSILON_CFLAGS@ imlib_thumbnailer_la_LDFLAGS = -module -avoid-version -imlib_thumbnailer_la_LIBADD = @IMLIB2_LIBS@ @ECORE_LIBS@ @PNG_LIBS@ +imlib_thumbnailer_la_LIBADD = @IMLIB2_LIBS@ @ECORE_LIBS@ @PNG_LIBS@ @EPSILON_LIBS@ system_thumbnailer_la_SOURCES = thumbnail_system.c thumbnail_generic.c $(top_srcdir)/src/entropy_debug.c -system_thumbnailer_la_CFLAGS = @ECORE_CFLAGS@ @IMLIB2_CFLAGS@ +system_thumbnailer_la_CFLAGS = @ECORE_CFLAGS@ @IMLIB2_CFLAGS@ @EPSILON_CFLAGS@ system_thumbnailer_la_LDFLAGS = -module -avoid-version -system_thumbnailer_la_LIBADD = @ECORE_LIBS@ +system_thumbnailer_la_LIBADD = @ECORE_LIBS@ @EPSILON_LIBS@ posix_la_SOURCES = filesystem.c $(top_srcdir)/src/entropy_debug.c =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/thumbnail_generic.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- thumbnail_generic.c 29 Oct 2005 02:00:19 -0000 1.3 +++ thumbnail_generic.c 29 Oct 2005 06:57:39 -0000 1.4 @@ -9,6 +9,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> +#include <Epsilon.h> static char* thumbnail_path = NULL; //Make this central to the core, so it can be configurable @@ -35,52 +36,6 @@ } } -int entropy_stat_thumbnail(char* path) { - struct stat buf; - int code; - - code = lstat(path, &buf); - - if (code == -1) { - return 0; - } else { - return 1; - } -} - -void entropy_thumbnail_add_text(entropy_thumbnail* thumb, char* key, char* value) { - - char* ikey; - char* ival; - - ikey = strdup(key); - ival = strdup(value); - - ecore_hash_set(thumb->text, ikey, ival); - thumb->keys++; -} - -static char* md5_for_string(char* string) { - static char md5[33]; - md5_state_t state; - md5_byte_t digest[16]; - static const char hex[]="0123456789abcdef"; - int i; - - md5_init(&state); - md5_append(&state, (const md5_byte_t*)string, strlen(string)); - md5_finish(&state, digest); - for (i=0;i<16;i++) { - md5[2*i] = hex[digest[i]>>4]; - md5[2*i+1]=hex[digest[i]&0x0f]; - } - md5[2*i] = '\0'; - - return md5; - - -} - entropy_thumbnail* entropy_thumbnail_create(entropy_generic_file* e_file) { Imlib_Image image; Imlib_Image thumbnail; @@ -99,17 +54,10 @@ char *pos; FILE* fp = NULL; char thumbname[255]; + Epsilon* e; int iw,ih; - /*If we don't get have a thumbnail path, make one*/ - if (!thumbnail_path) { - thumbnail_path = malloc( (sizeof(char)* strlen(getenv("HOME"))) + strlen("/.thumbnails/normal/") + 2); - sprintf(thumbnail_path, "%s%s", getenv("HOME"), "/.thumbnails/normal/"); - //printf("Set thumbnail path to %s\n", thumbnail_path); - } - - strcpy(thumb_path_and_name, e_file->path); pos = thumb_path_and_name + strlen(thumb_path_and_name); @@ -117,138 +65,17 @@ pos +=1; strcpy(pos, e_file->filename); - - /*printf("MD5: '%s'\n", md5_for_string(thumb_path_and_name));*/ - - /*Now set up the thumbname*/ - strncpy(thumbname, thumbnail_path, strlen(thumbnail_path)); - pos = thumbname + strlen(thumbnail_path); - strcpy(pos, md5_for_string(thumb_path_and_name)); - pos += 32; - strcpy(pos, ".png"); - - - - - /*printf("Writing thumb: '%s'\n", thumbname);*/ - - thumb_struct = entropy_thumbnail_new(); - - entropy_thumbnail_add_text(thumb_struct,"TesT","Value"); - - /*First check if this image already exists.. */ - if (entropy_stat_thumbnail(thumbname)) { - goto already_exists; /* Image already exists */ - /*TODO check the create date etc */ + e = epsilon_new(thumb_path_and_name); + if (epsilon_exists(e) == EPSILON_FAIL) { + epsilon_generate(e); } - - //printf("Thumbnailing: '%s'\n", thumb_path_and_name); - image = imlib_load_image_immediately_without_cache(thumb_path_and_name); - - if (!image) { goto error; } - - imlib_context_set_image(image); - - { - iw = imlib_image_get_width(); - ih = imlib_image_get_height(); - - if (iw>ih) { - w = 64; - h = (64*ih)/iw; - } else { - h = 64; - w = (64*iw)/ih; - } - - imlib_context_set_cliprect(0,0,w,h); - thumbnail = imlib_create_cropped_scaled_image(0,0,iw,ih,w,h); - - imlib_free_image(); /*Free the master image*/ - } - - imlib_context_set_image(thumbnail); - - - - /* Now write the thumbnail */ - png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,NULL,NULL,NULL); - info_ptr = png_create_info_struct(png_ptr); - - fp = fopen(thumbname,"wb"); - png_init_io(png_ptr, fp); - - /* Apply attribs */ - text_ptr = entropy_malloc(sizeof(png_text)*thumb_struct->keys); - keys = ecore_hash_keys(thumb_struct->text); - ecore_list_goto_first(keys); - i=0; - /*printf ("Allocated enough space for %d keys\n", thumb_struct->keys);*/ - while ( (key = ecore_list_next(keys)) ) { - text_ptr[i].key = key; - text_ptr[i].text = ecore_hash_get(thumb_struct->text, key); - text_ptr[i].compression=PNG_TEXT_COMPRESSION_NONE; - - i++; - } - - png_set_text(png_ptr, info_ptr, text_ptr, thumb_struct->keys); - - png_set_IHDR(png_ptr,info_ptr,w,h,8,PNG_COLOR_TYPE_RGB_ALPHA, - PNG_INTERLACE_NONE,PNG_COMPRESSION_TYPE_BASE, - PNG_FILTER_TYPE_BASE); - - png_set_bgr(png_ptr); - - /*png_set_swap_alpha(png_ptr);*/ - sig_bit.red=8; - sig_bit.green=8; - sig_bit.blue=8; - sig_bit.alpha=8; - png_set_sBIT(png_ptr,info_ptr,&sig_bit); - - - png_set_compression_level(png_ptr,9); - png_write_info(png_ptr,info_ptr); - - png_set_shift(png_ptr,&sig_bit); - png_set_packing(png_ptr); - - ptr = imlib_image_get_data_for_reading_only(); - /*row_data=malloc(w*3*sizeof(char));*/ - for(i=0;i<h;i++) { - row_ptr=(png_bytep) ptr; - png_write_row(png_ptr,row_ptr); - ptr += w; - } - - if (row_data) { - entropy_free(row_data); - } - - - - png_write_end(png_ptr,info_ptr); - png_destroy_write_struct(&png_ptr,&info_ptr); - png_destroy_info_struct(png_ptr,&info_ptr); - entropy_free(text_ptr); - imlib_free_image_and_decache(); /*Free the thumbnail*/ - - - fclose(fp); - - - already_exists: - - strcpy(thumb_struct->thumbnail_filename, thumbname); - return thumb_struct; - - error: + if (epsilon_exists(e)) { + thumb_struct = entropy_thumbnail_new(); + strcpy(thumb_struct->thumbnail_filename, epsilon_thumb_file_get(e)); + return thumb_struct; + } else return NULL; - entropy_thumbnail_destroy(thumb_struct); - //printf("Thumbnailing error!\n"); - return NULL; } |
From: <enl...@li...> - 2005-10-29 06:58:19
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src Modified Files: Makefile.am entropy_core.c Log Message: * Commit a new Epsilon-based thumbnailer. Seems to be stable - let me know if it isn't. This means a big performance increase in thumbnailing (esp. for jpegs, as Epsilon uses epeg if available). We also fully conform to the FreeDesktop standard now =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Makefile.am 26 Oct 2005 21:40:07 -0000 1.2 +++ Makefile.am 29 Oct 2005 06:57:39 -0000 1.3 @@ -23,10 +23,10 @@ entropy_CC = @PTHREAD_CC@ entropy_CFLAGS = @PTHREAD_CFLAGS@ \ @EWL_CFLAGS@ @EVFS_CFLAGS@ \ - @IMLIB2_CFLAGS@ + @IMLIB2_CFLAGS@ @EPSILON_CFLAGS@ entropy_LDFLAGS = -rdynamic @PTHREAD_CFLAGS@ @IMLIB2_CFLAGS@ entropy_LDADD = $(INTLLIBS) \ @PTHREAD_LIBS@ \ @EWL_LIBS@ \ @IMLIB2_LIBS@ \ - @EVFS_LIBS@ + @EVFS_LIBS@ @EPSILON_LIBS@ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/entropy_core.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- entropy_core.c 28 Oct 2005 22:33:36 -0000 1.10 +++ entropy_core.c 29 Oct 2005 06:57:39 -0000 1.11 @@ -150,6 +150,9 @@ //Initialise the config system core->config = entropy_config_init(core); + /*Initialise epsilon thumbnailer*/ + epsilon_init(); + //Load the plugins core->plugin_list = ecore_list_new(); //printf("Reading plugins from: %s\n", PACKAGE_DATA_DIR "/plugins/"); |
From: <enl...@li...> - 2005-10-29 08:39:00
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src Modified Files: entropy_core.c Log Message: Few memory cleanups =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/entropy_core.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- entropy_core.c 29 Oct 2005 06:57:39 -0000 1.11 +++ entropy_core.c 29 Oct 2005 08:38:49 -0000 1.12 @@ -22,6 +22,8 @@ static int requests = 0; static long file_cache_size = 0; +#define FILE_FREE_QUEUE_SIZE 500; + int ecore_timer_enterer(void* data) { return 1; @@ -904,7 +906,9 @@ if (listener) { listener->count--; - if (listener->count == 0 && 0) { + if (listener->count <= 0) { + + //printf("Freeing file '%s'\n", listener->file->filename); /*This should be a seperate function*/ entropy_generic_file_destroy(listener->file); @@ -914,7 +918,8 @@ free(md5); file_cache_size--; - } + + } } UNLOCK(&core->file_cache_mutex); } |
From: <enl...@li...> - 2005-10-29 08:39:00
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: layout_ewl_simple.c structure_viewer.c thumbnail_generic.c Log Message: Few memory cleanups =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/layout_ewl_simple.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- layout_ewl_simple.c 28 Oct 2005 23:08:58 -0000 1.11 +++ layout_ewl_simple.c 29 Oct 2005 08:38:49 -0000 1.12 @@ -414,6 +414,8 @@ __destroy_main_window(Ewl_Widget *main_win, void *ev_data, void *user_data) { entropy_core* core = (entropy_core*)user_data; ewl_widget_destroy(main_win); + + ewl_shutdown(); ewl_main_quit(); entropy_core_destroy(core); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/structure_viewer.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- structure_viewer.c 28 Oct 2005 23:08:58 -0000 1.6 +++ structure_viewer.c 29 Oct 2005 08:38:49 -0000 1.7 @@ -105,8 +105,6 @@ ewl_tree_row_expand_set(row, EWL_TREE_NODE_EXPANDED); } else { - printf ("We don't own this row\n"); - printf("Looked for file '(%s)(%s) (%p)'\n", event_file->path, event_file->filename,event_file); /*printf("---------------------------------------------> This row already has children!!\n");*/ } } =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/thumbnail_generic.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- thumbnail_generic.c 29 Oct 2005 06:57:39 -0000 1.4 +++ thumbnail_generic.c 29 Oct 2005 08:38:49 -0000 1.5 @@ -37,26 +37,11 @@ } entropy_thumbnail* entropy_thumbnail_create(entropy_generic_file* e_file) { - Imlib_Image image; - Imlib_Image thumbnail; - png_infop info_ptr; - png_structp png_ptr; - png_text *text_ptr = NULL; - png_bytep row_ptr, - row_data=NULL; - DATA32 *ptr = NULL; - char* key; - int i,w=64,h=64; - png_color_8 sig_bit; entropy_thumbnail* thumb_struct; - Ecore_List* keys; char thumb_path_and_name[255]; char *pos; - FILE* fp = NULL; - char thumbname[255]; Epsilon* e; - int iw,ih; strcpy(thumb_path_and_name, e_file->path); @@ -74,8 +59,13 @@ if (epsilon_exists(e)) { thumb_struct = entropy_thumbnail_new(); strcpy(thumb_struct->thumbnail_filename, epsilon_thumb_file_get(e)); + epsilon_free(e); + return thumb_struct; - } else return NULL; + } else { + epsilon_free(e); + return NULL; + } } |
From: <enl...@li...> - 2005-10-29 09:02:36
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy Modified Files: configure.in Log Message: Detect epsilon =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/configure.in,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- configure.in 27 Oct 2005 07:14:57 -0000 1.6 +++ configure.in 29 Oct 2005 09:02:30 -0000 1.7 @@ -288,6 +288,12 @@ AC_SUBST(libpng_cflags) AC_SUBST(libpng_libs) +AC_PATH_GENERIC(epsilon, 0.3.0, + [ ], + [ AC_MSG_ERROR(Cannot find epsilon) ] +) + + |
From: <enl...@li...> - 2005-10-29 11:32:58
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/images Added Files: txt.png Log Message: Oops |
From: <enl...@li...> - 2005-10-30 01:35:43
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: ewl_icon_local_viewer.c Log Message: Add a 'delete' option =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/ewl_icon_local_viewer.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- ewl_icon_local_viewer.c 29 Oct 2005 02:00:19 -0000 1.16 +++ ewl_icon_local_viewer.c 30 Oct 2005 01:35:37 -0000 1.17 @@ -482,6 +482,12 @@ ewl_widget_show(context); + /*Icon menu*/ + context = ewl_menu_item_new(); + ewl_menu_item_text_set(EWL_MENU_ITEM(context), "Delete file"); + ewl_widget_show(context); + ewl_iconbox_icon_menu_item_add(EWL_ICONBOX(viewer->iconbox), context); + //ewl_callback_append(context, EWL_CALLBACK_MOUSE_DOWN, icon_properties_cb, instance); /*Icon menu*/ context = ewl_menu_item_new(); |
From: <enl...@li...> - 2005-11-01 06:04:32
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src Modified Files: entropy_core.c Log Message: Actually, we don't want to do this =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/entropy_core.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- entropy_core.c 29 Oct 2005 08:38:49 -0000 1.12 +++ entropy_core.c 1 Nov 2005 06:04:26 -0000 1.13 @@ -204,7 +204,7 @@ /*Initialize the descent hash - this should be loaded from EVFS - FIXME*/ /*Descent hash init - move this to a call to EVFS*/ core->descent_hash = ecore_hash_new(ecore_str_hash, ecore_str_compare); - ecore_hash_set(core->descent_hash, "application/x-tar", "tar"); + ecore_hash_set(core->descent_hash, "application/x-tar", "bzip2:///#tar"); |
From: <enl...@li...> - 2005-11-01 06:04:33
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: filesystem.c structure_viewer.c Log Message: Actually, we don't want to do this =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/filesystem.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- filesystem.c 28 Oct 2005 22:45:41 -0000 1.7 +++ filesystem.c 1 Nov 2005 06:04:27 -0000 1.8 @@ -305,7 +305,6 @@ break; } - //TODO Free EVENT! } =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/structure_viewer.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- structure_viewer.c 29 Oct 2005 08:38:49 -0000 1.7 +++ structure_viewer.c 1 Nov 2005 06:04:27 -0000 1.8 @@ -234,7 +234,7 @@ viewer->loaded_dirs = ecore_hash_new(ecore_direct_hash, ecore_direct_compare); viewer->row_folder_hash = ecore_hash_new(ecore_direct_hash, ecore_direct_compare); - ewl_object_fill_policy_set(EWL_OBJECT(EWL_TREE(viewer->tree)->scrollarea), EWL_FLAG_FILL_VFILL | EWL_FLAG_FILL_HFILL); + ewl_object_fill_policy_set(EWL_OBJECT(EWL_TREE(viewer->tree)->scrollarea), EWL_FLAG_FILL_HFILL); instance->gui_object = viewer->tree; |
From: <enl...@li...> - 2005-11-02 11:52:38
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/include Modified Files: entropy_generic.h Log Message: * Hide the background setter window when we select one * Various nested file system updates * Try and fix the 'all files from evfs directory list appear as folders' bug * De-magic-numberify MIME_TYPE length * Make descendable object-as-folder listing generic in default structure viewer =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/include/entropy_generic.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- entropy_generic.h 28 Oct 2005 22:45:41 -0000 1.4 +++ entropy_generic.h 2 Nov 2005 11:52:30 -0000 1.5 @@ -5,12 +5,13 @@ #include "entropy_core.h" #include "thumbnail_generic.h" +#define MIME_LENGTH 40 typedef struct entropy_generic_file entropy_generic_file; struct entropy_generic_file { char path[255]; char filename[255]; - char mime_type[40]; + char mime_type[MIME_LENGTH]; char uri_base[15]; char perms[10]; |
From: <enl...@li...> - 2005-11-02 11:52:38
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: ewl_icon_local_viewer.c filesystem.c structure_viewer.c Log Message: * Hide the background setter window when we select one * Various nested file system updates * Try and fix the 'all files from evfs directory list appear as folders' bug * De-magic-numberify MIME_TYPE length * Make descendable object-as-folder listing generic in default structure viewer =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/ewl_icon_local_viewer.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- ewl_icon_local_viewer.c 30 Oct 2005 01:35:37 -0000 1.17 +++ ewl_icon_local_viewer.c 2 Nov 2005 11:52:30 -0000 1.18 @@ -233,11 +233,9 @@ e = EWL_FILEDIALOG_EVENT(ev); if (e->response == EWL_STOCK_OPEN) { - printf("file open from test program: %s\n", - ewl_filedialog_file_get (EWL_FILEDIALOG (w))); - printf("Curent directory is '%s'\n", viewer->current_dir); entropy_config_str_set("iconbox_viewer", viewer->current_dir, ewl_filedialog_file_get (EWL_FILEDIALOG (w))); + ewl_widget_destroy(viewer->file_dialog_parent); } else if (e->response == EWL_STOCK_CANCEL) { ewl_widget_destroy(viewer->file_dialog_parent); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/filesystem.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- filesystem.c 1 Nov 2005 06:04:27 -0000 1.8 +++ filesystem.c 2 Nov 2005 11:52:30 -0000 1.9 @@ -257,6 +257,7 @@ } else { //printf("Didn't mark this file, type %d\n",ref->file_type); file->filetype = FILE_STANDARD; + bzero(file->mime_type, MIME_LENGTH); } if (calling_request && (calling_request->drill_down || calling_request->set_parent)) { =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/structure_viewer.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- structure_viewer.c 1 Nov 2005 06:04:27 -0000 1.8 +++ structure_viewer.c 2 Nov 2005 11:52:30 -0000 1.9 @@ -90,7 +90,7 @@ ecore_list_goto_first(el); while ( (file = ecore_list_next(el)) ) { - if (file->filetype == FILE_FOLDER || !strcmp(file->mime_type, "application/x-tar")) { + if (file->filetype == FILE_FOLDER || entropy_core_descent_for_mime_get(comp->core, file->mime_type) ) { char *c = entropy_malloc(sizeof(char)); *c = 1; |
From: <enl...@li...> - 2005-11-02 11:52:38
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src Modified Files: entropy_core.c entropy_file.c Log Message: * Hide the background setter window when we select one * Various nested file system updates * Try and fix the 'all files from evfs directory list appear as folders' bug * De-magic-numberify MIME_TYPE length * Make descendable object-as-folder listing generic in default structure viewer =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/entropy_core.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- entropy_core.c 1 Nov 2005 06:04:26 -0000 1.13 +++ entropy_core.c 2 Nov 2005 11:52:30 -0000 1.14 @@ -204,7 +204,7 @@ /*Initialize the descent hash - this should be loaded from EVFS - FIXME*/ /*Descent hash init - move this to a call to EVFS*/ core->descent_hash = ecore_hash_new(ecore_str_hash, ecore_str_compare); - ecore_hash_set(core->descent_hash, "application/x-tar", "bzip2:///#tar"); + ecore_hash_set(core->descent_hash, "application/x-bzip2", "bzip2:///#tar"); @@ -906,7 +906,7 @@ if (listener) { listener->count--; - if (listener->count <= 0) { + if (listener->count <= 0 && 0) { //printf("Freeing file '%s'\n", listener->file->filename); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/entropy_file.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- entropy_file.c 28 Oct 2005 22:33:36 -0000 1.3 +++ entropy_file.c 2 Nov 2005 11:52:30 -0000 1.4 @@ -6,6 +6,7 @@ file->username = NULL; file->password = NULL; file->parent = NULL; + bzero(file->mime_type, MIME_LENGTH); allocated_files++; print_allocation(); |
From: <enl...@li...> - 2005-11-03 11:37:34
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: filesystem.c Log Message: Fixed a buffer overrun =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/filesystem.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- filesystem.c 2 Nov 2005 11:52:30 -0000 1.9 +++ filesystem.c 3 Nov 2005 11:37:28 -0000 1.10 @@ -423,9 +423,9 @@ if ( (!strcmp(request->file->uri_base, "posix")) && !request->drill_down && !request->file->parent) { /*If either the path, or the filename, is the root dir, we don't need another slash*/ if (strcmp(request->file->filename, "/") && strcmp(request->file->path, "/")) { - snprintf(dire, 256, "%s/%s", request->file->path, request->file->filename); + snprintf(dire, 255, "%s/%s", request->file->path, request->file->filename); } else { - snprintf(dire, 256, "%s%s", request->file->path, request->file->filename); + snprintf(dire, 255, "%s%s", request->file->path, request->file->filename); } |
From: <enl...@li...> - 2005-11-03 12:34:32
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src Modified Files: entropy_core.c Log Message: Prevent a potential memory leak (loss of file), and loss of file-reference count =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/entropy_core.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- entropy_core.c 2 Nov 2005 11:52:30 -0000 1.14 +++ entropy_core.c 3 Nov 2005 12:34:25 -0000 1.15 @@ -168,6 +168,7 @@ ecore_list_append(core->plugin_list, create_plugin_object(plugin_path)); } } + closedir(dir); } else { fprintf(stderr, "Entropy: Could not location plugin directory '%s'\n", PACKAGE_DATA_DIR "/plugins/"); exit(1); @@ -882,7 +883,12 @@ LOCK(&core->file_cache_mutex); - ecore_hash_set(core->file_interest_list, md5, listener); + if (!ecore_hash_get(core->file_interest_list, md5)) { + ecore_hash_set(core->file_interest_list, md5, listener); + } else { + printf("*** BAD: Called set-reference with file already cached!\n"); + entropy_core_file_cache_add_reference(core, md5); + } file_cache_size++; /*printf("File cache goes to %ld\n", file_cache_size);*/ UNLOCK(&core->file_cache_mutex); |
From: <enl...@li...> - 2005-11-05 01:13:44
|
Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: filesystem.c Log Message: * Add a reference count to a file's parent, so we don't accidentally clean it =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/filesystem.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- filesystem.c 3 Nov 2005 11:37:28 -0000 1.10 +++ filesystem.c 5 Nov 2005 01:13:35 -0000 1.11 @@ -265,6 +265,10 @@ printf("File ('%s') parent's name is '%s'\n", file->filename, calling_request->reparent_file->filename); file->parent = calling_request->reparent_file; + + /*We are referencing the parent, so - we need to tell the core that we *need* this + * file - i.e. don't clean it up*/ + entropy_core_file_cache_add_reference(filesystem_core, calling_request->reparent_file->md5); } /*Mark the file's uri FIXME do this properly*/ @@ -304,6 +308,9 @@ } break; + + default: printf("Received an EVFS message we don't recognise!\n"); + break; } } |