projects
/
free-sw
/
xcb
/
libxcb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
In struct XCBReplyData, change void *data to pthread_cond_t *data. That was dumb.
[free-sw/xcb/libxcb]
/
src
/
xcb_list.c
diff --git
a/src/xcb_list.c
b/src/xcb_list.c
index
6a72c16
..
718a380
100644
(file)
--- a/
src/xcb_list.c
+++ b/
src/xcb_list.c
@@
-53,35
+53,21
@@
_xcb_list *_xcb_list_new()
return list;
}
return list;
}
-static void _xcb_list_clear(_xcb_list *list, XCBListFreeFunc do_free)
-{
- void *tmp;
- while((tmp = _xcb_list_remove_head(list)))
- if(do_free)
- do_free(tmp);
-}
-
void _xcb_list_delete(_xcb_list *list, XCBListFreeFunc do_free)
{
if(!list)
return;
void _xcb_list_delete(_xcb_list *list, XCBListFreeFunc do_free)
{
if(!list)
return;
- _xcb_list_clear(list, do_free);
+ while(list->head)
+ {
+ node *cur = list->head;
+ if(do_free)
+ do_free(cur->data);
+ list->head = cur->next;
+ free(cur);
+ }
free(list);
}
free(list);
}
-int _xcb_list_insert(_xcb_list *list, void *data)
-{
- node *cur;
- cur = malloc(sizeof(node));
- if(!cur)
- return 0;
- cur->data = data;
-
- cur->next = list->head;
- list->head = cur;
- return 1;
-}
-
int _xcb_list_append(_xcb_list *list, void *data)
{
node *cur;
int _xcb_list_append(_xcb_list *list, void *data)
{
node *cur;
@@
-103,20
+89,6
@@
void *_xcb_list_peek_head(_xcb_list *list)
return list->head->data;
}
return list->head->data;
}
-void *_xcb_list_remove_head(_xcb_list *list)
-{
- void *ret;
- node *tmp = list->head;
- if(!tmp)
- return 0;
- ret = tmp->data;
- list->head = tmp->next;
- if(!list->head)
- list->tail = &list->head;
- free(tmp);
- return ret;
-}
-
void *_xcb_list_remove(_xcb_list *list, int (*cmp)(const void *, const void *), const void *data)
{
node **cur;
void *_xcb_list_remove(_xcb_list *list, int (*cmp)(const void *, const void *), const void *data)
{
node **cur;
@@
-153,14
+125,17
@@
_xcb_map *_xcb_map_new(void) __attribute__ ((alias ("_xcb_list_new")));
void _xcb_map_delete(_xcb_map *q, XCBListFreeFunc do_free)
{
void _xcb_map_delete(_xcb_map *q, XCBListFreeFunc do_free)
{
- map_pair *tmp;
if(!q)
return;
if(!q)
return;
- while(
(tmp = _xcb_list_remove_head(q))
)
+ while(
q->head
)
{
{
+ node *cur = q->head;
+ map_pair *pair = cur->data;
if(do_free)
if(do_free)
- do_free(tmp->value);
- free(tmp);
+ do_free(pair->value);
+ q->head = cur->next;
+ free(pair);
+ free(cur);
}
free(q);
}
}
free(q);
}
@@
-185,14
+160,6
@@
static int match_map_pair(const void *key, const void *pair)
return ((map_pair *) pair)->key == *(unsigned int *) key;
}
return ((map_pair *) pair)->key == *(unsigned int *) key;
}
-void *_xcb_map_get(_xcb_map *q, unsigned int key)
-{
- map_pair *cur = _xcb_list_find(q, match_map_pair, &key);
- if(!cur)
- return 0;
- return cur->value;
-}
-
void *_xcb_map_remove(_xcb_map *q, unsigned int key)
{
map_pair *cur = _xcb_list_remove(q, match_map_pair, &key);
void *_xcb_map_remove(_xcb_map *q, unsigned int key)
{
map_pair *cur = _xcb_list_remove(q, match_map_pair, &key);