open-src/lib/libXext/sun-src/src/XPanoramiX.c
author Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
Wed, 28 Apr 2010 18:08:17 -0700
changeset 943 294f64612d23
parent 919 425233ae7236
child 1377 74e8a5844513
permissions -rw-r--r--
6948254 Mass update of X gate sources to Oracle copyright format
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
******************************************************************/
943
294f64612d23 6948254 Mass update of X gate sources to Oracle copyright format
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 919
diff changeset
    29
/* Copyright (c) 1999, 2008, 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
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    73
static int close_display();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    74
static Bool wire_to_event();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    75
static Status event_to_wire();
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
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   139
Bool XPanoramiXQueryExtension (dpy, event_basep, error_basep)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   140
    Display *dpy;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   141
    int *event_basep, *error_basep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   142
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   143
    XExtDisplayInfo *info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   144
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   145
    if (XextHasExtension(info)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   146
	*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
   147
	*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
   148
	return True;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   149
    } else {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   150
	return False;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   151
    }
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
Status XPanoramiXQueryVersion(dpy, major_versionp, minor_versionp)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   156
    Display *dpy;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   157
    int	    *major_versionp, *minor_versionp;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   158
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   159
    XExtDisplayInfo *info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   160
    xPanoramiXQueryVersionReply	    rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   161
    register xPanoramiXQueryVersionReq  *req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   162
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   163
#ifdef SUNSOFT
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   164
    struct XineramaExtVersionInfo	*vinfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   165
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   166
    if (info->data != NULL) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   167
	vinfo = (struct XineramaExtVersionInfo *) info->data;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   168
	
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   169
	*major_versionp = vinfo->major_vers;	
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   170
	*minor_versionp = vinfo->minor_vers;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   171
	return 1;	
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   172
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   173
#endif
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
    PanoramiXCheckExtension (dpy, info, 0);
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
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   178
    GetReq (PanoramiXQueryVersion, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   179
    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
   180
    req->panoramiXReqType = X_PanoramiXQueryVersion;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   181
    req->clientMajor = PANORAMIX_MAJOR_VERSION;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   182
    req->clientMinor = PANORAMIX_MINOR_VERSION;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   183
    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
   184
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   185
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   186
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   187
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   188
    *major_versionp = rep.majorVersion;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   189
    *minor_versionp = rep.minorVersion;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   190
#ifdef SUNSOFT /* Cache version info */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   191
    vinfo = Xmalloc(sizeof(struct XineramaExtVersionInfo));
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   192
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   193
    if (vinfo != NULL) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   194
	vinfo->major_vers = rep.majorVersion;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   195
	vinfo->minor_vers = rep.minorVersion;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   196
	info->data = (XPointer) vinfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   197
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   198
#endif    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   199
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   200
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   201
    return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   202
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   203
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   204
XPanoramiXInfo *XPanoramiXAllocInfo()
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   205
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   206
	return (XPanoramiXInfo *) Xmalloc (sizeof (XPanoramiXInfo));
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
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   209
Status XPanoramiXGetState (dpy, drawable, panoramiX_info)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   210
    Display		*dpy;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   211
    Drawable		drawable;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   212
    XPanoramiXInfo	*panoramiX_info	;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   213
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   214
    XExtDisplayInfo			*info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   215
    xPanoramiXGetStateReply	rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   216
    register xPanoramiXGetStateReq	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   217
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   218
    PanoramiXCheckExtension (dpy, info, 0);
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
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   221
    GetReq (PanoramiXGetState, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   222
    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
   223
    req->panoramiXReqType = X_PanoramiXGetState;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   224
    req->window = drawable;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   225
    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
   226
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   227
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   228
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   229
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   230
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   231
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   232
    panoramiX_info->window = rep.window;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   233
    panoramiX_info->State = rep.state;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   234
    return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   235
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   236
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   237
Status XPanoramiXGetScreenCount (dpy, drawable, panoramiX_info)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   238
    Display		*dpy;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   239
    Drawable		drawable;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   240
    XPanoramiXInfo	*panoramiX_info	;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   241
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   242
    XExtDisplayInfo			*info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   243
    xPanoramiXGetScreenCountReply	rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   244
    register xPanoramiXGetScreenCountReq	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   245
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   246
    PanoramiXCheckExtension (dpy, info, 0);
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
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   249
    GetReq (PanoramiXGetScreenCount, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   250
    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
   251
    req->panoramiXReqType = X_PanoramiXGetScreenCount;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   252
    req->window = drawable;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   253
    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
   254
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   255
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   256
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   257
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   258
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   259
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   260
    panoramiX_info->window = rep.window;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   261
    panoramiX_info->ScreenCount = rep.ScreenCount;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   262
    return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   263
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   264
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   265
Status XPanoramiXGetScreenSize (dpy, drawable, screen_num, panoramiX_info)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   266
    Display		*dpy;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   267
    Drawable		drawable;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   268
    int			screen_num;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   269
    XPanoramiXInfo	*panoramiX_info	;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   270
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   271
    XExtDisplayInfo			*info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   272
    xPanoramiXGetScreenSizeReply	rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   273
    register xPanoramiXGetScreenSizeReq	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   274
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   275
    PanoramiXCheckExtension (dpy, info, 0);
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
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   278
    GetReq (PanoramiXGetScreenSize, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   279
    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
   280
    req->panoramiXReqType = X_PanoramiXGetScreenSize;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   281
    req->window = drawable;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   282
    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
   283
    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
   284
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   285
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   286
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   287
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   288
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   289
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   290
    panoramiX_info->window = rep.window;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   291
    panoramiX_info->screen = rep.screen;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   292
    panoramiX_info->width =  rep.width;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   293
    panoramiX_info->height = rep.height;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   294
    return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   295
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   296
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
/* new api for xinerama */
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
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
   301
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   302
    XExtDisplayInfo	 *info = find_display (display);
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
    /* 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
   305
       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
   306
       one server */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   307
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   308
    if(screen_number) 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   309
	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
   310
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   311
    if(!XextHasExtension(info)) 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   312
	return False;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   313
    else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   314
    {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   315
	int maj, min;
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
	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
   318
	    return False;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   319
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   320
	if ((maj == 1) && (min >= 0)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   321
	    return XineramaIsActive(display);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   322
	} else {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   323
    	    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
   324
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   325
    }
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
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
   329
	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
   330
	num_framebuffers )
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   331
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   332
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   333
    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
   334
    int	i;			/* fortran */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   335
    Window	win;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   336
    int x = 0, y = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   337
    int maj, min;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   338
    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   339
    if(!XineramaGetState(display, screen_number))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   340
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   341
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   342
    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
   343
	return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   344
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   345
    if ((maj == 1) && (min >= 0)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   346
	/* Use XFree86/Xorg extended protocol */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   347
	XineramaScreenInfo	*xsi;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   348
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   349
	xsi = XineramaQueryScreens(display, &framebuffercount);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   350
	if (xsi == NULL || framebuffercount == 0) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   351
	    return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   352
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   353
	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
   354
	    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
   355
	    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
   356
	    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
   357
	    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
   358
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   359
	XFree(xsi);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   360
    } else {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   361
	/* Use Sun extended protocol */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   362
	XPanoramiXInfo	panoramiX_info;	
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   363
	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
   364
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   365
	/* 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
   366
	   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
   367
	   working surface */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   368
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   369
	win = 0;
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
	XPanoramiXGetScreenCount(display, win, &panoramiX_info);
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
	if(!panoramiX_info.ScreenCount) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   374
	    return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   375
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   376
	framebuffercount = panoramiX_info.ScreenCount;
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
	/* 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
   379
	   than we expect */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   380
	if (framebuffercount > MAXSCREEN)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   381
	    framebuffercount = MAXSCREEN;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   382
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   383
	info = malloc(sizeof(XineramaInfo));
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
	if(!info)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   386
	    return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   387
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   388
	/* 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
   389
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   390
	if(!XGetXineramaInfo(display,screen_number, 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   391
		(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
   392
	{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   393
		free(info);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   394
		return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   395
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   396
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
	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
   399
	{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   400
		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
   401
		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
   402
		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
   403
		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
   404
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   405
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   406
	free(info);
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
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   409
    *num_framebuffers = framebuffercount;
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
    /* 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
   412
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   413
    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
   414
    {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   415
	framebuffer_hints[i] = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   416
	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
   417
	{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   418
	    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
   419
		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
   420
		    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
   421
	    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   422
	    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
   423
		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
   424
		    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
   425
		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
   426
		    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
   427
	    } 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
   428
		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
   429
		    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
   430
	    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   431
	}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   432
	x = framebuffer_rects[i].x;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   433
	y = framebuffer_rects[i].y;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   434
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   435
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   436
    return framebuffercount;
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
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   439
Bool
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   440
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
   441
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   442
    xXineramaInfoReq 	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   443
    xXineramaInfoReply 	*rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   444
    XExtDisplayInfo *Extinfo = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   445
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   446
    if(!XineramaGetState(dpy, screen_number))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   447
	return False;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   448
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   449
    rep = malloc(sizeof(xXineramaInfoReply));
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
    LockDisplay(dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   452
    GetReq(XineramaInfo, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   453
    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
   454
    req->xXineramaReqType = X_XineramaInfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   455
    req->visual = VirtualWID;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   456
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   457
    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
   458
,
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   459
        xFalse))
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
        UnlockDisplay(dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   462
        SyncHandle();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   463
        Xfree(rep);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   464
        return NULL;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   465
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   466
    info->wid = VirtualWID;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   467
    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
   468
    UnlockDisplay(dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   469
    SyncHandle();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   470
    free(rep);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   471
    return 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   472
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   473
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   474
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
   475
				int* xret, int* yret)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   476
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   477
   int x = -1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   478
   int y = -1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   479
   int fb = -1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   480
   int fbs;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   481
   XrmDatabase xrdb;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   482
   XrmValue value;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   483
   char* vtype;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   484
   char buffer[20];
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   485
   XRectangle rects[MAXSCREEN];
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   486
   unsigned char hints[MAXSCREEN];
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   487
   Bool xiGetState, xiGetInfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   488
   long n;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   489
    
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   490
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   491
   if (screen_number)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   492
      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
   493
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   494
   xiGetState = XineramaGetState(display, screen_number);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   495
   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
   496
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   497
   if (xrdb = XrmGetDatabase(display))
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 (XrmGetResource(xrdb, "xineramaDefaultFramebuffer",
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   500
		"XineramaDefaultFramebuffer", &vtype, &value))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   501
      {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   502
	  if (value.size < sizeof(buffer)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   503
	      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
   504
	      buffer[value.size] = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   505
	      errno = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   506
	      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
   507
	      if ( ! ((n == 0) && (errno == EINVAL)) )
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   508
		  fb = n;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   509
	  }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   510
      }
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
      if (!xiGetState || !xiGetInfo)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   513
	 fbs = 1;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   514
      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
   515
      {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   516
         if (XrmGetResource(xrdb, "xineramaCenterHintX", "XineramaCenterHintX",
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   517
		   &vtype, &value))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   518
         {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   519
	     if (value.size < sizeof(buffer)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   520
		 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
   521
		 buffer[value.size] = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   522
		 errno = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   523
		 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
   524
		 if ( ! ((n == 0) && (errno == EINVAL)) )
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   525
		     x = n;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   526
	     }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   527
         }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   528
         if (XrmGetResource(xrdb, "xineramaCenterHintY", "XineramaCenterHintY",
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   529
		   &vtype, &value))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   530
         {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   531
	     if (value.size < sizeof(buffer)) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   532
		 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
   533
		 buffer[value.size] = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   534
		 errno = 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   535
		 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
   536
		 if ( ! ((n == 0) && (errno == EINVAL)) )
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   537
		     y = n;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   538
	     }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   539
         }
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
   if (!xiGetState)
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
      /* 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
   546
      /* (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
   547
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   548
      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
   549
      {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   550
         *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
   551
         *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
   552
      }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   553
      else
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
         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
   556
            *xret = x;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   557
         else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   558
            *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
   559
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   560
         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
   561
            *yret = y;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   562
         else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   563
            *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
   564
      }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   565
   }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   566
   else
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
      /* 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
   569
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   570
      if (!xiGetInfo)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   571
         return 0;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   572
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   573
      if ((fb > -1) && (fb < fbs))  /* if fb has a legal value */
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   574
      {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   575
         *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
   576
         *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
   577
      }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   578
      else
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
         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
   581
            *xret = x;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   582
         else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   583
            *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
   584
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   585
         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
   586
            *yret = y;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   587
         else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   588
            *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
   589
      }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   590
   }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   591
   return 1;
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
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   594
/**** 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
   595
      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
   596
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   597
/*******************************************************************\
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   598
  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
   599
  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
   600
  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
   601
\*******************************************************************/
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   602
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   603
static
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   604
Bool XineramaIsActive(Display *dpy)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   605
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   606
    xXineramaIsActiveReply	rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   607
    xXineramaIsActiveReq  	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   608
    XExtDisplayInfo 		*info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   609
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   610
    if(!XextHasExtension(info))
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   611
	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
   612
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   613
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   614
    GetReq (XineramaIsActive, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   615
    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
   616
    req->panoramiXReqType = X_XineramaIsActive;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   617
    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
   618
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   619
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   620
	return False;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   621
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   622
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   623
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   624
    return rep.state;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   625
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   626
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   627
static
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   628
XineramaScreenInfo * 
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   629
XineramaQueryScreens(
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   630
   Display *dpy,
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   631
   int     *number
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   632
)
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   633
{
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   634
    XExtDisplayInfo		*info = find_display (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   635
    xXineramaQueryScreensReply	rep;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   636
    xXineramaQueryScreensReq	*req;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   637
    XineramaScreenInfo		*scrnInfo = NULL;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   638
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   639
    PanoramiXCheckExtension (dpy, info, 0);
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
    LockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   642
    GetReq (XineramaQueryScreens, req);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   643
    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
   644
    req->panoramiXReqType = X_XineramaQueryScreens;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   645
    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
   646
	UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   647
	SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   648
	return NULL;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   649
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   650
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   651
    if(rep.number) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   652
	if((scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * rep.number))) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   653
	    xXineramaScreenInfo scratch;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   654
	    int i;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   655
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   656
	    for(i = 0; i < rep.number; i++) {
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   657
		_XRead(dpy, (char*)(&scratch), sz_XineramaScreenInfo);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   658
		scrnInfo[i].screen_number = i;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   659
		scrnInfo[i].x_org 	  = scratch.x_org;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   660
		scrnInfo[i].y_org 	  = scratch.y_org;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   661
		scrnInfo[i].width 	  = scratch.width;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   662
		scrnInfo[i].height 	  = scratch.height;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   663
	    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   664
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   665
	    *number = rep.number;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   666
	} else
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   667
	    _XEatData(dpy, rep.length << 2);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   668
    }
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   669
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   670
    UnlockDisplay (dpy);
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   671
    SyncHandle ();
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   672
    return scrnInfo;
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   673
}
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   674
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   675
7b72d11c8c92 6674738 X modularization: libXext, libXevie & libXss [PSARC/2008/194]
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   676