open-src/lib/libXext/sun-src/src/XPanoramiX.c
author Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
Wed, 19 Aug 2015 17:35:59 -0700
changeset 1568 f85b5a8a5c43
parent 1515 e2b80dc10eaa
permissions -rw-r--r--
21661553 Reduce parfait warnings in X builds
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     1
/* $TOG: XPanoramiX.c /main/2 1997/11/16 08:45:41 kaleb $ */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     2
/*****************************************************************
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     3
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     4
Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     5
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     6
Permission is hereby granted, free of charge, to any person obtaining a copy
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     7
of this software and associated documentation files (the "Software"), to deal
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     8
in the Software without restriction, including without limitation the rights
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     9
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    10
copies of the Software.
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    11
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    12
The above copyright notice and this permission notice shall be included in
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    13
all copies or substantial portions of the Software.
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    14
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    15
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    16
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    17
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    18
DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    19
BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    20
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    21
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    22
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    23
Except as contained in this notice, the name of Digital Equipment Corporation 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    24
shall not be used in advertising or otherwise to promote the sale, use or other
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    25
dealings in this Software without prior written authorization from Digital 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    26
Equipment Corporation.
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    27
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    28
******************************************************************/
1515
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
    29
/* Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    30
 *
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    31
 * 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: 366
diff changeset
    32
 * 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: 366
diff changeset
    33
 * 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: 366
diff changeset
    34
 * 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: 366
diff changeset
    35
 * 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: 366
diff changeset
    36
 * Software is furnished to do so, subject to the following conditions:
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    37
 *
919
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 366
diff changeset
    38
 * 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: 366
diff changeset
    39
 * 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: 366
diff changeset
    40
 * Software.
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    41
 *
919
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 366
diff changeset
    42
 * 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: 366
diff changeset
    43
 * 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: 366
diff changeset
    44
 * 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: 366
diff changeset
    45
 * 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: 366
diff changeset
    46
 * 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: 366
diff changeset
    47
 * 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: 366
diff changeset
    48
 * DEALINGS IN THE SOFTWARE.
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    49
 */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    50
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    51
#define NEED_EVENTS
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    52
#define NEED_REPLIES
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    53
#include <X11/Xlibint.h>
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    54
#include <X11/Xutil.h>
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    55
#include <X11/Xresource.h>
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    56
#include <X11/extensions/Xext.h>
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    57
#include <X11/extensions/extutil.h>
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    58
#include <X11/extensions/panoramiXext.h>
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    59
#include <X11/extensions/panoramiXproto.h>
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    60
#include <X11/extensions/xinerama.h>
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    61
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    62
Bool XGetXineramaInfo(Display *dpy, int screen_number, XID VirtualWID, XineramaInfo *info);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    63
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    64
static XExtensionInfo _panoramiX_ext_info_data;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    65
static XExtensionInfo *panoramiX_ext_info = &_panoramiX_ext_info_data;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    66
static /* const */ char *panoramiX_extension_name = PANORAMIX_PROTOCOL_NAME;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    67
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    68
#define PanoramiXCheckExtension(dpy,i,val) \
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    69
  XextCheckExtension (dpy, i, panoramiX_extension_name, val)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    70
#define PanoramiXSimpleCheckExtension(dpy,i) \
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    71
  XextSimpleCheckExtension (dpy, i, panoramiX_extension_name)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    72
1515
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
    73
static int close_display(Display *dpy, XExtCodes *codes);
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
    74
static Bool wire_to_event(Display *dpy, XEvent *libevent, xEvent *netevent);
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
    75
