Added `refcount' field. New functions to deal with refcounts.
1999-12-05 Martin Baulig <martin@home-of-linux.org> * glibtop.h (glibtop): Added `refcount' field. * lib/init.c (glibtop_server_ref, glibtop_server_unref): New functions to deal with refcounts.
This commit is contained in:
committed by
Martin Baulig
parent
f5efccc8d6
commit
c1cae4e9ba
@@ -1,5 +1,9 @@
|
|||||||
1999-12-05 Martin Baulig <martin@home-of-linux.org>
|
1999-12-05 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
|
* glibtop.h (glibtop): Added `refcount' field.
|
||||||
|
* lib/init.c (glibtop_server_ref, glibtop_server_unref): New
|
||||||
|
functions to deal with refcounts.
|
||||||
|
|
||||||
* structures.def: New file. This is used by the language bindings
|
* structures.def: New file. This is used by the language bindings
|
||||||
code to get the definitions of some of LibGTop's structures.
|
code to get the definitions of some of LibGTop's structures.
|
||||||
|
|
||||||
|
@@ -44,6 +44,7 @@ typedef struct _glibtop glibtop;
|
|||||||
|
|
||||||
struct _glibtop
|
struct _glibtop
|
||||||
{
|
{
|
||||||
|
int refcount; /* Reference count */
|
||||||
unsigned flags;
|
unsigned flags;
|
||||||
unsigned method; /* Server Method */
|
unsigned method; /* Server Method */
|
||||||
unsigned error_method; /* Error Method */
|
unsigned error_method; /* Error Method */
|
||||||
@@ -86,6 +87,12 @@ glibtop_init_s (glibtop **server_ptr,
|
|||||||
unsigned long features,
|
unsigned long features,
|
||||||
unsigned flags);
|
unsigned flags);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_server_ref (glibtop *server);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_server_unref (glibtop *server);
|
||||||
|
|
||||||
#ifdef GLIBTOP_GUILE
|
#ifdef GLIBTOP_GUILE
|
||||||
|
|
||||||
/* You need to link with -lgtop_guile to get this stuff here. */
|
/* You need to link with -lgtop_guile to get this stuff here. */
|
||||||
|
24
lib/init.c
24
lib/init.c
@@ -154,6 +154,30 @@ _init_server (glibtop *server, const unsigned features)
|
|||||||
glibtop_free_r (server, command);
|
glibtop_free_r (server, command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_server_ref (glibtop *server)
|
||||||
|
{
|
||||||
|
if (server == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
server->refcount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_server_unref (glibtop *server)
|
||||||
|
{
|
||||||
|
if (server == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!server->refcount) {
|
||||||
|
glibtop_warn_r (server, "Attempted to unref server "
|
||||||
|
"which refcount == 0");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
server->refcount--;
|
||||||
|
}
|
||||||
|
|
||||||
glibtop *
|
glibtop *
|
||||||
glibtop_init_r (glibtop **server_ptr, unsigned long features, unsigned flags)
|
glibtop_init_r (glibtop **server_ptr, unsigned long features, unsigned flags)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user