view src/s/aix4-2.h @ 5043:d0c14ea98592

various frame-geometry fixes -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-02-15 Ben Wing <ben@xemacs.org> * EmacsFrame.c: * EmacsFrame.c (EmacsFrameResize): * console-msw-impl.h: * console-msw-impl.h (struct mswindows_frame): * console-msw-impl.h (FRAME_MSWINDOWS_TARGET_RECT): * device-tty.c: * device-tty.c (tty_asynch_device_change): * event-msw.c: * event-msw.c (mswindows_wnd_proc): * faces.c (Fface_list): * faces.h: * frame-gtk.c: * frame-gtk.c (gtk_set_initial_frame_size): * frame-gtk.c (gtk_set_frame_size): * frame-msw.c: * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_frame_size): * frame-msw.c (mswindows_size_frame_internal): * frame-msw.c (msprinter_init_frame_3): * frame.c: * frame.c (enum): * frame.c (Fmake_frame): * frame.c (adjust_frame_size): * frame.c (store_minibuf_frame_prop): * frame.c (Fframe_property): * frame.c (Fframe_properties): * frame.c (Fframe_displayable_pixel_height): * frame.c (Fframe_displayable_pixel_width): * frame.c (internal_set_frame_size): * frame.c (Fset_frame_height): * frame.c (Fset_frame_pixel_height): * frame.c (Fset_frame_displayable_pixel_height): * frame.c (Fset_frame_width): * frame.c (Fset_frame_pixel_width): * frame.c (Fset_frame_displayable_pixel_width): * frame.c (Fset_frame_size): * frame.c (Fset_frame_pixel_size): * frame.c (Fset_frame_displayable_pixel_size): * frame.c (frame_conversion_internal_1): * frame.c (get_frame_displayable_pixel_size): * frame.c (change_frame_size_1): * frame.c (change_frame_size): * frame.c (generate_title_string): * frame.h: * gtk-xemacs.c: * gtk-xemacs.c (gtk_xemacs_size_request): * gtk-xemacs.c (gtk_xemacs_size_allocate): * gtk-xemacs.c (gtk_xemacs_paint): * gutter.c: * gutter.c (update_gutter_geometry): * redisplay.c (end_hold_frame_size_changes): * redisplay.c (redisplay_frame): * toolbar.c: * toolbar.c (update_frame_toolbars_geometry): * window.c: * window.c (frame_pixsize_valid_p): * window.c (check_frame_size): Various fixes to frame geometry to make it a bit easier to understand and fix some bugs. 1. IMPORTANT: Some renamings. Will need to be applied carefully to the carbon repository, in the following order: -- pixel_to_char_size -> pixel_to_frame_unit_size -- char_to_pixel_size -> frame_unit_to_pixel_size -- pixel_to_real_char_size -> pixel_to_char_size -- char_to_real_pixel_size -> char_to_pixel_size -- Reverse second and third arguments of change_frame_size() and change_frame_size_1() to try to make functions consistent in putting width before height. -- Eliminate old round_size_to_char, because it didn't really do anything differently from round_size_to_real_char() -- round_size_to_real_char -> round_size_to_char; any places that called the old round_size_to_char should just call the new one. 2. IMPORTANT FOR CARBON: The set_frame_size() method is now passed sizes in "frame units", like all other frame-sizing functions, rather than some hacked-up combination of char-cell units and total pixel size. This only affects window systems that use "pixelated geometry", and I'm not sure if Carbon is one of them. MS Windows is pixelated, X and GTK are not. For pixelated-geometry systems, the size in set_frame_size() is in displayable pixels rather than total pixels and needs to be converted appropriately; take a look at the changes made to mswindows_set_frame_size() method if necessary. 3. Add a big long comment in frame.c describing how frame geometry works. 4. Remove MS Windows-specific character height and width fields, duplicative and unused. 5. frame-displayable-pixel-* and set-frame-displayable-pixel-* didn't use to work on MS Windows, but they do now. 6. In general, clean up the handling of "pixelated geometry" so that fewer functions have to worry about this. This is really an abomination that should be removed entirely but that will have to happen later. Fix some buggy code in frame_conversion_internal() that happened to "work" because it was countered by oppositely buggy code in change_frame_size(). 7. Clean up some frame-size code in toolbar.c and use functions already provided in frame.c instead of rolling its own. 8. Fix check_frame_size() in window.c, which formerly didn't take pixelated geometry into account.
author Ben Wing <ben@xemacs.org>
date Mon, 15 Feb 2010 22:14:11 -0600
parents aa5ed11f473b
children 2aa9cd456ae7 861f2601a38b
line wrap: on
line source

/* Definitions file for XEmacs running on IBM AIX version 4.2
 *    Copyright (C) 1985, 1986, 1990 Free Software Foundation, Inc.
 *
 *    This file is part of XEmacs.
 *
 *    XEmacs is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 2, or (at your option)
 *    any later version.
 *
 *    XEmacs 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 for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with XEmacs; see the file COPYING.  If not, write to
 *    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 *    Boston, MA 02111-1307, USA.  */

/* Synched up with: FSF 19.31. */

