diff src/xfns.c @ 12667:a3466dad7d6d

Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
author Richard M. Stallman <rms@gnu.org>
date Tue, 25 Jul 1995 21:55:50 +0000
parents 5beb1d2be5c1
children 63201a2c1247
line wrap: on
line diff
--- a/src/xfns.c	Tue Jul 25 21:20:18 1995 +0000
+++ b/src/xfns.c	Tue Jul 25 21:55:50 1995 +0000
@@ -279,16 +279,16 @@
       if (!GC_FRAMEP (frame))
         continue;
       f = XFRAME (frame);
-      if (f->display.nothing == 1 || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
+      if (f->output_data.nothing == 1 || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
 	continue;
 #ifdef USE_X_TOOLKIT
-      if ((f->display.x->edit_widget 
-	   && XtWindow (f->display.x->edit_widget) == wdesc)
-          || f->display.x->icon_desc == wdesc)
+      if ((f->output_data.x->edit_widget 
+	   && XtWindow (f->output_data.x->edit_widget) == wdesc)
+          || f->output_data.x->icon_desc == wdesc)
         return f;
 #else /* not USE_X_TOOLKIT */
       if (FRAME_X_WINDOW (f) == wdesc
-          || f->display.x->icon_desc == wdesc)
+          || f->output_data.x->icon_desc == wdesc)
         return f;
 #endif /* not USE_X_TOOLKIT */
     }
