From: Enlightenment C. <no...@cv...> - 2006-12-19 06:40:32
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x_events.c ecore_x_selection.c Log Message: Convert target to string, the user will probably do this anyway. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.178 retrieving revision 1.179 diff -u -3 -r1.178 -r1.179 --- Ecore_X.h 13 Dec 2006 19:47:17 -0000 1.178 +++ Ecore_X.h 19 Dec 2006 06:40:30 -0000 1.179 @@ -543,7 +543,7 @@ Ecore_X_Window requestor; Ecore_X_Time time; Ecore_X_Atom selection; - Ecore_X_Atom target; + char *target; Ecore_X_Atom property; }; =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v retrieving revision 1.91 retrieving revision 1.92 diff -u -3 -r1.91 -r1.92 --- ecore_x_events.c 13 Dec 2006 19:47:17 -0000 1.91 +++ ecore_x_events.c 19 Dec 2006 06:40:30 -0000 1.92 @@ -167,6 +167,15 @@ } static void +_ecore_x_event_free_selection_request(void *data __UNUSED__, void *ev) +{ + Ecore_X_Event_Selection_Request *e; + + XFree(e->target); + free(e); +} + +static void _ecore_x_event_free_selection_notify(void *data __UNUSED__, void *ev) { Ecore_X_Event_Selection_Notify *e; @@ -1120,9 +1129,9 @@ e->requestor = xevent->xselectionrequest.requestor; e->time = xevent->xselectionrequest.time; e->selection = xevent->xselectionrequest.selection; - e->target = xevent->xselectionrequest.target; + e->target = XGetAtomName(_ecore_x_disp, xevent->xselectionrequest.target); e->property = xevent->xselectionrequest.property; - ecore_event_add(ECORE_X_EVENT_SELECTION_REQUEST, e, NULL, NULL); + ecore_event_add(ECORE_X_EVENT_SELECTION_REQUEST, e, _ecore_x_event_free_selection_request, NULL); if ((sd = _ecore_x_selection_get(xevent->xselectionrequest.selection)) && (sd->win == xevent->xselectionrequest.owner)) =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_selection.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- ecore_x_selection.c 13 Dec 2006 19:47:17 -0000 1.33 +++ ecore_x_selection.c 19 Dec 2006 06:40:30 -0000 1.34 @@ -277,6 +277,8 @@ char * _ecore_x_selection_target_get(Ecore_X_Atom target) { + /* FIXME: Should not return mem allocated with strdup or X mixed, + * one should use free to free, the other XFree */ if (target == ECORE_X_ATOM_FILE_NAME) return strdup(ECORE_X_SELECTION_TARGET_FILENAME); else if (target == ECORE_X_ATOM_STRING) |
From: Enlightenment C. <no...@cv...> - 2006-12-19 06:51:53
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x_events.c Log Message: Revert change, premature. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.179 retrieving revision 1.180 diff -u -3 -r1.179 -r1.180 --- Ecore_X.h 19 Dec 2006 06:40:30 -0000 1.179 +++ Ecore_X.h 19 Dec 2006 06:51:51 -0000 1.180 @@ -543,7 +543,7 @@ Ecore_X_Window requestor; Ecore_X_Time time; Ecore_X_Atom selection; - char *target; + Ecore_X_Atom target; Ecore_X_Atom property; }; =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v retrieving revision 1.92 retrieving revision 1.93 diff -u -3 -r1.92 -r1.93 --- ecore_x_events.c 19 Dec 2006 06:40:30 -0000 1.92 +++ ecore_x_events.c 19 Dec 2006 06:51:51 -0000 1.93 @@ -167,15 +167,6 @@ } static void -_ecore_x_event_free_selection_request(void *data __UNUSED__, void *ev) -{ - Ecore_X_Event_Selection_Request *e; - - XFree(e->target); - free(e); -} - -static void _ecore_x_event_free_selection_notify(void *data __UNUSED__, void *ev) { Ecore_X_Event_Selection_Notify *e; @@ -1129,9 +1120,9 @@ e->requestor = xevent->xselectionrequest.requestor; e->time = xevent->xselectionrequest.time; e->selection = xevent->xselectionrequest.selection; - e->target = XGetAtomName(_ecore_x_disp, xevent->xselectionrequest.target); + e->target = xevent->xselectionrequest.target; e->property = xevent->xselectionrequest.property; - ecore_event_add(ECORE_X_EVENT_SELECTION_REQUEST, e, _ecore_x_event_free_selection_request, NULL); + ecore_event_add(ECORE_X_EVENT_SELECTION_REQUEST, e, NULL, NULL); if ((sd = _ecore_x_selection_get(xevent->xselectionrequest.selection)) && (sd->win == xevent->xselectionrequest.owner)) |
From: Enlightenment C. <no...@cv...> - 2007-01-12 19:49:49
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_file Modified Files: ecore_file_download.c Log Message: Limit curl run to 0.2 seconds. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_file/ecore_file_download.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- ecore_file_download.c 10 Nov 2006 19:11:12 -0000 1.12 +++ ecore_file_download.c 13 Jan 2007 01:49:42 -0000 1.13 @@ -195,6 +195,7 @@ int flags; int n_remaining, still_running; Ecore_File_Download_Job *job; + double start = 0.0; job = calloc(1, sizeof(Ecore_File_Download_Job)); if (!job) return NULL; @@ -216,7 +217,7 @@ curl_easy_setopt(job->curl, CURLOPT_URL, url); curl_easy_setopt(job->curl, CURLOPT_WRITEDATA, job->file); - if(progress_cb) + if (progress_cb) { curl_easy_setopt(job->curl, CURLOPT_NOPROGRESS, FALSE); curl_easy_setopt(job->curl, CURLOPT_PROGRESSDATA, job); @@ -230,7 +231,11 @@ ecore_list_append(_job_list, job); curl_multi_add_handle(curlm, job->curl); - while (curl_multi_perform(curlm, &still_running) == CURLM_CALL_MULTI_PERFORM); + start = ecore_time_get(); + while (curl_multi_perform(curlm, &still_running) == CURLM_CALL_MULTI_PERFORM) + { + if ((ecore_time_get() - start) > 0.2) break; + } /* check for completed jobs */ while ((curlmsg = curl_multi_info_read(curlm, &n_remaining)) != NULL) @@ -312,9 +317,13 @@ Ecore_File_Download_Job *job; CURLMsg *curlmsg; int n_remaining, still_running; + double start = 0.0; - /* FIXME: Can this run for a long time? Maybe limit how long it can run */ - while (curl_multi_perform(curlm, &still_running) == CURLM_CALL_MULTI_PERFORM); + start = ecore_time_get(); + while (curl_multi_perform(curlm, &still_running) == CURLM_CALL_MULTI_PERFORM) + { + if ((ecore_time_get() - start) > 0.2) break; + } /* Loop jobs and check if any are done */ while ((curlmsg = curl_multi_info_read(curlm, &n_remaining)) != NULL) |
From: Enlightenment C. <no...@cv...> - 2007-01-13 11:49:19
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore Modified Files: ecore_list.c Log Message: When doing remove_last on a dlist, use the ->previous property well! =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_list.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -3 -r1.28 -r1.29 --- ecore_list.c 10 Jan 2007 21:56:11 -0000 1.28 +++ ecore_list.c 13 Jan 2007 17:49:15 -0000 1.29 @@ -1431,10 +1431,28 @@ ecore_dlist_remove_last(Ecore_DList *list) { void *ret; + Ecore_List_Node *node; CHECK_PARAM_POINTER_RETURN("list", list, NULL); - ret = _ecore_list_remove_last(list); + if (ecore_list_is_empty(list)) + return NULL; + + node = list->last; + list->last = ECORE_LIST_NODE(ECORE_DLIST_NODE(node)->previous); + if (list->last) + list->last->next = NULL; + if (list->first == node) + list->first = NULL; + if (list->current == node) + list->current = NULL; + + ret = node->data; + ecore_list_node_destroy(node, NULL); + + list->nodes--; + if (list->index >= list->nodes) + list->index--; return ret; } |
From: Enlightenment C. <no...@cv...> - 2007-01-13 11:51:14
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore Modified Files: ecore_list.c Log Message: Remove this check, it can hide bugs. A non-empty list should always have a last pointer. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_list.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -3 -r1.29 -r1.30 --- ecore_list.c 13 Jan 2007 17:49:15 -0000 1.29 +++ ecore_list.c 13 Jan 2007 17:51:10 -0000 1.30 @@ -665,9 +665,6 @@ if (ecore_list_is_empty(list)) return NULL; - if (!list->last) - return NULL; - old = list->last; if (list->current == old) list->current = NULL; |
From: Enlightenment C. <no...@cv...> - 2007-01-17 07:41:11
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore Modified Files: Ecore_Data.h ecore_hash.c ecore_list.c Log Message: Functions to join lists and hashes. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/Ecore_Data.h,v retrieving revision 1.28 retrieving revision 1.29 diff -u -3 -r1.28 -r1.29 --- Ecore_Data.h 16 Jan 2007 01:27:01 -0000 1.28 +++ Ecore_Data.h 17 Jan 2007 13:41:08 -0000 1.29 @@ -89,6 +89,8 @@ EAPI int ecore_list_append(Ecore_List * list, void *_data); EAPI int ecore_list_prepend(Ecore_List * list, void *_data); EAPI int ecore_list_insert(Ecore_List * list, void *_data); + EAPI int ecore_list_append_list(Ecore_List * list, Ecore_List * append); + EAPI int ecore_list_prepend_list(Ecore_List * list, Ecore_List * prepend); /* Removing items from the list */ EAPI int ecore_list_remove_destroy(Ecore_List *list); @@ -153,6 +155,8 @@ EAPI int ecore_dlist_append(Ecore_DList * _e_dlist, void *_data); EAPI int ecore_dlist_prepend(Ecore_DList * _e_dlist, void *_data); EAPI int ecore_dlist_insert(Ecore_DList * _e_dlist, void *_data); + EAPI int ecore_dlist_append_list(Ecore_DList * _e_dlist, Ecore_DList * append); + EAPI int ecore_dlist_prepend_list(Ecore_DList * _e_dlist, Ecore_DList * prepend); /* Info about list's state */ EAPI void *ecore_dlist_current(Ecore_DList *list); @@ -246,6 +250,7 @@ /* Retrieve and store data into the hash */ EAPI void *ecore_hash_get(Ecore_Hash *hash, const void *key); EAPI int ecore_hash_set(Ecore_Hash *hash, void *key, void *value); + EAPI int ecore_hash_set_hash(Ecore_Hash *hash, Ecore_Hash *set); EAPI void *ecore_hash_remove(Ecore_Hash *hash, const void *key); EAPI void ecore_hash_dump_graph(Ecore_Hash *hash); EAPI void ecore_hash_dump_stats(Ecore_Hash *hash); =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_hash.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- ecore_hash.c 16 Jan 2007 01:27:01 -0000 1.33 +++ ecore_hash.c 17 Jan 2007 13:41:08 -0000 1.34 @@ -170,6 +170,49 @@ } /** + * Sets all key-value pairs from set in the given hash table. + * @param hash The given hash table. + * @param set The hash table to import. + * @return @c TRUE if successful, @c FALSE if not. + * @ingroup Ecore_Data_Hash_ADT_Data_Group + */ +EAPI int +ecore_hash_set_hash(Ecore_Hash *hash, Ecore_Hash *set) +{ + unsigned int i; + Ecore_Hash_Node *node, *old; + + CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE); + CHECK_PARAM_POINTER_RETURN("set", set, FALSE); + + for (i = 0; i < ecore_prime_table[set->size]; i++) + { + /* Hash into a new list to avoid loops of rehashing the same nodes */ + while ((old = set->buckets[i])) + { + set->buckets[i] = old->next; + old->next = NULL; + node = _ecore_hash_get_node(hash, old->key); + if (node) + { + /* This key already exists. Delete the old and add the new + * value */ + if (hash->free_key) hash->free_key(node->key); + if (hash->free_value) hash->free_key(node->value); + node->key = old->key; + node->value = old->value; + free(old); + } + else + _ecore_hash_add_node(hash, old); + } + } + FREE(set->buckets); + ecore_hash_init(set, set->hash_func, set->compare); + return TRUE; +} + +/** * Frees the hash table and the data contained inside it. * @param hash The hash table to destroy. * @return @c TRUE on success, @c FALSE on error. @@ -694,7 +737,7 @@ * @brief Rehash the nodes of a table into the hash table * @param hash: the hash to place the nodes of the table * @param table: the table to remove the nodes from and place in hash - * @return Returns TRUE on success, FALSE on success + * @return Returns TRUE on success, FALSE on error */ inline int _ecore_hash_rehash(Ecore_Hash *hash, Ecore_Hash_Node **old_table, int old_size) =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_list.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -3 -r1.30 -r1.31 --- ecore_list.c 13 Jan 2007 17:51:10 -0000 1.30 +++ ecore_list.c 17 Jan 2007 13:41:08 -0000 1.31 @@ -494,6 +494,71 @@ return TRUE; } +/** + * Append a list to the list. + * @param list The list. + * @param append The list to append. + * @return @c FALSE if an error occurs, @c TRUE if appended successfully + * @ingroup Ecore_Data_List_Add_Item_Group + */ + +EAPI int +ecore_list_append_list(Ecore_List *list, Ecore_List *append) +{ + CHECK_PARAM_POINTER_RETURN("list", list, FALSE); + CHECK_PARAM_POINTER_RETURN("append", append, FALSE); + + if (ecore_list_is_empty(append)) return TRUE; + + if (ecore_list_is_empty(list)) + { + list->first = append->first; + list->current = NULL; + list->last = append->last; + list->nodes = append->nodes; + } + else + { + list->last->next = append->first; + list->last = append->last; + list->nodes += append->nodes; + } + ecore_list_init(append); + return TRUE; +} + +/** + * Prepend a list to the beginning of the list. + * @param list The list. + * @param prepend The list to prepend. + * @return @c FALSE if an error occurs, @c TRUE if prepended successfully. + * @ingroup Ecore_Data_List_Add_Item_Group + */ +EAPI int +ecore_list_prepend_list(Ecore_List *list, Ecore_List *prepend) +{ + CHECK_PARAM_POINTER_RETURN("list", list, FALSE); + CHECK_PARAM_POINTER_RETURN("prepend", prepend, FALSE); + + if (ecore_list_is_empty(prepend)) return TRUE; + + if (ecore_list_is_empty(list)) + { + list->first = prepend->first; + list->current = NULL; + list->last = prepend->last; + list->nodes = prepend->nodes; + } + else + { + prepend->last->next = list->first; + list->first = prepend->first; + list->nodes += prepend->nodes; + list->index += prepend->nodes; + } + ecore_list_init(prepend); + return TRUE; +} /** @defgroup Ecore_Data_List_Remove_Item_Group List Item Removing Functions @@ -1327,6 +1392,73 @@ ECORE_LIST(list)->nodes++; return ret; +} + +/** + * Appends a list to the given doubly linked list. + * @param list The given doubly linked list. + * @param append The list to append. + * @return @c TRUE if the data is successfully appended, @c FALSE otherwise. + * @ingroup Ecore_Data_DList_Add_Item_Group + */ +EAPI int +ecore_dlist_append_list(Ecore_DList *list, Ecore_DList *append) +{ + CHECK_PARAM_POINTER_RETURN("list", list, FALSE); + CHECK_PARAM_POINTER_RETURN("append", append, FALSE); + + if (ecore_dlist_is_empty(append)) return TRUE; + + if (ecore_dlist_is_empty(list)) + { + list->first = append->first; + list->current = NULL; + list->last = append->last; + list->nodes = append->nodes; + } + else + { + list->last->next = append->first; + ECORE_DLIST_NODE(append->first)->previous = ECORE_DLIST_NODE(list->last); + list->last = append->last; + list->nodes += append->nodes; + } + ecore_dlist_init(append); + return TRUE; +} + +/** + * Adds a list to the very beginning of the given doubly linked list. + * @param list The given doubly linked list. + * @param prepend The list to prepend. + * @return @c TRUE if the data is successfully prepended, @c FALSE otherwise. + * @ingroup Ecore_Data_DList_Add_Item_Group + */ +EAPI int +ecore_dlist_prepend_list(Ecore_DList *list, Ecore_DList *prepend) +{ + CHECK_PARAM_POINTER_RETURN("list", list, FALSE); + CHECK_PARAM_POINTER_RETURN("prepend", prepend, FALSE); + + if (ecore_dlist_is_empty(prepend)) return TRUE; + + if (ecore_dlist_is_empty(list)) + { + list->first = prepend->first; + list->current = NULL; + list->last = prepend->last; + list->nodes = prepend->nodes; + } + else + { + prepend->last->next = list->first; + ECORE_DLIST_NODE(list->first)->previous = ECORE_DLIST_NODE(prepend->last); + list->first = prepend->first; + list->nodes += prepend->nodes; + list->index += prepend->nodes; + } + ecore_dlist_init(prepend); + return TRUE; } /** |
From: Enlightenment C. <no...@cv...> - 2007-01-21 06:48:06
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore Modified Files: ecore_list.c Log Message: No need to check this, a non-empty list must have a first pointer. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_list.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -3 -r1.31 -r1.32 --- ecore_list.c 17 Jan 2007 13:41:08 -0000 1.31 +++ ecore_list.c 21 Jan 2007 12:48:03 -0000 1.32 @@ -675,9 +675,6 @@ if (ecore_list_is_empty(list)) return NULL; - if (!list->first) - return NULL; - old = list->first; list->first = list->first->next; |
From: Enlightenment C. <no...@cv...> - 2007-01-21 07:53:08
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore Modified Files: ecore_list.c Log Message: Already did this test ~10 lines up. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_list.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -3 -r1.32 -r1.33 --- ecore_list.c 21 Jan 2007 12:48:03 -0000 1.32 +++ ecore_list.c 21 Jan 2007 13:53:06 -0000 1.33 @@ -736,11 +736,7 @@ for (prev = list->first; prev && prev->next != old; prev = prev->next); list->last = prev; if (prev) - { - prev->next = NULL; - if (list->current == old) - list->current = NULL; - } + prev->next = NULL; if (old) { |
From: Enlightenment C. <no...@cv...> - 2007-01-21 07:54:25
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore Modified Files: ecore_list.c Log Message: Don't need to check for old, as we already established that this list isn't empty. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_list.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- ecore_list.c 21 Jan 2007 13:53:06 -0000 1.33 +++ ecore_list.c 21 Jan 2007 13:54:24 -0000 1.34 @@ -738,12 +738,9 @@ if (prev) prev->next = NULL; - if (old) - { - old->next = NULL; - ret = old->data; - old->data = NULL; - } + old->next = NULL; + ret = old->data; + old->data = NULL; ecore_list_node_destroy(old, NULL); list->nodes--; |
From: Enlightenment C. <no...@cv...> - 2007-02-01 18:41:40
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore Modified Files: ecore_list.c Log Message: formatting. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_list.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -3 -r1.36 -r1.37 --- ecore_list.c 1 Feb 2007 19:22:35 -0000 1.36 +++ ecore_list.c 2 Feb 2007 00:41:33 -0000 1.37 @@ -1198,7 +1198,7 @@ int mid; int i; - mid = n/2; + mid = n / 2; if (n < 2) return first; |
From: Enlightenment C. <no...@cv...> - 2007-02-06 18:24:06
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_dbus Modified Files: ecore_dbus.c ecore_dbus_message.c ecore_dbus_private.h ecore_dbus_utils.c Log Message: Make dbus endian aware. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -3 -r1.28 -r1.29 --- ecore_dbus.c 5 Nov 2006 17:45:03 -0000 1.28 +++ ecore_dbus.c 7 Feb 2007 00:23:54 -0000 1.29 @@ -13,6 +13,7 @@ /********************************************************************************/ /* Author: Jorge Luis Zapata */ /* Author: Brian Mattern (rephorm) */ +/* Author: Sebastian Dransfeld */ /* Version: 0.3.0 */ /********************************************************************************/ /* Todo */ @@ -83,6 +84,8 @@ static Ecore_List2 *servers = NULL; static Ecore_Event_Handler *handler[3]; +int words_bigendian = -1; + /* public functions */ EAPI int ecore_dbus_init(void) @@ -90,6 +93,15 @@ int i = 0; if (++init_count != 1) return init_count; + + if (words_bigendian == -1) + { + unsigned long int v; + + v = htonl(0x12345678); + if (v == 0x12345678) words_bigendian = 1; + else words_bigendian = 0; + } ecore_con_init(); =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_message.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- ecore_dbus_message.c 5 Nov 2006 17:45:03 -0000 1.13 +++ ecore_dbus_message.c 7 Feb 2007 00:23:54 -0000 1.14 @@ -462,8 +462,10 @@ if (!msg) return; /* endianness (1) */ - /* XXX we need to detect for endianess and send 'B' for Bigendian machines */ - msg->buffer[0] = msg->byte_order = 'l'; + if (words_bigendian) + msg->buffer[0] = msg->byte_order = 'B'; + else + msg->buffer[0] = msg->byte_order = 'l'; /* type (1) */ msg->buffer[1] = msg->type = (char)type; /* flags (1) 0x1 = no reply expected, 0x2 auto activation */ =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_private.h,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- ecore_dbus_private.h 5 Nov 2006 17:45:03 -0000 1.17 +++ ecore_dbus_private.h 7 Feb 2007 00:23:54 -0000 1.18 @@ -7,6 +7,30 @@ #include "Ecore_Con.h" #include "Ecore_Data.h" +extern int words_bigendian; + +#define SWAP64(x) (x) = \ + ((((unsigned long long)(x) & 0x00000000000000ffULL ) << 56) |\ + (((unsigned long long)(x) & 0x000000000000ff00ULL ) << 40) |\ + (((unsigned long long)(x) & 0x0000000000ff0000ULL ) << 24) |\ + (((unsigned long long)(x) & 0x00000000ff000000ULL ) << 8) |\ + (((unsigned long long)(x) & 0x000000ff00000000ULL ) >> 8) |\ + (((unsigned long long)(x) & 0x0000ff0000000000ULL ) >> 24) |\ + (((unsigned long long)(x) & 0x00ff000000000000ULL ) >> 40) |\ + (((unsigned long long)(x) & 0xff00000000000000ULL ) >> 56)) +#define SWAP32(x) (x) = \ + ((((unsigned int)(x) & 0x000000ff ) << 24) |\ + (((unsigned int)(x) & 0x0000ff00 ) << 8) |\ + (((unsigned int)(x) & 0x00ff0000 ) >> 8) |\ + (((unsigned int)(x) & 0xff000000 ) >> 24)) +#define SWAP16(x) (x) = \ + ((((unsigned short)(x) & 0x00ff ) << 8) |\ + (((unsigned short)(x) & 0xff00 ) >> 8)) + +#define CONV16(order, x) { if (words_bigendian && (order) != 'B') SWAP16(x); } +#define CONV32(order, x) { if (words_bigendian && (order) != 'B') SWAP32(x); } +#define CONV64(order, x) { if (words_bigendian && (order) != 'B') SWAP64(x); } + typedef unsigned char *(*Ecore_DBus_Auth_Transaction)(void *); typedef struct _Ecore_DBus_Auth Ecore_DBus_Auth; =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_utils.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- ecore_dbus_utils.c 29 Sep 2006 03:05:21 -0000 1.7 +++ ecore_dbus_utils.c 7 Feb 2007 00:23:54 -0000 1.8 @@ -83,6 +83,7 @@ { unsigned char *c; + CONV32(msg->byte_order, i) c = (unsigned char *)&i; _ecore_dbus_message_length_append(msg, 4); msg->buffer[msg->length++] = c[0]; @@ -109,6 +110,7 @@ _ecore_dbus_message_length_append(msg, 4); i = *(unsigned int *)(msg->buffer + msg->length); + CONV32(msg->byte_order, i) msg->length += 4; return i; } |
From: Enlightenment C. <no...@cv...> - 2007-03-13 10:06:07
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: ecore_x_dpms.c Log Message: Support for system which do not have DPMS at all. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_dpms.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore_x_dpms.c 13 Mar 2007 11:14:44 -0000 1.4 +++ ecore_x_dpms.c 13 Mar 2007 16:05:57 -0000 1.5 @@ -49,8 +49,12 @@ EAPI int ecore_x_dpms_capable_get(void) { +#ifdef ECORE_XDPMS if (!_dpms_available) return 0; return DPMSCapable(_ecore_x_disp); +#else + return 0; +#endif } /** @@ -61,12 +65,16 @@ EAPI int ecore_x_dpms_enabled_get(void) { +#ifdef ECORE_XDPMS unsigned char state; unsigned short power_lvl; if (!_dpms_available) return 0; DPMSInfo(_ecore_x_disp, &power_lvl, &state); return state; +#else + return 0; +#endif } /** @@ -77,11 +85,13 @@ EAPI void ecore_x_dpms_enabled_set(int enabled) { +#ifdef ECORE_XDPMS if (!_dpms_available) return; if (enabled) DPMSEnable(_ecore_x_disp); else DPMSDisable(_ecore_x_disp); +#endif } /** @@ -94,9 +104,11 @@ EAPI void ecore_x_dpms_timeouts_get(unsigned int *standby, unsigned int *suspend, unsigned int *off) { +#ifdef ECORE_XDPMS if (!_dpms_available) return; DPMSGetTimeouts(_ecore_x_disp, (unsigned short *)standby, (unsigned short *)suspend, (unsigned short *)off); +#endif } /** @@ -109,8 +121,12 @@ EAPI int ecore_x_dpms_timeouts_set(unsigned int standby, unsigned int suspend, unsigned int off) { +#ifdef ECORE_XDPMS if (!_dpms_available) return 0; return DPMSSetTimeouts(_ecore_x_disp, standby, suspend, off); +#else + return 0; +#endif } /** @@ -121,11 +137,15 @@ EAPI unsigned int ecore_x_dpms_timeout_standby_get() { +#ifdef ECORE_XDPMS unsigned short standby, suspend, off; if (!_dpms_available) return 0; DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off); return standby; +#else + return 0; +#endif } /** @@ -137,11 +157,15 @@ EAPI unsigned int ecore_x_dpms_timeout_suspend_get() { +#ifdef ECORE_XDPMS unsigned short standby, suspend, off; if (!_dpms_available) return 0; DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off); return suspend; +#else + return 0; +#endif } /** @@ -153,11 +177,15 @@ EAPI unsigned int ecore_x_dpms_timeout_off_get() { +#ifdef ECORE_XDPMS unsigned short standby, suspend, off; if (!_dpms_available) return 0; DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off); return off; +#else + return 0; +#endif } /** @@ -168,11 +196,13 @@ EAPI void ecore_x_dpms_timeout_standby_set(unsigned int new_timeout) { +#ifdef ECORE_XDPMS unsigned short standby, suspend, off; if (!_dpms_available) return; DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off); DPMSSetTimeouts(_ecore_x_disp, new_timeout, suspend, off); +#endif } /** @@ -183,11 +213,13 @@ EAPI void ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout) { +#ifdef ECORE_XDPMS unsigned short standby, suspend, off; if (!_dpms_available) return; DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off); DPMSSetTimeouts(_ecore_x_disp, standby, new_timeout, off); +#endif } /** @@ -198,9 +230,11 @@ EAPI void ecore_x_dpms_timeout_off_set(unsigned int new_timeout) { +#ifdef ECORE_XDPMS unsigned short standby, suspend, off; if (!_dpms_available) return; DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off); DPMSSetTimeouts(_ecore_x_disp, standby, suspend, new_timeout); +#endif } |
From: Enlightenment C. <no...@cv...> - 2007-03-13 10:11:52
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_file Modified Files: ecore_file.c Log Message: Remove no longer used variable. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_file/ecore_file.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -3 -r1.56 -r1.57 --- ecore_file.c 13 Mar 2007 02:28:18 -0000 1.56 +++ ecore_file.c 13 Mar 2007 16:11:48 -0000 1.57 @@ -236,7 +236,6 @@ ecore_file_realpath(const char *file) { char buf[PATH_MAX]; - struct stat st; if (!realpath(file, buf)) return strdup(""); return strdup(buf); |
From: Enlightenment C. <no...@cv...> - 2007-03-13 10:29:08
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h Log Message: Declare function. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.183 retrieving revision 1.184 diff -u -3 -r1.183 -r1.184 --- Ecore_X.h 9 Mar 2007 01:11:09 -0000 1.183 +++ Ecore_X.h 13 Mar 2007 16:29:02 -0000 1.184 @@ -1374,6 +1374,7 @@ EAPI int ecore_x_xinerama_screen_geometry_get(int screen, int *x, int *y, int *w, int *h); EAPI int ecore_x_screensaver_event_available_get(void); +EAPI void ecore_x_screensaver_set(int timeout, int interval, int blank, int expose); EAPI void ecore_x_screensaver_timeout_set(double timeout); EAPI double ecore_x_screensaver_timeout_get(void); EAPI void ecore_x_screensaver_blank_set(double timeout); |
From: Enlightenment C. <no...@cv...> - 2007-03-13 19:40:20
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: ecore_x_screensaver.c Log Message: For all who writes X wrappers. If a user decides to not link against a library, the functions will not resolve at link time. So we need to wrap them in cpp #ifdef's. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_screensaver.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_x_screensaver.c 13 Feb 2007 16:24:37 -0000 1.6 +++ ecore_x_screensaver.c 14 Mar 2007 01:40:16 -0000 1.7 @@ -14,90 +14,117 @@ { #ifdef ECORE_XSS return 1; -#endif +#else return 0; +#endif } EAPI void ecore_x_screensaver_set(int timeout, int interval, int blank, int expose) { +#ifdef ECORE_XSS XSetScreenSaver(_ecore_x_disp, timeout, interval, blank, expose); +#endif } EAPI void ecore_x_screensaver_timeout_set(double timeout) { +#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); XSetScreenSaver(_ecore_x_disp, (int)timeout, pint, pblank, pexpo); +#endif } EAPI double ecore_x_screensaver_timeout_get(void) { +#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); return (double)pto; +#else + return 0; +#endif } EAPI void ecore_x_screensaver_blank_set(double blank) { +#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); XSetScreenSaver(_ecore_x_disp, pto, pint, (int)blank, pexpo); +#endif } EAPI double ecore_x_screensaver_blank_get(void) { +#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); return (double)pblank; +#else + return 0; +#endif } EAPI void ecore_x_screensaver_expose_set(double expose) { +#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); XSetScreenSaver(_ecore_x_disp, pto, pint, pblank, (int)expose); +#endif } EAPI double ecore_x_screensaver_expose_get(void) { +#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); return (double)pexpo; +#else + return 0; +#endif } EAPI void ecore_x_screensaver_interval_set(double interval) { +#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); XSetScreenSaver(_ecore_x_disp, pto, (int)interval, pblank, pexpo); +#endif } EAPI double ecore_x_screensaver_interval_get(void) { +#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); return (double)pint; +#else + return 0; +#endif } EAPI void |
From: Enlightenment C. <no...@cv...> - 2007-03-14 06:06:50
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: ecore_x_screensaver.c Log Message: Only wrap Screensaver extensions. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_screensaver.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- ecore_x_screensaver.c 14 Mar 2007 01:40:16 -0000 1.7 +++ ecore_x_screensaver.c 14 Mar 2007 12:06:49 -0000 1.8 @@ -22,109 +22,83 @@ EAPI void ecore_x_screensaver_set(int timeout, int interval, int blank, int expose) { -#ifdef ECORE_XSS XSetScreenSaver(_ecore_x_disp, timeout, interval, blank, expose); -#endif } EAPI void ecore_x_screensaver_timeout_set(double timeout) { -#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); XSetScreenSaver(_ecore_x_disp, (int)timeout, pint, pblank, pexpo); -#endif } EAPI double ecore_x_screensaver_timeout_get(void) { -#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); return (double)pto; -#else - return 0; -#endif } EAPI void ecore_x_screensaver_blank_set(double blank) { -#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); XSetScreenSaver(_ecore_x_disp, pto, pint, (int)blank, pexpo); -#endif } EAPI double ecore_x_screensaver_blank_get(void) { -#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); return (double)pblank; -#else - return 0; -#endif } EAPI void ecore_x_screensaver_expose_set(double expose) { -#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); XSetScreenSaver(_ecore_x_disp, pto, pint, pblank, (int)expose); -#endif } EAPI double ecore_x_screensaver_expose_get(void) { -#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); return (double)pexpo; -#else - return 0; -#endif } EAPI void ecore_x_screensaver_interval_set(double interval) { -#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); XSetScreenSaver(_ecore_x_disp, pto, (int)interval, pblank, pexpo); -#endif } EAPI double ecore_x_screensaver_interval_get(void) { -#ifdef ECORE_XSS int pto, pint, pblank, pexpo; XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo); return (double)pint; -#else - return 0; -#endif } EAPI void |
From: Enlightenment C. <no...@cv...> - 2007-03-14 06:11:23
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: ecore_x_screensaver.c Log Message: Check if screensaver extension is available. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_x/ecore_x_screensaver.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- ecore_x_screensaver.c 14 Mar 2007 12:06:49 -0000 1.8 +++ ecore_x_screensaver.c 14 Mar 2007 12:11:21 -0000 1.9 @@ -9,14 +9,26 @@ #include "Ecore_X.h" #include "Ecore_X_Atoms.h" +static int _screensaver_available = -1; + EAPI int ecore_x_screensaver_event_available_get(void) { + if (_screensaver_available >= 0) return _screensaver_available; #ifdef ECORE_XSS - return 1; + int _screensaver_major, _screensaver_minor; + + _screensaver_major = 1; + _screensaver_minor = 0; + + if (XScreenSaverQueryVersion(_ecore_x_disp, &_screensaver_major, &_screensaver_minor)) + _screensaver_available = 1; + else + _screensaver_available = 0; #else - return 0; + _screensaver_available = 0; #endif + return _screensaver_available; } EAPI void |
From: Enlightenment C. <no...@cv...> - 2007-03-22 15:52:29
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/m4 Removed Files: ac_path_generic.m4 Log Message: No longer needed. |
From: Enlightenment C. <no...@cv...> - 2007-03-25 08:43:33
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/m4 Removed Files: ac_expand_dir.m4 Log Message: Remove unused file. |
From: Enlightenment C. <no...@cv...> - 2007-03-25 12:05:51
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_file Modified Files: ecore_file.c Log Message: Check for NULL argument. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_file/ecore_file.c,v retrieving revision 1.57 retrieving revision 1.58 diff -u -3 -r1.57 -r1.58 --- ecore_file.c 13 Mar 2007 16:11:48 -0000 1.57 +++ ecore_file.c 25 Mar 2007 12:05:48 -0000 1.58 @@ -343,6 +343,8 @@ char *exe = NULL; int in_quot_dbl = 0, in_quot_sing = 0, restart = 0; + if (!app) return NULL; + p = (char *)app; restart: while ((*p) && (isspace(*p))) p++; |
From: Enlightenment C. <no...@cv...> - 2007-03-25 16:44:12
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore Modified Files: Ecore_Data.h ecore_hash.c Log Message: Add a function to find a value in a hash. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/Ecore_Data.h,v retrieving revision 1.40 retrieving revision 1.41 diff -u -3 -r1.40 -r1.41 --- Ecore_Data.h 15 Mar 2007 22:21:26 -0000 1.40 +++ Ecore_Data.h 25 Mar 2007 16:44:11 -0000 1.41 @@ -277,6 +277,7 @@ EAPI int ecore_hash_set(Ecore_Hash *hash, void *key, void *value); EAPI int ecore_hash_set_hash(Ecore_Hash *hash, Ecore_Hash *set); EAPI void *ecore_hash_remove(Ecore_Hash *hash, const void *key); + EAPI void *ecore_hash_find(Ecore_Hash *hash, Ecore_Compare_Cb compare, const void *value); EAPI void ecore_hash_dump_graph(Ecore_Hash *hash); EAPI void ecore_hash_dump_stats(Ecore_Hash *hash); =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_hash.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -3 -r1.34 -r1.35 --- ecore_hash.c 17 Jan 2007 13:41:08 -0000 1.34 +++ ecore_hash.c 25 Mar 2007 16:44:11 -0000 1.35 @@ -537,6 +537,40 @@ return ret; } +/** + * Retrieves the first value that matches + * table. + * @param hash The given hash table. + * @param key The key to search for. + * @return The value corresponding to key on success, @c NULL otherwise. + * @ingroup Ecore_Data_Hash_ADT_Data_Group + */ +EAPI void * +ecore_hash_find(Ecore_Hash *hash, Ecore_Compare_Cb compare, const void *value) +{ + unsigned int i = 0; + + CHECK_PARAM_POINTER_RETURN("hash", hash, NULL); + CHECK_PARAM_POINTER_RETURN("compare", compare, NULL); + CHECK_PARAM_POINTER_RETURN("value", value, NULL); + + while (i < ecore_prime_table[hash->size]) + { + if (hash->buckets[i]) + { + Ecore_Hash_Node *node; + + for (node = hash->buckets[i]; node; node = node->next) + { + if (!compare(node->value, value)) return node->value; + } + } + i++; + } + + return NULL; +} + /* * @brief Retrieve the node associated with key * @param hash: the hash table to search for the key |
From: Enlightenment C. <no...@cv...> - 2007-03-26 19:30:57
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_file Modified Files: ecore_file_monitor_inotify.c Log Message: file is not NULL and empty if a file is monitored =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_file/ecore_file_monitor_inotify.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- ecore_file_monitor_inotify.c 5 Nov 2006 16:34:30 -0000 1.12 +++ ecore_file_monitor_inotify.c 26 Mar 2007 19:30:51 -0000 1.13 @@ -198,7 +198,7 @@ char buf[PATH_MAX]; int isdir; - if (file) + if ((file) && (file[0])) snprintf(buf, sizeof(buf), "%s/%s", em->path, file); else strcpy(buf, em->path); |
From: Enlightenment C. <no...@cv...> - 2007-03-26 21:47:44
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_file Modified Files: ecore_file_monitor_inotify.c Log Message: Use correct inotify include. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_file/ecore_file_monitor_inotify.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- ecore_file_monitor_inotify.c 26 Mar 2007 19:30:51 -0000 1.13 +++ ecore_file_monitor_inotify.c 26 Mar 2007 21:47:41 -0000 1.14 @@ -14,7 +14,7 @@ #ifdef HAVE_INOTIFY #include <asm/unistd.h> -#include <linux/inotify.h> +#include <sys/inotify.h> typedef struct _Ecore_File_Monitor_Inotify Ecore_File_Monitor_Inotify; @@ -37,10 +37,6 @@ static void _ecore_file_monitor_inotify_print(char *file, int mask); #endif -static inline int inotify_init(void); -static inline int inotify_add_watch(int fd, const char *name, __u32 mask); -static inline int inotify_rm_watch(int fd, __u32 wd); - int ecore_file_monitor_inotify_init(void) { @@ -255,24 +251,6 @@ /* We just call delete. The dir is gone... */ em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path); } -} - -static inline int -inotify_init(void) -{ - return syscall(__NR_inotify_init); -} - -static inline int -inotify_add_watch(int fd, const char *name, __u32 mask) -{ - return syscall(__NR_inotify_add_watch, fd, name, mask); -} - -static inline int -inotify_rm_watch(int fd, __u32 wd) -{ - return syscall(__NR_inotify_rm_watch, fd, wd); } #if 0 |
From: Enlightenment C. <no...@cv...> - 2007-03-27 05:36:32
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_file Modified Files: ecore_file_monitor_inotify.c Log Message: Readd watch if a file is recreated. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_file/ecore_file_monitor_inotify.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- ecore_file_monitor_inotify.c 26 Mar 2007 21:47:41 -0000 1.14 +++ ecore_file_monitor_inotify.c 27 Mar 2007 05:36:29 -0000 1.15 @@ -31,8 +31,8 @@ static int _ecore_file_monitor_inotify_handler(void *data, Ecore_Fd_Handler *fdh); static Ecore_File_Monitor *_ecore_file_monitor_inotify_monitor_find(int wd); -static void _ecore_file_monitor_inotify_events(Ecore_File_Monitor *em, - char *file, int mask); +static void _ecore_file_monitor_inotify_events(Ecore_File_Monitor *em, char *file, int mask); +static int _ecore_file_monitor_inotify_monitor(Ecore_File_Monitor *em, const char *path); #if 0 static void _ecore_file_monitor_inotify_print(char *file, int mask); #endif @@ -104,16 +104,7 @@ if (ecore_file_exists(em->path)) { - int mask; - mask = IN_MODIFY| - IN_MOVED_FROM|IN_MOVED_TO| - IN_DELETE|IN_CREATE| - IN_DELETE_SELF|IN_MOVE_SELF| - IN_UNMOUNT; - ECORE_FILE_MONITOR_INOTIFY(em)->wd = inotify_add_watch(ecore_main_fd_handler_fd_get(_fdh), - em->path, - mask); - if (ECORE_FILE_MONITOR_INOTIFY(em)->wd < 0) + if (!_ecore_file_monitor_inotify_monitor(em, em->path)) { printf("inotify_add_watch error\n"); ecore_file_monitor_inotify_del(em); @@ -251,6 +242,38 @@ /* We just call delete. The dir is gone... */ em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path); } + if (mask & IN_IGNORED) + { + /* The watch is removed. If the file name still exists monitor the new one, + * else delete it */ + if (ecore_file_exists(em->path)) + { + if (!_ecore_file_monitor_inotify_monitor(em, em->path)) + em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path); + } + else + em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path); + } +} + +static int +_ecore_file_monitor_inotify_monitor(Ecore_File_Monitor *em, const char *path) +{ + int mask; + mask = IN_MODIFY| + IN_MOVED_FROM|IN_MOVED_TO| + IN_DELETE|IN_CREATE| + IN_DELETE_SELF|IN_MOVE_SELF| + IN_UNMOUNT; + ECORE_FILE_MONITOR_INOTIFY(em)->wd = inotify_add_watch(ecore_main_fd_handler_fd_get(_fdh), + path, mask); + if (ECORE_FILE_MONITOR_INOTIFY(em)->wd < 0) + { + printf("inotify_add_watch error\n"); + ecore_file_monitor_inotify_del(em); + return 0; + } + return 1; } #if 0 |
From: Enlightenment C. <no...@cv...> - 2007-03-27 18:46:26
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_file Modified Files: ecore_file_monitor_inotify.c Log Message: TODO =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_file/ecore_file_monitor_inotify.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- ecore_file_monitor_inotify.c 27 Mar 2007 05:36:29 -0000 1.15 +++ ecore_file_monitor_inotify.c 27 Mar 2007 18:15:16 -0000 1.16 @@ -6,9 +6,10 @@ /* * TODO: * - * * Listen to these events: + * - Listen to these events: * IN_ACCESS, IN_ATTRIB, IN_CLOSE_WRITE, IN_CLOSE_NOWRITE, IN_OPEN - * + * - Read all events first, then call the callbacks. This will prevent several + * callbacks with the typic save cycle (delete file, new file) */ #ifdef HAVE_INOTIFY |