## Resource Usage of X Clients Resource Usage of X Clients — reading resource usage of X clients. |

## Stability Level

Unstable, unless otherwise indicated

## Functions

void | wnck_xid_read_resource_usage ()
void | wnck_pid_read_resource_usage ()

## Types and Values

struct | WnckResourceUsage

## Description

libwnck provides an easy-to-use interface to the XRes X server extension to read resource usage of X clients, which can be defined either by the X window ID of one of their windows or by the process ID of their process.

## Functions

### wnck_xid_read_resource_usage ()

    void
    wnck_xid_read_resource_usage (GdkDisplay *gdk_display,
                                  gulong xid,
                                  WnckResourceUsage *usage);

Looks for the X resource usage of the application owning the X window ID `xid` on display `gdisplay` . If no resource usage can be found, then all fields of `usage` are set to 0.

To properly work, this function requires the XRes extension on the X server.

#### Parameters

gdk_display | a `GdkDisplay`. |
xid | an X window ID. |
usage | return location for the X resource usage of the application owning the X window ID `xid` . |

Since: 2.6

### wnck_pid_read_resource_usage ()

    void
    wnck_pid_read_resource_usage (GdkDisplay *gdk_display,
                                  gulong pid,
                                  WnckResourceUsage *usage);

Looks for the X resource usage of the application with process ID `pid` on display `gdisplay` . If no resource usage can be found, then all fields of `usage` are set to 0.

In order to find the resource usage of an application that does not have an X window visible to libwnck (panel applets do not have any toplevel windows, for example), `wnck_pid_read_resource_usage()` walks through the whole tree of X windows. Since this walk is expensive in CPU, a cache is created. This cache is updated in the background. This means there is a non-null probability that no resource usage will be found for an application, even if it is an X client. If this happens, calling `wnck_pid_read_resource_usage()` again after a few seconds should work.

To properly work, this function requires the XRes extension on the X server.

#### Parameters

gdk_display | a `GdkDisplay`. |
pid | a process ID. |
usage | return location for the X resource usage of the application with process ID `pid` . |

Since: 2.6

## Types and Values

### struct WnckResourceUsage

    struct WnckResourceUsage {
      gulong        total_bytes_estimate;

      gulong        pixmap_bytes;

      unsigned int n_pixmaps;
      unsigned int n_windows;
      unsigned int n_gcs;
      unsigned int n_pictures;
      unsigned int n_glyphsets;
      unsigned int n_fonts;
      unsigned int n_colormap_entries;
      unsigned int n_passive_grabs;
      unsigned int n_cursors;
      unsigned int n_other;
    };

The WnckResourceUsage struct contains information about the total resource usage of an X client, and the number of resources allocated for each resource type.

#### Members

gulong `total_bytes_estimate`; | estimation of the total number of bytes allocated in the X server. |
gulong `pixmap_bytes`; | number of bytes allocated in the X server for resources of type Pixmap. |
unsigned int `n_pixmaps`; | number of Pixmap resources allocated. |
unsigned int `n_windows`; | number of Window resources allocated. |
unsigned int `n_gcs`; | number of GContext resources allocated. |
unsigned int `n_pictures`; | number of Picture resources allocated. |
unsigned int `n_glyphsets`; | number of Glyphset resources allocated. |
unsigned int `n_fonts`; | number of Font resources allocated. |
unsigned int `n_colormap_entries`; | number of Colormap resources allocated. |
unsigned int `n_passive_grabs`; | number of PassiveGrab resources allocated. |
unsigned int `n_cursors`; | number of Cursor resources allocated. |
unsigned int `n_other`; | number of other resources allocated. |

Since: 2.6

## See Also

wnck_window_get_xid(), `wnck_application_get_xid()`, `wnck_window_get_pid()`, `wnck_application_get_pid()`