@@ -306,7 +306,7 @@
 {
   Lisp_Object tail, frame;
   struct frame *f;
-  struct x_display *x;
+  struct x_output *x;
 
   for (tail = Vframe_list; GC_CONSP (tail); tail = XCONS (tail)->cdr)
     {
@@ -316,7 +316,7 @@
       f = XFRAME (frame);
       if (f->display.nothing == 1 || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
 	continue;
-      x = f->display.x;
+      x = f->output_data.x;
       /* This frame matches if the window is any of its widgets.  */
       if (wdesc == XtWindow (x->widget) 
 	  || wdesc == XtWindow (x->column_widget) 
@@ -338,7 +338,7 @@
 {
   Lisp_Object tail, frame;
   struct frame *f;
-  struct x_display *x;
+  struct x_output *x;
 
   for (tail = Vframe_list; GC_CONSP (tail); tail = XCONS (tail)->cdr)
     {
@@ -348,7 +348,7 @@
       f = XFRAME (frame);
       if (f->display.nothing == 1 || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
 	continue;
-      x = f->display.x;
+      x = f->output_data.x;
       /* This frame matches if the window is any of its widgets.  */
       if (wdesc == XtWindow (x->widget) 
 	  || wdesc == XtWindow (x->column_widget) 
@@ -367,7 +367,7 @@
 {
   Lisp_Object tail, frame;
   struct frame *f;
-  struct x_display *x;
+  struct x_output *x;
 
   for (tail = Vframe_list; GC_CONSP (tail); tail = XCONS (tail)->cdr)
     {
@@ -377,7 +377,7 @@
       f = XFRAME (frame);
       if (f->display.nothing == 1 || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
 	continue;
-      x = f->display.x;
+      x = f->output_data.x;
       /* Match if the window is this frame's menubar.  */
       if (lw_window_is_in_menubar (wdesc, x->menubar_widget))
 	return f;
@@ -395,7 +395,7 @@
 {
   Lisp_Object tail, frame;
   struct frame *f;
-  struct x_display *x;
+  struct x_output *x;
 
   for (tail = Vframe_list; GC_CONSP (tail); tail = XCONS (tail)->cdr)
     {
@@ -405,7 +405,7 @@
       f = XFRAME (frame);
       if (f->display.nothing == 1 || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
 	continue;
-      x = f->display.x;
+      x = f->output_data.x;
       /* This frame matches if the window is its topmost widget.  */
       if (wdesc == XtWindow (x->widget))
 	return f;
@@ -807,18 +807,18 @@
   if (EQ (left, Qunbound))
     {
       left_no_change = 1;
-      if (f->display.x->left_pos < 0)
-	left = Fcons (Qplus, Fcons (make_number (f->display.x->left_pos), Qnil));
+      if (f->output_data.x->left_pos < 0)
+	left = Fcons (Qplus, Fcons (make_number (f->output_data.x->left_pos), Qnil));
       else
-	XSETINT (left, f->display.x->left_pos);
+	XSETINT (left, f->output_data.x->left_pos);
     }
   if (EQ (top, Qunbound))
     {
       top_no_change = 1;
-      if (f->display.x->top_pos < 0)
-	top = Fcons (Qplus, Fcons (make_number (f->display.x->top_pos), Qnil));
+      if (f->output_data.x->top_pos < 0)
+	top = Fcons (Qplus, Fcons (make_number (f->output_data.x->top_pos), Qnil));
       else
-	XSETINT (top, f->display.x->top_pos);
+	XSETINT (top, f->output_data.x->top_pos);
     }
 
   /* If one of the icon positions was not set, preserve or default it.  */
@@ -864,28 +864,28 @@
 
     if ((!NILP (left) || !NILP (top))
 	&& ! (left_no_change && top_no_change)
-	&& ! (NUMBERP (left) && XINT (left) == f->display.x->left_pos
-	      && NUMBERP (top) && XINT (top) == f->display.x->top_pos))
+	&& ! (NUMBERP (left) && XINT (left) == f->output_data.x->left_pos
+	      && NUMBERP (top) && XINT (top) == f->output_data.x->top_pos))
       {
 	int leftpos = 0;
 	int toppos = 0;
 
 	/* Record the signs.  */
-	f->display.x->size_hint_flags &= ~ (XNegative | YNegative);
+	f->output_data.x->size_hint_flags &= ~ (XNegative | YNegative);
 	if (EQ (left, Qminus))
-	  f->display.x->size_hint_flags |= XNegative;
+	  f->output_data.x->size_hint_flags |= XNegative;
 	else if (INTEGERP (left))
 	  {
 	    leftpos = XINT (left);
 	    if (leftpos < 0)
-	      f->display.x->size_hint_flags |= XNegative;
+	      f->output_data.x->size_hint_flags |= XNegative;
 	  }
 	else if (CONSP (left) && EQ (XCONS (left)->car, Qminus)
 		 && CONSP (XCONS (left)->cdr)
 		 && INTEGERP (XCONS (XCONS (left)->cdr)->car))
 	  {
 	    leftpos = - XINT (XCONS (XCONS (left)->cdr)->car);
-	    f->display.x->size_hint_flags |= XNegative;
+	    f->output_data.x->size_hint_flags |= XNegative;
 	  }
 	else if (CONSP (left) && EQ (XCONS (left)->car, Qplus)
 		 && CONSP (XCONS (left)->cdr)
@@ -895,19 +895,19 @@
 	  }
 
 	if (EQ (top, Qminus))
-	  f->display.x->size_hint_flags |= YNegative;
+	  f->output_data.x->size_hint_flags |= YNegative;
 	else if (INTEGERP (top))
 	  {
 	    toppos = XINT (top);
 	    if (toppos < 0)
-	      f->display.x->size_hint_flags |= YNegative;
+	      f->output_data.x->size_hint_flags |= YNegative;
 	  }
 	else if (CONSP (top) && EQ (XCONS (top)->car, Qminus)
 		 && CONSP (XCONS (top)->cdr)
 		 && INTEGERP (XCONS (XCONS (top)->cdr)->car))
 	  {
 	    toppos = - XINT (XCONS (XCONS (top)->cdr)->car);
-	    f->display.x->size_hint_flags |= YNegative;
+	    f->output_data.x->size_hint_flags |= YNegative;
 	  }
 	else if (CONSP (top) && EQ (XCONS (top)->car, Qplus)
 		 && CONSP (XCONS (top)->cdr)
@@ -918,10 +918,10 @@
 
 
 	/* Store the numeric value of the position.  */
-	f->display.x->top_pos = toppos;
-	f->display.x->left_pos = leftpos;
-
-	f->display.x->win_gravity = NorthWestGravity;
+	f->output_data.x->top_pos = toppos;
+	f->output_data.x->left_pos = leftpos;
+
+	f->output_data.x->win_gravity = NorthWestGravity;
 
 	/* Actually set that position, and convert to absolute.  */
 	x_set_offset (f, leftpos, toppos, -1);
@@ -949,9 +949,9 @@
      the problem that arises when restarting window-managers.  */
 
 #ifdef USE_X_TOOLKIT
-  Window outer = XtWindow (f->display.x->widget);
+  Window outer = XtWindow (f->output_data.x->widget);
 #else
-  Window outer = f->display.x->window_desc;
+  Window outer = f->output_data.x->window_desc;
 #endif
   Window tmp_root_window;
   Window *tmp_children;
@@ -962,7 +962,7 @@
       x_catch_errors (FRAME_X_DISPLAY (f));
 
       XQueryTree (FRAME_X_DISPLAY (f), outer, &tmp_root_window,
-		  &f->display.x->parent_desc,
+		  &f->output_data.x->parent_desc,
 		  &tmp_children, &tmp_nchildren);
       xfree (tmp_children);
 
@@ -970,17 +970,17 @@
 
       /* Find the position of the outside upper-left corner of
 	 the inner window, with respect to the outer window.  */
-      if (f->display.x->parent_desc != FRAME_X_DISPLAY_INFO (f)->root_window)
+      if (f->output_data.x->parent_desc != FRAME_X_DISPLAY_INFO (f)->root_window)
 	{
 	  XTranslateCoordinates (FRAME_X_DISPLAY (f),
 
 				 /* From-window, to-window.  */
 #ifdef USE_X_TOOLKIT
-				 XtWindow (f->display.x->widget),
+				 XtWindow (f->output_data.x->widget),
 #else
-				 f->display.x->window_desc,
+				 f->output_data.x->window_desc,
 #endif
-				 f->display.x->parent_desc,
+				 f->output_data.x->parent_desc,
 
 				 /* From-position, to-position.  */
 				 0, 0, &win_x, &win_y,
@@ -989,8 +989,8 @@
 				 &child);
 
 #if 0  /* The values seem to be right without this and wrong with.  */
-	  win_x += f->display.x->border_width;
-	  win_y += f->display.x->border_width;
+	  win_x += f->output_data.x->border_width;
+	  win_y += f->output_data.x->border_width;
 #endif
 	}
 
@@ -1007,8 +1007,8 @@
 
   x_uncatch_errors (FRAME_X_DISPLAY (f));
 
-  *xptr = f->display.x->left_pos - win_x;
-  *yptr = f->display.x->top_pos - win_y;
+  *xptr = f->output_data.x->left_pos - win_x;
+  *yptr = f->output_data.x->top_pos - win_y;
 }
 
 /* Insert a description of internally-recorded parameters of frame X
@@ -1026,22 +1026,22 @@
 
   /* Represent negative positions (off the top or left screen edge)
      in a way that Fmodify_frame_parameters will understand correctly.  */
-  XSETINT (tem, f->display.x->left_pos);
-  if (f->display.x->left_pos >= 0)
+  XSETINT (tem, f->output_data.x->left_pos);
+  if (f->output_data.x->left_pos >= 0)
     store_in_alist (alistptr, Qleft, tem);
   else
     store_in_alist (alistptr, Qleft, Fcons (Qplus, Fcons (tem, Qnil)));
 
-  XSETINT (tem, f->display.x->top_pos);
-  if (f->display.x->top_pos >= 0)
+  XSETINT (tem, f->output_data.x->top_pos);
+  if (f->output_data.x->top_pos >= 0)
     store_in_alist (alistptr, Qtop, tem);
   else
     store_in_alist (alistptr, Qtop, Fcons (Qplus, Fcons (tem, Qnil)));
 
   store_in_alist (alistptr, Qborder_width,
-       	   make_number (f->display.x->border_width));
+       	   make_number (f->output_data.x->border_width));
   store_in_alist (alistptr, Qinternal_border_width,
-       	   make_number (f->display.x->internal_border_width));
+       	   make_number (f->output_data.x->internal_border_width));
   sprintf (buf, "%ld", (long) FRAME_X_WINDOW (f));
   store_in_alist (alistptr, Qwindow_id,
        	   build_string (buf));
@@ -1182,15 +1182,15 @@
      struct frame *f;
      Lisp_Object arg, oldval;
 {
-  f->display.x->foreground_pixel
+  f->output_data.x->foreground_pixel
     = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
   if (FRAME_X_WINDOW (f) != 0)
     {
       BLOCK_INPUT;
-      XSetForeground (FRAME_X_DISPLAY (f), f->display.x->normal_gc,
-		      f->display.x->foreground_pixel);
-      XSetBackground (FRAME_X_DISPLAY (f), f->display.x->reverse_gc,
-		      f->display.x->foreground_pixel);
+      XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc,
+		      f->output_data.x->foreground_pixel);
+      XSetBackground (FRAME_X_DISPLAY (f), f->output_data.x->reverse_gc,
+		      f->output_data.x->foreground_pixel);
       UNBLOCK_INPUT;
       recompute_basic_faces (f);
       if (FRAME_VISIBLE_P (f))
@@ -1206,28 +1206,28 @@
   Pixmap temp;
   int mask;
 
-  f->display.x->background_pixel
+  f->output_data.x->background_pixel
     = x_decode_color (f, arg, WHITE_PIX_DEFAULT (f));
 
   if (FRAME_X_WINDOW (f) != 0)
     {
       BLOCK_INPUT;
       /* The main frame area.  */
-      XSetBackground (FRAME_X_DISPLAY (f), f->display.x->normal_gc,
-		      f->display.x->background_pixel);
-      XSetForeground (FRAME_X_DISPLAY (f), f->display.x->reverse_gc,
-		      f->display.x->background_pixel);
-      XSetForeground (FRAME_X_DISPLAY (f), f->display.x->cursor_gc,
-		      f->display.x->background_pixel);
+      XSetBackground (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc,
+		      f->output_data.x->background_pixel);
+      XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->reverse_gc,
+		      f->output_data.x->background_pixel);
+      XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->cursor_gc,
+		      f->output_data.x->background_pixel);
       XSetWindowBackground (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
-			    f->display.x->background_pixel);
+			    f->output_data.x->background_pixel);
       {
 	Lisp_Object bar;
 	for (bar = FRAME_SCROLL_BARS (f); !NILP (bar);
 	     bar = XSCROLL_BAR (bar)->next)
 	  XSetWindowBackground (FRAME_X_DISPLAY (f),
 				SCROLL_BAR_X_WINDOW (XSCROLL_BAR (bar)),
-				f->display.x->background_pixel);
+				f->output_data.x->background_pixel);
       }
       UNBLOCK_INPUT;
 
@@ -1247,13 +1247,13 @@
   int mask_color;
 
   if (!EQ (Qnil, arg))
-    f->display.x->mouse_pixel
+    f->output_data.x->mouse_pixel
       = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
-  mask_color = f->display.x->background_pixel;
+  mask_color = f->output_data.x->background_pixel;
 				/* No invisible pointers.  */
-  if (mask_color == f->display.x->mouse_pixel
-	&& mask_color == f->display.x->background_pixel)
-    f->display.x->mouse_pixel = f->display.x->foreground_pixel;
+  if (mask_color == f->output_data.x->mouse_pixel
+	&& mask_color == f->output_data.x->background_pixel)
+    f->output_data.x->mouse_pixel = f->output_data.x->foreground_pixel;
 
   BLOCK_INPUT;
 
@@ -1306,7 +1306,7 @@
   {
     XColor fore_color, back_color;
 
-    fore_color.pixel = f->display.x->mouse_pixel;
+    fore_color.pixel = f->output_data.x->mouse_pixel;
     back_color.pixel = mask_color;
     XQueryColor (FRAME_X_DISPLAY (f),
 		 DefaultColormap (FRAME_X_DISPLAY (f),
@@ -1331,23 +1331,23 @@
       XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), cursor);
     }
 
-  if (cursor != f->display.x->text_cursor && f->display.x->text_cursor != 0)
-    XFreeCursor (FRAME_X_DISPLAY (f), f->display.x->text_cursor);
-  f->display.x->text_cursor = cursor;
-
-  if (nontext_cursor != f->display.x->nontext_cursor
-      && f->display.x->nontext_cursor != 0)
-    XFreeCursor (FRAME_X_DISPLAY (f), f->display.x->nontext_cursor);
-  f->display.x->nontext_cursor = nontext_cursor;
-
-  if (mode_cursor != f->display.x->modeline_cursor
-      && f->display.x->modeline_cursor != 0)
-    XFreeCursor (FRAME_X_DISPLAY (f), f->display.x->modeline_cursor);
-  f->display.x->modeline_cursor = mode_cursor;
-  if (cross_cursor != f->display.x->cross_cursor
-      && f->display.x->cross_cursor != 0)
-    XFreeCursor (FRAME_X_DISPLAY (f), f->display.x->cross_cursor);
-  f->display.x->cross_cursor = cross_cursor;
+  if (cursor != f->output_data.x->text_cursor && f->output_data.x->text_cursor != 0)
+    XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->text_cursor);
+  f->output_data.x->text_cursor = cursor;
+
+  if (nontext_cursor != f->output_data.x->nontext_cursor
+      && f->output_data.x->nontext_cursor != 0)
+    XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->nontext_cursor);
+  f->output_data.x->nontext_cursor = nontext_cursor;
+
+  if (mode_cursor != f->output_data.x->modeline_cursor
+      && f->output_data.x->modeline_cursor != 0)
+    XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->modeline_cursor);
+  f->output_data.x->modeline_cursor = mode_cursor;
+  if (cross_cursor != f->output_data.x->cross_cursor
+      && f->output_data.x->cross_cursor != 0)
+    XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->cross_cursor);
+  f->output_data.x->cross_cursor = cross_cursor;
 
   XFlush (FRAME_X_DISPLAY (f));
   UNBLOCK_INPUT;
@@ -1364,24 +1364,24 @@
     fore_pixel = x_decode_color (f, Vx_cursor_fore_pixel,
 				 WHITE_PIX_DEFAULT (f));
   else
-    fore_pixel = f->display.x->background_pixel;
-  f->display.x->cursor_pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
+    fore_pixel = f->output_data.x->background_pixel;
+  f->output_data.x->cursor_pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
   
   /* Make sure that the cursor color differs from the background color.  */
-  if (f->display.x->cursor_pixel == f->display.x->background_pixel)
+  if (f->output_data.x->cursor_pixel == f->output_data.x->background_pixel)
     {
-      f->display.x->cursor_pixel = f->display.x->mouse_pixel;
-      if (f->display.x->cursor_pixel == fore_pixel)
-	fore_pixel = f->display.x->background_pixel;
+      f->output_data.x->cursor_pixel = f->output_data.x->mouse_pixel;
+      if (f->output_data.x->cursor_pixel == fore_pixel)
+	fore_pixel = f->output_data.x->background_pixel;
     }
-  f->display.x->cursor_foreground_pixel = fore_pixel;
+  f->output_data.x->cursor_foreground_pixel = fore_pixel;
 
   if (FRAME_X_WINDOW (f) != 0)
     {
       BLOCK_INPUT;
-      XSetBackground (FRAME_X_DISPLAY (f), f->display.x->cursor_gc,
-		      f->display.x->cursor_pixel);
-      XSetForeground (FRAME_X_DISPLAY (f), f->display.x->cursor_gc,
+      XSetBackground (FRAME_X_DISPLAY (f), f->output_data.x->cursor_gc,
+		      f->output_data.x->cursor_pixel);
+      XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->cursor_gc,
 		      fore_pixel);
       UNBLOCK_INPUT;
 
@@ -1428,9 +1428,9 @@
      struct frame *f;
      int pix;
 {
-  f->display.x->border_pixel = pix;
-
-  if (FRAME_X_WINDOW (f) != 0 && f->display.x->border_width > 0)
+  f->output_data.x->border_pixel = pix;
+
+  if (FRAME_X_WINDOW (f) != 0 && f->output_data.x->border_width > 0)
     {
       Pixmap temp;
       int mask;
@@ -1453,13 +1453,13 @@
   if (EQ (arg, Qbar))
     {
       FRAME_DESIRED_CURSOR (f) = bar_cursor;
-      f->display.x->cursor_width = 2;
+      f->output_data.x->cursor_width = 2;
     }
   else if (CONSP (arg) && EQ (XCONS (arg)->car, Qbar)
 	   && INTEGERP (XCONS (arg)->cdr))
     {
       FRAME_DESIRED_CURSOR (f) = bar_cursor;
-      f->display.x->cursor_width = XINT (XCONS (arg)->cdr);
+      f->output_data.x->cursor_width = XINT (XCONS (arg)->cdr);
     }
   else
     /* Treat anything unknown as "box cursor".
@@ -1540,7 +1540,7 @@
 
   f->icon_name = arg;
 
-  if (f->display.x->icon_bitmap != 0)
+  if (f->output_data.x->icon_bitmap != 0)
     return;
 
   BLOCK_INPUT;
@@ -1595,13 +1595,13 @@
 {
   CHECK_NUMBER (arg, 0);
 
-  if (XINT (arg) == f->display.x->border_width)
+  if (XINT (arg) == f->output_data.x->border_width)
     return;
 
   if (FRAME_X_WINDOW (f) != 0)
     error ("Cannot change the border width of a window");
 
-  f->display.x->border_width = XINT (arg);
+  f->output_data.x->border_width = XINT (arg);
 }
 
 void
@@ -1610,14 +1610,14 @@
      Lisp_Object arg, oldval;
 {
   int mask;
-  int old = f->display.x->internal_border_width;
+  int old = f->output_data.x->internal_border_width;
 
   CHECK_NUMBER (arg, 0);
-  f->display.x->internal_border_width = XINT (arg);
-  if (f->display.x->internal_border_width < 0)
-    f->display.x->internal_border_width = 0;
-
-  if (f->display.x->internal_border_width == old)
+  f->output_data.x->internal_border_width = XINT (arg);
+  if (f->output_data.x->internal_border_width < 0)
+    f->output_data.x->internal_border_width = 0;
+
+  if (f->output_data.x->internal_border_width == old)
     return;
 
   if (FRAME_X_WINDOW (f) != 0)
@@ -1700,7 +1700,7 @@
       if (FRAME_EXTERNAL_MENU_BAR (f) == 1)
 	free_frame_menubar (f);
       FRAME_EXTERNAL_MENU_BAR (f) = 0;
-      f->display.x->menubar_widget = 0;
+      f->output_data.x->menubar_widget = 0;
     }
 #else /* not USE_X_TOOLKIT */
   FRAME_MENU_BAR_LINES (f) = nlines;
@@ -1777,8 +1777,8 @@
 	icon.nitems = XSTRING (icon_name)->size;
 #ifdef USE_X_TOOLKIT
 	XSetWMName (FRAME_X_DISPLAY (f),
-		    XtWindow (f->display.x->widget), &text);
-	XSetWMIconName (FRAME_X_DISPLAY (f), XtWindow (f->display.x->widget),
+		    XtWindow (f->output_data.x->widget), &text);
+	XSetWMIconName (FRAME_X_DISPLAY (f), XtWindow (f->output_data.x->widget),
 			&icon);
 #else /* not USE_X_TOOLKIT */
 	XSetWMName (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), &text);
@@ -1874,7 +1874,7 @@
   else if (INTEGERP (arg) && XINT (arg) > 0
 	   && XFASTINT (arg) != FRAME_SCROLL_BAR_PIXEL_WIDTH (f))
     {
-      int wid = FONT_WIDTH (f->display.x->font);
+      int wid = FONT_WIDTH (f->output_data.x->font);
       FRAME_SCROLL_BAR_PIXEL_WIDTH (f) = XFASTINT (arg);
       FRAME_SCROLL_BAR_COLS (f) = (XFASTINT (arg) + wid-1) / wid;
       if (FRAME_X_WINDOW (f))
@@ -2246,8 +2246,8 @@
   f->height = DEFAULT_ROWS;
   /* Window managers expect that if program-specified
      positions are not (0,0), they're intentional, not defaults.  */
-  f->display.x->top_pos = 0;
-  f->display.x->left_pos = 0;
+  f->output_data.x->top_pos = 0;
+  f->output_data.x->left_pos = 0;
 
   tem0 = x_get_arg (parms, Qheight, 0, 0, number);
   tem1 = x_get_arg (parms, Qwidth, 0, 0, number);
@@ -2270,14 +2270,14 @@
 	window_prompting |= PSize;
     }
 
-  f->display.x->vertical_scroll_bar_extra
+  f->output_data.x->vertical_scroll_bar_extra
     = (!FRAME_HAS_VERTICAL_SCROLL_BARS (f)
        ? 0
        : FRAME_SCROLL_BAR_PIXEL_WIDTH (f) > 0
        ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f)
-       : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->display.x->font)));
-  f->display.x->pixel_width = CHAR_TO_PIXEL_WIDTH (f, f->width);
-  f->display.x->pixel_height = CHAR_TO_PIXEL_HEIGHT (f, f->height);
+       : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->output_data.x->font)));
+  f->output_data.x->pixel_width = CHAR_TO_PIXEL_WIDTH (f, f->width);
+  f->output_data.x->pixel_height = CHAR_TO_PIXEL_HEIGHT (f, f->height);
 
   tem0 = x_get_arg (parms, Qtop, 0, 0, number);
   tem1 = x_get_arg (parms, Qleft, 0, 0, number);
@@ -2286,57 +2286,57 @@
     {
       if (EQ (tem0, Qminus))
 	{
-	  f->display.x->top_pos = 0;
+	  f->output_data.x->top_pos = 0;
 	  window_prompting |= YNegative;
 	}
       else if (CONSP (tem0) && EQ (XCONS (tem0)->car, Qminus)
 	       && CONSP (XCONS (tem0)->cdr)
 	       && INTEGERP (XCONS (XCONS (tem0)->cdr)->car))
 	{
-	  f->display.x->top_pos = - XINT (XCONS (XCONS (tem0)->cdr)->car);
+	  f->output_data.x->top_pos = - XINT (XCONS (XCONS (tem0)->cdr)->car);
 	  window_prompting |= YNegative;
 	}
       else if (CONSP (tem0) && EQ (XCONS (tem0)->car, Qplus)
 	       && CONSP (XCONS (tem0)->cdr)
 	       && INTEGERP (XCONS (XCONS (tem0)->cdr)->car))
 	{
-	  f->display.x->top_pos = XINT (XCONS (XCONS (tem0)->cdr)->car);
+	  f->output_data.x->top_pos = XINT (XCONS (XCONS (tem0)->cdr)->car);
 	}
       else if (EQ (tem0, Qunbound))
-	f->display.x->top_pos = 0;
+	f->output_data.x->top_pos = 0;
       else
 	{
 	  CHECK_NUMBER (tem0, 0);
-	  f->display.x->top_pos = XINT (tem0);
-	  if (f->display.x->top_pos < 0)
+	  f->output_data.x->top_pos = XINT (tem0);
+	  if (f->output_data.x->top_pos < 0)
 	    window_prompting |= YNegative;
 	}
 
       if (EQ (tem1, Qminus))
 	{
-	  f->display.x->left_pos = 0;
+	  f->output_data.x->left_pos = 0;
 	  window_prompting |= XNegative;
 	}
       else if (CONSP (tem1) && EQ (XCONS (tem1)->car, Qminus)
 	       && CONSP (XCONS (tem1)->cdr)
 	       && INTEGERP (XCONS (XCONS (tem1)->cdr)->car))
 	{
-	  f->display.x->left_pos = - XINT (XCONS (XCONS (tem1)->cdr)->car);
+	  f->output_data.x->left_pos = - XINT (XCONS (XCONS (tem1)->cdr)->car);
 	  window_prompting |= XNegative;
 	}
       else if (CONSP (tem1) && EQ (XCONS (tem1)->car, Qplus)
 	       && CONSP (XCONS (tem1)->cdr)
 	       && INTEGERP (XCONS (XCONS (tem1)->cdr)->car))
 	{
-	  f->display.x->left_pos = XINT (XCONS (XCONS (tem1)->cdr)->car);
+	  f->output_data.x->left_pos = XINT (XCONS (XCONS (tem1)->cdr)->car);
 	}
       else if (EQ (tem1, Qunbound))
-	f->display.x->left_pos = 0;
+	f->output_data.x->left_pos = 0;
       else
 	{
 	  CHECK_NUMBER (tem1, 0);
-	  f->display.x->left_pos = XINT (tem1);
-	  if (f->display.x->left_pos < 0)
+	  f->output_data.x->left_pos = XINT (tem1);
+	  if (f->output_data.x->left_pos < 0)
 	    window_prompting |= XNegative;
 	}
 
@@ -2467,12 +2467,12 @@
   XtSetArg (al[ac], XtNallowShellResize, 1); ac++;
   XtSetArg (al[ac], XtNinput, 1); ac++;
   XtSetArg (al[ac], XtNmappedWhenManaged, 0); ac++;
-  XtSetArg (al[ac], XtNborderWidth, f->display.x->border_width); ac++;
+  XtSetArg (al[ac], XtNborderWidth, f->output_data.x->border_width); ac++;
   shell_widget = XtAppCreateShell (f->namebuf, EMACS_CLASS,
 				   applicationShellWidgetClass,
 				   FRAME_X_DISPLAY (f), al, ac);
 
-  f->display.x->widget = shell_widget;
+  f->output_data.x->widget = shell_widget;
   /* maybe_set_screen_title_format (shell_widget); */
 
   pane_widget = lw_create_widget ("main", "pane", widget_id_tick++,
@@ -2482,7 +2482,7 @@
 				  (lw_callback) NULL,
 				  (lw_callback) NULL);
 
-  f->display.x->column_widget = pane_widget;
+  f->output_data.x->column_widget = pane_widget;
 
   /* mappedWhenManaged to false tells to the paned window to not map/unmap 
      the emacs screen when changing menubar.  This reduces flickering.  */
@@ -2497,7 +2497,7 @@
 				  emacsFrameClass,
 				  pane_widget, al, ac);
  
-  f->display.x->edit_widget = frame_widget;
+  f->output_data.x->edit_widget = frame_widget;
  
   XtManageChild (frame_widget); 
 
@@ -2509,9 +2509,9 @@
     int ac = 0;
     int extra_borders = 0;
     int menubar_size 
-      = (f->display.x->menubar_widget
-	 ? (f->display.x->menubar_widget->core.height
-	    + f->display.x->menubar_widget->core.border_width)
+      = (f->output_data.x->menubar_widget
+	 ? (f->output_data.x->menubar_widget->core.height
+	    + f->output_data.x->menubar_widget->core.border_width)
 	 : 0);
     extern char *lwlib_toolkit_type;
 
@@ -2522,13 +2522,13 @@
         menubar_size += ibw;
       }
 
-    f->display.x->menubar_height = menubar_size;
+    f->output_data.x->menubar_height = menubar_size;
 
     /* Motif seems to need this amount added to the sizes
        specified for the shell widget.  The Athena/Lucid widgets don't.
        Both conclusions reached experimentally.  -- rms.  */
     if (!strcmp (lwlib_toolkit_type, "motif"))
-      XtVaGetValues (f->display.x->edit_widget, XtNinternalBorderWidth,
+      XtVaGetValues (f->output_data.x->edit_widget, XtNinternalBorderWidth,
 		     &extra_borders, NULL);
 
     /* Convert our geometry parameters into a geometry string
@@ -2537,9 +2537,9 @@
        is a user-specified or program-specified one.
        We pass that information later, in x_wm_set_size_hints.  */
     {
-      int left = f->display.x->left_pos;
+      int left = f->output_data.x->left_pos;
       int xneg = window_prompting & XNegative;
-      int top = f->display.x->top_pos;
+      int top = f->output_data.x->top_pos;
       int yneg = window_prompting & YNegative;
       if (xneg)
 	left = -left;
@@ -2576,10 +2576,10 @@
   class_hints.res_class = EMACS_CLASS;
   XSetClassHint (FRAME_X_DISPLAY (f), XtWindow (shell_widget), &class_hints);
 
-  f->display.x->wm_hints.input = True;
-  f->display.x->wm_hints.flags |= InputHint;
+  f->output_data.x->wm_hints.input = True;
+  f->output_data.x->wm_hints.flags |= InputHint;
   XSetWMHints (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
-	       &f->display.x->wm_hints);
+	       &f->output_data.x->wm_hints);
 
   hack_wm_protocols (f, shell_widget);
 
@@ -2619,13 +2619,13 @@
   }
 
   XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
-		 f->display.x->text_cursor);
+		 f->output_data.x->text_cursor);
 
   UNBLOCK_INPUT;
 
   if (!minibuffer_only && FRAME_EXTERNAL_MENU_BAR (f))
     initialize_frame_menubar (f);
