8210776: Upgrade X Window System 6.8.2 to the latest XWD 1.0.7
authorprr
Thu, 08 Nov 2018 10:34:49 -0800
changeset 52542 8c7638601045
parent 52541 7f67b8184ffc
child 52543 3853631e6a07
8210776: Upgrade X Window System 6.8.2 to the latest XWD 1.0.7 Reviewed-by: serb
src/java.desktop/unix/legal/xwd.md
src/java.desktop/unix/legal/xwindows.md
src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c
src/java.desktop/unix/native/libawt_xawt/awt/list.c
src/java.desktop/unix/native/libawt_xawt/awt/list.h
src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c
src/java.desktop/unix/native/libawt_xawt/awt/multiVis.h
src/java.desktop/unix/native/libawt_xawt/awt/robot_common.c
src/java.desktop/unix/native/libawt_xawt/awt/robot_common.h
src/java.desktop/unix/native/libawt_xawt/awt/wsutils.h
test/jdk/java/awt/Window/ShapedAndTranslucentWindows/Common.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.desktop/unix/legal/xwd.md	Thu Nov 08 10:34:49 2018 -0800
@@ -0,0 +1,34 @@
+## xwd v1.0.7
+
+### xwd utility
+<pre>
+
+This is the copyright for the files in src/java.desktop/unix/native/libawt_xawt:
+list.h, multiVis.h, wsutils.h, list.c, multiVis.c
+
+Copyright 1994 Hewlett-Packard Co.
+Copyright 1996, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+</pre>
--- a/src/java.desktop/unix/legal/xwindows.md	Thu Nov 08 12:09:06 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-## X Windows System v6.8.2
-
-### X Windows System License
-<pre>
-
-This is the copyright for the files in src/java.desktop/unix/native/libawt_xawt:
-list.h, multiVis.h, wsutils.h, list.c, multiVis.c
-
-Copyright (c) 1994 Hewlett-Packard Co.
-Copyright (c) 1996 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from the X Consortium.
-
-</pre>
--- a/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c	Thu Nov 08 12:09:06 2018 +0530
+++ b/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c	Thu Nov 08 10:34:49 2018 -0800
@@ -42,13 +42,14 @@
 #include <X11/extensions/XI.h>
 #include <jni.h>
 #include <sizecalc.h>
-#include "robot_common.h"
 #include "canvas.h"
 #include "wsutils.h"
 #include "list.h"
 #include "multiVis.h"
 #include "gtk_interface.h"
 
+#include "java_awt_event_InputEvent.h"
+
 #if defined(__linux__) || defined(MACOSX)
 #include <sys/socket.h>
 #endif
--- a/src/java.desktop/unix/native/libawt_xawt/awt/list.c	Thu Nov 08 12:09:06 2018 +0530
+++ b/src/java.desktop/unix/native/libawt_xawt/awt/list.c	Thu Nov 08 10:34:49 2018 -0800
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,7 +22,6 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-/* $XConsortium: list.c /main/4 1996/10/14 15:03:56 swick $ */
 /** ------------------------------------------------------------------------
         This file contains routines for manipulating generic lists.
         Lists are implemented with a "harness".  In other words, each
@@ -36,16 +36,14 @@
  However, the following notice accompanied the original version of this
  file:
 
-Copyright (c) 1994 Hewlett-Packard Co.
-Copyright (c) 1996  X Consortium
+Copyright 1994 Hewlett-Packard Co.
+Copyright 1996, 1998  The Open Group
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
 
 The above copyright notice and this permission notice shall be included
 in all copies or substantial portions of the Software.
@@ -53,32 +51,28 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
-Except as contained in this notice, the name of the X Consortium shall
+Except as contained in this notice, the name of The Open Group shall
 not be used in advertising or otherwise to promote the sale, use or
 other dealings in this Software without prior written authorization
-from the X Consortium.
+from The Open Group.
 
   ----------------------------------------------------------------------- **/
 
 #include <stdio.h>
 #include <stdlib.h>
+
 #include "list.h"
 
 
 /** ------------------------------------------------------------------------
         Sets the pointers of the specified list to NULL.
     --------------------------------------------------------------------- **/
-#if NeedFunctionPrototypes
 void zero_list(list_ptr lp)
