diff options
author | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:43:39 +0200 |
---|---|---|
committer | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:43:39 +0200 |
commit | f4092abdf94af6a99aff944d6264bc1284e8bdd4 (patch) | |
tree | 2ac1c9cc16ceb93edb2c4382c088dac5aeafdf0f /nx-X11/lib/dps/dpsXtdisp.c | |
parent | a840692edc9c6d19cd7c057f68e39c7d95eb767d (diff) | |
download | nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.gz nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.bz2 nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.zip |
Imported nx-X11-3.1.0-1.tar.gznx-X11/3.1.0-1
Summary: Imported nx-X11-3.1.0-1.tar.gz
Keywords:
Imported nx-X11-3.1.0-1.tar.gz
into Git repository
Diffstat (limited to 'nx-X11/lib/dps/dpsXtdisp.c')
-rw-r--r-- | nx-X11/lib/dps/dpsXtdisp.c | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/nx-X11/lib/dps/dpsXtdisp.c b/nx-X11/lib/dps/dpsXtdisp.c new file mode 100644 index 000000000..d778a3245 --- /dev/null +++ b/nx-X11/lib/dps/dpsXtdisp.c @@ -0,0 +1,109 @@ +/* + * dpsXtdisp.c + * + * (c) Copyright 1994 Adobe Systems Incorporated. + * All rights reserved. + * + * Permission to use, copy, modify, distribute, and sublicense this software + * and its documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notices appear in all copies and that + * both those copyright notices and this permission notice appear in + * supporting documentation and that the name of Adobe Systems Incorporated + * not be used in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. No trademark license + * to use the Adobe trademarks is hereby granted. If the Adobe trademark + * "Display PostScript"(tm) is used to describe this software, its + * functionality or for any other purpose, such use shall be limited to a + * statement that this software works in conjunction with the Display + * PostScript system. Proper trademark attribution to reflect Adobe's + * ownership of the trademark shall be given whenever any such reference to + * the Display PostScript system is made. + * + * ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR + * ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. + * ADOBE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON- INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL ADOBE BE LIABLE + * TO YOU OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT, + * NEGLIGENCE, STRICT LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ADOBE WILL NOT + * PROVIDE ANY TRAINING OR OTHER SUPPORT FOR THE SOFTWARE. + * + * Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems + * Incorporated which may be registered in certain jurisdictions + * + * Author: Adobe Systems Incorporated + */ + +#include <X11/Intrinsic.h> + +#if XtSpecificationRelease < 6 + +#include "dpsassert.h" + +void XDPSSetXtEventDispatching(Display *dpy) +{ + DPSFatalProc(NULL, "Attempt to use XDPSSetXtEventDispatching with pre-R6 Intrinsics\n"); + exit(1); +} + +#else + +#include <DPS/XDPSlib.h> +#include <DPS/dpsXclient.h> + +typedef struct _DpyProcRec { + Display *dpy; + XtEventDispatchProc oldproc; + struct _DpyProcRec *next; +} DpyProcRec; + +static DpyProcRec *dpyProcList = NULL; + +static Boolean NXDispatcher(XEvent *event) +{ + DpyProcRec *d; + + if (XDPSDispatchEvent(event)) return True; + + for (d = dpyProcList; d != NULL && d->dpy != event->xany.display; + d = d->next) {} + if (d != NULL) return (*(d->oldproc))(event); + else return False; +} + +void XDPSSetXtEventDispatching(Display *dpy) +{ + int codes; + XExtCodes *c; + + codes = XDPSLInit(dpy, (int *) NULL, (char **) NULL); + + if (codes == -1) return; /* No extension or NX, so nothing to do */ + else { + (void) XDPSSetEventDelivery(dpy, dps_event_pass_through); + c = XDPSLGetCodes(dpy); + + /* First check for NX */ + if (!c->first_event) { + DpyProcRec *d = XtNew(DpyProcRec); + d->dpy = dpy; + d->next = dpyProcList; + d->oldproc = + XtSetEventDispatcher(dpy, ClientMessage, NXDispatcher); + dpyProcList = d; + + } else { + /* Extension */ + (void) XtSetEventDispatcher(dpy, c->first_event + PSEVENTSTATUS, + (XtEventDispatchProc) XDPSDispatchEvent); + (void) XtSetEventDispatcher(dpy, c->first_event + PSEVENTOUTPUT, + (XtEventDispatchProc) XDPSDispatchEvent); + (void) XtSetEventDispatcher(dpy, c->first_event + PSEVENTREADY, + (XtEventDispatchProc) XDPSDispatchEvent); + } + } +} + +#endif |