-  lw_set_main_areas (pane_widget, f->display.x->menubar_widget, frame_widget);
+  lw_set_main_areas (pane_widget, f->output_data.x->menubar_widget, frame_widget);
 
   if (FRAME_X_WINDOW (f) == 0)
     error ("Unable to create window");
@@ -2643,8 +2643,8 @@
   XSetWindowAttributes attributes;
   unsigned long attribute_mask;
 
-  attributes.background_pixel = f->display.x->background_pixel;
-  attributes.border_pixel = f->display.x->border_pixel;
+  attributes.background_pixel = f->output_data.x->background_pixel;
+  attributes.border_pixel = f->output_data.x->border_pixel;
   attributes.bit_gravity = StaticGravity;
   attributes.backing_store = NotUseful;
   attributes.save_under = True;
@@ -2658,11 +2658,11 @@
   BLOCK_INPUT;
   FRAME_X_WINDOW (f)
     = XCreateWindow (FRAME_X_DISPLAY (f),
-		     f->display.x->parent_desc,
-		     f->display.x->left_pos,
-		     f->display.x->top_pos,
+		     f->output_data.x->parent_desc,
+		     f->output_data.x->left_pos,
+		     f->output_data.x->top_pos,
 		     PIXEL_WIDTH (f), PIXEL_HEIGHT (f),
-		     f->display.x->border_width,
+		     f->output_data.x->border_width,
 		     CopyFromParent, /* depth */
 		     InputOutput, /* class */
 		     FRAME_X_DISPLAY_INFO (f)->visual,
@@ -2676,17 +2676,17 @@
 
   /* The menubar is part of the ordinary display;
      it does not count in addition to the height of the window.  */
-  f->display.x->menubar_height = 0;
+  f->output_data.x->menubar_height = 0;
 
   /* This indicates that we use the "Passive Input" input model.
      Unless we do this, we don't get the Focus{In,Out} events that we
      need to draw the cursor correctly.  Accursed bureaucrats.
    XWhipsAndChains (FRAME_X_DISPLAY (f), IronMaiden, &TheRack);  */
 
-  f->display.x->wm_hints.input = True;
-  f->display.x->wm_hints.flags |= InputHint;
+  f->output_data.x->wm_hints.input = True;
+  f->output_data.x->wm_hints.flags |= InputHint;
   XSetWMHints (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
-	       &f->display.x->wm_hints);
+	       &f->output_data.x->wm_hints);
 
   /* Request "save yourself" and "delete window" commands from wm.  */
   {
@@ -2711,7 +2711,7 @@
   }
 
   XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