/*
 *	Define symbols to identify the version of Unix this is.
 *	Define all the symbols that apply correctly.
 */

#define USG				/* System III, System V, etc */
#define USG5

/*      Specify IBM AIX version of system */

#ifndef AIX
#define AIX
#define AIX4
#define AIX4_1
#endif

/*      This symbol should be defined on AIX Version 3  ??????? */
#ifndef _AIX
#define _AIX
#endif

/* SYSTEM_TYPE should indicate the kind of system you are using.
 *  It sets the Lisp variable system-type.  */

#define SYSTEM_TYPE "aix"

/* The file containing the kernel's symbol table is called /unix.  */

#define KERNEL_FILE "/unix"

/* The symbol in the kernel where the load average is found
 *    is named avenrun.  */

#define LDAV_SYMBOL "avenrun"

/* Special itemss needed to make Emacs run on this system.  */

/* On USG systems the system calls are interruptible by signals
 *  that the user program has elected to catch.  Thus the system call
 *   must be retried in these cases.  To handle this without massive
 *    changes in the source code, we remap the standard system call names
 *     to names for our own functions in sysdep.c that do the system call
 *      with retries. */

#define INTERRUPTIBLE_OPEN
#define INTERRUPTIBLE_IO

#ifndef __GNUC__
#define LINKER "cc"
#endif

/* Prevent -lg from being used for debugging.  Not needed.  */

#define LIBS_DEBUG

/* No need to specify -lc when linking.  */

#define LIB_STANDARD

/* Use terminfo instead of termcap.  */

#define TERMINFO

/* AIX doesn't define this.  */
#define unix 1

#ifndef __GNUC__
/* Otherwise, XEmacs is just too big ... */
#define C_SWITCH_SYSTEM "-mminimal-toc"
#endif

#define HAVE_ALLOCA

/* FIXME: This was needed for AIX 4.1.  Is it for AIX 4.2? */
/* The character-composition stuff is broken in X11R5.
 * Even with XIMStatusNothing aliased to XIMStatusNone,
 * tranle@intellicorp.com (Minh Tran-Le) reports that enabling
 * the internationalization code causes the modifier keys C, M and Shift
 * to beep after a mouse click.  */
#define X11R5_INHIBIT_I18N

/* For AIX, it turns out compiling emacs under AIX 3.2.4 REQUIRES "cc -g"
 *    because "cc -O" crashes. Under AIX 3.2.5, "cc -O" is required because
 *       "cc -g" crashes. Go figure.  --floppy@merlin.mit.edu */
#ifndef __GNUC__
#undef C_DEBUG_SWITCH
#undef C_OPTIMIZE_SWITCH
#define C_DEBUG_SWITCH
#define C_OPTIMIZE_SWITCH "-O"
#endif

#define MAIL_USE_LOCKF

/* XEmacs: from dkeller@VNET.IBM.COM */
#define BROKEN_SIGIO

#ifndef NOT_C_CODE
#define _XFUNCS_H_ 1

/* #### we don't use either any more.  some AIX user should delete the include
 * and see if anything breaks. --ben */
/* AIX is happier when bzero and strcasecmp are declared */
#include "strings.h"

/* Forward declarations for xlc warning suppressions */
struct ether_addr;
struct sockaddr_dl;

#ifdef __xlC__			/* "eXceLlent C compiler" ?! */
#if __xlC__ >= 1200
/* IBM's C compiler option `-O3' is too aggressive.
 * We recommend instead the combination `-O3 -qstrict', which seems safe.
 *
 * cc -O3 miscompiles at least two functions.  From IBM's docs:
 *
 * IBM> -qstrict turns off the following optimizations:
 *
 * IBM> Performing code motion and scheduling on computations such as loads
 * IBM> and floating-point computations that may trigger an exception.
 *
 * Nevertheless, we try to work with these compiler options. */
#pragma option_override (bytecount_to_charcount, "opt(strict,yes)")
#pragma option_override (Fexpand_file_name, "opt(strict,yes)")
#endif /* recent IBM C compiler */
#endif /* IBM's C compiler */

#endif /* C code */

/* getaddrinfo is broken in AIX 4.3 as per IY04165.
 *    At this time (2/21/2000), there's no PTF available.
 *       -- Mike Sperber <mike@xemacs.org> */

#undef HAVE_GETADDRINFO

#ifdef __GNUC__
#undef _NO_PROTO
#endif

/* For AIX, it turns out compiling emacs under AIX 3.2.4 REQUIRES "cc -g"
 *    because "cc -O" crashes.  Under AIX 3.2.5, "cc -O" is required because
 *       "cc -g" crashes. Go figure.  --floppy@merlin.mit.edu.
 *          4.1 seems to need -g again. -- larry@vaquita.mitra.com.  */
/* David Edelsohn <dje@watson.ibm.com> says that this actually depends
 *    on the version of XLC, which can't be predicted from the system version.
 *       What a mess!  */
#ifndef __GNUC__
#undef C_DEBUG_SWITCH
#undef C_OPTIMIZE_SWITCH
#define C_DEBUG_SWITCH "-g"
#endif