-#else
-void zero_list(lp)
-    list_ptr lp;
-#endif
 {
     lp->next = NULL;
     lp->ptr.item = NULL;
@@ -92,13 +86,7 @@
         and the next pointer in the new node is set to NULL.
         Returns 1 if successful, 0 if the malloc failed.
     -------------------------------------------------------------------- **/
-#if NeedFunctionPrototypes
-int32_t add_to_list(list_ptr lp, void *item)
-#else
-int32_t add_to_list(lp, item)
-    list_ptr lp;
-    void *item;
-#endif
+int add_to_list(list_ptr lp, void *item)
 {
     while (lp->next) {
         lp = lp->next;
@@ -118,11 +106,11 @@
         Creates a new list and sets its pointers to NULL.
         Returns a pointer to the new list.
     -------------------------------------------------------------------- **/
-list_ptr new_list ()
+list_ptr new_list (void)
 {
     list_ptr lp;
 
-    if (lp = (list_ptr) malloc( sizeof( list_item))) {
+    if ((lp = (list_ptr) malloc( sizeof( list_item)))) {
         lp->next = NULL;
         lp->ptr.item = NULL;
     }
@@ -140,38 +128,27 @@
         curr pointer in the new list is the same as in the old list.
         Returns a pointer to the new list head.
     -------------------------------------------------------------------- **/
-#if NeedFunctionPrototypes
-list_ptr dup_list_head(list_ptr lp, int32_t start_at_curr)
-#else
-list_ptr dup_list_head(lp, start_at_curr)
-    list_ptr lp;
-    int32_t start_at_curr;
-#endif
+list_ptr dup_list_head(list_ptr lp, int start_at_curr)
 {
-    list_ptr new_list;
+    list_ptr new_listp;
 
-    if ((new_list = (list_ptr) malloc( sizeof( list_item))) == NULL) {
+    if ((new_listp = (list_ptr) malloc( sizeof( list_item))) == NULL) {
 
         return (list_ptr)NULL;
     }
-    new_list->next = start_at_curr ? lp->ptr.curr : lp->next;
-    new_list->ptr.curr = lp->ptr.curr;
+    new_listp->next = start_at_curr ? lp->ptr.curr : lp->next;
+    new_listp->ptr.curr = lp->ptr.curr;
 
-    return new_list;
+    return new_listp;
 }
 
 
 /** ------------------------------------------------------------------------
         Returns the number of items in the list.
     -------------------------------------------------------------------- **/
-#if NeedFunctionPrototypes
-uint32_t list_length(list_ptr lp)
-#else
-uint32_t list_length(lp)
-    list_ptr lp;
-#endif
+unsigned int list_length(list_ptr lp)
 {
-    uint32_t count = 0;
+    unsigned int count = 0;
 
     while (lp->next) {
         count++;
@@ -191,13 +168,7 @@
         Returns a pointer to the item, so the caller can free it if it
         so desires.  If a match is not found, returns NULL.
     -------------------------------------------------------------------- **/
-#if NeedFunctionPrototypes
 void *delete_from_list(list_ptr lp, void *item)
-#else
-void *delete_from_list(lp, item)
-    list_ptr lp;
-    void *item;
-#endif
 {
     list_ptr new_next;
 
@@ -222,13 +193,7 @@
         with new_list().  If free_items is true, each item pointed to
         from the node is freed, in addition to the node itself.
     -------------------------------------------------------------------- **/
-#if NeedFunctionPrototypes
-void delete_list(list_ptr lp, int32_t free_items)
-#else
-void delete_list(lp, free_items)
-    list_ptr lp;
-    int32_t free_items;
-#endif
+void delete_list(list_ptr lp, int free_items)
 {
     list_ptr del_node;
     void *item;
@@ -244,13 +209,7 @@
     }
 }
 
-#if NeedFunctionPrototypes
 void delete_list_destroying(list_ptr lp, void destructor(void *item))
-#else
-void delete_list_destroying(lp, destructor)
-    list_ptr lp;
-    void (*destructor)();
-#endif
 {
     list_ptr del_node;
     void *item;
@@ -272,12 +231,7 @@
         Sets the list head node's curr ptr to the first node in the list.
         Returns NULL if the list is empty.
     -------------------------------------------------------------------- **/
-#if NeedFunctionPrototypes
 void * first_in_list(list_ptr lp)
-#else
-void * first_in_list(lp)
-    list_ptr lp;
-#endif
 {
     if (! lp) {
 
@@ -294,12 +248,7 @@
         first_in_list must have been called prior.
         Returns NULL if no next item.
     -------------------------------------------------------------------- **/
-#if NeedFunctionPrototypes
 void * next_in_list(list_ptr lp)
-#else
-void * next_in_list(lp)
-    list_ptr lp;
-#endif
 {
     if (! lp) {
 
@@ -312,12 +261,8 @@
     return lp->ptr.curr ? lp->ptr.curr->ptr.item : NULL;
 }
 
-#if NeedFunctionPrototypes
-int32_t list_is_empty(list_ptr lp)
-#else
-int32_t list_is_empty(lp)
-    list_ptr lp;
-#endif
+int list_is_empty(list_ptr lp)
 {
     return (lp == NULL || lp->next == NULL);
 }
+
--- a/src/java.desktop/unix/native/libawt_xawt/awt/list.h	Thu Nov 08 12:09:06 2018 +0530
+++ b/src/java.desktop/unix/native/libawt_xawt/awt/list.h	Thu Nov 08 10:34:49 2018 -0800
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,7 +22,6 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-/* $XConsortium: list.h /main/4 1996/10/14 15:04:04 swick $ */
 /** ------------------------------------------------------------------------
         This file contains routines for manipulating generic lists.
         Lists are implemented with a "harness".  In other words, each
@@ -36,16 +36,14 @@
  However, the following notice accompanied the original version of this
  file:
 
-Copyright (c) 1994 Hewlett-Packard Co.
-Copyright (c) 1996  X Consortium
+Copyright 1994 Hewlett-Packard Co.
+Copyright 1996, 1998  The Open Group
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
 
 The above copyright notice and this permission notice shall be included
 in all copies or substantial portions of the Software.
@@ -53,23 +51,22 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
-Except as contained in this notice, the name of the X Consortium shall
+Except as contained in this notice, the name of The Open Group shall
 not be used in advertising or otherwise to promote the sale, use or
 other dealings in this Software without prior written authorization
-from the X Consortium.
+from The Open Group.
 
     -------------------------------------------------------------------- **/
 
-#include "gdefs.h"
-
 #ifndef LIST_DEF
 #define LIST_DEF
 
+#include <X11/Xfuncproto.h>
 #define LESS    -1
 #define EQUAL   0
 #define GREATER 1
@@ -85,65 +82,41 @@
 } list, list_item, *list_ptr;
 
 typedef void (*DESTRUCT_FUNC_PTR)(
-#if NeedFunctionPrototypes
 void *
-#endif
 );
 
 void zero_list(
-#if NeedFunctionPrototypes
           list_ptr
-#endif
     );
-int32_t add_to_list (
-#if NeedFunctionPrototypes
+int add_to_list (
           list_ptr , void *
-#endif
     );
 list_ptr new_list (
-#if NeedFunctionPrototypes
           void
-#endif
     );
 list_ptr dup_list_head (
-#if NeedFunctionPrototypes
-          list_ptr , int32_t
-#endif
+          list_ptr , int
     );
-uint32_t list_length(
-#if NeedFunctionPrototypes
+unsigned int list_length(
           list_ptr
-#endif
     );
 void *delete_from_list (
-#if NeedFunctionPrototypes
           list_ptr , void *
-#endif
     );
 void delete_list(
-#if NeedFunctionPrototypes
-          list_ptr , int32_t
-#endif
+          list_ptr , int
     );
 void delete_list_destroying (
-#if NeedFunctionPrototypes
           list_ptr , DESTRUCT_FUNC_PTR
-#endif
     );
 void *first_in_list (
-#if NeedFunctionPrototypes
           list_ptr
-#endif
     );
 void *next_in_list (
-#if NeedFunctionPrototypes
           list_ptr
-#endif
     );
-int32_t list_is_empty (
-#if NeedFunctionPrototypes
+int list_is_empty (
           list_ptr
-#endif
     );
 
 #endif
--- a/src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c	Thu Nov 08 12:09:06 2018 +0530
+++ b/src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c	Thu Nov 08 10:34:49 2018 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,7 +22,6 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-/* $XConsortium: multiVis.c /main/4 1996/10/14 15:04:08 swick $ */
 /** ------------------------------------------------------------------------
         This file contains functions to create a list of regions which
         tile a specified window.  Each region contains all visible
@@ -37,16 +36,14 @@
  However, the following notice accompanied the original version of this
  file:
 
-Copyright (c) 1994 Hewlett-Packard Co.
-Copyright (c) 1996  X Consortium
+Copyright 1994 Hewlett-Packard Co.
+Copyright 1996, 1998  The Open Group
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
 
 The above copyright notice and this permission notice shall be included
 in all copies or substantial portions of the Software.
@@ -54,17 +51,18 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
-Except as contained in this notice, the name of the X Consortium shall
+Except as contained in this notice, the name of The Open Group shall
 not be used in advertising or otherwise to promote the sale, use or
 other dealings in this Software without prior written authorization
-from the X Consortium.
+from The Open Group.
 
     ------------------------------------------------------------------------ **/
+
 #include <stdlib.h>
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
@@ -73,20 +71,16 @@
 #include "list.h"
 #include "wsutils.h"
 #include "multiVis.h"
-#include "robot_common.h"
-
-static char *vis_class_str[] = { "StaticGray" , "GrayScale" , "StaticColor",
-                                 "PseudoColor","TrueColor","DirectColor" } ;
 /* These structures are copied from X11/region.h.  For some reason
- * they're invisible from the outside.*/
-
+ * they're invisible from the outside.
+ */
 typedef struct {
     short x1, x2, y1, y2;
 } myBox, myBOX, myBoxRec, *myBoxPtr;
 
-typedef struct my_XRegion {    /* 64-bit: Region is supposed to be opaque    */
-    long size;                 /* but it is defined here anyway.  I'm going  */
-    long numRects;             /* to leave those longs alone.                */
+typedef struct my_XRegion {
+    long size;
+    long numRects;
     myBOX *rects;
     myBOX extents;
 } myREGION;
@@ -96,10 +90,10 @@
     Window win;
     Visual *vis;
     Colormap cmap;
-    int32_t x_rootrel, y_rootrel;       /* root relative location of window */
-    int32_t x_vis, y_vis;               /* rt rel x,y of vis part, not parent clipped */
-    int32_t width, height;              /* width and height of visible part */
-    int32_t border_width;               /* border width of the window */
+    int x_rootrel, y_rootrel;   /* root relative location of window */
+    int x_vis, y_vis;           /* rt rel x,y of vis part, not parent clipped */
+    int width, height;          /* width and height of visible part */
+    int border_width;           /* border width of the window */
     Window parent;              /* id of parent (for debugging) */
 } image_win_type;
 
@@ -110,10 +104,10 @@
     Window win;                 /* lowest window of this visual */
     Visual *vis;
     Colormap cmap;
-    int32_t x_rootrel, y_rootrel;       /* root relative location of bottom window */
-    int32_t x_vis, y_vis;               /* rt rel x,y of vis part, not parent clipped */
-    int32_t width, height;              /* w & h of visible rect of bottom window */
-    int32_t border;                     /* border width of the window */
+    int x_rootrel, y_rootrel;   /* root relative location of bottom window */
+    int x_vis, y_vis;           /* rt rel x,y of vis part, not parent clipped */
+    int width, height;          /* w & h of visible rect of bottom window */
+    int border;                 /* border width of the window */
     Region visible_region;
 } image_region_type;
 
@@ -143,77 +137,67 @@
 extern list_ptr dup_list_head();
 extern void *   first_in_list();
 extern void *   next_in_list();
-extern int32_t  add_to_list();
+extern int      add_to_list();
 extern void     zero_list();
 extern void     delete_list();
 extern void     delete_list_destroying();
-extern uint32_t list_length();
+extern unsigned int list_length();
 */
 
 /* Prototype Declarations for Static Functions */
+static void QueryColorMap(
+           Display *, Colormap , Visual *,
+           XColor **, int *, int *, int *
+           );
 static void TransferImage(
-#if NeedFunctionPrototypes
-           Display *, XImage *,int32_t, int32_t , image_region_type*,
-           XImage *,int32_t ,int32_t
-#endif
+           Display *, XImage *,int, int , image_region_type*,
+           XImage *,int ,int
            );
 static XImage * ReadRegionsInList(
-#if NeedFunctionPrototypes
-           Display *, Visual *, int32_t ,int32_t ,int32_t ,
-           int32_t , XRectangle, list_ptr
-#endif
+           Display *, Visual *, int, int, unsigned int,
+           unsigned int, XRectangle, list_ptr
            );
 
 static list_ptr make_region_list(
-#if NeedFunctionPrototypes
                   Display*, Window, XRectangle*,
-                  int32_t*, int32_t, XVisualInfo**, int32_t     *
-#endif
+                  int*, int, XVisualInfo**, int *
          );
 
 static void destroy_region_list(
-#if NeedFunctionPrototypes
             list_ptr
-#endif
             ) ;
 static void subtr_rect_from_image_region(
-#if NeedFunctionPrototypes
-           image_region_type *, int32_t , int32_t , int32_t , int32_t
-#endif
+           image_region_type *, int , int , int , int
      );
 static void add_rect_to_image_region(
-#if NeedFunctionPrototypes
            image_region_type *,
-           int32_t , int32_t , int32_t , int32_t
-#endif
+           int , int , int , int
      );
-static int32_t src_in_region_list(
-#if NeedFunctionPrototypes
+static int src_in_region_list(
     image_win_type *, list_ptr
-#endif
     );
 static void add_window_to_list(
-#if NeedFunctionPrototypes
-    list_ptr, Window, int32_t, int32_t ,
-    int32_t     , int32_t , int32_t , int32_t, int32_t,
+    list_ptr, Window, int, int ,
+    int , int , int , int, int,
     Visual*, Colormap, Window
-#endif
+    );
+static int src_in_image(
+    image_win_type      *, int  , XVisualInfo**
     );
-static int32_t src_in_image(
-#if NeedFunctionPrototypes
-    image_win_type      *, int32_t      , XVisualInfo**
-#endif
+static int src_in_overlay(
+    image_region_type *, int, OverlayInfo *, int*, int*
     );
-static int32_t src_in_overlay(
-#if NeedFunctionPrototypes
-    image_region_type *, int32_t, OverlayInfo *, int32_t*, int32_t*
-#endif
-    );
+static void make_src_list(
+    Display *, list_ptr, XRectangle *, Window,
+    int, int, XWindowAttributes *, XRectangle *
+);
+static void destroy_image_region(
+    image_region_type *
+);
 
 /* End of Prototype Declarations */
 
-void initFakeVisual(Vis)
-Visual *Vis ;
+void initFakeVisual(Visual *Vis)
 {
     Vis->ext_data=NULL;
     Vis->class = DirectColor ;
@@ -224,42 +208,87 @@
     Vis->bits_per_rgb = 8 ;
 }
 
-/* QueryColorMap has been moved into robot_common.c so it can be used by
- * awt_DataTransferer.c as well.
- */
+static void
+QueryColorMap(Display *disp, Colormap src_cmap, Visual *src_vis,
+              XColor **src_colors, int *rShift, int *gShift, int *bShift)
+{
+     unsigned int ncolors,i ;
+     unsigned long       redMask, greenMask, blueMask;
+     int                 redShift, greenShift, blueShift;
+     XColor *colors ;
+
+     ncolors = (unsigned) src_vis->map_entries ;
+     *src_colors = colors = (XColor *)malloc(ncolors * sizeof(XColor) ) ;
 
-int32_t
-GetMultiVisualRegions(disp,srcRootWinid, x, y, width, height,
-    transparentOverlays,numVisuals, pVisuals,numOverlayVisuals, pOverlayVisuals,
-    numImageVisuals, pImageVisuals,vis_regions,vis_image_regions,allImage)
-    Display             *disp;
-    Window              srcRootWinid;   /* root win on which grab was done */
-    int32_t             x;      /* root rel UL corner of bounding box of grab */
-    int32_t             y;
-    uint32_t            width;  /* size of bounding box of grab */
-    uint32_t            height;
-    int32_t             *transparentOverlays ;
-    int32_t             *numVisuals;
-    XVisualInfo         **pVisuals;
-    int32_t             *numOverlayVisuals;
-    OverlayInfo         **pOverlayVisuals;
-    int32_t             *numImageVisuals;
-    XVisualInfo         ***pImageVisuals;
-    list_ptr            *vis_regions;    /* list of regions to read from */
-    list_ptr            *vis_image_regions ;
-    int32_t             *allImage ;
+     if(src_vis->class != TrueColor && src_vis->class != DirectColor)
+     {
+         for(i=0 ; i < ncolors ; i++)
+         {
+                colors[i].pixel = i ;
+                colors[i].pad = 0;
+                colors[i].flags = DoRed|DoGreen|DoBlue;
+         }
+     }
+     else /** src is decomposed rgb ***/
+     {
+        /* Get the X colormap */
+        redMask = src_vis->red_mask;
+        greenMask = src_vis->green_mask;
+        blueMask = src_vis->blue_mask;
+        redShift = 0; while (!(redMask&0x1)) {
+                redShift++;
+                redMask = redMask>>1;
+        }
+        greenShift = 0; while (!(greenMask&0x1)) {
+                greenShift++;
+                greenMask = greenMask>>1;
+        }
+        blueShift = 0; while (!(blueMask&0x1)) {
+                blueShift++;
+                blueMask = blueMask>>1;
+        }
+        *rShift = redShift ;
+        *gShift = greenShift ;
+        *bShift = blueShift ;
+        for (i=0; i<ncolors; i++) {
+                if( i <= redMask)colors[i].pixel = (i<<redShift) ;
+                if( i <= greenMask)colors[i].pixel |= (i<<greenShift) ;
+                if( i <= blueMask)colors[i].pixel |= (i<<blueShift) ;
+                /***** example :for gecko's 3-3-2 map, blue index should be <= 3.
+                colors[i].pixel = (i<<redShift)|(i<<greenShift)|(i<<blueShift);
+                *****/
+                colors[i].pad = 0;
+                colors[i].flags = DoRed|DoGreen|DoBlue;
+        }
+      }
+
+      XQueryColors(disp, src_cmap, colors, (int) ncolors);
+}
+
+int
+GetMultiVisualRegions(Display *disp,
+                      /* root win on which grab was done */
+                      Window srcRootWinid,
+                      /* root rel UL corner of bounding box of grab */
+                      int x, int y,
+                      /* size of bounding box of grab */
+                      unsigned int width, unsigned int height,
+                      int *transparentOverlays, int *numVisuals,
+                      XVisualInfo **pVisuals, int *numOverlayVisuals,
+                      OverlayInfo **pOverlayVisuals,
+                      int *numImageVisuals, XVisualInfo ***pImageVisuals,
+                      /* list of regions to read from */
+                      list_ptr *vis_regions,
+                      list_ptr *vis_image_regions, int *allImage)
 {
-    int32_t             hasNonDefault;
+    int                 hasNonDefault;
     XRectangle          bbox;           /* bounding box of grabbed area */
 
 
-    /* Java uses 32-bit ints for coordinates, but XRectangles use 16-bit shorts.
-     * Hope nobody passes in too big a coordinate */
-
-    bbox.x = (short) x;                 /* init X rect for bounding box */
-    bbox.y = (short) y;
-    bbox.width = (unsigned short) width;
-    bbox.height = (unsigned short) height;
+    bbox.x = x;                 /* init X rect for bounding box */
+    bbox.y = y;
+    bbox.width = width;
+    bbox.height = height;
 
     GetXVisualInfo(disp,DefaultScreen(disp),
                     transparentOverlays,
@@ -290,49 +319,48 @@
 
 }
 
-static void TransferImage(disp,reg_image,srcw,srch,reg,
-                          target_image,dst_x,dst_y)
-Display *disp;
-XImage *reg_image,*target_image ;
-image_region_type       *reg;
-int32_t srcw,srch,dst_x , dst_y ;
+static void TransferImage(Display *disp, XImage *reg_image,
+                          int srcw, int srch,
+                          image_region_type *reg, XImage *target_image,
+                          int dst_x, int dst_y)
 {
-    int32_t ncolors;
-    int32_t i,j,old_pixel,new_pixel,red_ind,green_ind,blue_ind ;
+    int i,j,old_pixel,new_pixel,red_ind,green_ind,blue_ind ;
     XColor *colors;
-    int32_t rShift,gShift,bShift;
-    int32_t targetBytesPerLine ;
+    int rShift = 0, gShift = 0, bShift = 0;
 
-    ncolors = QueryColorMap(disp,reg->cmap,reg->vis,&colors,
+    QueryColorMap(disp,reg->cmap,reg->vis,&colors,
          &rShift,&gShift,&bShift) ;
 
-    targetBytesPerLine = target_image->bytes_per_line;
-
     switch (reg->vis->class) {
     case TrueColor :
        for(i=0 ; i < srch ; i++)
        {
          for(j=0 ; j < srcw ;  j++)
          {
-           old_pixel = (int32_t) XGetPixel(reg_image,j,i) ;
+           old_pixel = XGetPixel(reg_image,j,i) ;
 
-/* commented out since not using server RGB masks in all true color modes
+/*
+ * JDK modification.
+ * commented out since not using server RGB masks in all true color modes
  * causes the R and B values to be swapped around on some X servers
  *    - robi.khan@eng 9/7/1999
- *           if( reg->vis->map_entries == 16) {
+ *         if( reg->vis->map_entries == 16) {
  */
-             red_ind   = (old_pixel & reg->vis->red_mask) >> rShift ;
+                 red_ind = (old_pixel & reg->vis->red_mask) >> rShift ;
                  green_ind = (old_pixel & reg->vis->green_mask) >> gShift ;
-                 blue_ind  = (old_pixel & reg->vis->blue_mask) >> bShift ;
+                 blue_ind = (old_pixel & reg->vis->blue_mask) >> bShift ;
 
                  new_pixel = (
                               ((colors[red_ind].red >> 8) << RED_SHIFT)
                               |((colors[green_ind].green >> 8) << GREEN_SHIFT)
                               |((colors[blue_ind].blue >> 8) << BLUE_SHIFT)
                              );
-/*         }
- *  else
- *    new_pixel = old_pixel;
+/* JDK modification.
+ * else part of above modification
+ *
+ *         }
+ *         else
+ *              new_pixel = old_pixel;
  */
 
            XPutPixel(target_image,dst_x+j, dst_y+i,new_pixel);
@@ -343,14 +371,15 @@
     case DirectColor :
        for(i=0 ; i < srch ; i++)
        {
+
          for(j=0 ; j < srcw ;  j++)
          {
-           old_pixel = (int32_t) XGetPixel(reg_image,j,i) ;
-           red_ind   = (old_pixel & reg->vis->red_mask) >> rShift ;
-               green_ind = (old_pixel & reg->vis->green_mask) >> gShift ;
-               blue_ind  = (old_pixel & reg->vis->blue_mask) >> bShift ;
+           old_pixel = XGetPixel(reg_image,j,i) ;
+           red_ind = (old_pixel & reg->vis->red_mask) >> rShift ;
+           green_ind = (old_pixel & reg->vis->green_mask) >> gShift ;
+           blue_ind = (old_pixel & reg->vis->blue_mask) >> bShift ;
 
-               new_pixel = (
+           new_pixel = (
                          ((colors[red_ind].red >> 8) << RED_SHIFT)
                         |((colors[green_ind].green >> 8) << GREEN_SHIFT)
                         |((colors[blue_ind].blue >> 8) << BLUE_SHIFT)
@@ -365,9 +394,9 @@
        {
          for(j=0 ; j < srcw ;  j++)
          {
-               old_pixel = (int32_t) XGetPixel(reg_image,j,i) ;
+            old_pixel = XGetPixel(reg_image,j,i) ;
 
-               new_pixel = (
+           new_pixel = (
                          ((colors[old_pixel].red >> 8) << RED_SHIFT)
                         |((colors[old_pixel].green >> 8) << GREEN_SHIFT)
                         |((colors[old_pixel].blue >> 8) << BLUE_SHIFT)
@@ -378,66 +407,76 @@
        }
        break;
     }
-
-    /* Fix memory leak by freeing colors
-     *  - robi.khan@eng 9/22/1999
-     */
+ /* JDK modification
+  * Fix memory leak by freeing colors
+  *  - robi.khan@eng 9/22/1999
+  */
     free(colors);
 }
 
 static XImage *
-ReadRegionsInList(disp,fakeVis,depth,format,width,height,bbox,regions)
-Display *disp ;
-Visual *fakeVis ;
-int32_t depth , width , height ;
-int32_t format ;
-XRectangle      bbox;           /* bounding box of grabbed area */
-list_ptr regions;/* list of regions to read from */
+ReadRegionsInList(Display *disp, Visual *fakeVis, int depth, int format,
+                  unsigned int width, unsigned int height,
+                  XRectangle bbox,      /* bounding box of grabbed area */
+                  list_ptr regions)     /* list of regions to read from */
 {
-    XImage              *ximage ;
-    image_region_type* reg;
-    int32_t rect;
+    image_region_type   *reg;
+    int                 dst_x, dst_y;   /* where in pixmap to write (UL) */
+    int                 diff;
+
+    XImage              *reg_image,*ximage ;
+    int                 srcRect_x,srcRect_y,srcRect_width,srcRect_height ;
+    int                 bytes_per_line;
 
-    ximage = XCreateImage(disp,fakeVis,(uint32_t) depth,format,0,NULL,
-                          (uint32_t)width,(uint32_t)height,8,0);
+    ximage = XCreateImage(disp,fakeVis,depth,format,0,NULL,width,height,
+                 8,0) ;
+    bytes_per_line = ximage->bytes_per_line;
 
-    ximage->data = calloc(ximage->bytes_per_line*height*((format==ZPixmap)? 1 : depth), sizeof(char));
+    if (format == ZPixmap)
+          ximage->data = malloc(height*bytes_per_line);
+    else
+        ximage->data = malloc(height*bytes_per_line*depth);
+
     ximage->bits_per_pixel = depth; /** Valid only if format is ZPixmap ***/
 
     for (reg = (image_region_type *) first_in_list( regions); reg;
          reg = (image_region_type *) next_in_list( regions))
     {
-                struct my_XRegion *vis_reg = (struct my_XRegion *)(reg->visible_region);
-                for (rect = 0; rect < vis_reg->numRects; rect++)
+                int rect;
+                struct my_XRegion *vis_reg;
+                vis_reg = (struct my_XRegion *)(reg->visible_region);
+                for (rect = 0;
+                     rect < vis_reg->numRects;
+                     rect++)
                 {
-                    /** ------------------------------------------------------------------------
-                            Intersect bbox with visible part of region giving src rect & output
-                            location.  Width is the min right side minus the max left side.
-                            Similar for height.  Offset src rect so x,y are relative to
-                            origin of win, not the root-relative visible rect of win.
-                        ------------------------------------------------------------------------ **/
-                        int32_t srcRect_width  = MIN( vis_reg->rects[rect].x2, bbox.width + bbox.x)
-                                         - MAX( vis_reg->rects[rect].x1, bbox.x);
-
-                        int32_t srcRect_height = MIN( vis_reg->rects[rect].y2, bbox.height + bbox.y)
-                                         - MAX( vis_reg->rects[rect].y1, bbox.y);
+                /** ------------------------------------------------------------------------
+                        Intersect bbox with visible part of region giving src rect & output
+                        location.  Width is the min right side minus the max left side.
+                        Similar for height.  Offset src rect so x,y are relative to
+                        origin of win, not the root-relative visible rect of win.
+                    ------------------------------------------------------------------------ **/
+                    srcRect_width  = MIN( vis_reg->rects[rect].x2, bbox.width + bbox.x) -
+                                     MAX( vis_reg->rects[rect].x1, bbox.x);
+                    srcRect_height = MIN( vis_reg->rects[rect].y2, bbox.height + bbox.y) -
+                                     MAX( vis_reg->rects[rect].y1, bbox.y);
+                    diff = bbox.x - vis_reg->rects[rect].x1;
+                    srcRect_x = MAX( 0, diff)  + (vis_reg->rects[rect].x1 - reg->x_rootrel - reg->border);
+                    dst_x     = MAX( 0, -diff) ;
+                    diff = bbox.y - vis_reg->rects[rect].y1;
+                    srcRect_y = MAX( 0, diff)  + (vis_reg->rects[rect].y1 - reg->y_rootrel - reg->border);
+                    dst_y     = MAX( 0, -diff) ;
+                    reg_image = XGetImage(disp,reg->win,srcRect_x,srcRect_y,
+                                srcRect_width,srcRect_height,AllPlanes,format) ;
 
-                        int32_t diff = bbox.x - vis_reg->rects[rect].x1;
-                        int32_t srcRect_x = MAX( 0, diff)  + (vis_reg->rects[rect].x1 - reg->x_rootrel - reg->border);
-                        int32_t dst_x     = MAX( 0, -diff) ;
-
-                        diff = bbox.y - vis_reg->rects[rect].y1;
-                        int32_t srcRect_y = MAX( 0, diff)  + (vis_reg->rects[rect].y1 - reg->y_rootrel - reg->border);
-                        int32_t dst_y     = MAX( 0, -diff) ;
-                        XImage* reg_image = XGetImage(disp,reg->win,srcRect_x,srcRect_y,
-                                            (uint32_t) srcRect_width, (uint32_t) srcRect_height,AllPlanes,format) ;
-
-                        if (reg_image) {
-                            TransferImage(disp,reg_image,srcRect_width,
-                                            srcRect_height,reg,ximage,dst_x,dst_y) ;
-                            XDestroyImage(reg_image);
-                        }
-                }
+                    /* JDK Modification
+                     * Enclose in if test and also call XDestroyImage
+                     */
+                    if (reg_image) {
+                        TransferImage(disp,reg_image,srcRect_width,
+                                     srcRect_height,reg,ximage,dst_x,dst_y) ;
+                        XDestroyImage(reg_image);
+                    }
+            }
     }
     return ximage ;
 }
@@ -446,62 +485,61 @@
 /** ------------------------------------------------------------------------
     ------------------------------------------------------------------------ **/
 
-XImage *ReadAreaToImage(disp, srcRootWinid, x, y, width, height,
-    numVisuals,pVisuals,numOverlayVisuals,pOverlayVisuals,numImageVisuals,
-    pImageVisuals,vis_regions,vis_image_regions,format,allImage)
-    Display             *disp;
-    Window              srcRootWinid;   /* root win on which grab was done */
-    int32_t                     x;   /* root rel UL corner of bounding box of grab */
-    int32_t                     y;
-    uint32_t            width;  /* size of bounding box of grab */
-    uint32_t            height;
-    /** int32_t                 transparentOverlays; ***/
-    int32_t                     numVisuals;
-    XVisualInfo         *pVisuals;
-    int32_t                     numOverlayVisuals;
-    OverlayInfo         *pOverlayVisuals;
-    int32_t                     numImageVisuals;
-    XVisualInfo         **pImageVisuals;
-    list_ptr            vis_regions;    /* list of regions to read from */
-    list_ptr            vis_image_regions ;/* list of regions to read from */
-    int32_t                     format;
-    int32_t             allImage ;
+XImage *ReadAreaToImage(Display *disp,
+                        /* root win on which grab was done */
+                        Window srcRootWinid,
+                        /* root rel UL corner of bounding box of grab */
+                        int x, int y,
+                        /* size of bounding box of grab */
+                        unsigned int width, unsigned int height,
+                        int numVisuals, XVisualInfo *pVisuals,
+                        int numOverlayVisuals, OverlayInfo *pOverlayVisuals,
+                        int numImageVisuals, XVisualInfo **pImageVisuals,
+                        /* list of regions to read from */
+                        list_ptr vis_regions,
+                        /* list of regions to read from */
+                        list_ptr vis_image_regions,
+                        int format, int allImage)
 {
     image_region_type   *reg;
     XRectangle          bbox;           /* bounding box of grabbed area */
-    int32_t             depth ;
-    XImage              *ximage, *ximage_ipm ;
+    int                 depth ;
+    XImage              *ximage, *ximage_ipm = NULL;
     Visual              fakeVis ;
-    int32_t     x1, y1;
+    int         x1, y1;
     XImage      *image;
+#if 0
     unsigned char       *pmData ,  *ipmData ;
-    int32_t                 transparentColor, transparentType;
-    int32_t                     srcRect_x,srcRect_y,srcRect_width,srcRect_height ;
-    int32_t                     diff ;
-    int32_t                     dst_x, dst_y;   /* where in pixmap to write (UL) */
-    int32_t                     pixel;
+#endif
+    int                 transparentColor, transparentType;
+    int                 srcRect_x,srcRect_y,srcRect_width,srcRect_height ;
+    int                 diff ;
+    int                 dst_x, dst_y;   /* where in pixmap to write (UL) */
+    int                 pixel;
 
-    bbox.x = (short) x;                 /* init X rect for bounding box */
-    bbox.y = (short) y;
-    bbox.width = (unsigned short) width;
-    bbox.height = (unsigned short) height;
-    ximage_ipm = NULL;
+    bbox.x = x;                 /* init X rect for bounding box */
+    bbox.y = y;
+    bbox.width = width;
+    bbox.height = height;
 
 
     initFakeVisual(&fakeVis) ;
 
     depth = 24 ;
-    ximage = ReadRegionsInList(disp,&fakeVis,depth,format,
-             (int32_t) width, (int32_t) height, bbox,vis_regions) ;
-
+    ximage = ReadRegionsInList(disp,&fakeVis,depth,format,width,height,
+             bbox,vis_regions) ;
+#if 0
     pmData = (unsigned char *)ximage -> data ;
+#endif
 
 /* if transparency possible do it again, but this time for image planes only */
     if (vis_image_regions && (vis_image_regions->next) && !allImage)
     {
-            ximage_ipm = ReadRegionsInList(disp,&fakeVis,depth,format,
-                         (int32_t) width, (int32_t) height,bbox,vis_image_regions) ;
+        ximage_ipm = ReadRegionsInList(disp,&fakeVis,depth,format,width,height,
+                     bbox,vis_image_regions) ;
+#if 0
         ipmData = (unsigned char *)ximage_ipm -> data ;
+#endif
     }
 /* Now tranverse the overlay visual windows and test for transparency index.  */
 /* If you find one, subsitute the value from the matching image plane pixmap. */
@@ -513,21 +551,20 @@
         if (src_in_overlay( reg, numOverlayVisuals, pOverlayVisuals,
                                  &transparentColor, &transparentType))
         {
-         int32_t test = 0 ;
+        int test = 0 ;
              srcRect_width  = MIN( reg->width + reg->x_vis, bbox.width + bbox.x)
                                  - MAX( reg->x_vis, bbox.x);
              srcRect_height = MIN( reg->height + reg->y_vis, bbox.height
                                  + bbox.y) - MAX( reg->y_vis, bbox.y);
-         diff = bbox.x - reg->x_vis;
-         srcRect_x = MAX( 0, diff) + (reg->x_vis - reg->x_rootrel - reg->border);
-         dst_x     = MAX( 0, -diff) ;
+             diff = bbox.x - reg->x_vis;
+             srcRect_x = MAX( 0, diff)  + (reg->x_vis - reg->x_rootrel - reg->border);
+             dst_x     = MAX( 0, -diff) ;
              diff = bbox.y - reg->y_vis;
              srcRect_y = MAX( 0, diff)  + (reg->y_vis - reg->y_rootrel - reg->border);
              dst_y     = MAX( 0, -diff) ;
         /* let's test some pixels for transparency */
-         image = XGetImage(disp, reg->win, srcRect_x, srcRect_y,
-                           (uint32_t) srcRect_width, (uint32_t) srcRect_height,
-                           0xffffffff, ZPixmap);
+             image = XGetImage(disp, reg->win, srcRect_x, srcRect_y,
+                 srcRect_width, srcRect_height, 0xffffffff, ZPixmap);
 
         /* let's assume byte per pixel for overlay image for now */
              if ((image->depth == 8) && (transparentType == TransparentPixel))
@@ -541,24 +578,24 @@
                     {
                         if (*pixel_ptr++ == transparentColor)
                         {
-                        /*
+#if 0
                             *pmData++ = *ipmData++;
                             *pmData++ = *ipmData++;
                             *pmData++ = *ipmData++;
-                        */
-                        pixel = (int32_t) XGetPixel(ximage_ipm,dst_x+x1,dst_y+y1) ;
-                    XPutPixel(ximage,dst_x+x1, dst_y+y1,(unsigned long)pixel);
+#endif
+                        pixel = XGetPixel(ximage_ipm,dst_x+x1,dst_y+y1) ;
+                        XPutPixel(ximage,dst_x+x1, dst_y+y1,pixel);
 
                         if(!test){
                            test = 1 ;
                         }
                         }
-                        /*
+#if 0
                         else {
                             pmData +=3;
                             ipmData +=3;
                         }
-                        */
+#endif
                     }
                     start_of_line += image->bytes_per_line;
                 }
@@ -567,53 +604,52 @@
                 for (y1 = 0; y1 < srcRect_height; y1++) {
                       for (x1 = 0; x1 < srcRect_width; x1++)
                       {
-                            int32_t pixel_value = (int32_t) XGetPixel(image, x1, y1);
+                            int pixel_value = XGetPixel(image, x1, y1);
                             if (pixel_value == transparentColor)
                             {
-                            /*
+#if 0
                                 *pmData++ = *ipmData++;
                                 *pmData++ = *ipmData++;
                                 *pmData++ = *ipmData++;
-                            */
-                        pixel = (int32_t) XGetPixel(ximage_ipm,dst_x+x1,dst_y+y1) ;
-                    XPutPixel(ximage,dst_x+x1, dst_y+y1,(unsigned long)pixel);
+#endif
+                        pixel = XGetPixel(ximage_ipm,dst_x+x1,dst_y+y1) ;
+                        XPutPixel(ximage,dst_x+x1, dst_y+y1,pixel);
                         if(!test){
                            test = 1 ;
                         }
                             }
-                            /*
+#if 0
                             else {
                                 pmData +=3;
                                 ipmData +=3;
                             }
-                            */
+#endif
                         }
                     }
                 } else {
                     for (y1 = 0; y1 < srcRect_height; y1++) {
                         for (x1 = 0; x1 < srcRect_width; x1++)
                         {
-                            int32_t pixel_value = (int32_t) XGetPixel(image, x1, y1);
+                            int pixel_value = XGetPixel(image, x1, y1);
                             if (pixel_value & transparentColor)
                             {
-                            /*
+#if 0
                                 *pmData++ = *ipmData++;
                                 *pmData++ = *ipmData++;
                                 *pmData++ = *ipmData++;
-                            */
-                     pixel = (int32_t) XGetPixel(ximage_ipm,dst_x+x1,
-                                    dst_y+y1) ;
-                     XPutPixel(ximage,dst_x+x1, dst_y+y1,(unsigned long)pixel);
+#endif
+                                pixel = XGetPixel(ximage_ipm,dst_x+x1,dst_y+y1) ;
+                                XPutPixel(ximage,dst_x+x1, dst_y+y1,pixel);
                         if(!test){
                            test = 1 ;
                         }
                             }
-                            /*
+#if 0
                             else {
                                 pmData +=3;
                                 ipmData +=3;
                             }
-                            */
+#endif
                         }
                     }
                 }
@@ -621,6 +657,7 @@
         XDestroyImage (image);
       } /* end of src_in_overlay */
     } /** end transparency **/
+    /* JDK modification - call XDestroyImage if non-null */
     if (ximage_ipm != NULL) {
         XDestroyImage(ximage_ipm);
     }
@@ -640,38 +677,36 @@
         image_wins must point to an existing list struct that's already
         been zeroed (zero_list()).
     ------------------------------------------------------------------------ **/
-static void make_src_list( disp, image_wins, bbox, curr, x_rootrel, y_rootrel,
-                    curr_attrs, pclip)
-    Display             *disp;
-    list_ptr            image_wins;
-    XRectangle          *bbox;                  /* bnding box of area we want */
-    Window              curr;
-    int32_t                     x_rootrel;              /* pos of curr WRT root */
-    int32_t                     y_rootrel;
-    XWindowAttributes   *curr_attrs;
-    XRectangle          *pclip;                 /* visible part of curr, not */
-                                                /* obscurred by ancestors */
+static void make_src_list(Display *disp, list_ptr image_wins,
+                          /* bnding box of area we want */
+                          XRectangle *bbox,
+                          Window curr,
+                          /* pos of curr WRT root */
+                          int x_rootrel, int y_rootrel,
+                          XWindowAttributes *curr_attrs,
+                          /* visible part of curr, not obscurred by ancestors */
+                          XRectangle *pclip)
 {
     XWindowAttributes child_attrs;
     Window root, parent, *child;        /* variables for XQueryTree() */
     Window *save_child_list;            /* variables for XQueryTree() */
-    uint32_t nchild;            /* variables for XQueryTree() */
+    unsigned int nchild;                /* variables for XQueryTree() */
     XRectangle child_clip;              /* vis part of child */
-    int32_t curr_clipX, curr_clipY, curr_clipRt, curr_clipBt;
+    int curr_clipX, curr_clipY, curr_clipRt, curr_clipBt;
 
     /* check that win is mapped & not outside bounding box */
     if (curr_attrs->map_state == IsViewable &&
         curr_attrs->class == InputOutput &&
-        !( pclip->x >= (bbox->x + bbox->width)  ||
-           pclip->y >= (bbox->y + bbox->height) ||
-           (pclip->x + pclip->width)  <= bbox->x        ||
-           (pclip->y + pclip->height) <= bbox->y)) {
+        !( pclip->x >= (int) (bbox->x + bbox->width)    ||
+           pclip->y >= (int) (bbox->y + bbox->height)   ||
+           (int) (pclip->x + pclip->width)  <= bbox->x  ||
+           (int) (pclip->y + pclip->height) <= bbox->y)) {
 
         XQueryTree( disp, curr, &root, &parent, &child, &nchild );
         save_child_list = child;      /* so we can free list when we're done */
         add_window_to_list( image_wins, curr, x_rootrel, y_rootrel,
-                            (int32_t) pclip->x, (int32_t) pclip->y,
-                            (int32_t) pclip->width, (int32_t) pclip->height,
+                            pclip->x, pclip->y,
+                            pclip->width, pclip->height,
                             curr_attrs->border_width,curr_attrs->visual,
                             curr_attrs->colormap, parent);
 
@@ -683,40 +718,39 @@
         child loop, we figure the clip rect for each child by adding in
         it's rectangle (not taking into account the child's borders).
     ------------------------------------------------------------------------ **/
-        curr_clipX = MAX( pclip->x, x_rootrel + curr_attrs->border_width);
-        curr_clipY = MAX( pclip->y, y_rootrel + curr_attrs->border_width);
-        curr_clipRt = MIN(pclip->x + pclip->width,
-                                  x_rootrel + curr_attrs->width + 2 * curr_attrs->border_width);
-
-        curr_clipBt = MIN(pclip->y + pclip->height,
-                                  y_rootrel + curr_attrs->height + 2 * curr_attrs->border_width);
-
+        curr_clipX = MAX( pclip->x, x_rootrel + (int) curr_attrs->border_width);
+        curr_clipY = MAX( pclip->y, y_rootrel + (int) curr_attrs->border_width);
+        curr_clipRt = MIN( pclip->x + (int) pclip->width,
+                           x_rootrel + (int) curr_attrs->width +
+                           2 * (int) curr_attrs->border_width);
+        curr_clipBt = MIN( pclip->y + (int) pclip->height,
+                           y_rootrel + (int) curr_attrs->height +
+                           2 * (int) curr_attrs->border_width);
 
         while (nchild--) {
-            int32_t new_width, new_height;
-            int32_t child_xrr, child_yrr;       /* root relative x & y of child */
+            int new_width, new_height;
+            int child_xrr, child_yrr;   /* root relative x & y of child */
 
             XGetWindowAttributes( disp, *child, &child_attrs);
 
             /* intersect parent & child clip rects */
             child_xrr = x_rootrel + child_attrs.x + curr_attrs->border_width;
-            child_clip.x = (short) MAX( curr_clipX, child_xrr);
-            new_width = MIN(curr_clipRt,
-                        child_xrr + child_attrs.width +
-                         2 * child_attrs.border_width) - child_clip.x;
-
+            child_clip.x = MAX( curr_clipX, child_xrr);
+            new_width = MIN( curr_clipRt, child_xrr + (int) child_attrs.width
+                             + 2 * child_attrs.border_width)
+                        - child_clip.x;
             if (new_width >= 0) {
-                child_clip.width = (unsigned short) new_width;
+                child_clip.width = new_width;
 
                 child_yrr = y_rootrel + child_attrs.y +
                             curr_attrs->border_width;
-                child_clip.y = (short) MAX( curr_clipY, child_yrr);
-                new_height = MIN(curr_clipBt,
-                                         child_yrr + (int32_t) child_attrs.height +
-                                         2 * child_attrs.border_width) - child_clip.y;
-
+                child_clip.y = MAX( curr_clipY, child_yrr);
+                new_height = MIN( curr_clipBt,
+                                  child_yrr + (int) child_attrs.height +
+                                      2 * child_attrs.border_width)
+                             - child_clip.y;
                 if (new_height >= 0) {
-                    child_clip.height = (unsigned short) new_height;
+                    child_clip.height = new_height;
                     make_src_list( disp, image_wins, bbox, *child,
                                    child_xrr, child_yrr,
                                    &child_attrs, &child_clip);
@@ -737,15 +771,9 @@
         there will be two regions in the list.
         Returns a pointer to the list.
     ------------------------------------------------------------------------ **/
-static list_ptr make_region_list( disp, win, bbox, hasNonDefault,
-                             numImageVisuals, pImageVisuals, allImage)
-    Display             *disp;
-    Window              win;
-    XRectangle          *bbox;
-    int32_t             *hasNonDefault;
-    int32_t                     numImageVisuals;
-    XVisualInfo         **pImageVisuals;
-    int32_t                     *allImage;
+static list_ptr make_region_list(Display *disp, Window win, XRectangle *bbox,
+                                 int *hasNonDefault, int numImageVisuals,
+                                 XVisualInfo **pImageVisuals, int *allImage)
 {
     XWindowAttributes   win_attrs;
     list                image_wins;
@@ -755,9 +783,9 @@
     image_win_type      *base_src, *src;
     Region              bbox_region = XCreateRegion();
     XRectangle          clip;
-    int32_t                     image_only;
+    int                 image_only;
 
-    int32_t                 count=0 ;
+    int                 count=0 ;
 
     *hasNonDefault = False;
     XUnionRectWithRegion( bbox, bbox_region, bbox_region);
@@ -766,8 +794,8 @@
     zero_list( &image_wins);
     clip.x = 0;
     clip.y = 0;
-    clip.width  = (unsigned short) win_attrs.width;
-    clip.height = (unsigned short) win_attrs.height;
+    clip.width  = win_attrs.width;
+    clip.height = win_attrs.height;
     make_src_list( disp, &image_wins, bbox, win,
                    0 /* x_rootrel */, 0 /* y_rootrel */, &win_attrs, &clip);
 
@@ -840,8 +868,7 @@
 /** ------------------------------------------------------------------------
         Destructor called from destroy_region_list().
     ------------------------------------------------------------------------ **/
-void destroy_image_region( image_region)
-    image_region_type *image_region;
+static void destroy_image_region(image_region_type *image_region)
 {
     XDestroyRegion( image_region->visible_region);
     free( (void *) image_region);
@@ -850,8 +877,7 @@
 /** ------------------------------------------------------------------------
         Destroys the region list, destroying all the regions contained in it.
     ------------------------------------------------------------------------ **/
-static void destroy_region_list( rlist)
-    list_ptr rlist;
+static void destroy_region_list(list_ptr rlist)
 {
     delete_list_destroying( rlist, (DESTRUCT_FUNC_PTR)destroy_image_region);
 }
@@ -863,21 +889,17 @@
         only provides a way to subtract one region from another, not a
         rectangle from a region.
     ------------------------------------------------------------------------ **/
-static void subtr_rect_from_image_region( image_region, x, y, width, height)
-    image_region_type *image_region;
-    int32_t x;
-    int32_t y;
-    int32_t width;
-    int32_t height;
+static void subtr_rect_from_image_region(image_region_type *image_region,
+                                         int x, int y, int width, int height)
 {
     XRectangle rect;
     Region rect_region;
 
     rect_region = XCreateRegion();
-    rect.x = (short)x;
-    rect.y = (short)y;
-    rect.width = (unsigned short)width;
-    rect.height = (unsigned short)height;
+    rect.x = x;
+    rect.y = y;
+    rect.width = width;
+    rect.height = height;
     XUnionRectWithRegion( &rect, rect_region, rect_region);
     XSubtractRegion( image_region->visible_region, rect_region,
                      image_region->visible_region);
@@ -888,19 +910,15 @@
 /** ------------------------------------------------------------------------
         Adds the specified rectangle to the region in image_region.
     ------------------------------------------------------------------------ **/
-static void add_rect_to_image_region( image_region, x, y, width, height)
-    image_region_type *image_region;
-    int32_t x;
-    int32_t y;
-    int32_t width;
-    int32_t height;
+static void add_rect_to_image_region(image_region_type *image_region,
+                                     int x, int y, int width, int height)
 {
     XRectangle rect;
 
-    rect.x = (short) x;
-    rect.y = (short) y;
-    rect.width = (unsigned short) width;
-    rect.height = (unsigned short) height;
+    rect.x = x;
+    rect.y = y;
+    rect.width = width;
+    rect.height = height;
     XUnionRectWithRegion( &rect, image_region->visible_region,
                           image_region->visible_region);
 }
@@ -910,9 +928,7 @@
         Returns TRUE if the given src's visual is already represented in
         the image_regions list, FALSE otherwise.
     ------------------------------------------------------------------------ **/
-static int32_t src_in_region_list( src, image_regions)
-    image_win_type *src;
-    list_ptr image_regions;
+static int src_in_region_list(image_win_type *src, list_ptr image_regions)
 {
     image_region_type   *ir;
 
@@ -931,20 +947,10 @@
 /** ------------------------------------------------------------------------
         Makes a new entry in image_wins with the given fields filled in.
     ------------------------------------------------------------------------ **/
-static void add_window_to_list( image_wins, w, xrr, yrr, x_vis, y_vis,
-                                width, height, border_width,vis, cmap, parent)
-    list_ptr    image_wins;
-    Window      w;
-    int32_t             xrr;
-    int32_t     yrr;
-    int32_t             x_vis;
-    int32_t     y_vis;
-    int32_t     width;
-    int32_t     height;
-    int32_t     border_width;
-    Visual      *vis;
-    Colormap    cmap;
-    Window      parent;
+static void add_window_to_list(list_ptr image_wins, Window w,
+                               int xrr, int yrr, int x_vis, int y_vis,
+                               int width, int height, int border_width,
+                               Visual *vis, Colormap cmap, Window parent)
 {
     image_win_type      *new_src;
 
@@ -970,12 +976,10 @@
         Returns TRUE if the given src's visual is in the image planes,
         FALSE otherwise.
     ------------------------------------------------------------------------ **/
-static int32_t src_in_image( src, numImageVisuals, pImageVisuals)
-    image_win_type      *src;
-    int32_t                     numImageVisuals;
-    XVisualInfo         **pImageVisuals;
+static int src_in_image(image_win_type *src, int numImageVisuals,
+                        XVisualInfo **pImageVisuals)
 {
-    int32_t             i;
+    int                 i;
 
     for (i = 0 ; i < numImageVisuals ; i++)
     {
@@ -990,15 +994,11 @@
         Returns TRUE if the given src's visual is in the overlay planes
         and transparency is possible, FALSE otherwise.
     ------------------------------------------------------------------------ **/
-static int32_t src_in_overlay( src, numOverlayVisuals, pOverlayVisuals,
-                        transparentColor, transparentType)
-    image_region_type   *src;
-    int32_t                     numOverlayVisuals;
-    OverlayInfo         *pOverlayVisuals;
-    int32_t                     *transparentColor;
-    int32_t                     *transparentType;
+static int src_in_overlay(image_region_type *src, int numOverlayVisuals,
+                          OverlayInfo *pOverlayVisuals,
+                          int *transparentColor, int *transparentType)
 {
-    int32_t             i;
+    int                 i;
 
     for (i = 0 ; i < numOverlayVisuals ; i++)
     {
@@ -1039,7 +1039,7 @@
 #define DIRECT_COLOR    0x11
 
 
-static int32_t  weCreateServerOverlayVisualsProperty = False;
+static int      weCreateServerOverlayVisualsProperty = False;
 
 
 /******************************************************************************
@@ -1064,42 +1064,40 @@
  *
  ******************************************************************************/
 
-int32_t GetXVisualInfo(display, screen, transparentOverlays,
-                   numVisuals, pVisuals,
-                   numOverlayVisuals, pOverlayVisuals,
-                   numImageVisuals, pImageVisuals)
-
-    Display     *display;                   /* Which X server (aka "display"). */
-    int32_t             screen;                 /* Which screen of the "display". */
-    int32_t             *transparentOverlays;   /* Non-zero if there's at least one
-                                         * overlay visual and if at least one
-                                         * of those supports a transparent
-                                         * pixel. */
-    int32_t             *numVisuals;            /* Number of XVisualInfo struct's
-                                         * pointed to by pVisuals. */
-    XVisualInfo **pVisuals;             /* All of the device's visuals. */
-    int32_t             *numOverlayVisuals;     /* Number of OverlayInfo's pointed
-                                         * to by pOverlayVisuals.  If this
-                                         * number is zero, the device does
-                                         * not have overlay planes. */
-    OverlayInfo **pOverlayVisuals;      /* The device's overlay plane visual
-                                         * information. */
-    int32_t             *numImageVisuals;       /* Number of XVisualInfo's pointed
-                                         * to by pImageVisuals. */
-    XVisualInfo ***pImageVisuals;       /* The device's image visuals. */
+int GetXVisualInfo(/* Which X server (aka "display"). */
+                   Display *display,
+                   /* Which screen of the "display". */
+                   int screen,
+                   /* Non-zero if there's at least one overlay visual and
+                    * if at least one of those supports a transparent pixel. */
+                   int *transparentOverlays,
+                   /* Number of XVisualInfo struct's pointed to by pVisuals. */
+                   int *numVisuals,
+                   /* All of the device's visuals. */
+                   XVisualInfo **pVisuals,
+                   /* Number of OverlayInfo's pointed to by pOverlayVisuals.
+                    * If this number is zero, the device does not have
+                    * overlay planes. */
+                   int *numOverlayVisuals,
+                   /* The device's overlay plane visual information. */
+                   OverlayInfo  **pOverlayVisuals,
+                   /* Number of XVisualInfo's pointed to by pImageVisuals. */
+                   int *numImageVisuals,
+                   /* The device's image visuals. */
+                   XVisualInfo ***pImageVisuals)
 {
-    XVisualInfo getVisInfo;             /* Parameters of XGetVisualInfo */
-    int32_t             mask;
+    XVisualInfo getVisInfo;             /* Paramters of XGetVisualInfo */
+    int         mask;
     XVisualInfo *pVis, **pIVis;         /* Faster, local copies */
     OverlayInfo *pOVis;
     OverlayVisualPropertyRec    *pOOldVis;
-    int32_t             nVisuals, nOVisuals;
+    int         nVisuals, nOVisuals;
     Atom        overlayVisualsAtom;     /* Parameters for XGetWindowProperty */
     Atom        actualType;
     unsigned long numLongs, bytesAfter;
-    int32_t             actualFormat;
-    int32_t             nImageVisualsAlloced;   /* Values to process the XVisualInfo */
-    int32_t             imageVisual;            /* array */
+    int         actualFormat;
+    int         nImageVisualsAlloced;   /* Values to process the XVisualInfo */
+    int         imageVisual;            /* array */
 
 
     /* First, get the list of visuals for this screen. */
@@ -1125,10 +1123,10 @@
          * do-while loop makes sure we get the entire list from the X server.
          */
         bytesAfter = 0;
-        numLongs = sizeof(OverlayVisualPropertyRec) / 4;
+        numLongs = sizeof(OverlayVisualPropertyRec) / sizeof(long);
         do
         {
-            numLongs += bytesAfter * 4;
+            numLongs += bytesAfter * sizeof(long);
             XGetWindowProperty(display, RootWindow(display, screen),
                                overlayVisualsAtom, 0, numLongs, False,
                                overlayVisualsAtom, &actualType, &actualFormat,
@@ -1137,7 +1135,6 @@
 
 
         /* Calculate the number of overlay visuals in the list. */
-        /* *numOverlayVisuals = numLongs / (sizeof(OverlayVisualPropertyRec) / 4); */
         *numOverlayVisuals = numLongs / (sizeof(OverlayVisualPropertyRec) / sizeof(long));
     }
     else
@@ -1199,11 +1196,8 @@
  *
  ******************************************************************************/
 
-void FreeXVisualInfo(pVisuals, pOverlayVisuals, pImageVisuals)
-
-    XVisualInfo *pVisuals;
-    OverlayInfo *pOverlayVisuals;
-    XVisualInfo **pImageVisuals;
+void FreeXVisualInfo(XVisualInfo *pVisuals, OverlayInfo *pOverlayVisuals,
+                     XVisualInfo **pImageVisuals)
 {
     XFree(pVisuals);
     if (weCreateServerOverlayVisualsProperty)
--- a/src/java.desktop/unix/native/libawt_xawt/awt/multiVis.h	Thu Nov 08 12:09:06 2018 +0530
+++ b/src/java.desktop/unix/native/libawt_xawt/awt/multiVis.h	Thu Nov 08 10:34:49 2018 -0800
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,7 +22,6 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-/* $XConsortium: multiVis.h /main/4 1996/10/14 15:04:12 swick $ */
 /** ------------------------------------------------------------------------
         This file contains routines for manipulating generic lists.
         Lists are implemented with a "harness".  In other words, each
@@ -36,16 +36,14 @@
  However, the following notice accompanied the original version of this
  file:
 
-Copyright (c) 1994 Hewlett-Packard Co.
-Copyright (c) 1996  X Consortium
+Copyright 1994 Hewlett-Packard Co.
+Copyright 1996, 1998  The Open Group
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
 
 The above copyright notice and this permission notice shall be included
 in all copies or substantial portions of the Software.
@@ -53,38 +51,32 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
-Except as contained in this notice, the name of the X Consortium shall
+Except as contained in this notice, the name of The Open Group shall
 not be used in advertising or otherwise to promote the sale, use or
 other dealings in this Software without prior written authorization
-from the X Consortium.
+from The Open Group.
 
  ------------------------------------------------------------------------ **/
 
-extern int32_t GetMultiVisualRegions(
-#if NeedFunctionPrototypes
-    Display *, Window, int32_t, int32_t, uint32_t,
-    uint32_t, int32_t *, int32_t *, XVisualInfo **, int32_t *,
-    OverlayInfo  **, int32_t *, XVisualInfo ***, list_ptr *,
-    list_ptr *, int32_t *
-#endif
+extern int GetMultiVisualRegions(
+    Display *, Window, int, int, unsigned int,
+    unsigned int, int *, int *, XVisualInfo **, int *,
+    OverlayInfo  **, int *, XVisualInfo ***, list_ptr *,
+    list_ptr *, int *
 );
 
 extern XImage *ReadAreaToImage(
-#if NeedFunctionPrototypes
-    Display *, Window, int32_t, int32_t, uint32_t,
-    uint32_t, int32_t, XVisualInfo *, int32_t,
-    OverlayInfo *, int32_t, XVisualInfo **, list_ptr,
-    list_ptr, int32_t, int32_t
-#endif
+    Display *, Window, int, int, unsigned int,
+    unsigned int, int, XVisualInfo *, int,
+    OverlayInfo *, int, XVisualInfo **, list_ptr,
+    list_ptr, int, int
 );
 
 extern void initFakeVisual(
-#if NeedFunctionPrototypes
     Visual *
-#endif
 );
--- a/src/java.desktop/unix/native/libawt_xawt/awt/robot_common.c	Thu Nov 08 12:09:06 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#ifdef HEADLESS
-    #error This file should not be included in headless library
-#endif
-
-#ifdef MACOSX
-#include <stdlib.h>
-#endif
-
-#include "robot_common.h"
-
-/*
- * QueryColorMap is taken from multiVis.c, part of the xwd distribution from
- * X.org. It was moved here so it can be shared with awt_DataTransferer.c
- */
-int32_t
-QueryColorMap(Display *disp,
-              Colormap src_cmap,
-              Visual *src_vis,
-              XColor **src_colors,
-              int32_t *rShift, int32_t *gShift, int32_t *bShift)
-
-{
-     int32_t ncolors, i;
-     unsigned long redMask, greenMask, blueMask;
-     int32_t                 redShift, greenShift, blueShift;
-     XColor *colors ;
-
-     ncolors = src_vis->map_entries ;
-     *src_colors = colors = (XColor *)calloc(ncolors,sizeof(XColor) ) ;
-
-     if(src_vis->class != TrueColor && src_vis->class != DirectColor)
-     {
-         for(i=0 ; i < ncolors ; i++)
-         {
-                colors[i].pixel = i ;
-                colors[i].pad = 0;
-                colors[i].flags = DoRed|DoGreen|DoBlue;
-         }
-     }
-     else /** src is decomposed rgb ***/
-     {
-        /* Get the X colormap */
-        redMask = src_vis->red_mask;
-        greenMask = src_vis->green_mask;
-        blueMask = src_vis->blue_mask;
-        redShift = 0; while (!(redMask&0x1)) {
-                redShift++;
-                redMask = redMask>>1;
-        }
-        greenShift = 0; while (!(greenMask&0x1)) {
-                greenShift++;
-                greenMask = greenMask>>1;
-        }
-        blueShift = 0; while (!(blueMask&0x1)) {
-                blueShift++;
-                blueMask = blueMask>>1;
-        }
-        *rShift = redShift ;
-        *gShift = greenShift ;
-        *bShift = blueShift ;
-        for (i=0; i<ncolors; i++) {
-                if( (uint32_t)i <= redMask) colors[i].pixel = (i<<redShift) ;
-                if( (uint32_t)i <= greenMask) colors[i].pixel |= (i<<greenShift) ;
-                if( (uint32_t)i <= blueMask) colors[i].pixel |= (i<<blueShift) ;
-                /***** example :for gecko's 3-3-2 map, blue index should be <= 3
-.
-                colors[i].pixel = (i<<redShift)|(i<<greenShift)|(i<<blueShift);
-                *****/
-                colors[i].pad = 0;
-                colors[i].flags = DoRed|DoGreen|DoBlue;
-        }
-      }
-
-      XQueryColors(disp, src_cmap, colors, ncolors);
-      return ncolors ;
-}
--- a/src/java.desktop/unix/native/libawt_xawt/awt/robot_common.h	Thu Nov 08 12:09:06 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-#ifndef _ROBOT_COMMON_H
-#define _ROBOT_COMMON_H
-
-#include "java_awt_event_InputEvent.h"
-
-#include <X11/Xlib.h>
-#include "gdefs.h"
-
-int QueryColorMap(Display *disp,
-                  Colormap src_cmap,
-                  Visual *src_vis,
-                  XColor **src_colors,
-                  int *rShift, int *gShift, int *bShift);
-
-#endif /* _ROBOT_COMMON_H */
--- a/src/java.desktop/unix/native/libawt_xawt/awt/wsutils.h	Thu Nov 08 12:09:06 2018 +0530
+++ b/src/java.desktop/unix/native/libawt_xawt/awt/wsutils.h	Thu Nov 08 10:34:49 2018 -0800
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,7 +22,6 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-/* $XConsortium: wsutils.h /main/3 1996/10/14 15:04:17 swick $ */
 /** ------------------------------------------------------------------------
         This file contains routines for manipulating generic lists.
         Lists are implemented with a "harness".  In other words, each
@@ -36,16 +36,14 @@
  However, the following notice accompanied the original version of this
  file:
 
-Copyright (c) 1994 Hewlett-Packard Co.
-Copyright (c) 1996  X Consortium
+Copyright 1994 Hewlett-Packard Co.
+Copyright 1996, 1998  The Open Group
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
 
 The above copyright notice and this permission notice shall be included
 in all copies or substantial portions of the Software.
@@ -53,17 +51,18 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 
-Except as contained in this notice, the name of the X Consortium shall
+Except as contained in this notice, the name of The Open Group shall
 not be used in advertising or otherwise to promote the sale, use or
 other dealings in this Software without prior written authorization
-from the X Consortium.
+from The Open Group.
 
     ------------------------------------------------------------------------ **/
+
 /******************************************************************************
  *
  * This file contains various typedef's, macros and procedure declarations for
@@ -71,16 +70,18 @@
  *
  ******************************************************************************/
 
+typedef unsigned long Pixel;
+
 /* This is the actual structure returned by the X server describing the
  * SERVER_OVERLAY_VISUAL property.
  */
 typedef struct
 {
   VisualID      visualID;               /* The VisualID of the overlay visual */
-  long  transparentType;        /* Can be None, TransparentPixel or
+  int           transparentType;        /* Can be None, TransparentPixel or
                                          * TransparentMask */
-  long  value;                  /* Pixel value */
-  long layer;                   /* Overlay planes will always be in
+  Pixel         value;                  /* Pixel value */
+  int           layer;                  /* Overlay planes will always be in
                                          * layer 1 */
 } OverlayVisualPropertyRec;
 
@@ -93,10 +94,10 @@
 typedef struct
 {
   XVisualInfo   *pOverlayVisualInfo;    /* Pointer to the XVisualInfo struct */
-  long transparentType; /* Can be None, TransparentPixel or
+  int           transparentType;        /* Can be None, TransparentPixel or
                                          * TransparentMask */
-  long value;                   /* Pixel value */
-  long layer;                   /* Overlay planes will always be in
+  Pixel         value;                  /* Pixel value */
+  int           layer;                  /* Overlay planes will always be in
                                          * layer 1 */
 } OverlayInfo;
 
@@ -158,27 +159,25 @@
  *
  ******************************************************************************/
 
-extern int32_t GetXVisualInfo(
-#if NeedFunctionPrototypes
+extern int GetXVisualInfo(
     Display     *display,               /* Which X server (aka "display"). */
-    int32_t             screen,                 /* Which screen of the "display". */
-    int32_t             *transparentOverlays,   /* Non-zero if there's at least one
+    int         screen,                 /* Which screen of the "display". */
+    int         *transparentOverlays,   /* Non-zero if there's at least one
                                          * overlay visual and if at least one
                                          * of those supports a transparent
                                          * pixel. */
-    int32_t             *numVisuals,            /* Number of XVisualInfo struct's
-                                         * pointed to by pVisuals. */
+    int         *numVisuals,            /* Number of XVisualInfo struct's
+                                         * pointed to to by pVisuals. */
     XVisualInfo **pVisuals,             /* All of the device's visuals. */
-    int32_t             *numOverlayVisuals,     /* Number of OverlayInfo's pointed
+    int         *numOverlayVisuals,     /* Number of OverlayInfo's pointed
                                          * to by pOverlayVisuals.  If this
                                          * number is zero, the device does
                                          * not have overlay planes. */
     OverlayInfo **pOverlayVisuals,      /* The device's overlay plane visual
                                          * information. */
-    int32_t             *numImageVisuals,       /* Number of XVisualInfo's pointed
+    int         *numImageVisuals,       /* Number of XVisualInfo's pointed
                                          * to by pImageVisuals. */
     XVisualInfo ***pImageVisuals        /* The device's image visuals. */
-#endif
                     );
 
 
@@ -191,11 +190,9 @@
  ******************************************************************************/
 
 extern void FreeXVisualInfo(
-#if NeedFunctionPrototypes
     XVisualInfo *pVisuals,
     OverlayInfo *pOverlayVisuals,
     XVisualInfo **pImageVisuals
-#endif
                      );
 
 
@@ -219,22 +216,20 @@
  *
  ******************************************************************************/
 
-extern int32_t FindImagePlanesVisual(
-#if NeedFunctionPrototypes
+extern int FindImagePlanesVisual(
     Display     *display,               /* Which X server (aka "display"). */
-    int32_t             screen,                 /* Which screen of the "display". */
-    int32_t             numImageVisuals,        /* Number of XVisualInfo's pointed
+    int         screen,                 /* Which screen of the "display". */
+    int         numImageVisuals,        /* Number of XVisualInfo's pointed
                                          * to by pImageVisuals. */
     XVisualInfo **pImageVisuals,        /* The device's image visuals. */
-    int32_t             sbCmapHint,             /* What Starbase cmap modes will be
+    int         sbCmapHint,             /* What Starbase cmap modes will be
                                          * used with the visual.  NOTE: This
                                          * is a mask of the possible values. */
-    int32_t             depthHint,              /* Desired depth. */
-    int32_t             depthFlexibility,       /* How much the actual value in
+    int         depthHint,              /* Desired depth. */
+    int         depthFlexibility,       /* How much the actual value in
                                          * "depthHint" is desired. */
     Visual      **pImageVisualToUse,    /* The screen's image visual to use. */
-    int32_t             *depthObtained          /* Actual depth of the visual. */
-#endif
+    int         *depthObtained          /* Actual depth of the visual. */
                                      );
 
 
@@ -267,25 +262,23 @@
  *
  ******************************************************************************/
 
-extern int32_t FindOverlayPlanesVisual(
-#if NeedFunctionPrototypes
+extern int FindOverlayPlanesVisual(
     Display     *display,               /* Which X server (aka "display"). */
-    int32_t             screen,                 /* Which screen of the "display". */
-    int32_t             numOverlayVisuals,      /* Number of OverlayInfo's pointed
+    int         screen,                 /* Which screen of the "display". */
+    int         numOverlayVisuals,      /* Number of OverlayInfo's pointed
                                          * to by pOverlayVisuals. */
     OverlayInfo *pOverlayVisuals,       /* The device's overlay plane visual
                                          * information. */
-    int32_t             depthHint,              /* Desired depth. */
-    int32_t             depthFlexibility,       /* How much the actual value in
+    int         depthHint,              /* Desired depth. */
+    int         depthFlexibility,       /* How much the actual value in
                                          * "depthHint" is desired. */
-    int32_t             transparentBackground,  /* Non-zero if the visual must have
+    int         transparentBackground,  /* Non-zero if the visual must have
                                          * a transparent color. */
     Visual      **pOverlayVisualToUse,  /* The screen's overlay visual to
                                          * use. */
-    int32_t             *depthObtained,         /* Actual depth of the visual. */
-    int32_t             *transparentColor       /* The transparent color the program
+    int         *depthObtained,         /* Actual depth of the visual. */
+    int         *transparentColor       /* The transparent color the program
                                          * can use with the visual. */
-#endif
                                 );
 
 
@@ -308,27 +301,25 @@
  *
  ******************************************************************************/
 
-extern int32_t CreateImagePlanesWindow(
-#if NeedFunctionPrototypes
+extern int CreateImagePlanesWindow(
     Display     *display,               /* Which X server (aka "display"). */
-    int32_t             screen,                 /* Which screen of the "display". */
+    int         screen,                 /* Which screen of the "display". */
     Window      parentWindow,           /* Window ID of the parent window for
                                          * the created window. */
-    int32_t             windowX,                /* Desired X coord. of the window. */
-    int32_t             windowY,                /* Desired Y coord of the window. */
-    int32_t             windowWidth,            /* Desired width of the window. */
-    int32_t             windowHeight,           /* Desired height of the window. */
-    int32_t             windowDepth,            /* Desired depth of the window. */
+    int         windowX,                /* Desired X coord. of the window. */
+    int         windowY,                /* Desired Y coord of the window. */
+    int         windowWidth,            /* Desired width of the window. */
+    int         windowHeight,           /* Desired height of the window. */
+    int         windowDepth,            /* Desired depth of the window. */
     Visual      *pImageVisualToUse,     /* The window's image planes visual. */
-    int32_t             argc,                   /* Program's argc parameter. */
+    int         argc,                   /* Program's argc parameter. */
     char        *argv[],                /* Program's argv parameter. */
     char        *windowName,            /* Name to put on window's border. */
     char        *iconName,              /* Name to put on window's icon. */
     Window      *imageWindow,           /* Window ID of the created window. */
     Colormap    *imageColormap,         /* The window's colormap. */
-    int32_t             *mustFreeImageColormap  /* Non-zero if the program must call
+    int         *mustFreeImageColormap  /* Non-zero if the program must call
                                          * XFreeColormap() for imageColormap. */
-#endif
                                 );
 
 
@@ -351,30 +342,28 @@
  *
  ******************************************************************************/
 
-int32_t CreateOverlayPlanesWindow(
-#if NeedFunctionPrototypes
+int CreateOverlayPlanesWindow(
     Display     *display,               /* Which X server (aka "display"). */
-    int32_t             screen,                 /* Which screen of the "display". */
+    int         screen,                 /* Which screen of the "display". */
     Window      parentWindow,           /* Window ID of the parent window for
                                          * the created window. */
-    int32_t             windowX,                /* Desired X coord. of the window. */
-    int32_t             windowY,                /* Desired Y coord of the window. */
-    int32_t             windowWidth,            /* Desired width of the window. */
-    int32_t             windowHeight,           /* Desired height of the window. */
-    int32_t             windowDepth,            /* Desired depth of the window. */
+    int         windowX,                /* Desired X coord. of the window. */
+    int         windowY,                /* Desired Y coord of the window. */
+    int         windowWidth,            /* Desired width of the window. */
+    int         windowHeight,           /* Desired height of the window. */
+    int         windowDepth,            /* Desired depth of the window. */
     Visual      *pOverlayVisualToUse,   /* The window's overlay planes visual.*/
-    int32_t             argc,                   /* Program's argc parameter. */
+    int         argc,                   /* Program's argc parameter. */
     char        *argv[],                /* Program's argv parameter. */
     char        *windowName,            /* Name to put on window's border. */
     char        *iconName,              /* Name to put on window's icon. */
-    int32_t             transparentBackground,  /* Non-zero if the window's background
+    int         transparentBackground,  /* Non-zero if the window's background
                                          * should be a transparent color. */
-    int32_t             *transparentColor,      /* The transparent color to use as the
+    int         *transparentColor,      /* The transparent color to use as the
                                          * window's background. */
     Window      *overlayWindow,         /* Window ID of the created window. */
     Colormap    *overlayColormap,       /* The window's colormap. */
-    int32_t             *mustFreeOverlayColormap/* Non-zero if the program must call
+    int         *mustFreeOverlayColormap/* Non-zero if the program must call
                                           * XFreeColormap() for
                                           * overlayColormap. */
-#endif
                                 );
--- a/test/jdk/java/awt/Window/ShapedAndTranslucentWindows/Common.java	Thu Nov 08 12:09:06 2018 +0530
+++ b/test/jdk/java/awt/Window/ShapedAndTranslucentWindows/Common.java	Thu Nov 08 10:34:49 2018 -0800
@@ -47,7 +47,7 @@
     static final int STATIC_BLOCKS = 30;
     static final Color BG_COLOR = Color.BLUE;
     static final Color FG_COLOR = Color.RED;
-    static final int delay = 1000;
+    static final int delay = 55000;
     static final SecureRandom random = new SecureRandom();
     static final int dl = 100;
     static final Class[] WINDOWS_TO_TEST = { Window.class, Frame.class, Dialog.class };