New type. (glibtop_backend_module): New private type.
2000-01-12 Martin Baulig <martin@home-of-linux.org> * include/glibtop/backend.h (glibtop_backend_entry): New type. (glibtop_backend_module): New private type. * lib/backend.c (glibtop_register_backend): This now takes a `glibtop_backend_entry' argument, not a `glibtop_backend_info' one. (glibtop_backend_by_id): Return a `glibtop_backend_entry' type, not a `glibtop_backend_info' one. (glibtop_backend_by_name): Likewise. * lib/init-backends.c: If we have libxml, read all `.backend' files in $(LIBGTOP_BACKEND_DIR), XML parse them and register them via `glibtop_backend_register'. This builds a list of all currently supported backends without actually loading them into memory. * lib/open-backend.c (glibtop_open_backend_l): GModule load the backend if it's not already in memory.
This commit is contained in:
committed by
Martin Baulig
parent
8d532c6298
commit
e2e5c3a1cc
@@ -33,7 +33,7 @@ static GHashTable *_glibtop_backend_list = NULL;
|
||||
static long _glibtop_backend_nr = 0;
|
||||
|
||||
long
|
||||
glibtop_register_backend (glibtop_backend_info *info)
|
||||
glibtop_register_backend (glibtop_backend_entry *entry)
|
||||
{
|
||||
long id;
|
||||
|
||||
@@ -44,7 +44,7 @@ glibtop_register_backend (glibtop_backend_info *info)
|
||||
|
||||
g_hash_table_insert (_glibtop_backend_list,
|
||||
GINT_TO_POINTER (id),
|
||||
info);
|
||||
entry);
|
||||
|
||||
return id;
|
||||
}
|
||||
@@ -56,7 +56,7 @@ glibtop_unregister_backend (long id)
|
||||
GINT_TO_POINTER (id));
|
||||
}
|
||||
|
||||
glibtop_backend_info *
|
||||
glibtop_backend_entry *
|
||||
glibtop_backend_by_id (long id)
|
||||
{
|
||||
return g_hash_table_lookup (_glibtop_backend_list,
|
||||
@@ -65,23 +65,23 @@ glibtop_backend_by_id (long id)
|
||||
|
||||
typedef struct {
|
||||
const char *backend_name;
|
||||
glibtop_backend_info *info;
|
||||
glibtop_backend_entry *entry;
|
||||
} _find_by_name_param_t;
|
||||
|
||||
static void
|
||||
find_by_name (gpointer key, gpointer value, gpointer user_data)
|
||||
{
|
||||
_find_by_name_param_t *param = (_find_by_name_param_t *) user_data;
|
||||
glibtop_backend_info *info = (glibtop_backend_info *) value;
|
||||
glibtop_backend_entry *entry = (glibtop_backend_entry *) value;
|
||||
|
||||
if (!info || !info->name || param->info)
|
||||
if (!entry || !entry->name || param->entry)
|
||||
return;
|
||||
|
||||
if (!strcmp (info->name, param->backend_name))
|
||||
param->info = info;
|
||||
if (!strcmp (entry->name, param->backend_name))
|
||||
param->entry = entry;
|
||||
}
|
||||
|
||||
glibtop_backend_info *
|
||||
glibtop_backend_entry *
|
||||
glibtop_backend_by_name (const char *backend_name)
|
||||
{
|
||||
_find_by_name_param_t param = { backend_name, NULL };
|
||||
@@ -89,5 +89,5 @@ glibtop_backend_by_name (const char *backend_name)
|
||||
g_hash_table_foreach (_glibtop_backend_list,
|
||||
find_by_name, ¶m);
|
||||
|
||||
return param.info;
|
||||
return param.entry;
|
||||
}
|
||||
|
Reference in New Issue
Block a user