diff options
Diffstat (limited to 'X11/InitialI.h')
| -rw-r--r-- | X11/InitialI.h | 433 | 
1 files changed, 433 insertions, 0 deletions
| diff --git a/X11/InitialI.h b/X11/InitialI.h new file mode 100644 index 000000000..2ae9b743c --- /dev/null +++ b/X11/InitialI.h @@ -0,0 +1,433 @@ +/* $Xorg: InitialI.h,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */ + +/*********************************************************** + +Copyright 1987, 1988, 1994, 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. + + +Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. + +                        All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its  +documentation for any purpose and without fee is hereby granted,  +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in  +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission.   + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $XFree86: xc/lib/Xt/InitialI.h,v 3.10 2001/12/14 19:56:18 dawes Exp $ */ + +#ifndef _XtinitialI_h +#define _XtinitialI_h + +/**************************************************************** + * + * Displays + * + ****************************************************************/ + +#ifndef X_NOT_POSIX +#ifdef _POSIX_SOURCE +#include <limits.h> +#else +#define _POSIX_SOURCE +#include <limits.h> +#undef _POSIX_SOURCE +#endif +#endif +#ifndef PATH_MAX +#ifdef WIN32 +#define PATH_MAX 512 +#else +#include <sys/param.h> +#endif +#ifndef PATH_MAX +#ifdef MAXPATHLEN +#define PATH_MAX MAXPATHLEN +#else +#define PATH_MAX 1024 +#endif +#endif +#endif + +#include <X11/Xos.h> +#include <X11/Xpoll.h> + +_XFUNCPROTOBEGIN + +typedef struct _TimerEventRec { +        struct timeval        te_timer_value; +	struct _TimerEventRec *te_next; +	XtTimerCallbackProc   te_proc; +	XtAppContext	      app; +	XtPointer	      te_closure; +} TimerEventRec; + +typedef struct _InputEvent { +	XtInputCallbackProc   ie_proc; +	XtPointer	      ie_closure; +	struct _InputEvent    *ie_next; +	struct _InputEvent    *ie_oq; +	XtAppContext	      app; +	int		      ie_source; +	XtInputMask	      ie_condition; +} InputEvent; + +typedef struct _SignalEventRec { +	XtSignalCallbackProc  se_proc; +	XtPointer	      se_closure; +	struct _SignalEventRec *se_next; +	XtAppContext	      app; +	Boolean		      se_notice; +} SignalEventRec; + +typedef struct _WorkProcRec { +	XtWorkProc proc; +	XtPointer closure; +	struct _WorkProcRec *next; +	XtAppContext app; +} WorkProcRec; + + +typedef struct  +{ +#ifndef USE_POLL +  	fd_set rmask; +	fd_set wmask; +	fd_set emask; +#endif +	int	nfds; +} FdStruct; + +typedef struct _LangProcRec { +    XtLanguageProc	proc; +    XtPointer		closure; +} LangProcRec; + +typedef struct _ProcessContextRec { +    XtAppContext	defaultAppContext; +    XtAppContext	appContextList; +    ConverterTable	globalConverterTable; +    LangProcRec		globalLangProcRec; +} ProcessContextRec, *ProcessContext; + +typedef struct { +    char*	start; +    char*	current; +    int		bytes_remaining; +} Heap; + +typedef struct _DestroyRec DestroyRec; + + +typedef struct _XtAppStruct { +    XtAppContext next;		/* link to next app in process context */ +    ProcessContext process;	/* back pointer to our process context */ +    InternalCallbackList destroy_callbacks; +    Display **list; +    TimerEventRec *timerQueue; +    WorkProcRec *workQueue; +    InputEvent **input_list; +    InputEvent *outstandingQueue; +    SignalEventRec *signalQueue; +    XrmDatabase errorDB; +    XtErrorMsgHandler errorMsgHandler, warningMsgHandler; +    XtErrorHandler errorHandler, warningHandler; +    struct _ActionListRec *action_table; +    ConverterTable converterTable; +    unsigned long selectionTimeout; +    FdStruct fds; +    short count;			/* num of assigned entries in list */ +    short max;				/* allocate size of list */ +    short last; +    short input_count; +    short input_max;			/* elts input_list init'd with */ +    Boolean sync, being_destroyed, error_inited; +#ifndef NO_IDENTIFY_WINDOWS +    Boolean identify_windows;		/* debugging hack */ +#endif +    Heap heap; +    String * fallback_resources;	/* Set by XtAppSetFallbackResources. */ +    struct _ActionHookRec* action_hook_list; +    struct _BlockHookRec* block_hook_list; +    int destroy_list_size;		/* state data for 2-phase destroy */ +    int destroy_count; +    int dispatch_level; +    DestroyRec* destroy_list; +    Widget in_phase2_destroy; +    LangProcRec langProcRec; +    struct _TMBindCacheRec * free_bindings; +    String display_name_tried; +    Display **dpy_destroy_list; +    int dpy_destroy_count; +    Boolean exit_flag; +    Boolean rebuild_fdlist; +#ifdef XTHREADS +    LockPtr lock_info; +    ThreadAppProc lock; +    ThreadAppProc unlock; +    ThreadAppYieldLockProc yield_lock; +    ThreadAppRestoreLockProc restore_lock; +    ThreadAppProc free_lock; +#endif +} XtAppStruct; + +extern void _XtHeapInit(Heap* heap); +extern void _XtHeapFree(Heap* heap); + +#ifdef XTTRACEMEMORY + + +extern char *_XtHeapMalloc( +    Heap*	/* heap */, +    Cardinal	/* size */, +    char *	/* file */, +    int		/* line */ +); + +#define _XtHeapAlloc(heap,bytes) _XtHeapMalloc(heap, bytes, __FILE__, __LINE__) + +#else /* XTTRACEMEMORY */ + +extern char* _XtHeapAlloc( +    Heap*	/* heap */, +    Cardinal	/* size */ +); + +#endif /* XTTRACEMEMORY */ + +extern void _XtSetDefaultErrorHandlers( +    XtErrorMsgHandler*	/* errMsg */, +    XtErrorMsgHandler*	/* warnMsg */, +    XtErrorHandler*	/* err */, +    XtErrorHandler*	/* warn */ +); + +extern void _XtSetDefaultSelectionTimeout( +    unsigned long* /* timeout */ +); + +extern XtAppContext _XtDefaultAppContext( +    void +); + +extern ProcessContext _XtGetProcessContext( +    void +); + +Display * +_XtAppInit( +    XtAppContext*	/* app_context_return */, +    String		/* application_class */, +    XrmOptionDescRec*	/* options */, +    Cardinal		/* num_options */, +    int*		/* argc_in_out */, +    String**		/* argv_in_out */, +    String*		/* fallback_resources */ +); + +extern void _XtDestroyAppContexts( +    void +); + +extern void _XtCloseDisplays( +    XtAppContext	/* app */ +); + +extern int _XtAppDestroyCount; + +extern int _XtWaitForSomething( +    XtAppContext	/* app */, +    _XtBoolean 		/* ignoreEvents */, +    _XtBoolean 		/* ignoreTimers */, +    _XtBoolean 		/* ignoreInputs */, +    _XtBoolean		/* ignoreSignals */, +    _XtBoolean 		/* block */, +#ifdef XTHREADS +    _XtBoolean		/* drop_lock */, +#endif +    unsigned long*	/* howlong */ +); + +typedef struct _CaseConverterRec *CaseConverterPtr; +typedef struct _CaseConverterRec { +    KeySym		start;		/* first KeySym valid in converter */ +    KeySym		stop;		/* last KeySym valid in converter */ +    XtCaseProc		proc;		/* case converter function */ +    CaseConverterPtr	next;		/* next converter record */ +} CaseConverterRec; + +typedef struct _ExtensionSelectorRec { +    XtExtensionSelectProc proc; +    int min, max; +    XtPointer client_data; +} ExtSelectRec; + +typedef struct _XtPerDisplayStruct { +    InternalCallbackList destroy_callbacks; +    Region region; +    CaseConverterPtr case_cvt;		/* user-registered case converters */ +    XtKeyProc defaultKeycodeTranslator; +    XtAppContext appContext; +    unsigned long keysyms_serial;      /* for tracking MappingNotify events */ +    KeySym *keysyms;                   /* keycode to keysym table */ +    int keysyms_per_keycode;           /* number of keysyms for each keycode*/ +    int min_keycode, max_keycode;      /* range of keycodes */ +    KeySym *modKeysyms;                /* keysym values for modToKeysysm */ +    ModToKeysymTable *modsToKeysyms;   /* modifiers to Keysysms index table*/ +    unsigned char isModifier[32];      /* key-is-modifier-p bit table */ +    KeySym lock_meaning;	       /* Lock modifier meaning */ +    Modifiers mode_switch;	       /* keyboard group modifiers */ +    Modifiers num_lock;		       /* keyboard numlock modifiers */ +    Boolean being_destroyed; +    Boolean rv;			       /* reverse_video resource */ +    XrmName name;		       /* resolved app name */ +    XrmClass class;		       /* application class */ +    Heap heap; +    struct _GCrec *GClist;	       /* support for XtGetGC */ +    Drawable **pixmap_tab;             /* ditto for XtGetGC */ +    String language;		       /* XPG language string */ +    XEvent last_event;		       /* last event dispatched */ +    Time last_timestamp;	       /* from last event dispatched */ +    int multi_click_time;	       /* for XtSetMultiClickTime */ +    struct _TMKeyContextRec* tm_context;     /* for XtGetActionKeysym */ +    InternalCallbackList mapping_callbacks;  /* special case for TM */ +    XtPerDisplayInputRec pdi;	       /* state for modal grabs & kbd focus */ +    struct _WWTable *WWtable;	       /* window to widget table */ +    XrmDatabase *per_screen_db;        /* per screen resource databases */ +    XrmDatabase cmd_db;		       /* db from command line, if needed */ +    XrmDatabase server_db;	       /* resource property else .Xdefaults */ +    XtEventDispatchProc* dispatcher_list; +    ExtSelectRec* ext_select_list; +    int ext_select_count; +    Widget hook_object; +#ifndef X_NO_RESOURCE_CONFIGURATION_MANAGEMENT +    Atom rcm_init;			/* ResConfig - initialize */ +    Atom rcm_data;			/* ResConfig - data atom */ +#endif +} XtPerDisplayStruct, *XtPerDisplay; + +typedef struct _PerDisplayTable { +	Display *dpy; +	XtPerDisplayStruct perDpy; +	struct _PerDisplayTable *next; +} PerDisplayTable, *PerDisplayTablePtr; + +extern PerDisplayTablePtr _XtperDisplayList; + +extern XtPerDisplay _XtSortPerDisplayList( +    Display* /* dpy */ +); + +extern XtPerDisplay _XtGetPerDisplay( +    Display*		/* dpy */ +); + +extern XtPerDisplayInputRec* _XtGetPerDisplayInput( +    Display* 		/* dpy */ +); + +#if 0 +#ifdef DEBUG +#define _XtGetPerDisplay(display) \ +    ((_XtperDisplayList != NULL && (_XtperDisplayList->dpy == (display))) \ +     ? &_XtperDisplayList->perDpy \ +     : _XtSortPerDisplayList(display)) +#define _XtGetPerDisplayInput(display) \ +    ((_XtperDisplayList != NULL && (_XtperDisplayList->dpy == (display))) \ +     ? &_XtperDisplayList->perDpy.pdi \ +     : &_XtSortPerDisplayList(display)->pdi) +#else +#define _XtGetPerDisplay(display) \ +    ((_XtperDisplayList->dpy == (display)) \ +     ? &_XtperDisplayList->perDpy \ +     : _XtSortPerDisplayList(display)) +#define _XtGetPerDisplayInput(display) \ +    ((_XtperDisplayList->dpy == (display)) \ +     ? &_XtperDisplayList->perDpy.pdi \ +     : &_XtSortPerDisplayList(display)->pdi) +#endif /*DEBUG*/ +#endif + +extern void _XtDisplayInitialize( +    Display*		/* dpy */, +    XtPerDisplay	/* pd */, +    _Xconst char*	/* name */, +    XrmOptionDescRec*	/* urlist */, +    Cardinal 		/* num_urs */, +    int*		/* argc */, +    char** 		/* argv */ +); + +extern void _XtCacheFlushTag( +    XtAppContext /* app */, +    XtPointer	 /* tag */ +); + +extern void _XtFreeActions( +    struct _ActionListRec* /* action_table */ +); + +extern void _XtDoPhase2Destroy( +    XtAppContext /* app */, +    int		 /* dispatch_level */ +); + +extern void _XtDoFreeBindings( +    XtAppContext /* app */ +); + +extern void _XtExtensionSelect( +    Widget /* widget */ +); + +#define _XtSafeToDestroy(app) ((app)->dispatch_level == 0) + +extern void _XtAllocWWTable( +    XtPerDisplay pd +); + +extern void _XtFreeWWTable( +    XtPerDisplay pd +); + +extern String _XtGetUserName(String dest, int len); +extern XrmDatabase _XtPreparseCommandLine(XrmOptionDescRec *urlist, +			Cardinal num_urs, int argc, String *argv, +			String *applName, String *displayName, +			String *language); + +_XFUNCPROTOEND + +#endif /* _XtinitialI_h */ | 
