XRes.h revision e6d2e958
1/*
2   Copyright (c) 2002  XFree86 Inc
3*/
4
5#ifndef _XRES_H
6#define _XRES_H
7
8#include <X11/Xfuncproto.h>
9
10/* v1.0 */
11
12typedef struct {
13  XID resource_base;
14  XID resource_mask;
15} XResClient;
16
17typedef struct {
18  Atom resource_type;
19  unsigned int count;
20} XResType;
21
22/* v1.2 */
23
24typedef enum {
25  XRES_CLIENT_ID_XID,
26  XRES_CLIENT_ID_PID,
27  XRES_CLIENT_ID_NR
28} XResClientIdType;
29
30typedef enum {
31  XRES_CLIENT_ID_XID_MASK = 1 << XRES_CLIENT_ID_XID,
32  XRES_CLIENT_ID_PID_MASK = 1 << XRES_CLIENT_ID_PID
33} XResClientIdMask;
34
35typedef struct {
36  XID           client;
37  unsigned int  mask;
38} XResClientIdSpec;
39
40typedef struct {
41  XResClientIdSpec spec;
42  long          length;
43  void         *value;
44} XResClientIdValue;
45
46typedef struct {
47  XID           resource;
48  Atom          type;
49} XResResourceIdSpec;
50
51typedef struct {
52  XResResourceIdSpec spec;
53  long          bytes;
54  long          ref_count;
55  long          use_count;
56} XResResourceSizeSpec;
57
58typedef struct {
59  XResResourceSizeSpec  size;
60  long                  num_cross_references;
61  XResResourceSizeSpec *cross_references;
62} XResResourceSizeValue;
63
64_XFUNCPROTOBEGIN
65
66/* v1.0 */
67
68Bool XResQueryExtension (
69   Display *dpy,
70   int *event_base_return,
71   int *error_base_return
72);
73
74Status XResQueryVersion (
75   Display *dpy,
76   int *major_version_return,
77   int *minor_version_return
78);
79
80Status XResQueryClients (
81   Display *dpy,
82   int *num_clients,
83   XResClient **clients
84);
85
86Status XResQueryClientResources (
87   Display *dpy,
88   XID xid,
89   int *num_types,
90   XResType **types
91);
92
93Status XResQueryClientPixmapBytes (
94   Display *dpy,
95   XID xid,
96   unsigned long *bytes
97);
98
99/* v1.2 */
100
101Status XResQueryClientIds (
102   Display            *dpy,
103   long                num_specs,
104   XResClientIdSpec   *client_specs,   /* in */
105   long               *num_ids,        /* out */
106   XResClientIdValue **client_ids      /* out */
107);
108
109XResClientIdType XResGetClientIdType(XResClientIdValue* value);
110
111/* return -1 if no pid associated to the value */
112pid_t XResGetClientPid(XResClientIdValue* value);
113
114void XResClientIdsDestroy (
115   long                num_ids,
116   XResClientIdValue  *client_ids
117);
118
119Status XResQueryResourceBytes (
120   Display            *dpy,
121   XID                 client,
122   long                num_specs,
123   XResResourceIdSpec *resource_specs, /* in */
124   long               *num_sizes,      /* out */
125   XResResourceSizeValue **sizes       /* out */
126);
127
128void XResResourceSizeValuesDestroy (
129   long                num_sizes,
130   XResResourceSizeValue *sizes
131);
132
133_XFUNCPROTOEND
134
135#endif /* _XRES_H */
136