diff options
Diffstat (limited to 'src/XrrOutput.c')
-rw-r--r-- | src/XrrOutput.c | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/src/XrrOutput.c b/src/XrrOutput.c index c908bbc..1fe03ae 100644 --- a/src/XrrOutput.c +++ b/src/XrrOutput.c @@ -129,230 +129,3 @@ XRRFreeOutputInfo (XRROutputInfo *outputInfo) { Xfree (outputInfo); } - -Atom * -XRRListOutputProperties (Display *dpy, RROutput output, int *nprop) -{ - XExtDisplayInfo *info = XRRFindDisplay(dpy); - xRRListOutputPropertiesReply rep; - xRRListOutputPropertiesReq *req; - int nbytes, nbytesRead, netbytes; - int i; - xRRQueryVersionReq *vreq; - Atom *props; - - RRCheckExtension (dpy, info, 0); - - LockDisplay (dpy); - GetReq (RRListOutputProperties, req); - req->reqType = info->codes->major_opcode; - req->randrReqType = X_RRListOutputProperties; - req->output = output; - - if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) { - UnlockDisplay (dpy); - SyncHandle (); - *nprop = 0; - return NULL; - } - - if (rep.nProperties) { - nbytes = rep.nProperties * sizeof (Atom); - netbytes = rep.nProperties << 2; - - props = (Atom *) Xmalloc (nbytes); - if (props == NULL) { - _XEatData (dpy, nbytes); - UnlockDisplay (dpy); - SyncHandle (); - *nprop = 0; - return NULL; - } - - _XRead32 (dpy, props, nbytes); - } - - *nprop = rep.nProperties; - UnlockDisplay (dpy); - SyncHandle (); - return props; -} - -void -XRRChangeOutputProperty (Display *dpy, RROutput output, - Atom property, Atom type, - int format, int mode, - _Xconst unsigned char *data, int nelements) -{ - XExtDisplayInfo *info = XRRFindDisplay(dpy); - xRRChangeOutputPropertyReq *req; - xRRQueryVersionReq *vreq; - long len; - - RRSimpleCheckExtension (dpy, info); - - LockDisplay(dpy); - GetReq (RRChangeOutputProperty, req); - req->reqType = info->codes->major_opcode; - req->randrReqType = X_RRChangeOutputProperty; - req->output = output; - req->property = property; - req->type = type; - req->mode = mode; - if (nelements < 0) { - req->nUnits = 0; - req->format = 0; /* ask for garbage, get garbage */ - } else { - req->nUnits = nelements; - req->format = format; - } - - switch (req->format) { - case 8: - len = ((long)nelements + 3) >> 2; - if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) { - SetReqLen(req, len, len); - Data (dpy, (char *)data, nelements); - } /* else force BadLength */ - break; - - case 16: - len = ((long)nelements + 1) >> 1; - if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) { - SetReqLen(req, len, len); - len = (long)nelements << 1; - Data16 (dpy, (short *) data, len); - } /* else force BadLength */ - break; - - case 32: - len = nelements; - if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) { - SetReqLen(req, len, len); - len = (long)nelements << 2; - Data32 (dpy, (long *) data, len); - } /* else force BadLength */ - break; - - default: - /* BadValue will be generated */ ; - } - - UnlockDisplay(dpy); - SyncHandle(); -} - -void -XRRDeleteOutputProperty (Display *dpy, RROutput output, Atom property) -{ - XExtDisplayInfo *info = XRRFindDisplay(dpy); - xRRDeleteOutputPropertyReq *req; - - RRSimpleCheckExtension (dpy, info); - - LockDisplay(dpy); - GetReq(RRDeleteOutputProperty, req); - req->reqType = info->codes->major_opcode; - req->randrReqType = X_RRDeleteOutputProperty; - req->output = output; - req->property = property; - UnlockDisplay(dpy); - SyncHandle(); -} - -int -XRRGetOutputProperty (Display *dpy, RROutput output, - Atom property, long offset, long length, - Bool delete, Atom req_type, - Atom *actual_type, int *actual_format, - unsigned long *nitems, unsigned long *bytes_after, - unsigned char **prop) -{ - XExtDisplayInfo *info = XRRFindDisplay(dpy); - xRRGetOutputPropertyReply rep; - xRRGetOutputPropertyReq *req; - int nbytes, nbytesRead; - int i; - xRRQueryVersionReq *vreq; - - RRCheckExtension (dpy, info, 1); - - LockDisplay (dpy); - GetReq (RRGetOutputProperty, req); - req->reqType = info->codes->major_opcode; - req->randrReqType = X_RRGetOutputProperty; - req->output = output; - req->property = property; - req->type = req_type; - req->longOffset = offset; - req->longLength = length; - req->delete = delete; - - if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) - { - UnlockDisplay (dpy); - SyncHandle (); - return 1; - } - - *prop = (unsigned char *) NULL; - if (rep.propertyType != None) { - long nbytes, netbytes; - /* - * One extra byte is malloced than is needed to contain the property - * data, but this last byte is null terminated and convenient for - * returning string properties, so the client doesn't then have to - * recopy the string to make it null terminated. - */ - switch (rep.format) { - case 8: - nbytes = netbytes = rep.nItems; - if (nbytes + 1 > 0 && - (*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1))) - _XReadPad (dpy, (char *) *prop, netbytes); - break; - - case 16: - nbytes = rep.nItems * sizeof (short); - netbytes = rep.nItems << 1; - if (nbytes + 1 > 0 && - (*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1))) - _XRead16Pad (dpy, (short *) *prop, netbytes); - break; - - case 32: - nbytes = rep.nItems * sizeof (long); - netbytes = rep.nItems << 2; - if (nbytes + 1 > 0 && - (*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1))) - _XRead32 (dpy, (long *) *prop, netbytes); - break; - - default: - /* - * This part of the code should never be reached. If it is, - * the server sent back a property with an invalid format. - */ - _XEatData(dpy, (unsigned long) netbytes); - UnlockDisplay(dpy); - SyncHandle(); - return(BadImplementation); - } - if (! *prop) { - _XEatData(dpy, (unsigned long) netbytes); - UnlockDisplay(dpy); - SyncHandle(); - return(BadAlloc); - } - (*prop)[nbytes] = '\0'; - } - - *actual_type = rep.propertyType; - *actual_format = rep.format; - *nitems = rep.nItems; - *bytes_after = rep.bytesAfter; - UnlockDisplay (dpy); - SyncHandle (); - - return Success; -} |