open-src/lib/libX11/sun-src/src/XInteractive.c
author Alan Coopersmith <Alan.Coopersmith@Sun.COM>
Tue, 02 Mar 2010 13:31:46 -0800
changeset 919 425233ae7236
parent 907 3c35d611cdaa
child 943 294f64612d23
permissions -rw-r--r--
6931307 Standardize Sun copyright & license notices in X gate on current format
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
341
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     1
/*
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     2
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
919
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
     3
 * Use is subject to license terms.
341
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     4
 *
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     5
 * Permission is hereby granted, free of charge, to any person obtaining a
919
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
     6
 * copy of this software and associated documentation files (the "Software"),
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
     7
 * to deal in the Software without restriction, including without limitation
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
     8
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
     9
 * and/or sell copies of the Software, and to permit persons to whom the
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    10
 * Software is furnished to do so, subject to the following conditions:
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    11
 *
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    12
 * The above copyright notice and this permission notice (including the next
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    13
 * paragraph) shall be included in all copies or substantial portions of the
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    14
 * Software.
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    15
 *
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    17
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    18
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    19
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    20
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    21
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    22
 * DEALINGS IN THE SOFTWARE.
341
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    23
 */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    24
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    25
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    26
/*
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    27
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    28
	Client side XIA extension code.
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    29
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    30
	One can XSolarisIASetProceesInfo or XIASolarisGetProceesInfo.
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    31
	Currently only passing process ids is supported.
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    32
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    33
	Of course QueryVersion and QueryExtension are supported.
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    34
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    35
	No support for error messages is involved. Yet. If this
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    36
	interface becomes public this will need to be rewhacked
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    37
 */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    38
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    39
/* THIS IS NOT AN X CONSORTIUM STANDARD */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    40
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    41
#define NEED_EVENTS
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    42
#define NEED_REPLIES
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    43
#include <unistd.h>
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    44
#include <stdio.h>
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    45
#include <X11/Xlibint.h>
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    46
#include <X11/extensions/interactive.h>
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    47
#include <X11/extensions/Xext.h>
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    48
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    49
#ifdef IA_USE_EXTUTIL
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    50
#include <X11/extensions/extutil.h>
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    51
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    52
static XExtensionInfo	_ia_info_data;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    53
static XExtensionInfo	*ia_info = &_ia_info_data;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    54
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    55
static /* const */ char	*ia_extension_name = IANAME;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    56
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    57
#define IACheckExtension(dpy,i,val) \
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    58
  XextCheckExtension (dpy, i, ia_extension_name, val)
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    59
#else
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    60
typedef struct _IAExtDisplayInfo {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    61
  Display *display;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    62
  XExtCodes *codes;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    63
  struct _IAExtDisplayInfo *next;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    64
} IAExtDisplayInfo;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    65
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    66
static IAExtDisplayInfo *iaExtDisplayList = NULL;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    67
static const char *ia_extension_name = IANAME;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    68
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    69
#define XExtDisplayInfo IAExtDisplayInfo
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    70
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    71
#define XextHasExtension(i)  (((i) != NULL) && ((i)->codes != NULL))
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    72
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    73
#define IACheckExtension(dpy,i,val) \
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    74
    if (!XextHasExtension(i)) { \
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    75
        /* XMissingExtension (dpy, ia_extension_name); */ \
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    76
	return val; \
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    77
    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    78
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    79
#endif /* IA_USE_EXTUTIL */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    80
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    81
/*****************************************************************************
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    82
 *                                                                           *
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    83
 *			   private utility routines                          *
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    84
 *                                                                           *
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    85
 *****************************************************************************/
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    86
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    87
#ifdef IA_USE_EXTUTIL
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    88
static int close_display();
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    89
static char *error_string();
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    90
static /* const */ XExtensionHooks ia_extension_hooks = {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    91
    NULL,				/* create_gc */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    92
    NULL,				/* copy_gc */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    93
    NULL,				/* flush_gc */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    94
    NULL,				/* free_gc */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    95
    NULL,				/* create_font */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    96
    NULL,				/* free_font */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    97
    close_display,			/* close_display */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    98
    NULL,				/* wire_to_event */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    99
    NULL,				/* event_to_wire */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   100
    NULL,				/* error */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   101
    error_string,			/* error_string */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   102
};
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   103
#endif
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   104
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   105
static const char *ia_error_list[] = {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   106
    "BadPid",			/* Bad process id */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   107
};
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   108
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   109
#ifdef IA_USE_EXTUTIL
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   110
static XEXT_GENERATE_FIND_DISPLAY (find_display, ia_info, ia_extension_name, 
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   111
				   &ia_extension_hooks, IANumberEvents, NULL)
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   112
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   113
static XEXT_GENERATE_CLOSE_DISPLAY (close_display, ia_info)
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   114
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   115
static XEXT_GENERATE_ERROR_STRING (error_string, ia_extension_name,
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   116
				   IANumberErrors, ia_error_list)
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   117
#else
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   118
static int ia_close_display(Display *dpy, XExtCodes *codes)
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   119
{
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   120
    IAExtDisplayInfo *di, *prev, *next;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   121
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   122
    for (di = iaExtDisplayList, prev = NULL; di != NULL; di = next) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   123
	next = di->next;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   124
	if (di->display == dpy) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   125
	    if (prev != NULL) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   126
		prev->next = di->next;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   127
	    } else {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   128
		iaExtDisplayList = di->next;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   129
	    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   130
	    Xfree(di);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   131
	} else {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   132
	    prev = di;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   133
	}
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   134
    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   135
    return Success;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   136
}
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   137
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   138
static char *ia_error_string (Display *dpy, int err, XExtCodes *codes,
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   139
			      char *buf, int nbytes) 
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   140
{
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   141
    err -= codes->first_error;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   142
    if (err >= 0 && err < IANumberErrors) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   143
        char tmp[256];
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   144
        snprintf (tmp, sizeof(tmp), "%s.%d", ia_extension_name, err);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   145
        XGetErrorDatabaseText (dpy, "XProtoError", tmp, ia_error_list[err], 
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   146
			       buf, nbytes);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   147
        return buf;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   148
    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   149
    return NULL;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   150
}
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   151
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   152
static IAExtDisplayInfo *ia_find_display(Display *dpy) 
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   153
{
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   154
    IAExtDisplayInfo *di;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   155
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   156
    for (di = iaExtDisplayList ; di != NULL; di = di->next) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   157
	if (di->display == dpy) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   158
	    return di;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   159
	}
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   160
    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   161
    /* Did not find on list, add new entry */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   162
    di = (IAExtDisplayInfo *) Xmalloc(sizeof(IAExtDisplayInfo));
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   163
    if (di == NULL) { return NULL; }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   164
    di->display = dpy;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   165
    di->codes = XInitExtension(dpy, ia_extension_name);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   166
    di->next = iaExtDisplayList;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   167
    iaExtDisplayList = di;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   168
    XESetCloseDisplay(dpy, di->codes->extension, ia_close_display);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   169
    XESetErrorString(dpy, di->codes->extension, ia_error_string);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   170
    return di;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   171
}
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   172
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   173
#define find_display ia_find_display
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   174
#endif /* IA_USE_EXTUTIL */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   175
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   176
/*****************************************************************************
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   177
 *                                                                           *
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   178
 *		    public Interactive Extension routines                  *
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   179
 *                                                                           *
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   180
 *****************************************************************************/
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   181
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   182
Bool
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   183
XSolarisIAQueryExtension(
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   184
    Display		*dpy
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   185
)
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   186
{
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   187
    XExtDisplayInfo	*info = find_display(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   188
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   189
    if (XextHasExtension(info)) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   190
	return True;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   191
     } else {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   192
	return False;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   193
    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   194
}
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   195
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   196
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   197
Bool
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   198
XSolarisIAQueryVersion(
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   199
    Display			*dpy,
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   200
    int				*majorVersion,
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   201
    int				*minorVersion
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   202
)
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   203
{
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   204
    XExtDisplayInfo		*info = find_display(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   205
    xIAQueryVersionReply	 rep;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   206
    xIAQueryVersionReq		*req;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   207
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   208
    IACheckExtension(dpy, info, False);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   209
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   210
    LockDisplay(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   211
    GetReq(IAQueryVersion, req);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   212
    req->reqType   = info->codes->major_opcode;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   213
    req->IAReqType = X_IAQueryVersion;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   214
    if (!_XReply(dpy, (xReply *)(&rep), 0, xFalse)) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   215
	UnlockDisplay(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   216
	SyncHandle();
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   217
	return False;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   218
    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   219
    *majorVersion = rep.majorVersion;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   220
    *minorVersion = rep.minorVersion;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   221
    UnlockDisplay(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   222
    SyncHandle();
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   223
    return True;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   224
}
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   225
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   226
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   227
Bool
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   228
XSolarisIAGetProcessInfo(
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   229
    Display				*dpy,
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   230
    unsigned char		       **Pinfo,
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   231
    CARD32				 flags,
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   232
    int					*count
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   233
)
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   234
{
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   235
    XExtDisplayInfo			*info = find_display(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   236
    xIAGetProcessInfoReq		*req;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   237
    xIAGetProcessInfoReply		 rep;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   238
    long				 length = 0;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   239
 
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   240
    IACheckExtension(dpy, info, False);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   241
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   242
    *Pinfo = NULL;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   243
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   244
    LockDisplay(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   245
    GetReq(IAGetProcessInfo, req);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   246
    req->reqType            = info->codes->major_opcode;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   247
    req->connectionAttrType = X_IAGetProcessInfo;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   248
    req->flags              = flags;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   249
    if (!_XReply(dpy, (xReply *)(&rep), 0, xFalse)) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   250
	UnlockDisplay(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   251
	SyncHandle();
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   252
	return False;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   253
    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   254
    *count = rep.count;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   255
    *Pinfo = (unsigned char *)Xmalloc((rep.count) * sizeof(ConnectionPidRec));
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   256
    if (*Pinfo == NULL) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   257
            UnlockDisplay(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   258
            SyncHandle();
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   259
            return False;   /* not Success */
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   260
    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   261
    length = rep.count << 2;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   262
    _XRead32(dpy, (long *)(*Pinfo), length);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   263
    UnlockDisplay(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   264
    SyncHandle();
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   265
    return True;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   266
}
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   267
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   268
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   269
Bool
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   270
XSolarisIASetProcessInfo(
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   271
    Display				*dpy,
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   272
    unsigned char			*Pinfo,
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   273
    CARD32				 flags,
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   274
    CARD32				 count
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   275
)
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   276
{
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   277
    XExtDisplayInfo			*info = find_display(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   278
    xIASetProcessInfoReq		*req;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   279
    unsigned long			length;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   280
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   281
    IACheckExtension(dpy, info, False);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   282
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   283
    LockDisplay(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   284
    GetReq(IASetProcessInfo, req);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   285
    req->reqType            = info->codes->major_opcode;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   286
    req->connectionAttrType = X_IASetProcessInfo;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   287
    req->flags              = flags;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   288
    req->length            += count;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   289
    req->uid                = (CARD32)getuid();
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   290
    if (flags & INTERACTIVE_INFO) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   291
        length=count << 2;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   292
	Data32(dpy, (long *)Pinfo, length);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   293
    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   294
    if (flags & INTERACTIVE_SETTING) {
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   295
        length = count << 2;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   296
	Data32(dpy, (long *)Pinfo, length);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   297
    }
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   298
    UnlockDisplay(dpy);
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   299
    SyncHandle();
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   300
    return True;
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   301
}
0a1eb61fd56e 6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   302