static Status event_to_wire(Display *dpy, XEvent *libevent, xEvent *netevent);
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    76
static /* const */ XExtensionHooks panoramiX_extension_hooks = {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    77
    NULL,				/* create_gc */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    78
    NULL,				/* copy_gc */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    79
    NULL,				/* flush_gc */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    80
    NULL,				/* free_gc */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    81
    NULL,				/* create_font */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    82
    NULL,				/* free_font */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    83
    close_display,			/* close_display */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    84
    NULL,				/* wire_to_event */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    85
    NULL,				/* event_to_wire */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    86
    NULL,				/* error */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    87
    NULL,				/* error_string */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    88
};
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    89
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    90
static XEXT_GENERATE_FIND_DISPLAY (find_display, panoramiX_ext_info,
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    91
				   panoramiX_extension_name, 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    92
				   &panoramiX_extension_hooks,
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    93
				   0, NULL)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    94
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    95
static XEXT_GENERATE_CLOSE_DISPLAY (close_display, panoramiX_ext_info)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    96
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    97
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    98
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    99
#ifdef SUNSOFT
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   100
struct XineramaExtVersionInfo
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   101
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   102
    int major_vers, minor_vers;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   103
};
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   104
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   105
/**** Code taken from xc/include/extensions/Xinerama.h in Xorg for
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   106
      compatibility with XFree86 & Xorg protocols ****/
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   107
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   108
static Bool XineramaIsActive(Display *dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   109
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   110
/* 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   111
   Returns the number of heads and a pointer to an array of
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   112
   structures describing the position and size of the individual
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   113
   heads.  Returns NULL and number = 0 if Xinerama is not active.
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   114
  
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   115
   Returned array should be freed with XFree().
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   116
*/
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   117
typedef struct {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   118
   int   screen_number;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   119
   short x_org;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   120
   short y_org;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   121
   short width;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   122
   short height;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   123
} XineramaScreenInfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   124
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   125
static XineramaScreenInfo * 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   126
XineramaQueryScreens(
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   127
   Display *dpy,
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   128
   int     *number
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   129
);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   130
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   131
#endif
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   132
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   133
/****************************************************************************
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   134
 *                                                                          *
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   135
 *			    PanoramiX public interfaces                         *
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   136
 *                                                                          *
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   137
 ****************************************************************************/
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   138
1515
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   139
Bool XPanoramiXQueryExtension (
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   140
    Display *dpy,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   141
    int *event_basep,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   142
    int *error_basep)
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   143
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   144
    XExtDisplayInfo *info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   145
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   146
    if (XextHasExtension(info)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   147
	*event_basep = info->codes->first_event;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   148
	*error_basep = info->codes->first_error;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   149
	return True;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   150
    } else {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   151
	return False;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   152
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   153
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   154
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   155
1515
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   156
Status XPanoramiXQueryVersion(
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   157
    Display *dpy,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   158
    int	    *major_versionp,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   159
    int     *minor_versionp)
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   160
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   161
    XExtDisplayInfo *info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   162
    xPanoramiXQueryVersionReply	    rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   163
    register xPanoramiXQueryVersionReq  *req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   164
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   165
#ifdef SUNSOFT
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   166
    struct XineramaExtVersionInfo	*vinfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   167
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   168
    if (info->data != NULL) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   169
	vinfo = (struct XineramaExtVersionInfo *) info->data;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   170
	
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   171
	*major_versionp = vinfo->major_vers;	
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   172
	*minor_versionp = vinfo->minor_vers;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   173
	return 1;	
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   174
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   175
#endif
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   176
    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   177
    PanoramiXCheckExtension (dpy, info, 0);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   178
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   179
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   180
    GetReq (PanoramiXQueryVersion, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   181
    req->reqType = info->codes->major_opcode;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   182
    req->panoramiXReqType = X_PanoramiXQueryVersion;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   183
    req->clientMajor = PANORAMIX_MAJOR_VERSION;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   184
    req->clientMinor = PANORAMIX_MINOR_VERSION;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   185
    if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   186
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   187
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   188
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   189
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   190
    *major_versionp = rep.majorVersion;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   191
    *minor_versionp = rep.minorVersion;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   192
#ifdef SUNSOFT /* Cache version info */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   193
    vinfo = Xmalloc(sizeof(struct XineramaExtVersionInfo));
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   194
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   195
    if (vinfo != NULL) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   196
	vinfo->major_vers = rep.majorVersion;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   197
	vinfo->minor_vers = rep.minorVersion;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   198
	info->data = (XPointer) vinfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   199
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   200
#endif    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   201
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   202
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   203
    return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   204
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   205
1515
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   206
XPanoramiXInfo *XPanoramiXAllocInfo(void)
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   207
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   208
	return (XPanoramiXInfo *) Xmalloc (sizeof (XPanoramiXInfo));
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   209
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   210
1515
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   211
Status XPanoramiXGetState (
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   212
    Display		*dpy,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   213
    Drawable		drawable,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   214
    XPanoramiXInfo	*panoramiX_info)
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   215
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   216
    XExtDisplayInfo			*info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   217
    xPanoramiXGetStateReply	rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   218
    register xPanoramiXGetStateReq	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   219
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   220
    PanoramiXCheckExtension (dpy, info, 0);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   221
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   222
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   223
    GetReq (PanoramiXGetState, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   224
    req->reqType = info->codes->major_opcode;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   225
    req->panoramiXReqType = X_PanoramiXGetState;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   226
    req->window = drawable;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   227
    if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   228
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   229
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   230
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   231
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   232
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   233
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   234
    panoramiX_info->window = rep.window;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   235
    panoramiX_info->State = rep.state;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   236
    return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   237
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   238
1515
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   239
Status XPanoramiXGetScreenCount (
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   240
    Display		*dpy,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   241
    Drawable		drawable,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   242
    XPanoramiXInfo	*panoramiX_info)
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   243
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   244
    XExtDisplayInfo			*info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   245
    xPanoramiXGetScreenCountReply	rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   246
    register xPanoramiXGetScreenCountReq	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   247
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   248
    PanoramiXCheckExtension (dpy, info, 0);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   249
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   250
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   251
    GetReq (PanoramiXGetScreenCount, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   252
    req->reqType = info->codes->major_opcode;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   253
    req->panoramiXReqType = X_PanoramiXGetScreenCount;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   254
    req->window = drawable;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   255
    if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   256
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   257
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   258
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   259
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   260
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   261
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   262
    panoramiX_info->window = rep.window;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   263
    panoramiX_info->ScreenCount = rep.ScreenCount;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   264
    return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   265
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   266
1515
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   267
Status XPanoramiXGetScreenSize (
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   268
    Display		*dpy,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   269
    Drawable		drawable,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   270
    int			screen_num,
e2b80dc10eaa 20663635 X gate should build C code with -fd flag to warn of ancient K&R C declarations
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1377
diff changeset
   271
    XPanoramiXInfo	*panoramiX_info)
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   272
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   273
    XExtDisplayInfo			*info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   274
    xPanoramiXGetScreenSizeReply	rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   275
    register xPanoramiXGetScreenSizeReq	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   276
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   277
    PanoramiXCheckExtension (dpy, info, 0);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   278
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   279
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   280
    GetReq (PanoramiXGetScreenSize, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   281
    req->reqType = info->codes->major_opcode;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   282
    req->panoramiXReqType = X_PanoramiXGetScreenSize;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   283
    req->window = drawable;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   284
    req->screen = screen_num;			/* need to define */ 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   285
    if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   286
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   287
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   288
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   289
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   290
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   291
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   292
    panoramiX_info->window = rep.window;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   293
    panoramiX_info->screen = rep.screen;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   294
    panoramiX_info->width =  rep.width;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   295
    panoramiX_info->height = rep.height;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   296
    return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   297
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   298
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   299
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   300
/* new api for xinerama */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   301
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   302
Bool XineramaGetState(Display * display, int screen_number)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   303
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   304
    XExtDisplayInfo	 *info = find_display (display);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   305
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   306
    /* screen_number may seem like hyper-bogus stuff, but:
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   307
       it may be possible to have 2 xinerama screen sets on
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   308
       one server */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   309
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   310
    if(screen_number) 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   311
	return False;  /* no no, must say zero */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   312
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   313
    if(!XextHasExtension(info)) 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   314
	return False;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   315
    else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   316
    {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   317
	int maj, min;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   318
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   319
	if (XPanoramiXQueryVersion(display, &maj, &min) == 0) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   320
	    return False;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   321
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   322
	if ((maj == 1) && (min >= 0)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   323
	    return XineramaIsActive(display);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   324
	} else {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   325
    	    return True; /* can't check in 1.0 protocol */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   326
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   327
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   328
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   329
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   330
Status XineramaGetInfo(Display * display, int screen_number, XRectangle *
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   331
	framebuffer_rects, unsigned char * framebuffer_hints, int *
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   332
	num_framebuffers )
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   333
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   334
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   335
    int	framebuffercount;	/* number of fb's we know about */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   336
    int	i;			/* fortran */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   337
    Window	win;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   338
    int x = 0, y = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   339
    int maj, min;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   340
    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   341
    if(!XineramaGetState(display, screen_number))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   342
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   343
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   344
    if (XPanoramiXQueryVersion(display, &maj, &min) == 0) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   345
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   346
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   347
    if ((maj == 1) && (min >= 0)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   348
	/* Use XFree86/Xorg extended protocol */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   349
	XineramaScreenInfo	*xsi;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   350
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   351
	xsi = XineramaQueryScreens(display, &framebuffercount);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   352
	if (xsi == NULL || framebuffercount == 0) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   353
	    return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   354
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   355
	for (i = 0; i < framebuffercount ; i++) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   356
	    framebuffer_rects[i].x 	= xsi[i].x_org;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   357
	    framebuffer_rects[i].y 	= xsi[i].y_org;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   358
	    framebuffer_rects[i].width 	= xsi[i].width;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   359
	    framebuffer_rects[i].height = xsi[i].height;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   360
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   361
	XFree(xsi);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   362
    } else {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   363
	/* Use Sun extended protocol */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   364
	XPanoramiXInfo	panoramiX_info;	
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   365
	XineramaInfo *info;		/* list of screen x,y etc */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   367
	/* get the count of screens that we need to know about 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   368
	   NOTE:  screen_number implies a set of fb's for this
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   369
	   working surface */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   370
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   371
	win = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   372
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   373
	XPanoramiXGetScreenCount(display, win, &panoramiX_info);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   374
    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   375
	if(!panoramiX_info.ScreenCount) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   376
	    return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   377
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   378
	framebuffercount = panoramiX_info.ScreenCount;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   379
    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   380
	/* Make sure not to overflow buffers if X server has more screens
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   381
	   than we expect */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   382
	if (framebuffercount > MAXSCREEN)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   383
	    framebuffercount = MAXSCREEN;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   384
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   385
	info = malloc(sizeof(XineramaInfo));
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   386
    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   387
	if(!info)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   388
	    return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   389
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   390
	/* now read the servers list of frame buffers */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   391
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   392
	if(!XGetXineramaInfo(display,screen_number, 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   393
		(XID)	RootWindow(display,screen_number),info))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   394
	{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   395
		free(info);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   396
		return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   397
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   398
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   399
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   400
	for(i = 0; i < framebuffercount; i++)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   401
	{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   402
		framebuffer_rects[i].x = info->subs[i].dx;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   403
		framebuffer_rects[i].y = info->subs[i].dy;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   404
		framebuffer_rects[i].width = info->subs[i].wdx;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   405
		framebuffer_rects[i].height = info->subs[i].wdy;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   406
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   407
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   408
	free(info);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   409
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   410
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   411
    *num_framebuffers = framebuffercount;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   412
    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   413
    /* assume the start up and list are in the same order */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   414
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   415
    for(i = 0; i < framebuffercount; i++)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   416
    {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   417
	framebuffer_hints[i] = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   418
	if (i > 0) 	/* fb0 never gets a hint */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   419
	{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   420
	    if (framebuffer_rects[i].x > x) { 		/* right */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   421
		if (framebuffer_rects[i].y == y)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   422
		    framebuffer_hints[i] = XINERAMA_PLACE_RIGHT;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   423
	    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   424
	    else if (framebuffer_rects[i].x == x) {	/* up/down */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   425
		if (framebuffer_rects[i].y > y)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   426
		    framebuffer_hints[i] = XINERAMA_PLACE_TOP;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   427
		else if (framebuffer_rects[i].y < y)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   428
		    framebuffer_hints[i] = XINERAMA_PLACE_BOTTOM;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   429
	    } else if (framebuffer_rects[i].x < x) {	/* left */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   430
		if (framebuffer_rects[i].y == y)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   431
		    framebuffer_hints[i] = XINERAMA_PLACE_LEFT;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   432
	    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   433
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   434
	x = framebuffer_rects[i].x;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   435
	y = framebuffer_rects[i].y;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   436
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   437
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   438
    return framebuffercount;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   439
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   440
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   441
Bool
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   442
XGetXineramaInfo(Display *dpy ,int  screen_number,XID VirtualWID,XineramaInfo *info )
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   443
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   444
    xXineramaInfoReq 	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   445
    xXineramaInfoReply 	*rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   446
    XExtDisplayInfo *Extinfo = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   447
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   448
    if(!XineramaGetState(dpy, screen_number))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   449
	return False;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   450
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   451
    rep = malloc(sizeof(xXineramaInfoReply));
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   452
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   453
    LockDisplay(dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   454
    GetReq(XineramaInfo, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   455
    req->reqType = Extinfo->codes->major_opcode;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   456
    req->xXineramaReqType = X_XineramaInfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   457
    req->visual = VirtualWID;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   458
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   459
    if (!_XReply(dpy, (xReply *)rep, (sizeof(xXineramaInfoReply)-32) >> 2
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   460
,
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   461
        xFalse))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   462
    {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   463
        UnlockDisplay(dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   464
        SyncHandle();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   465
        Xfree(rep);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   466
        return NULL;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   467
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   468
    info->wid = VirtualWID;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   469
    memcpy(&info->subs[0],&rep->subs[0],(MAXSCREEN-1) * sizeof(SubWID));
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   470
    UnlockDisplay(dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   471
    SyncHandle();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   472
    free(rep);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   473
    return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   474
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   475
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   476
Status XineramaGetCenterHint(Display* display, int screen_number,
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   477
				int* xret, int* yret)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   478
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   479
   int x = -1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   480
   int y = -1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   481
   int fb = -1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   482
   int fbs;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   483
   XrmDatabase xrdb;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   484
   XrmValue value;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   485
   char* vtype;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   486
   char buffer[20];
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   487
   XRectangle rects[MAXSCREEN];
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   488
   unsigned char hints[MAXSCREEN];
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   489
   Bool xiGetState, xiGetInfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   490
   long n;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   491
    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   492
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   493
   if (screen_number)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   494
      return 0;  /* don't yet support multiple Xinerama screens */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   495
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   496
   xiGetState = XineramaGetState(display, screen_number);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   497
   xiGetInfo = XineramaGetInfo(display, screen_number, rects, hints, &fbs);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   498
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   499
   if (xrdb = XrmGetDatabase(display))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   500
   {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   501
      if (XrmGetResource(xrdb, "xineramaDefaultFramebuffer",
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   502
		"XineramaDefaultFramebuffer", &vtype, &value))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   503
      {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   504
	  if (value.size < sizeof(buffer)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   505
	      strncpy(buffer, value.addr, value.size);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   506
	      buffer[value.size] = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   507
	      errno = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   508
	      n = strtol(buffer, (char **)NULL, 10);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   509
	      if ( ! ((n == 0) && (errno == EINVAL)) )
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   510
		  fb = n;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   511
	  }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   512
      }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   513
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   514
      if (!xiGetState || !xiGetInfo)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   515
	 fbs = 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   516
      if ((fb < 0) || (fb >= fbs)) /* fb value not valid */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   517
      {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   518
         if (XrmGetResource(xrdb, "xineramaCenterHintX", "XineramaCenterHintX",
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   519
		   &vtype, &value))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   520
         {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   521
	     if (value.size < sizeof(buffer)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   522
		 strncpy(buffer, value.addr, value.size);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   523
		 buffer[value.size] = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   524
		 errno = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   525
		 n = strtol(buffer, (char **)NULL, 10);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   526
		 if ( ! ((n == 0) && (errno == EINVAL)) )
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   527
		     x = n;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   528
	     }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   529
         }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   530
         if (XrmGetResource(xrdb, "xineramaCenterHintY", "XineramaCenterHintY",
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   531
		   &vtype, &value))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   532
         {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   533
	     if (value.size < sizeof(buffer)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   534
		 strncpy(buffer, value.addr, value.size);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   535
		 buffer[value.size] = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   536
		 errno = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   537
		 n = strtol(buffer, (char **)NULL, 10);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   538
		 if ( ! ((n == 0) && (errno == EINVAL)) )
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   539
		     y = n;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   540
	     }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   541
         }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   542
      }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   543
   }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   544
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   545
   if (!xiGetState)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   546
   {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   547
      /* Xinerama is not active, so there's only one framebuffer */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   548
      /* (for screen 0). Return appropriate values anyway.       */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   549
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   550
      if (fb == 0) /* assume screen == fb == 0. Code only supports one screen.*/
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   551
      {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   552
         *xret = (WidthOfScreen(ScreenOfDisplay(display, 0))) / 2;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   553
         *yret = (HeightOfScreen(ScreenOfDisplay(display, 0))) / 2;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   554
      }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   555
      else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   556
      {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   557
         if ((x >= 0) && (x < WidthOfScreen(ScreenOfDisplay(display, 0))))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   558
            *xret = x;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   559
         else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   560
            *xret = (WidthOfScreen(ScreenOfDisplay(display, 0))) / 2;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   561
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   562
         if ((y >= 0) && (y < HeightOfScreen(ScreenOfDisplay(display, 0))))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   563
            *yret = y;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   564
         else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   565
            *yret = (HeightOfScreen(ScreenOfDisplay(display, 0))) / 2;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   566
      }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   567
   }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   568
   else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   569
   {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   570
      /* Xinerama is active, so do the right thing. */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   571
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   572
      if (!xiGetInfo)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   573
         return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   574
1568
f85b5a8a5c43 21661553 Reduce parfait warnings in X builds
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1515
diff changeset
   575
      if ((fb >= 0) && (fb < fbs) && (fb < MAXSCREEN))  /* if fb has a legal value */
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   576
      {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   577
         *xret = rects[fb].x + (rects[fb].width / 2);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   578
         *yret = rects[fb].y + (rects[fb].height / 2);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   579
      }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   580
      else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   581
      {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   582
         if ((x >= 0) && (x < WidthOfScreen(ScreenOfDisplay(display, 0))))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   583
            *xret = x;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   584
         else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   585
            *xret = (WidthOfScreen(ScreenOfDisplay(display, 0))) / 2;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   586
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   587
         if ((y >= 0) && (y < HeightOfScreen(ScreenOfDisplay(display, 0))))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   588
            *yret = y;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   589
         else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   590
            *yret = (HeightOfScreen(ScreenOfDisplay(display, 0))) / 2;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   591
      }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   592
   }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   593
   return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   594
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   595
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   596
/**** Code taken from xc/lib/Xinerama/Xinerama.c in Xorg for compatibility with
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   597
      XFree86 & Xorg Xinerama 1.1 protocol ****/
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   598
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   599
/*******************************************************************\
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   600
  Alternate interface to make up for shortcomings in the original,
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   601
  namely, the omission of the screen origin.  The new interface is
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   602
  in the "Xinerama" namespace instead of "PanoramiX".
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   603
\*******************************************************************/
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   604
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   605
static
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   606
Bool XineramaIsActive(Display *dpy)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   607
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   608
    xXineramaIsActiveReply	rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   609
    xXineramaIsActiveReq  	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   610
    XExtDisplayInfo 		*info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   611
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   612
    if(!XextHasExtension(info))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   613
	return False;  /* server doesn't even have the extension */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   614
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   615
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   616
    GetReq (XineramaIsActive, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   617
    req->reqType = info->codes->major_opcode;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   618
    req->panoramiXReqType = X_XineramaIsActive;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   619
    if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   620
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   621
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   622
	return False;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   623
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   624
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   625
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   626
    return rep.state;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   627
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   628
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   629
static
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   630
XineramaScreenInfo * 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   631
XineramaQueryScreens(
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   632
   Display *dpy,
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   633
   int     *number
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   634
)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   635
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   636
    XExtDisplayInfo		*info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   637
    xXineramaQueryScreensReply	rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   638
    xXineramaQueryScreensReq	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   639
    XineramaScreenInfo		*scrnInfo = NULL;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   640
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   641
    PanoramiXCheckExtension (dpy, info, 0);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   642
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   643
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   644
    GetReq (XineramaQueryScreens, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   645
    req->reqType = info->codes->major_opcode;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   646
    req->panoramiXReqType = X_XineramaQueryScreens;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   647
    if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   648
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   649
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   650
	return NULL;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   651
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   652
1377
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   653
    /*
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   654
     * rep.number is a CARD32 so could be as large as 2^32
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   655
     * The X11 protocol limits the total screen size to 64k x 64k,
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   656
     * and no screen can be smaller than a pixel.  While technically
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   657
     * that means we could theoretically reach 2^32 screens, and that's
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   658
     * not even taking overlap into account, Xorg is currently limited
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   659
     * to 16 screens, and few known servers have a much higher limit,
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   660
     * so 1024 seems more than enough to prevent both integer overflow
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   661
     * and insane X server responses causing massive memory allocation.
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   662
     */
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   663
    if ((rep.number > 0) && (rep.number <= 1024))
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   664
	scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * rep.number);
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   665
    if (scrnInfo != NULL) {
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   666
	int i;
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   667
1377
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   668
	for (i = 0; i < rep.number; i++) {
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   669
	    xXineramaScreenInfo scratch;
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   670
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   671
	    _XRead(dpy, (char*)(&scratch), sz_XineramaScreenInfo);
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   672
1377
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   673
	    scrnInfo[i].screen_number = i;
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   674
	    scrnInfo[i].x_org	= scratch.x_org;
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   675
	    scrnInfo[i].y_org	= scratch.y_org;
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   676
	    scrnInfo[i].width	= scratch.width;
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   677
	    scrnInfo[i].height	= scratch.height;
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   678
	}
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   679
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   680
	*number = rep.number;
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   681
    } else {
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   682
	_XEatDataWords(dpy, rep.length);
74e8a5844513 16673783 problem in X11/LIBRARIES
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 943
diff changeset
   683
	*number = 0;
366
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   684
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   685
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   686
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   687
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   688
    return scrnInfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   689
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   690
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   691
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   692