aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/XRes
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/lib/XRes')
-rw-r--r--nx-X11/lib/XRes/Imakefile34
-rw-r--r--nx-X11/lib/XRes/XRes-def.cpp9
-rw-r--r--nx-X11/lib/XRes/XRes.c233
-rw-r--r--nx-X11/lib/XRes/XRes.man140
4 files changed, 416 insertions, 0 deletions
diff --git a/nx-X11/lib/XRes/Imakefile b/nx-X11/lib/XRes/Imakefile
new file mode 100644
index 000000000..410f57ff5
--- /dev/null
+++ b/nx-X11/lib/XRes/Imakefile
@@ -0,0 +1,34 @@
+XCOMM $XFree86: xc/lib/XRes/Imakefile,v 1.3 2003/10/13 21:19:28 herrb Exp $
+
+#define DoNormalLib NormalLibXRes
+#define DoSharedLib SharedLibXRes
+#define DoDebugLib DebugLibXRes
+#define DoProfileLib ProfileLibXRes
+#define LibName XRes
+#define SoRev SOXRESREV
+#define LibHeaders NO
+
+#include <Threads.tmpl>
+
+#ifdef SharedXResReqs
+REQUIREDLIBS = SharedXResReqs
+#endif
+
+#if Malloc0ReturnsNull
+ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL
+#endif
+
+ DEFINES = $(ALLOC_DEFINES)
+ SRCS = XRes.c
+ OBJS = XRes.o
+ LINTLIBS = $(LINTXLIB)
+
+#include <Library.tmpl>
+
+MANSUFFIX=$(LIBMANSUFFIX)
+InstallManPage(LibName,$(LIBMANDIR))
+#if ExpandManNames
+InstallManPageAliases(LibName,$(LIBMANDIR),XResQueryExtension XResQueryVersion XResQueryClients XResQueryClientResources XResQueryClientPixmapBytes)
+#endif
+
+DependTarget()
diff --git a/nx-X11/lib/XRes/XRes-def.cpp b/nx-X11/lib/XRes/XRes-def.cpp
new file mode 100644
index 000000000..1da4ccc16
--- /dev/null
+++ b/nx-X11/lib/XRes/XRes-def.cpp
@@ -0,0 +1,9 @@
+LIBRARY XRes
+VERSION LIBRARY_VERSION
+EXPORTS
+ XResQueryClientPixmapBytes
+ XResQueryClientResources
+ XResQueryClients
+ XResQueryExtension
+ XResQueryVersion
+/* $XFree86$ */
diff --git a/nx-X11/lib/XRes/XRes.c b/nx-X11/lib/XRes/XRes.c
new file mode 100644
index 000000000..06cc78d12
--- /dev/null
+++ b/nx-X11/lib/XRes/XRes.c
@@ -0,0 +1,233 @@
+/*
+ Copyright (c) 2002 XFree86 Inc
+*/
+/* $XFree86: xc/lib/XRes/XRes.c,v 1.3 2002/03/10 22:06:53 mvojkovi Exp $ */
+
+#define NEED_EVENTS
+#define NEED_REPLIES
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdlib.h>
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/extensions/Xext.h>
+#include <X11/extensions/extutil.h>
+#include <X11/extensions/XResproto.h>
+#include <X11/extensions/XRes.h>
+
+
+static XExtensionInfo _xres_ext_info_data;
+static XExtensionInfo *xres_ext_info = &_xres_ext_info_data;
+static char *xres_extension_name = XRES_NAME;
+
+#define XResCheckExtension(dpy,i,val) \
+ XextCheckExtension (dpy, i, xres_extension_name, val)
+
+static XEXT_GENERATE_CLOSE_DISPLAY (close_display, xres_ext_info)
+
+static XExtensionHooks xres_extension_hooks = {
+ NULL, /* create_gc */
+ NULL, /* copy_gc */
+ NULL, /* flush_gc */
+ NULL, /* free_gc */
+ NULL, /* create_font */
+ NULL, /* free_font */
+ close_display, /* close_display */
+ NULL, /* wire_to_event */
+ NULL, /* event_to_wire */
+ NULL, /* error */
+ NULL, /* error_string */
+};
+
+static XEXT_GENERATE_FIND_DISPLAY (find_display, xres_ext_info,
+ xres_extension_name,
+ &xres_extension_hooks,
+ 0, NULL)
+
+Bool XResQueryExtension (
+ Display *dpy,
+ int *event_basep,
+ int *error_basep
+)
+{
+ XExtDisplayInfo *info = find_display (dpy);
+
+ if (XextHasExtension(info)) {
+ *event_basep = info->codes->first_event;
+ *error_basep = info->codes->first_error;
+ return True;
+ } else {
+ return False;
+ }
+}
+
+Status XResQueryVersion(
+ Display *dpy,
+ int *major_versionp,
+ int *minor_versionp
+)
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXResQueryVersionReply rep;
+ xXResQueryVersionReq *req;
+
+ XResCheckExtension (dpy, info, 0);
+
+ LockDisplay (dpy);
+ GetReq (XResQueryVersion, req);
+ req->reqType = info->codes->major_opcode;
+ req->XResReqType = X_XResQueryVersion;
+ req->client_major = XRES_MAJOR_VERSION;
+ req->client_minor = XRES_MINOR_VERSION;
+ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
+ UnlockDisplay (dpy);
+ SyncHandle ();
+ return 0;
+ }
+ *major_versionp = rep.server_major;
+ *minor_versionp = rep.server_minor;
+ UnlockDisplay (dpy);
+ SyncHandle ();
+ return 1;
+}
+
+
+Status XResQueryClients (
+ Display *dpy,
+ int *num_clients,
+ XResClient **clients
+)
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXResQueryClientsReq *req;
+ xXResQueryClientsReply rep;
+ XResClient *clnts;
+ int result = 0;
+
+ *num_clients = 0;
+ *clients = NULL;
+
+ XResCheckExtension (dpy, info, 0);
+
+ LockDisplay (dpy);
+ GetReq (XResQueryClients, req);
+ req->reqType = info->codes->major_opcode;
+ req->XResReqType = X_XResQueryClients;
+ if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) {
+ UnlockDisplay (dpy);
+ SyncHandle ();
+ return 0;
+ }
+
+ if(rep.num_clients) {
+ if((clnts = Xmalloc(sizeof(XResClient) * rep.num_clients))) {
+ xXResClient scratch;
+ int i;
+
+ for(i = 0; i < rep.num_clients; i++) {
+ _XRead(dpy, (char*)&scratch, sz_xXResClient);
+ clnts[i].resource_base = scratch.resource_base;
+ clnts[i].resource_mask = scratch.resource_mask;
+ }
+ *clients = clnts;
+ *num_clients = rep.num_clients;
+ result = 1;
+ } else {
+ _XEatData(dpy, rep.length << 2);
+ }
+ }
+
+ UnlockDisplay (dpy);
+ SyncHandle ();
+ return result;
+}
+
+Status XResQueryClientResources (
+ Display *dpy,
+ XID xid,
+ int *num_types,
+ XResType **types
+)
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXResQueryClientResourcesReq *req;
+ xXResQueryClientResourcesReply rep;
+ XResType *typs;
+ int result = 0;
+
+ *num_types = 0;
+ *types = NULL;
+
+ XResCheckExtension (dpy, info, 0);
+
+ LockDisplay (dpy);
+ GetReq (XResQueryClientResources, req);
+ req->reqType = info->codes->major_opcode;
+ req->XResReqType = X_XResQueryClientResources;
+ req->xid = xid;
+ if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) {
+ UnlockDisplay (dpy);
+ SyncHandle ();
+ return 0;
+ }
+
+ if(rep.num_types) {
+ if((typs = Xmalloc(sizeof(XResType) * rep.num_types))) {
+ xXResType scratch;
+ int i;
+
+ for(i = 0; i < rep.num_types; i++) {
+ _XRead(dpy, (char*)&scratch, sz_xXResType);
+ typs[i].resource_type = scratch.resource_type;
+ typs[i].count = scratch.count;
+ }
+ *types = typs;
+ *num_types = rep.num_types;
+ result = 1;
+ } else {
+ _XEatData(dpy, rep.length << 2);
+ }
+ }
+
+ UnlockDisplay (dpy);
+ SyncHandle ();
+ return result;
+}
+
+Status XResQueryClientPixmapBytes (
+ Display *dpy,
+ XID xid,
+ unsigned long *bytes
+)
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXResQueryClientPixmapBytesReq *req;
+ xXResQueryClientPixmapBytesReply rep;
+
+ *bytes = 0;
+
+ XResCheckExtension (dpy, info, 0);
+
+ LockDisplay (dpy);
+ GetReq (XResQueryClientPixmapBytes, req);
+ req->reqType = info->codes->major_opcode;
+ req->XResReqType = X_XResQueryClientPixmapBytes;
+ req->xid = xid;
+ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
+ UnlockDisplay (dpy);
+ SyncHandle ();
+ return 0;
+ }
+
+#ifdef LONG64
+ *bytes = (rep.bytes_overflow * 4294967295) + rep.bytes;
+#else
+ *bytes = rep.bytes_overflow ? 0xffffffff : rep.bytes;
+#endif
+
+ UnlockDisplay (dpy);
+ SyncHandle ();
+ return 1;
+}
+
diff --git a/nx-X11/lib/XRes/XRes.man b/nx-X11/lib/XRes/XRes.man
new file mode 100644
index 000000000..25c27b997
--- /dev/null
+++ b/nx-X11/lib/XRes/XRes.man
@@ -0,0 +1,140 @@
+.\"
+.\" $XdotOrg: xc/lib/XRes/XRes.man,v 1.2 2004/04/23 18:43:36 eich Exp $
+.\" $XFree86: xc/lib/XRes/XRes.man,v 1.2 2003/10/13 21:22:54 herrb Exp $
+.\"
+.\" Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be
+.\" included in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+.\" IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES
+.\" OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the XFree86 Project
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" from the XFree86 Project.
+.\"
+.TH XRes 3 __vendorversion__
+.SH NAME
+XRes \- X-Resource extension client library
+.SH SYNOPSIS
+.B #include <X11/extension/XRes.h>
+.PP
+.nf
+.ta .5i 2i
+typedef struct {
+ XID resource_base;
+ XID resource_mask;
+} XResClient;
+
+typedef struct {
+ Atom resource_type;
+ unsigned int count;
+} XResType;
+.fi
+.HP
+Bool XResQueryExtension(Display *\fIdpy\fP,
+int *\fIevent_basep\fP, int *\fIerror_basep\fP\^);
+.HP
+Status XResQueryVersion(Display *\fIdpy\fP, int *\fImajor_versionp\fP,
+int *\fIminor_versionp\fP\^);
+.HP
+Status XResQueryClients(Display *\fIdpy\fP, int *\fInum_clients\fP,
+XResClient **\fIclients\fP\^);
+.HP
+Status XResQueryClientResources(Display *\fIdpy\fP, XID \fIxid\fP,
+int *\fInum_types\fP, XResType **\fItypes\fP\^);
+.HP
+Status XResQueryClientPixmapBytes(Display *\fIdpy\fP, XID \fIxid\fP,
+unsigned long *\fIbytes\fP\^);
+.PP
+.SH DESCRIPTION
+.B X-Resource
+is an extension that allows a client to query the X
+server about its usage of various resources. It should not be mixed
+with the X resource database access functions.
+.PP
+.B XResQueryExtension
+returns
+.B True
+if the
+.I XRes
+extension is available on the given display.
+A client must call
+.B XResQueryExtension
+before calling any other XRes function in order
+to negotiate a compatible protocol version; otherwise the client will
+get undefined behavior (XRes may or may not work).
+.PP
+.B XResQueryVersion
+returns
+.B True
+if the request succeeded; the values of the major and minor protocol
+versions supported by the server are returned in
+.I major_versionp
+and
+.I minor_versionp .
+.PP
+.PP
+.B XResQueryClients
+fills a list of clients of the given display. For each client it
+returns in the
+.I XResClient
+structure a mask and a base value of the resources used by these
+clients.
+Returns
+.B True
+on success or
+.B False
+on failure.
+.PP
+.B XResQueryClientResources
+fills a list of
+XResType
+structures, indicating for each resource type allocated by the client its
+name (as an Atom) and the number of resources of this type allocated.
+Returns
+.B True
+on success or
+.B False
+on failure.
+.PP
+.B XresQueryClientPixmapBytes
+gives, for resources of type
+.I PIXMAP
+the total number of bytes allocated in the X server by the given
+client.
+Returns
+.B True
+on success or
+.B False
+on failure.
+.SH "ERRORS"
+.B XResQueryClientResources
+and
+.B XResQueryClientPixmapBytes
+will return
+.I BadValue
+if passed an illegal client identifier.
+.SH "SEE ALSO"
+X(__miscmansuffix__)
+.SH AUTHOR
+Mark Vojkovich, originally for The XFree86 Project Inc.
+.SH STABILITY
+This API is considered as experimental. The XRes library major
+revision may be incremented whenever incompatible changes are done to
+the API without notice. Use with care.