split the round trip to fetch a window's region up so that the request can be sent...
[dana/dcompmgr.git] / plugin.c
1 #include "efence.h"
2
3 #include "plugin.h"
4 #include "list.h"
5 #include <stdlib.h>
6
7 d_plugin_data_t*
8 plugin_data_new(int id, void *data)
9 {
10     d_plugin_data_t *pd = malloc(sizeof(d_plugin_data_t));
11     pd->id = id;
12     pd->data = data;
13     return pd;
14 }
15
16 void
17 plugin_data_free(d_plugin_data_t *pd)
18 {
19     if (pd) free(pd);
20 }
21
22 void
23 plugin_data_add(d_list_t *list, int id, void *data)
24 {
25     d_plugin_data_t *pd;
26     pd = plugin_data_new(id, data);
27     list_append(list, pd);
28 }
29
30 void*
31 plugin_data_find(d_list_t *list, int id)
32 {
33     d_list_it_t *it;
34     for (it = list_top(list); it; it = it->next) {
35         d_plugin_data_t *pd = it->data;
36         if (pd->id == id) return pd->data;
37     }
38     return NULL;
39 }
40
41 void
42 plugin_data_remove(d_list_t *list, int id)
43 {
44     d_list_it_t *it, *next;
45     for (it = list_top(list); it; it = next) {
46         d_plugin_data_t *pd = it->data;
47         next = it->next;
48         if (pd->id == id) {
49             list_delete_link(list, it);
50             plugin_data_free(pd);
51         }
52     }
53 }