-		 f->display.x->text_cursor);
+		 f->output_data.x->text_cursor);
 
   UNBLOCK_INPUT;
 
@@ -2788,34 +2788,34 @@
      Note that many default values are used.  */
 
   /* Normal video */
-  gc_values.font = f->display.x->font->fid;
-  gc_values.foreground = f->display.x->foreground_pixel;
-  gc_values.background = f->display.x->background_pixel;
+  gc_values.font = f->output_data.x->font->fid;
+  gc_values.foreground = f->output_data.x->foreground_pixel;
+  gc_values.background = f->output_data.x->background_pixel;
   gc_values.line_width = 0;	/* Means 1 using fast algorithm.  */
-  f->display.x->normal_gc = XCreateGC (FRAME_X_DISPLAY (f),
+  f->output_data.x->normal_gc = XCreateGC (FRAME_X_DISPLAY (f),
 				       FRAME_X_WINDOW (f),
 				       GCLineWidth | GCFont
 				       | GCForeground | GCBackground,
 				       &gc_values);
 
   /* Reverse video style.  */
-  gc_values.foreground = f->display.x->background_pixel;
-  gc_values.background = f->display.x->foreground_pixel;
-  f->display.x->reverse_gc = XCreateGC (FRAME_X_DISPLAY (f),
+  gc_values.foreground = f->output_data.x->background_pixel;
+  gc_values.background = f->output_data.x->foreground_pixel;
+  f->output_data.x->reverse_gc = XCreateGC (FRAME_X_DISPLAY (f),
 					FRAME_X_WINDOW (f),
 					GCFont | GCForeground | GCBackground
 					| GCLineWidth,
 					&gc_values);
 
   /* Cursor has cursor-color background, background-color foreground.  */
-  gc_values.foreground = f->display.x->background_pixel;
-  gc_values.background = f->display.x->cursor_pixel;
+  gc_values.foreground = f->output_data.x->background_pixel;
+  gc_values.background = f->output_data.x->cursor_pixel;
   gc_values.fill_style = FillOpaqueStippled;
   gc_values.stipple
     = XCreateBitmapFromData (FRAME_X_DISPLAY (f),
 			     FRAME_X_DISPLAY_INFO (f)->root_window,
 			     cursor_bits, 16, 16);
-  f->display.x->cursor_gc
+  f->output_data.x->cursor_gc
     = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
 		 (GCFont | GCForeground | GCBackground
 		  | GCFillStyle | GCStipple | GCLineWidth),
@@ -2824,12 +2824,12 @@
   /* Create the gray border tile used when the pointer is not in
      the frame.  Since this depends on the frame's pixel values,
      this must be done on a per-frame basis.  */
-  f->display.x->border_tile
+  f->output_data.x->border_tile
     = (XCreatePixmapFromBitmapData
        (FRAME_X_DISPLAY (f), FRAME_X_DISPLAY_INFO (f)->root_window, 
 	gray_bits, gray_width, gray_height,
-	f->display.x->foreground_pixel,
-	f->display.x->background_pixel,
+	f->output_data.x->foreground_pixel,
+	f->output_data.x->background_pixel,
 	DefaultDepth (FRAME_X_DISPLAY (f),
 		      XScreenNumberOfScreen (FRAME_X_SCREEN (f)))));
 
@@ -2915,9 +2915,9 @@
   GCPRO1 (frame);
 
   f->output_method = output_x_window;
-  f->display.x = (struct x_display *) xmalloc (sizeof (struct x_display));
-  bzero (f->display.x, sizeof (struct x_display));
-  f->display.x->icon_bitmap = -1;
+  f->output_data.x = (struct x_output *) xmalloc (sizeof (struct x_output));
+  bzero (f->output_data.x, sizeof (struct x_output));
+  f->output_data.x->icon_bitmap = -1;
 
   f->icon_name
     = x_get_arg (parms, Qicon_name, "iconName", "Title", string);
@@ -2933,13 +2933,13 @@
 
   if (!NILP (parent))
     {
-      f->display.x->parent_desc = parent;
-      f->display.x->explicit_parent = 1;
+      f->output_data.x->parent_desc = parent;
+      f->output_data.x->explicit_parent = 1;
     }
   else
     {
-      f->display.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
-      f->display.x->explicit_parent = 0;
+      f->output_data.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
+      f->output_data.x->explicit_parent = 0;
     }
 
   /* Note that the frame has no physical cursor right now.  */
@@ -2993,7 +2993,7 @@
 #ifdef USE_X_TOOLKIT
   /* Prevent lwlib/xlwmenu.c from crashing because of a bug
      whereby it fails to get any font.  */
-  xlwmenu_default_font = f->display.x->font;
+  xlwmenu_default_font = f->output_data.x->font;
 #endif
 
   x_default_parameter (f, parms, Qborder_width, make_number (2),
@@ -3033,25 +3033,25 @@
   x_default_parameter (f, parms, Qscroll_bar_width, Qnil,
 		       "scrollBarWidth", "ScrollBarWidth", number);
 
-  f->display.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
+  f->output_data.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
   window_prompting = x_figure_window_size (f, parms);
 
   if (window_prompting & XNegative)
     {
       if (window_prompting & YNegative)
-	f->display.x->win_gravity = SouthEastGravity;
+	f->output_data.x->win_gravity = SouthEastGravity;
       else
-	f->display.x->win_gravity = NorthEastGravity;
+	f->output_data.x->win_gravity = NorthEastGravity;
     }
   else
     {
       if (window_prompting & YNegative)
-	f->display.x->win_gravity = SouthWestGravity;
+	f->output_data.x->win_gravity = SouthWestGravity;
       else
-	f->display.x->win_gravity = NorthWestGravity;
+	f->output_data.x->win_gravity = NorthWestGravity;
     }
 
-  f->display.x->size_hint_flags = window_prompting;
+  f->output_data.x->size_hint_flags = window_prompting;
 
 #ifdef USE_X_TOOLKIT
   x_window (f, window_prompting, minibuffer_only);
@@ -3106,7 +3106,7 @@
   /* Make the window appear on the frame and enable display,
      unless the caller says not to.  However, with explicit parent,
      Emacs cannot control visibility, so don't try.  */
-  if (! f->display.x->explicit_parent)
+  if (! f->output_data.x->explicit_parent)
     {
       Lisp_Object visibility;
 
@@ -3230,12 +3230,12 @@
 
       if (face_id < 0 || face_id >= FRAME_N_PARAM_FACES (f)
 	  || FRAME_PARAM_FACES (f) [face_id] == 0)
-	size_ref = f->display.x->font;
+	size_ref = f->output_data.x->font;
       else
 	{
 	  size_ref = FRAME_PARAM_FACES (f) [face_id]->font;
 	  if (size_ref == (XFontStruct *) (~0))
-	    size_ref = f->display.x->font;
+	    size_ref = f->output_data.x->font;
 	}
     }
 
@@ -3687,14 +3687,14 @@
 x_char_width (f)
      register struct frame *f;
 {
-  return FONT_WIDTH (f->display.x->font);
+  return FONT_WIDTH (f->output_data.x->font);
 }
 
 int
 x_char_height (f)
      register struct frame *f;
 {
-  return f->display.x->line_height;
+  return f->output_data.x->line_height;
 }
 
 int
@@ -3718,19 +3718,19 @@
 {
   int width;
   int height;
-  int left = (left_char * FONT_WIDTH (f->display.x->font)
-		    + f->display.x->internal_border_width);
-  int top = (top_char * f->display.x->line_height
-		   + f->display.x->internal_border_width);
+  int left = (left_char * FONT_WIDTH (f->output_data.x->font)
+		    + f->output_data.x->internal_border_width);
+  int top = (top_char * f->output_data.x->line_height
+		   + f->output_data.x->internal_border_width);
 
   if (chars < 0)
-    width = FONT_WIDTH (f->display.x->font) / 2;
+    width = FONT_WIDTH (f->output_data.x->font) / 2;
   else
-    width = FONT_WIDTH (f->display.x->font) * chars;
+    width = FONT_WIDTH (f->output_data.x->font) * chars;
   if (lines < 0)
-    height = f->display.x->line_height / 2;
+    height = f->output_data.x->line_height / 2;
   else
-    height = f->display.x->line_height * lines;
+    height = f->output_data.x->line_height * lines;
 
   XDrawRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
 		  gc, left, top, width, height);
@@ -3778,7 +3778,7 @@
     }
 
   BLOCK_INPUT;
-  x_rectangle (XFRAME (frame), XFRAME (frame)->display.x->cursor_gc,
+  x_rectangle (XFRAME (frame), XFRAME (frame)->output_data.x->cursor_gc,
 	       left, top, n_chars, n_lines);
   UNBLOCK_INPUT;
 
@@ -3827,7 +3827,7 @@
     }
 
   BLOCK_INPUT;
-  x_rectangle (XFRAME (frame), XFRAME (frame)->display.x->reverse_gc,
+  x_rectangle (XFRAME (frame), XFRAME (frame)->output_data.x->reverse_gc,
 	       left, top, n_chars, n_lines);
   UNBLOCK_INPUT;
 
@@ -3846,9 +3846,9 @@
      GC gc;
      int  top_x, top_y, bottom_x, bottom_y;
 {
-  register int ibw = f->display.x->internal_border_width;
-  register int font_w = FONT_WIDTH (f->display.x->font);
-  register int font_h = f->display.x->line_height;
+  register int ibw = f->output_data.x->internal_border_width;
+  register int font_w = FONT_WIDTH (f->output_data.x->font);
+  register int font_h = f->output_data.x->line_height;
   int y = top_y;
   int x = line_len (y);
   XPoint *pixel_points
@@ -3941,18 +3941,18 @@
   y1 = f->cursor_y;
 
   if (y1 > y0)			/* point below mouse */
-    outline_region (f, f->display.x->cursor_gc,
+    outline_region (f, f->output_data.x->cursor_gc,
 		    x0, y0, x1, y1);
   else if (y1 < y0)		/* point above mouse */
-    outline_region (f, f->display.x->cursor_gc,
+    outline_region (f, f->output_data.x->cursor_gc,
 		    x1, y1, x0, y0);
   else				/* same line: draw horizontal rectangle */
     {
       if (x1 > x0)
-	x_rectangle (f, f->display.x->cursor_gc,
+	x_rectangle (f, f->output_data.x->cursor_gc,
 		     x0, y0, (x1 - x0 + 1), 1);
       else if (x1 < x0)
-	  x_rectangle (f, f->display.x->cursor_gc,
+	  x_rectangle (f, f->output_data.x->cursor_gc,
 		       x1, y1, (x0 - x1 + 1), 1);
     }
 
@@ -3978,18 +3978,18 @@
   y1 = f->cursor_y;
 
   if (y1 > y0)			/* point below mouse */
-    outline_region (f, f->display.x->reverse_gc,
+    outline_region (f, f->output_data.x->reverse_gc,
 		      x0, y0, x1, y1);
   else if (y1 < y0)		/* point above mouse */
-    outline_region (f, f->display.x->reverse_gc,
+    outline_region (f, f->output_data.x->reverse_gc,
 		      x1, y1, x0, y0);
   else				/* same line: draw horizontal rectangle */
     {
       if (x1 > x0)
-	x_rectangle (f, f->display.x->reverse_gc,
+	x_rectangle (f, f->output_data.x->reverse_gc,
 		     x0, y0, (x1 - x0 + 1), 1);
       else if (x1 < x0)
-	x_rectangle (f, f->display.x->reverse_gc,
+	x_rectangle (f, f->output_data.x->reverse_gc,
 		     x1, y1, (x0 - x1 + 1), 1);
     }
   UNBLOCK_INPUT;
@@ -4090,13 +4090,13 @@
 			       && x_contour_x > point_x))
    {
      mouse_below_point = 1;
-     outline_region (f, f->display.x->cursor_gc, point_x, point_y,
+     outline_region (f, f->output_data.x->cursor_gc, point_x, point_y,
 		     x_contour_x, x_contour_y);
    }
  else
    {
      mouse_below_point = 0;
-     outline_region (f, f->display.x->cursor_gc, x_contour_x, x_contour_y,
+     outline_region (f, f->output_data.x->cursor_gc, x_contour_x, x_contour_y,
 		     point_x, point_y);
    }
 
@@ -4112,9 +4112,9 @@
 	   {
 	     mouse_below_point = 0;
 
-	     outline_region (f, f->display.x->reverse_gc, point_x, point_y,
+	     outline_region (f, f->output_data.x->reverse_gc, point_x, point_y,
 			     x_contour_x, x_contour_y);
-	     outline_region (f, f->display.x->cursor_gc, x_mouse_x, x_mouse_y,
+	     outline_region (f, f->output_data.x->cursor_gc, x_mouse_x, x_mouse_y,
 			     point_x, point_y);
 	   }
 	 else if (x_mouse_y < x_contour_y)	  /* Bottom clipped.  */
@@ -4135,9 +4135,9 @@
 	   {
 	     mouse_below_point = 1;
 
-	     outline_region (f, f->display.x->reverse_gc,
+	     outline_region (f, f->output_data.x->reverse_gc,
 			     x_contour_x, x_contour_y, point_x, point_y);
-	     outline_region (f, f->display.x->cursor_gc, point_x, point_y,
+	     outline_region (f, f->output_data.x->cursor_gc, point_x, point_y,
 			     x_mouse_x, x_mouse_y);
 	   }
 	 else if (x_mouse_y > x_contour_y)	  /* Top clipped.  */
@@ -4177,27 +4177,27 @@
   register Lisp_Object obj;
   struct frame *f = selected_frame;
   register struct window *w = XWINDOW (selected_window);
-  register GC line_gc = f->display.x->cursor_gc;
-  register GC erase_gc = f->display.x->reverse_gc;
+  register GC line_gc = f->output_data.x->cursor_gc;
+  register GC erase_gc = f->output_data.x->reverse_gc;
 #if 0
   char dash_list[] = {6, 4, 6, 4};
   int dashes = 4;
   XGCValues gc_values;
 #endif
   register int previous_y;
-  register int line = (x_mouse_y + 1) * f->display.x->line_height
-    + f->display.x->internal_border_width;
-  register int left = f->display.x->internal_border_width
+  register int line = (x_mouse_y + 1) * f->output_data.x->line_height
+    + f->output_data.x->internal_border_width;
+  register int left = f->output_data.x->internal_border_width
     + (w->left
-       * FONT_WIDTH (f->display.x->font));
+       * FONT_WIDTH (f->output_data.x->font));
   register int right = left + (w->width
-			       * FONT_WIDTH (f->display.x->font))
-    - f->display.x->internal_border_width;
+			       * FONT_WIDTH (f->output_data.x->font))
+    - f->output_data.x->internal_border_width;
 
 #if 0
   BLOCK_INPUT;
-  gc_values.foreground = f->display.x->cursor_pixel;
-  gc_values.background = f->display.x->background_pixel;
+  gc_values.foreground = f->output_data.x->cursor_pixel;
+  gc_values.background = f->output_data.x->background_pixel;
   gc_values.line_width = 1;
   gc_values.line_style = LineOnOffDash;
   gc_values.cap_style = CapRound;
@@ -4208,8 +4208,8 @@
 		       | GCLineWidth | GCForeground | GCBackground,
 		       &gc_values);
   XSetDashes (FRAME_X_DISPLAY (f), line_gc, 0, dash_list, dashes);
-  gc_values.foreground = f->display.x->background_pixel;
-  gc_values.background = f->display.x->foreground_pixel;
+  gc_values.foreground = f->output_data.x->background_pixel;
+  gc_values.background = f->output_data.x->foreground_pixel;
   erase_gc = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
 		       GCLineStyle | GCJoinStyle | GCCapStyle
 		       | GCLineWidth | GCForeground | GCBackground,
@@ -4225,8 +4225,8 @@
 	  && x_mouse_y < XINT (w->top) + XINT (w->height) - 1)
 	{
 	  previous_y = x_mouse_y;
-	  line = (x_mouse_y + 1) * f->display.x->line_height
-	    + f->display.x->internal_border_width;
+	  line = (x_mouse_y + 1) * f->output_data.x->line_height
+	    + f->output_data.x->internal_border_width;
 	  XDrawLine (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
 		     line_gc, left, line, right, line);
 	}
@@ -4279,12 +4279,12 @@
 
   BLOCK_INPUT;
   if (EQ (Vmouse_frame_part, Qtext_part)
-      && (current_pointer_shape != f->display.x->nontext_cursor))
+      && (current_pointer_shape != f->output_data.x->nontext_cursor))
     {
       unsigned char c;
       struct buffer *buf;
 
-      current_pointer_shape = f->display.x->nontext_cursor;
+      current_pointer_shape = f->output_data.x->nontext_cursor;
       XDefineCursor (FRAME_X_DISPLAY (f),
 		     FRAME_X_WINDOW (f),
 		     current_pointer_shape);
@@ -4293,9 +4293,9 @@
       c = *(BUF_CHAR_ADDRESS (buf, mouse_buffer_offset));
     }
   else if (EQ (Vmouse_frame_part, Qmodeline_part)
-	   && (current_pointer_shape != f->display.x->modeline_cursor))
+	   && (current_pointer_shape != f->output_data.x->modeline_cursor))
     {
-      current_pointer_shape = f->display.x->modeline_cursor;
+      current_pointer_shape = f->output_data.x->modeline_cursor;
       XDefineCursor (FRAME_X_DISPLAY (f),
 		     FRAME_X_WINDOW (f),
 		     current_pointer_shape);
@@ -4353,7 +4353,7 @@
 	  /* Erase previous rectangle.  */
 	  if (mouse_track_width)
 	    {
-	      x_rectangle (f, f->display.x->reverse_gc,
+	      x_rectangle (f, f->output_data.x->reverse_gc,
 			   mouse_track_left, mouse_track_top,
 			   mouse_track_width, 1);
 
@@ -4433,19 +4433,19 @@
 	    {
 	      XDefineCursor (FRAME_X_DISPLAY (f),
 			     FRAME_X_WINDOW (f),
-			     f->display.x->text_cursor);
-	      x_rectangle (f, f->display.x->cursor_gc,
+			     f->output_data.x->text_cursor);
+	      x_rectangle (f, f->output_data.x->cursor_gc,
 			   mouse_track_left, mouse_track_top,
 			   mouse_track_width, 1);
 	    }
 	  else if (in_mode_line)
 	    XDefineCursor (FRAME_X_DISPLAY (f),
 			   FRAME_X_WINDOW (f),
-			   f->display.x->modeline_cursor);
+			   f->output_data.x->modeline_cursor);
 	  else
 	    XDefineCursor (FRAME_X_DISPLAY (f),
 			   FRAME_X_WINDOW (f),
-			   f->display.x->nontext_cursor);
+			   f->output_data.x->nontext_cursor);
 	}
 
       XFlush (FRAME_X_DISPLAY (f));
@@ -4464,7 +4464,7 @@
 
   if (mouse_track_width)
     {
-      x_rectangle (f, f->display.x->reverse_gc,
+      x_rectangle (f, f->output_data.x->reverse_gc,
 		   mouse_track_left, mouse_track_top,
 		   mouse_track_width, 1);
       mouse_track_width = 0;
@@ -4477,7 +4477,7 @@
     }
   XDefineCursor (FRAME_X_DISPLAY (f),
 		 FRAME_X_WINDOW (f),
-		 f->display.x->nontext_cursor);
+		 f->output_data.x->nontext_cursor);
   XFlush (FRAME_X_DISPLAY (f));
   UNBLOCK_INPUT;
 
@@ -4502,7 +4502,7 @@
 				 FRAME_X_WINDOW (f), image_data,
 				 width, height);
   XCopyPlane (FRAME_X_DISPLAY (f), image, FRAME_X_WINDOW (f),
-	      f->display.x->normal_gc, 0, 0, width, height, x, y);
+	      f->output_data.x->normal_gc, 0, 0, width, height, x, y);
 }
 #endif