From c68f063be639f39c2facbb496e8455e8e3771b41 Mon Sep 17 00:00:00 2001 From: Matthieu Herrb Date: Fri, 1 Feb 2008 14:13:29 +1030 Subject: [PATCH 001/112] xfree86: don't call xalloc from signal handlers when posting events. Reviewed-by: Peter Hutterer --- hw/xfree86/common/xf86Xinput.c | 69 ++++++++++++++++------------------ 1 file changed, 33 insertions(+), 36 deletions(-) diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index 9a94c0487..3e9a4796e 100644 --- a/hw/xfree86/common/xf86Xinput.c +++ b/hw/xfree86/common/xf86Xinput.c @@ -133,6 +133,11 @@ xf86ProcessCommonOptions(LocalDevicePtr local, /* Backwards compatibility. */ local->history_size = GetMotionHistorySize(); + /* Preallocate xEvent store */ + if (!xf86Events) + xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum()); + if (!xf86Events) + FatalError("Couldn't allocate event store\n"); } /*********************************************************************** @@ -461,6 +466,8 @@ DeleteInputDeviceRequest(DeviceIntPtr pDev) * convenient functions to post events */ +#define MAX_VALUATORS 36 /* XXX from comment in dix/getevents.c */ + _X_EXPORT void xf86PostMotionEvent(DeviceIntPtr device, int is_absolute, @@ -470,17 +477,12 @@ xf86PostMotionEvent(DeviceIntPtr device, { va_list var; int i = 0; - static int *valuators = NULL; - static int n_valuators = 0; + static int valuators[MAX_VALUATORS]; - if (num_valuators > n_valuators) { - xfree (valuators); - valuators = NULL; - } - - if (!valuators) { - valuators = xcalloc(sizeof(int), num_valuators); - n_valuators = num_valuators; + if (num_valuators > MAX_VALUATORS) { + xf86Msg(X_ERROR, "xf86PostMotionEvent: num_valuator %d" + " is greater than MAX_VALUATORS\n", num_valuators); + return; } va_start(var, num_valuators); @@ -529,9 +531,7 @@ xf86PostMotionEventP(DeviceIntPtr device, #endif if (!xf86Events) - xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum()); - if (!xf86Events) - FatalError("Couldn't allocate event store\n"); + FatalError("Didn't allocate event store\n"); nevents = GetPointerEvents(xf86Events, device, MotionNotify, 0, flags, first_valuator, num_valuators, @@ -555,9 +555,15 @@ xf86PostProximityEvent(DeviceIntPtr device, ...) { va_list var; - int i, nevents, *valuators = NULL; + int i, nevents; + int valuators[MAX_VALUATORS]; - valuators = xcalloc(sizeof(int), num_valuators); + + if (num_valuators > MAX_VALUATORS) { + xf86Msg(X_ERROR, "xf86PostMotionEvent: num_valuator %d" + " is greater than MAX_VALUATORS\n", num_valuators); + return; + } va_start(var, num_valuators); for (i = 0; i < num_valuators; i++) @@ -565,9 +571,7 @@ xf86PostProximityEvent(DeviceIntPtr device, va_end(var); if (!xf86Events) - xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum()); - if (!xf86Events) - FatalError("Couldn't allocate event store\n"); + FatalError("Didn't allocate event store\n"); nevents = GetProximityEvents(xf86Events, device, is_in ? ProximityIn : ProximityOut, @@ -575,7 +579,6 @@ xf86PostProximityEvent(DeviceIntPtr device, for (i = 0; i < nevents; i++) mieqEnqueue(device, xf86Events + i); - xfree(valuators); } _X_EXPORT void @@ -588,7 +591,7 @@ xf86PostButtonEvent(DeviceIntPtr device, ...) { va_list var; - int *valuators = NULL; + int valuators[MAX_VALUATORS]; int i = 0, nevents = 0; int index; @@ -599,18 +602,19 @@ xf86PostButtonEvent(DeviceIntPtr device, return; } #endif + if (num_valuators > MAX_VALUATORS) { + xf86Msg(X_ERROR, "xf86PostMotionEvent: num_valuator %d" + " is greater than MAX_VALUATORS\n", num_valuators); + return; + } - valuators = xcalloc(sizeof(int), num_valuators); - va_start(var, num_valuators); for (i = 0; i < num_valuators; i++) valuators[i] = va_arg(var, int); va_end(var); if (!xf86Events) - xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum()); - if (!xf86Events) - FatalError("Couldn't allocate event store\n"); + FatalError("Didn't allocate event store\n"); nevents = GetPointerEvents(xf86Events, device, is_down ? ButtonPress : ButtonRelease, button, @@ -620,8 +624,6 @@ xf86PostButtonEvent(DeviceIntPtr device, for (i = 0; i < nevents; i++) mieqEnqueue(device, xf86Events + i); - - xfree(valuators); } _X_EXPORT void @@ -634,7 +636,8 @@ xf86PostKeyEvent(DeviceIntPtr device, ...) { va_list var; - int i = 0, nevents = 0, *valuators = NULL; + int i = 0, nevents = 0; + static int valuators[MAX_VALUATORS]; /* instil confidence in the user */ DebugF("this function has never been tested properly. if things go quite " @@ -642,12 +645,9 @@ xf86PostKeyEvent(DeviceIntPtr device, "broken.\n"); if (!xf86Events) - xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum()); - if (!xf86Events) - FatalError("Couldn't allocate event store\n"); + FatalError("Didn't allocate event store\n"); if (is_absolute) { - valuators = xcalloc(sizeof(int), num_valuators); va_start(var, num_valuators); for (i = 0; i < num_valuators; i++) valuators[i] = va_arg(var, int); @@ -657,7 +657,6 @@ xf86PostKeyEvent(DeviceIntPtr device, is_down ? KeyPress : KeyRelease, key_code, first_valuator, num_valuators, valuators); - xfree(valuators); } else { nevents = GetKeyboardEvents(xf86Events, device, @@ -686,9 +685,7 @@ xf86PostKeyboardEvent(DeviceIntPtr device, #endif if (!xf86Events) - xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum()); - if (!xf86Events) - FatalError("Couldn't allocate event store\n"); + FatalError("Didn't allocate event store\n"); nevents = GetKeyboardEvents(xf86Events, device, is_down ? KeyPress : KeyRelease, key_code); From 10617dc0fb7166ccd5b2e92fa708390c2d7d0d27 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 1 Feb 2008 14:24:04 +1030 Subject: [PATCH 002/112] xfree86: stick two more checks in for num_valuators < MAX_VALUATORS --- hw/xfree86/common/xf86Xinput.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index 3e9a4796e..eafc0e9a0 100644 --- a/hw/xfree86/common/xf86Xinput.c +++ b/hw/xfree86/common/xf86Xinput.c @@ -507,6 +507,12 @@ xf86PostMotionEventP(DeviceIntPtr device, int index; int flags = 0; + if (num_valuators > MAX_VALUATORS) { + xf86Msg(X_ERROR, "xf86PostMotionEvent: num_valuator %d" + " is greater than MAX_VALUATORS\n", num_valuators); + return; + } + if (is_absolute) flags = POINTER_ABSOLUTE; else @@ -644,6 +650,12 @@ xf86PostKeyEvent(DeviceIntPtr device, "badly south after this message, then xf86PostKeyEvent is " "broken.\n"); + if (num_valuators > MAX_VALUATORS) { + xf86Msg(X_ERROR, "xf86PostMotionEvent: num_valuator %d" + " is greater than MAX_VALUATORS\n", num_valuators); + return; + } + if (!xf86Events) FatalError("Didn't allocate event store\n"); From 521a7f26e088029707fb9a2bb80c9ddc734a3f8b Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 5 Feb 2008 18:34:31 +1030 Subject: [PATCH 003/112] mi: Only UpdateSpriteForScreen if we actually changed the screen. (Bug #12650) X.Org Bug 12650 --- mi/mipointer.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mi/mipointer.c b/mi/mipointer.c index 2c3c68913..b55e68bf0 100644 --- a/mi/mipointer.c +++ b/mi/mipointer.c @@ -231,10 +231,14 @@ miPointerWarpCursor (pScreen, x, y) ScreenPtr pScreen; int x, y; { + BOOL changedScreen = FALSE; SetupScreen (pScreen); if (miPointer.pScreen != pScreen) + { (*pScreenPriv->screenFuncs->NewEventScreen) (pScreen, TRUE); + changedScreen = TRUE; + } if (GenerateEvent) { @@ -255,7 +259,9 @@ miPointerWarpCursor (pScreen, x, y) miPointer.y = y; miPointer.pScreen = pScreen; } - UpdateSpriteForScreen (pScreen) ; + + if (changedScreen) + UpdateSpriteForScreen (pScreen) ; } /* From 41991fb991313202e8e6b513fe928ba14f8fcb87 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 5 Feb 2008 16:01:56 +1030 Subject: [PATCH 004/112] xkb: when copying sections, make sure num_rows is set too. --- xkb/xkbUtils.c | 1 + 1 file changed, 1 insertion(+) diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c index 1fb47ed56..9f813e5e3 100644 --- a/xkb/xkbUtils.c +++ b/xkb/xkbUtils.c @@ -1806,6 +1806,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) return FALSE; dsection->rows = tmp; } + dsection->num_rows = ssection->num_rows; for (j = 0, srow = ssection->rows, drow = dsection->rows; j < ssection->num_rows; j++, srow++, drow++) { From 12e532403210c15a25200ef448bfe9701735ab20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20Vigerl=C3=B6f?= Date: Sat, 2 Feb 2008 22:44:31 +0100 Subject: [PATCH 005/112] dix: Always add valuator information if present Send valuator information for all event types, not only for MotionEvents and absolute button events. --- dix/getevents.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/dix/getevents.c b/dix/getevents.c index 12cb950b2..94cbd1553 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -525,9 +525,6 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, int num_events = 0, final_valuator = 0; CARD32 ms = 0; deviceKeyButtonPointer *kbp = NULL; - /* Thanks to a broken lib, we _always_ have to chase DeviceMotionNotifies - * with DeviceValuators. */ - Bool sendValuators = (type == MotionNotify || flags & POINTER_ABSOLUTE); DeviceIntPtr cp = inputInfo.pointer; int x = 0, y = 0; Bool coreOnly = (pDev == inputInfo.pointer); @@ -553,7 +550,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, return 0; /* Do we need to send a DeviceValuator event? */ - if (!coreOnly && sendValuators) { + if (!coreOnly && num_valuators) { if ((((num_valuators - 1) / 6) + 1) > MAX_VALUATOR_EVENTS) num_valuators = MAX_VALUATOR_EVENTS * 6; num_events += ((num_valuators - 1) / 6) + 1; @@ -684,7 +681,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, kbp->root_y = y; events++; - if (sendValuators) { + if (num_valuators) { kbp->deviceid |= MORE_EVENTS; clipValuators(pDev, first_valuator, num_valuators, valuators); events = getValuatorEvents(events, pDev, first_valuator, From f04c0838699f1a733735838e74cfbb1677b15dc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20Vigerl=C3=B6f?= Date: Sat, 2 Feb 2008 22:45:31 +0100 Subject: [PATCH 006/112] Bug # 10324: dix: Allow arbitrary value ranges in GetPointerEvents Don't use a possitive value as a marker for if a max-value is defined on the valuators. Use the existence of a valid value range instead. This will also make it possible to define arbitrary start and end-values for min and max as long as min < max. --- dix/getevents.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dix/getevents.c b/dix/getevents.c index 94cbd1553..ea1c764f2 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -308,10 +308,13 @@ clipAxis(DeviceIntPtr pDev, int axisNum, int *val) { AxisInfoPtr axes = pDev->valuator->axes + axisNum; - if (*val < axes->min_value) - *val = axes->min_value; - if (axes->max_value >= 0 && *val > axes->max_value) - *val = axes->max_value; + /* No clipping if the value-range <= 0 */ + if(axes->min_value < axes->min_value) { + if (*val < axes->min_value) + *val = axes->min_value; + if (*val > axes->max_value) + *val = axes->max_value; + } } /** From d9e23c4ff1607a62164b34717ef9afd352ce2b94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20Vigerl=C3=B6f?= Date: Sat, 2 Feb 2008 22:57:32 +0100 Subject: [PATCH 007/112] Bug # 10324: dix: Add scaling of X and Y on the reported pointer-events Restore the rescaling code for x and y axis when generating motion events. --- dix/getevents.c | 97 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 76 insertions(+), 21 deletions(-) diff --git a/dix/getevents.c b/dix/getevents.c index ea1c764f2..c2736e4a3 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -531,6 +531,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, DeviceIntPtr cp = inputInfo.pointer; int x = 0, y = 0; Bool coreOnly = (pDev == inputInfo.pointer); + ScreenPtr scr = miPointerGetScreen(pDev); /* Sanity checks. */ if (type != MotionNotify && type != ButtonPress && type != ButtonRelease) @@ -574,20 +575,39 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, x = valuators[0]; } else { - if (pDev->coreEvents) - x = cp->valuator->lastx; - else - x = pDev->valuator->lastx; + /* If we're sending core events but didn't provide a value, + * translate the core value (but use the device coord if + * it translates to the same coord to preserve sub-pixel + * coord information). If we're not sending core events use + * whatever value we have */ + x = pDev->valuator->lastx; + if(pDev->coreEvents) { + int min = pDev->valuator->axes[0].min_value; + int max = pDev->valuator->axes[0].max_value; + if(min < max) { + if((int)((float)(x-min)*scr->width/(max-min+1)) != cp->valuator->lastx) + x = (int)((float)(cp->valuator->lastx)*(max-min+1)/scr->width)+min; + } + else + x = cp->valuator->lastx; + } } if (first_valuator <= 1 && num_valuators >= (2 - first_valuator)) { y = valuators[1 - first_valuator]; } else { - if (pDev->coreEvents) - y = cp->valuator->lasty; - else - y = pDev->valuator->lasty; + y = pDev->valuator->lasty; + if(pDev->coreEvents) { + int min = pDev->valuator->axes[1].min_value; + int max = pDev->valuator->axes[1].max_value; + if(min < max) { + if((int)((float)(y-min)*scr->height/(max-min+1)) != cp->valuator->lasty) + y = (int)((float)(cp->valuator->lasty)*(max-min+1)/scr->height)+min; + } + else + y = cp->valuator->lasty; + } } } else { @@ -596,15 +616,35 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, valuators); if (pDev->coreEvents) { - if (first_valuator == 0 && num_valuators >= 1) - x = cp->valuator->lastx + valuators[0]; + /* Get and convert the core pointer coordinate space into + * device coordinates. Use the device coords if it translates + * into the same position as the core to preserve relative sub- + * pixel movements from the device. */ + int min = pDev->valuator->axes[0].min_value; + int max = pDev->valuator->axes[0].max_value; + if(min < max) { + x = pDev->valuator->lastx; + if((int)((float)(x-min)*scr->width/(max-min+1)) != cp->valuator->lastx) + x = (int)((float)(cp->valuator->lastx)*(max-min+1)/scr->width)+min; + } else x = cp->valuator->lastx; - if (first_valuator <= 1 && num_valuators >= (2 - first_valuator)) - y = cp->valuator->lasty + valuators[1 - first_valuator]; + min = pDev->valuator->axes[1].min_value; + max = pDev->valuator->axes[1].max_value; + if(min < max) { + y = pDev->valuator->lasty; + if((int)((float)(y-min)*scr->height/(max-min+1)) != cp->valuator->lasty) + y = (int)((float)(cp->valuator->lasty)*(max-min+1)/scr->height)+min; + } else y = cp->valuator->lasty; + + /* Add relative movement */ + if (first_valuator == 0 && num_valuators >= 1) + x += valuators[0]; + if (first_valuator <= 1 && num_valuators >= (2 - first_valuator)) + y += valuators[1 - first_valuator]; } else { if (first_valuator == 0 && num_valuators >= 1) @@ -623,11 +663,6 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, clipAxis(pDev, 0, &x); clipAxis(pDev, 1, &y); - /* This takes care of crossing screens for us, as well as clipping - * to the current screen. Right now, we only have one history buffer, - * so we don't set this for both the device and core.*/ - miPointerSetPosition(pDev, &x, &y, ms); - /* Drop x and y back into the valuators list, if they were originally * present. */ if (first_valuator == 0 && num_valuators >= 1) @@ -637,12 +672,32 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, updateMotionHistory(pDev, ms, first_valuator, num_valuators, valuators); + pDev->valuator->lastx = x; + pDev->valuator->lasty = y; + /* Convert the dev coord back to screen coord if we're + * sending core events */ + if (pDev->coreEvents) { + int min = pDev->valuator->axes[0].min_value; + int max = pDev->valuator->axes[0].max_value; + if(min < max) + x = (int)((float)(x-min)*scr->width/(max-min+1)); + cp->valuator->lastx = x; + min = pDev->valuator->axes[1].min_value; + max = pDev->valuator->axes[1].max_value; + if(min < max) + y = (int)((float)(y-min)*scr->height/(max-min+1)); + cp->valuator->lasty = y; + } + + /* This takes care of crossing screens for us, as well as clipping + * to the current screen. Right now, we only have one history buffer, + * so we don't set this for both the device and core.*/ + miPointerSetPosition(pDev, &x, &y, ms); + if (pDev->coreEvents) { cp->valuator->lastx = x; cp->valuator->lasty = y; } - pDev->valuator->lastx = x; - pDev->valuator->lasty = y; /* for some reason inputInfo.pointer does not have coreEvents set */ if (coreOnly || pDev->coreEvents) { @@ -680,8 +735,8 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, kbp->detail = pDev->button->map[buttons]; } - kbp->root_x = x; - kbp->root_y = y; + kbp->root_x = pDev->valuator->lastx; + kbp->root_y = pDev->valuator->lasty; events++; if (num_valuators) { From a0284d577aabea8406b72dd63773e341430ebe56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20Vigerl=C3=B6f?= Date: Sat, 2 Feb 2008 23:03:51 +0100 Subject: [PATCH 008/112] dix: Skip call to clipAxis for relative core-events Relative events that generates both core and extention events will have its axis cliped and screen changed by miPointerSetPosition when the events are processed. For absolute and non core-generating relative events the axis must be clipped if we shouldn't end up completely outside the defined ranges (if any). --- dix/getevents.c | 44 +++++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/dix/getevents.c b/dix/getevents.c index c2736e4a3..bc64d318c 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -609,6 +609,10 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, y = cp->valuator->lasty; } } + + /* Clip both x and y to the defined limits (usually co-ord space limit). */ + clipAxis(pDev, 0, &x); + clipAxis(pDev, 1, &y); } else { if (flags & POINTER_ACCELERATE) @@ -647,22 +651,22 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, y += valuators[1 - first_valuator]; } else { + x = pDev->valuator->lastx; + y = pDev->valuator->lasty; if (first_valuator == 0 && num_valuators >= 1) - x = pDev->valuator->lastx + valuators[0]; - else - x = pDev->valuator->lastx; - + x += valuators[0]; if (first_valuator <= 1 && num_valuators >= (2 - first_valuator)) - y = pDev->valuator->lasty + valuators[1 - first_valuator]; - else - y = pDev->valuator->lasty; + y += valuators[1 - first_valuator]; + + if(!coreOnly) { + /* Since we're not sending core-events we must clip both x and y + * to the defined limits so we don't run outside the box. */ + clipAxis(pDev, 0, &x); + clipAxis(pDev, 1, &y); + } } } - /* Clip both x and y to the defined limits (usually co-ord space limit). */ - clipAxis(pDev, 0, &x); - clipAxis(pDev, 1, &y); - /* Drop x and y back into the valuators list, if they were originally * present. */ if (first_valuator == 0 && num_valuators >= 1) @@ -695,6 +699,24 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, miPointerSetPosition(pDev, &x, &y, ms); if (pDev->coreEvents) { + /* miPointerSetPosition may have changed screen */ + scr = miPointerGetScreen(pDev); + if(x != cp->valuator->lastx) { + int min = pDev->valuator->axes[0].min_value; + int max = pDev->valuator->axes[0].max_value; + cp->valuator->lastx = pDev->valuator->lastx = x; + if(min < max) + pDev->valuator->lastx = (int)((float)(x)*(max-min+1)/scr->width)+min; + } + if(y != cp->valuator->lasty) { + int min = pDev->valuator->axes[1].min_value; + int max = pDev->valuator->axes[1].max_value; + cp->valuator->lasty = pDev->valuator->lasty = y; + if(min < max) + pDev->valuator->lasty = (int)((float)(y)*(max-min+1)/scr->height)+min; + } + } + else if (coreOnly) { cp->valuator->lastx = x; cp->valuator->lasty = y; } From a56ef7aaa4b6ac13c8181f68fc7dad3ca89e6973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20Vigerl=C3=B6f?= Date: Sat, 2 Feb 2008 23:04:46 +0100 Subject: [PATCH 009/112] dix: Move motion history update until after screen crossing and clipping Cross screen and clip the coordinates before updating the motion history so that it will have the same contents as the events that are reported. --- dix/getevents.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/dix/getevents.c b/dix/getevents.c index bc64d318c..3e6fe5ae0 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -667,15 +667,6 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, } } - /* Drop x and y back into the valuators list, if they were originally - * present. */ - if (first_valuator == 0 && num_valuators >= 1) - valuators[0] = x; - if (first_valuator <= 1 && num_valuators >= (2 - first_valuator)) - valuators[1 - first_valuator] = y; - - updateMotionHistory(pDev, ms, first_valuator, num_valuators, valuators); - pDev->valuator->lastx = x; pDev->valuator->lasty = y; /* Convert the dev coord back to screen coord if we're @@ -721,6 +712,15 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons, cp->valuator->lasty = y; } + /* Drop x and y back into the valuators list, if they were originally + * present. */ + if (first_valuator == 0 && num_valuators >= 1) + valuators[0] = pDev->valuator->lastx; + if (first_valuator <= 1 && num_valuators >= (2 - first_valuator)) + valuators[1 - first_valuator] = pDev->valuator->lasty; + + updateMotionHistory(pDev, ms, first_valuator, num_valuators, valuators); + /* for some reason inputInfo.pointer does not have coreEvents set */ if (coreOnly || pDev->coreEvents) { events->u.u.type = type; From 4b5b6e7baab58072a983d2ec136965f404c3a74a Mon Sep 17 00:00:00 2001 From: liuhong Date: Tue, 5 Feb 2008 10:54:10 +0800 Subject: [PATCH 010/112] fix max clock unit max clock from EDID data is in MHz, while we need KHz to validate modes. --- hw/xfree86/modes/xf86Crtc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 10db86267..da035f2b9 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -1362,8 +1362,8 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) if (sync_source == sync_default) sync_source = sync_edid; } - if (ranges->max_clock > max_clock) - max_clock = ranges->max_clock; + if (ranges->max_clock * 1000 > max_clock) + max_clock = ranges->max_clock * 1000; } } } From d3c36fe721edc55636438bc3e0e7a6c03f62784e Mon Sep 17 00:00:00 2001 From: liuhong Date: Tue, 5 Feb 2008 10:54:58 +0800 Subject: [PATCH 011/112] validate mode clock for probed modes Some modes claimed in monitor EDID data may not be supported by the monitor. So also validating the max clock for probed modes. --- hw/xfree86/modes/xf86Crtc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index da035f2b9..4ecf4b3d7 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -1410,9 +1410,12 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) /* * Check default modes against monitor max clock */ - if (max_clock) + if (max_clock) { xf86ValidateModesClocks(scrn, default_modes, &min_clock, &max_clock, 1); + xf86ValidateModesClocks(scrn, output_modes, + &min_clock, &max_clock, 1); + } output->probed_modes = NULL; output->probed_modes = xf86ModesAdd (output->probed_modes, config_modes); From 019ad5acd20e34dc2aa3b89cc426138db5164c48 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 5 Feb 2008 15:44:41 -0500 Subject: [PATCH 012/112] XFixes: squash a pointer/integer size mismatch warning. --- xfixes/cursor.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xfixes/cursor.c b/xfixes/cursor.c index 1d122faea..d51251f19 100755 --- a/xfixes/cursor.c +++ b/xfixes/cursor.c @@ -707,7 +707,8 @@ SProcXFixesChangeCursor (ClientPtr client) static Bool TestForCursorName (CursorPtr pCursor, pointer closure) { - return (pCursor->name == (Atom) closure); + Atom *pName = closure; + return (pCursor->name == *pName); } int @@ -724,7 +725,7 @@ ProcXFixesChangeCursorByName (ClientPtr client) tchar = (char *) &stuff[1]; name = MakeAtom (tchar, stuff->nbytes, FALSE); if (name) - ReplaceCursor (pSource, TestForCursorName, (pointer) name); + ReplaceCursor (pSource, TestForCursorName, &name); return (client->noClientException); } From bb1a577a6822f781f1e38d2434a13914e74f89aa Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 5 Feb 2008 20:07:08 -0500 Subject: [PATCH 013/112] XACE: Move the property access hook to its own function. --- Xext/xace.c | 20 ++++++++------------ Xext/xace.h | 6 ++++++ Xext/xselinux.c | 2 +- dix/property.c | 16 +++++++--------- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Xext/xace.c b/Xext/xace.c index 0470e44dd..9ffac450d 100644 --- a/Xext/xace.c +++ b/Xext/xace.c @@ -51,6 +51,14 @@ int XaceHookDispatch(ClientPtr client, int major) } } +int XaceHookPropertyAccess(ClientPtr client, WindowPtr pWin, + PropertyPtr pProp, Mask access_mode) +{ + XacePropertyAccessRec rec = { client, pWin, pProp, access_mode, Success }; + CallCallbacks(&XaceHooks[XACE_PROPERTY_ACCESS], &rec); + return rec.status; +} + void XaceHookAuditEnd(ClientPtr ptr, int result) { XaceAuditRec rec = { ptr, result }; @@ -100,18 +108,6 @@ int XaceHook(int hook, ...) prv = &rec.status; break; } - case XACE_PROPERTY_ACCESS: { - XacePropertyAccessRec rec = { - va_arg(ap, ClientPtr), - va_arg(ap, WindowPtr), - va_arg(ap, PropertyPtr), - va_arg(ap, Mask), - Success /* default allow */ - }; - calldata = &rec; - prv = &rec.status; - break; - } case XACE_SEND_ACCESS: { XaceSendAccessRec rec = { va_arg(ap, ClientPtr), diff --git a/Xext/xace.h b/Xext/xace.h index 4100ba16e..24b9dce68 100644 --- a/Xext/xace.h +++ b/Xext/xace.h @@ -27,6 +27,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "pixmap.h" /* for DrawablePtr */ #include "regionstr.h" /* for RegionPtr */ +#include "window.h" /* for WindowPtr */ +#include "property.h" /* for PropertyPtr */ /* Default window background */ #define XaceBackgroundNoneState None @@ -65,6 +67,8 @@ extern int XaceHook( /* Special-cased hook functions */ extern int XaceHookDispatch(ClientPtr ptr, int major); +extern int XaceHookPropertyAccess(ClientPtr ptr, WindowPtr pWin, + PropertyPtr pProp, Mask access_mode); extern void XaceHookAuditEnd(ClientPtr ptr, int result); /* Register a callback for a given hook. @@ -101,11 +105,13 @@ extern void XaceCensorImage( #ifdef __GNUC__ #define XaceHook(args...) Success #define XaceHookDispatch(args...) Success +#define XaceHookPropertyAccess(args...) Success #define XaceHookAuditEnd(args...) { ; } #define XaceCensorImage(args...) { ; } #else #define XaceHook(...) Success #define XaceHookDispatch(...) Success +#define XaceHookPropertyAccess(...) Success #define XaceHookAuditEnd(...) { ; } #define XaceCensorImage(...) { ; } #endif diff --git a/Xext/xselinux.c b/Xext/xselinux.c index a6e27e695..47383a4a9 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -1166,7 +1166,7 @@ ProcSELinuxGetPropertyContext(ClientPtr client) if (!pProp) return BadValue; - rc = XaceHook(XACE_PROPERTY_ACCESS, client, pWin, pProp, DixGetAttrAccess); + rc = XaceHookPropertyAccess(client, pWin, pProp, DixGetAttrAccess); if (rc != Success) return rc; diff --git a/dix/property.c b/dix/property.c index 3c0eaf1c9..ce6116992 100644 --- a/dix/property.c +++ b/dix/property.c @@ -156,8 +156,8 @@ ProcRotateProperties(ClientPtr client) xfree(props); return BadMatch; } - rc = XaceHook(XACE_PROPERTY_ACCESS, client, pWin, pProp, - DixReadAccess|DixWriteAccess); + rc = XaceHookPropertyAccess(client, pWin, pProp, + DixReadAccess|DixWriteAccess); if (rc != Success) { xfree(props); client->errorValue = atoms[i]; @@ -276,8 +276,8 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property, memmove((char *)data, (char *)value, totalSize); pProp->size = len; pProp->devPrivates = NULL; - rc = XaceHook(XACE_PROPERTY_ACCESS, pClient, pWin, pProp, - DixCreateAccess|DixWriteAccess); + rc = XaceHookPropertyAccess(pClient, pWin, pProp, + DixCreateAccess|DixWriteAccess); if (rc != Success) { xfree(data); xfree(pProp); @@ -289,8 +289,7 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property, } else { - rc = XaceHook(XACE_PROPERTY_ACCESS, pClient, pWin, pProp, - DixWriteAccess); + rc = XaceHookPropertyAccess(pClient, pWin, pProp, DixWriteAccess); if (rc != Success) { pClient->errorValue = property; return rc; @@ -382,8 +381,7 @@ DeleteProperty(ClientPtr client, WindowPtr pWin, Atom propName) } if (pProp) { - rc = XaceHook(XACE_PROPERTY_ACCESS, client, pWin, pProp, - DixDestroyAccess); + rc = XaceHookPropertyAccess(client, pWin, pProp, DixDestroyAccess); if (rc != Success) return rc; @@ -502,7 +500,7 @@ ProcGetProperty(ClientPtr client) if (stuff->delete) access_mode |= DixDestroyAccess; - rc = XaceHook(XACE_PROPERTY_ACCESS, client, pWin, pProp, access_mode); + rc = XaceHookPropertyAccess(client, pWin, pProp, access_mode); if (rc != Success) { client->errorValue = stuff->property; return rc; From 5c30327275509576b7848a5f842e7a1bffabe980 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 5 Feb 2008 21:06:05 -0500 Subject: [PATCH 014/112] XACE: Push the dix "structure" includes down to the security modules. --- Xext/security.c | 3 +++ Xext/xace.c | 4 ++++ Xext/xace.h | 8 ++++---- Xext/xacestr.h | 9 ++++----- Xext/xselinux.c | 17 +++++++++++------ 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/Xext/security.c b/Xext/security.c index 6aab3a342..069655964 100644 --- a/Xext/security.c +++ b/Xext/security.c @@ -29,6 +29,9 @@ in this Software without prior written authorization from The Open Group. #endif #include "scrnintstr.h" +#include "inputstr.h" +#include "windowstr.h" +#include "propertyst.h" #include "colormapst.h" #include "privates.h" #include "registry.h" diff --git a/Xext/xace.c b/Xext/xace.c index 9ffac450d..b2c7e4ab4 100644 --- a/Xext/xace.c +++ b/Xext/xace.c @@ -23,6 +23,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include "scrnintstr.h" +#include "extnsionst.h" +#include "pixmapstr.h" +#include "regionstr.h" +#include "gcstruct.h" #include "xacestr.h" CallbackListPtr XaceHooks[XACE_NUM_HOOKS] = {0}; diff --git a/Xext/xace.h b/Xext/xace.h index 24b9dce68..6f1f267ad 100644 --- a/Xext/xace.h +++ b/Xext/xace.h @@ -25,10 +25,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define XACE_MAJOR_VERSION 2 #define XACE_MINOR_VERSION 0 -#include "pixmap.h" /* for DrawablePtr */ -#include "regionstr.h" /* for RegionPtr */ -#include "window.h" /* for WindowPtr */ -#include "property.h" /* for PropertyPtr */ +#include "pixmap.h" +#include "region.h" +#include "window.h" +#include "property.h" /* Default window background */ #define XaceBackgroundNoneState None diff --git a/Xext/xacestr.h b/Xext/xacestr.h index 045f8364f..e31d4246a 100644 --- a/Xext/xacestr.h +++ b/Xext/xacestr.h @@ -20,13 +20,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef _XACESTR_H #define _XACESTR_H -#include "dixstruct.h" +#include "dix.h" #include "resource.h" #include "extnsionst.h" -#include "gcstruct.h" -#include "windowstr.h" -#include "inputstr.h" -#include "propertyst.h" +#include "window.h" +#include "input.h" +#include "property.h" #include "selection.h" #include "xace.h" diff --git a/Xext/xselinux.c b/Xext/xselinux.c index 47383a4a9..b3d938b0a 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -22,21 +22,28 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * All rights reserved. */ +#ifdef HAVE_DIX_CONFIG_H +#include +#endif + +#include +#include +#include + #include #include #include #include -#ifdef HAVE_DIX_CONFIG_H -#include -#endif - #include #include "resource.h" #include "privates.h" #include "registry.h" #include "dixstruct.h" +#include "inputstr.h" +#include "windowstr.h" +#include "propertyst.h" #include "extnsionst.h" #include "scrnintstr.h" #include "selection.h" @@ -46,8 +53,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define TRANS_SERVER #include #include "../os/osdep.h" -#include -#include #include "modinit.h" From 2259b144f0fd4855085a656111a0c64246733e78 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Thu, 7 Feb 2008 14:35:02 -0500 Subject: [PATCH 015/112] xselinux: Add getattr and setattr to the permission map for properties. --- Xext/xselinux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xext/xselinux.c b/Xext/xselinux.c index b3d938b0a..c7ab8d095 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -127,7 +127,7 @@ static struct security_class_mapping map[] = { { "x_gc", { "", "", "destroy", "create", "getattr", "setattr", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "use", NULL }}, { "x_font", { "", "", "destroy", "create", "getattr", "", "", "", "", "", "", "", "add_glyph", "remove_glyph", "", "", "", "", "", "", "", "", "", "", "use", NULL }}, { "x_colormap", { "read", "write", "destroy", "create", "getattr", "", "", "", "", "", "", "", "add_color", "remove_color", "", "", "", "", "", "", "install", "uninstall", "", "", "use", NULL }}, - { "x_property", { "read", "write", "destroy", "create", NULL }}, + { "x_property", { "read", "write", "destroy", "create", "getattr", "setattr", NULL }}, { "x_selection", { "read", "", "", "", "getattr", "setattr", NULL }}, { "x_cursor", { "read", "write", "destroy", "create", "getattr", "setattr", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "use", NULL }}, { "x_client", { "", "", "destroy", "", "getattr", "setattr", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "manage", NULL }}, From 6dcb7d732bfeadc214228d68c5a13eef30248eb1 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Thu, 7 Feb 2008 16:00:52 -0500 Subject: [PATCH 016/112] xselinux: Split devPrivate state into subject and object records. --- Xext/xselinux.c | 236 ++++++++++++++++++++++++++++++------------------ 1 file changed, 149 insertions(+), 87 deletions(-) diff --git a/Xext/xselinux.c b/Xext/xselinux.c index c7ab8d095..60f0cc88f 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -61,7 +61,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* private state record */ -static DevPrivateKey stateKey = &stateKey; +static DevPrivateKey subjectKey = &subjectKey; +static DevPrivateKey objectKey = &objectKey; /* This is what we store for security state */ typedef struct { @@ -69,7 +70,12 @@ typedef struct { struct avc_entry_ref aeref; char *command; int privileged; -} SELinuxStateRec; +} SELinuxSubjectRec; + +typedef struct { + security_id_t sid; + int poly; +} SELinuxObjectRec; /* selection manager */ typedef struct { @@ -155,7 +161,7 @@ static pointer truep = (pointer)1; * Looks up the SID corresponding to the given selection atom */ static int -SELinuxSelectionToSID(Atom selection, SELinuxStateRec *sid_return) +SELinuxSelectionToSID(Atom selection, SELinuxObjectRec *sid_return) { const char *name; unsigned i, size; @@ -202,7 +208,7 @@ SELinuxSelectionToSID(Atom selection, SELinuxStateRec *sid_return) */ static int SELinuxEventToSID(unsigned type, security_id_t sid_of_window, - SELinuxStateRec *sid_return) + SELinuxObjectRec *sid_return) { const char *name = LookupEventName(type); security_context_t con; @@ -293,7 +299,7 @@ SELinuxTypeToClass(RESTYPE type) * Performs an SELinux permission check. */ static int -SELinuxDoCheck(SELinuxStateRec *subj, SELinuxStateRec *obj, +SELinuxDoCheck(SELinuxSubjectRec *subj, SELinuxObjectRec *obj, security_class_t class, Mask mode, SELinuxAuditRec *auditdata) { /* serverClient requests OK */ @@ -321,11 +327,14 @@ static void SELinuxLabelClient(ClientPtr client) { XtransConnInfo ci = ((OsCommPtr)client->osPrivate)->trans_conn; - SELinuxStateRec *state; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj; security_context_t ctx; - state = dixLookupPrivate(&client->devPrivates, stateKey); - sidput(state->sid); + subj = dixLookupPrivate(&client->devPrivates, subjectKey); + sidput(subj->sid); + obj = dixLookupPrivate(&client->devPrivates, objectKey); + sidput(obj->sid); if (_XSERVTransIsLocal(ci)) { int fd = _XSERVTransGetConnectionNumber(ci); @@ -354,12 +363,12 @@ SELinuxLabelClient(ClientPtr client) if (bytes <= 0) goto finish; - state->command = xalloc(bytes); - if (!state->command) + subj->command = xalloc(bytes); + if (!subj->command) goto finish; - memcpy(state->command, path, bytes); - state->command[bytes - 1] = 0; + memcpy(subj->command, path, bytes); + subj->command[bytes - 1] = 0; } else /* For remote clients, need to use a default context */ if (selabel_lookup(label_hnd, &ctx, NULL, SELABEL_X_CLIENT) < 0) @@ -368,10 +377,12 @@ SELinuxLabelClient(ClientPtr client) finish: /* Get a SID from the context */ - if (avc_context_to_sid(ctx, &state->sid) < 0) + if (avc_context_to_sid(ctx, &subj->sid) < 0) FatalError("Client %d: context_to_sid(%s) failed\n", client->index, ctx); + sidget(subj->sid); + obj->sid = subj->sid; freecon(ctx); } @@ -383,23 +394,27 @@ SELinuxLabelInitial(void) { int i; XaceScreenAccessRec srec; - SELinuxStateRec *state; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj; security_context_t ctx; pointer unused; /* Do the serverClient */ - state = dixLookupPrivate(&serverClient->devPrivates, stateKey); - state->privileged = 1; - sidput(state->sid); + subj = dixLookupPrivate(&serverClient->devPrivates, subjectKey); + obj = dixLookupPrivate(&serverClient->devPrivates, objectKey); + subj->privileged = 1; + sidput(subj->sid); /* Use the context of the X server process for the serverClient */ if (getcon(&ctx) < 0) FatalError("Couldn't get context of X server process\n"); /* Get a SID from the context */ - if (avc_context_to_sid(ctx, &state->sid) < 0) + if (avc_context_to_sid(ctx, &subj->sid) < 0) FatalError("serverClient: context_to_sid(%s) failed\n", ctx); + sidget(subj->sid); + obj->sid = subj->sid; freecon(ctx); srec.client = serverClient; @@ -487,20 +502,27 @@ static void SELinuxDevice(CallbackListPtr *pcbl, pointer unused, pointer calldata) { XaceDeviceAccessRec *rec = calldata; - SELinuxStateRec *subj, *obj; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj; SELinuxAuditRec auditdata = { .client = rec->client }; int rc; - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); - obj = dixLookupPrivate(&rec->dev->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); + obj = dixLookupPrivate(&rec->dev->devPrivates, objectKey); /* If this is a new object that needs labeling, do it now */ if (rec->access_mode & DixCreateAccess) { + SELinuxSubjectRec *dsubj; + dsubj = dixLookupPrivate(&rec->dev->devPrivates, subjectKey); + + sidput(dsubj->sid); sidput(obj->sid); /* Label the device directly with the process SID */ sidget(subj->sid); obj->sid = subj->sid; + sidget(subj->sid); + dsubj->sid = subj->sid; } rc = SELinuxDoCheck(subj, obj, SECCLASS_X_DEVICE, rec->access_mode, @@ -513,17 +535,18 @@ static void SELinuxSend(CallbackListPtr *pcbl, pointer unused, pointer calldata) { XaceSendAccessRec *rec = calldata; - SELinuxStateRec *subj, *obj, ev_sid; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj, ev_sid; SELinuxAuditRec auditdata = { .client = rec->client }; security_class_t class; int rc, i, type; if (rec->dev) - subj = dixLookupPrivate(&rec->dev->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->dev->devPrivates, subjectKey); else - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); - obj = dixLookupPrivate(&rec->pWin->devPrivates, stateKey); + obj = dixLookupPrivate(&rec->pWin->devPrivates, objectKey); /* Check send permission on window */ rc = SELinuxDoCheck(subj, obj, SECCLASS_X_DRAWABLE, DixSendAccess, @@ -554,13 +577,14 @@ static void SELinuxReceive(CallbackListPtr *pcbl, pointer unused, pointer calldata) { XaceReceiveAccessRec *rec = calldata; - SELinuxStateRec *subj, *obj, ev_sid; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj, ev_sid; SELinuxAuditRec auditdata = { .client = NULL }; security_class_t class; int rc, i, type; - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); - obj = dixLookupPrivate(&rec->pWin->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); + obj = dixLookupPrivate(&rec->pWin->devPrivates, objectKey); /* Check receive permission on window */ rc = SELinuxDoCheck(subj, obj, SECCLASS_X_DRAWABLE, DixReceiveAccess, @@ -591,12 +615,13 @@ static void SELinuxExtension(CallbackListPtr *pcbl, pointer unused, pointer calldata) { XaceExtAccessRec *rec = calldata; - SELinuxStateRec *subj, *obj, *serv; + SELinuxSubjectRec *subj, *serv; + SELinuxObjectRec *obj; SELinuxAuditRec auditdata = { .client = rec->client }; int rc; - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); - obj = dixLookupPrivate(&rec->ext->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); + obj = dixLookupPrivate(&rec->ext->devPrivates, objectKey); /* If this is a new object that needs labeling, do it now */ /* XXX there should be a separate callback for this */ @@ -605,9 +630,9 @@ SELinuxExtension(CallbackListPtr *pcbl, pointer unused, pointer calldata) security_context_t con; security_id_t sid; - serv = dixLookupPrivate(&serverClient->devPrivates, stateKey); + serv = dixLookupPrivate(&serverClient->devPrivates, subjectKey); - /* Look in the mappings of property names to contexts */ + /* Look in the mappings of extension names to contexts */ if (selabel_lookup(label_hnd, &con, name, SELABEL_X_EXT) < 0) { ErrorF("SELinux: a property label lookup failed!\n"); rec->status = BadValue; @@ -645,12 +670,13 @@ static void SELinuxProperty(CallbackListPtr *pcbl, pointer unused, pointer calldata) { XacePropertyAccessRec *rec = calldata; - SELinuxStateRec *subj, *obj; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj; SELinuxAuditRec auditdata = { .client = rec->client }; int rc; - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); - obj = dixLookupPrivate(&rec->pProp->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); + obj = dixLookupPrivate(&rec->pProp->devPrivates, objectKey); /* If this is a new object that needs labeling, do it now */ if (rec->access_mode & DixCreateAccess) { @@ -696,13 +722,15 @@ static void SELinuxResource(CallbackListPtr *pcbl, pointer unused, pointer calldata) { XaceResourceAccessRec *rec = calldata; - SELinuxStateRec *subj, *obj, *pobj; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj, *sobj, *pobj; SELinuxAuditRec auditdata = { .client = rec->client }; PrivateRec **privatePtr; security_class_t class; int rc, offset; - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); + sobj = dixLookupPrivate(&rec->client->devPrivates, objectKey); /* Determine if the resource object has a devPrivates field */ offset = dixLookupPrivateOffset(rec->rtype); @@ -710,12 +738,12 @@ SELinuxResource(CallbackListPtr *pcbl, pointer unused, pointer calldata) /* No: use the SID of the owning client */ class = SECCLASS_X_RESOURCE; privatePtr = &clients[CLIENT_ID(rec->id)]->devPrivates; - obj = dixLookupPrivate(privatePtr, stateKey); + obj = dixLookupPrivate(privatePtr, objectKey); } else { /* Yes: use the SID from the resource object itself */ class = SELinuxTypeToClass(rec->rtype); privatePtr = DEVPRIV_AT(rec->res, offset); - obj = dixLookupPrivate(privatePtr, stateKey); + obj = dixLookupPrivate(privatePtr, objectKey); } /* If this is a new object that needs labeling, do it now */ @@ -724,10 +752,10 @@ SELinuxResource(CallbackListPtr *pcbl, pointer unused, pointer calldata) offset = dixLookupPrivateOffset(rec->ptype); if (rec->parent && offset >= 0) /* Use the SID of the parent object in the labeling operation */ - pobj = dixLookupPrivate(DEVPRIV_AT(rec->parent, offset), stateKey); + pobj = dixLookupPrivate(DEVPRIV_AT(rec->parent, offset), objectKey); else /* Use the SID of the subject */ - pobj = subj; + pobj = sobj; sidput(obj->sid); @@ -751,13 +779,14 @@ static void SELinuxScreen(CallbackListPtr *pcbl, pointer is_saver, pointer calldata) { XaceScreenAccessRec *rec = calldata; - SELinuxStateRec *subj, *obj; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj; SELinuxAuditRec auditdata = { .client = rec->client }; Mask access_mode = rec->access_mode; int rc; - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); - obj = dixLookupPrivate(&rec->screen->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); + obj = dixLookupPrivate(&rec->screen->devPrivates, objectKey); /* If this is a new object that needs labeling, do it now */ if (access_mode & DixCreateAccess) { @@ -784,12 +813,13 @@ static void SELinuxClient(CallbackListPtr *pcbl, pointer unused, pointer calldata) { XaceClientAccessRec *rec = calldata; - SELinuxStateRec *subj, *obj; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj; SELinuxAuditRec auditdata = { .client = rec->client }; int rc; - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); - obj = dixLookupPrivate(&rec->target->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); + obj = dixLookupPrivate(&rec->target->devPrivates, objectKey); rc = SELinuxDoCheck(subj, obj, SECCLASS_X_CLIENT, rec->access_mode, &auditdata); @@ -801,12 +831,13 @@ static void SELinuxServer(CallbackListPtr *pcbl, pointer unused, pointer calldata) { XaceServerAccessRec *rec = calldata; - SELinuxStateRec *subj, *obj; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj; SELinuxAuditRec auditdata = { .client = rec->client }; int rc; - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); - obj = dixLookupPrivate(&serverClient->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); + obj = dixLookupPrivate(&serverClient->devPrivates, objectKey); rc = SELinuxDoCheck(subj, obj, SECCLASS_X_SERVER, rec->access_mode, &auditdata); @@ -818,11 +849,12 @@ static void SELinuxSelection(CallbackListPtr *pcbl, pointer unused, pointer calldata) { XaceSelectionAccessRec *rec = (XaceSelectionAccessRec *)calldata; - SELinuxStateRec *subj, sel_sid; + SELinuxSubjectRec *subj; + SELinuxObjectRec sel_sid; SELinuxAuditRec auditdata = { .client = rec->client }; int rc; - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); rc = SELinuxSelectionToSID(rec->name, &sel_sid); if (rc != Success) { @@ -869,18 +901,19 @@ static void SELinuxResourceState(CallbackListPtr *pcbl, pointer unused, pointer calldata) { ResourceStateInfoRec *rec = calldata; - SELinuxStateRec *state; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj; WindowPtr pWin; if (rec->type != RT_WINDOW) return; pWin = (WindowPtr)rec->value; - state = dixLookupPrivate(&wClient(pWin)->devPrivates, stateKey); + subj = dixLookupPrivate(&wClient(pWin)->devPrivates, subjectKey); - if (state->sid) { + if (subj->sid) { security_context_t ctx; - int rc = avc_sid_to_context(state->sid, &ctx); + int rc = avc_sid_to_context(subj->sid, &ctx); if (rc < 0) FatalError("SELinux: Failed to get security context!\n"); rc = dixChangeWindowProperty(serverClient, @@ -892,11 +925,11 @@ SELinuxResourceState(CallbackListPtr *pcbl, pointer unused, pointer calldata) } else FatalError("SELinux: Unexpected unlabeled client found\n"); - state = dixLookupPrivate(&pWin->devPrivates, stateKey); + obj = dixLookupPrivate(&pWin->devPrivates, objectKey); - if (state->sid) { + if (obj->sid) { security_context_t ctx; - int rc = avc_sid_to_context(state->sid, &ctx); + int rc = avc_sid_to_context(obj->sid, &ctx); if (rc < 0) FatalError("SELinux: Failed to get security context!\n"); rc = dixChangeWindowProperty(serverClient, @@ -913,7 +946,8 @@ static void SELinuxSelectionState(CallbackListPtr *pcbl, pointer unused, pointer calldata) { SelectionInfoRec *rec = calldata; - SELinuxStateRec *subj, *obj; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj; switch (rec->kind) { case SelectionSetOwner: @@ -922,8 +956,8 @@ SELinuxSelectionState(CallbackListPtr *pcbl, pointer unused, pointer calldata) rec->selection->alt_window = rec->selection->window; /* figure out the new label for the content */ - subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); - obj = dixLookupPrivate(&rec->selection->devPrivates, stateKey); + subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); + obj = dixLookupPrivate(&rec->selection->devPrivates, objectKey); sidput(obj->sid); if (avc_compute_create(subj->sid, subj->sid, SECCLASS_X_SELECTION, @@ -959,27 +993,47 @@ SELinuxSelectionState(CallbackListPtr *pcbl, pointer unused, pointer calldata) */ static void -SELinuxStateInit(CallbackListPtr *pcbl, pointer unused, pointer calldata) +SELinuxSubjectInit(CallbackListPtr *pcbl, pointer unused, pointer calldata) { PrivateCallbackRec *rec = calldata; - SELinuxStateRec *state = *rec->value; + SELinuxSubjectRec *subj = *rec->value; sidget(unlabeled_sid); - state->sid = unlabeled_sid; + subj->sid = unlabeled_sid; - avc_entry_ref_init(&state->aeref); + avc_entry_ref_init(&subj->aeref); } static void -SELinuxStateFree(CallbackListPtr *pcbl, pointer unused, pointer calldata) +SELinuxSubjectFree(CallbackListPtr *pcbl, pointer unused, pointer calldata) { PrivateCallbackRec *rec = calldata; - SELinuxStateRec *state = *rec->value; + SELinuxSubjectRec *subj = *rec->value; - xfree(state->command); + xfree(subj->command); if (avc_active) - sidput(state->sid); + sidput(subj->sid); +} + +static void +SELinuxObjectInit(CallbackListPtr *pcbl, pointer unused, pointer calldata) +{ + PrivateCallbackRec *rec = calldata; + SELinuxObjectRec *obj = *rec->value; + + sidget(unlabeled_sid); + obj->sid = unlabeled_sid; +} + +static void +SELinuxObjectFree(CallbackListPtr *pcbl, pointer unused, pointer calldata) +{ + PrivateCallbackRec *rec = calldata; + SELinuxObjectRec *obj = *rec->value; + + if (avc_active) + sidput(obj->sid); } @@ -1070,7 +1124,8 @@ ProcSELinuxSetDeviceContext(ClientPtr client) char *ctx; security_id_t sid; DeviceIntPtr dev; - SELinuxStateRec *state; + SELinuxSubjectRec *subj; + SELinuxObjectRec *obj; int rc; REQUEST(SELinuxSetContextReq); @@ -1088,9 +1143,13 @@ ProcSELinuxSetDeviceContext(ClientPtr client) if (rc != Success) return BadValue; - state = dixLookupPrivate(&dev->devPrivates, stateKey); - sidput(state->sid); - state->sid = sid; + subj = dixLookupPrivate(&dev->devPrivates, subjectKey); + sidput(subj->sid); + subj->sid = sid; + obj = dixLookupPrivate(&dev->devPrivates, objectKey); + sidput(obj->sid); + obj->sid = sid; + return Success; } @@ -1099,7 +1158,7 @@ ProcSELinuxGetDeviceContext(ClientPtr client) { char *ctx; DeviceIntPtr dev; - SELinuxStateRec *state; + SELinuxSubjectRec *subj; SELinuxGetContextReply rep; int rc; @@ -1110,8 +1169,8 @@ ProcSELinuxGetDeviceContext(ClientPtr client) if (rc != Success) return rc; - state = dixLookupPrivate(&dev->devPrivates, stateKey); - rc = avc_sid_to_context(state->sid, &ctx); + subj = dixLookupPrivate(&dev->devPrivates, subjectKey); + rc = avc_sid_to_context(subj->sid, &ctx); if (rc != Success) return BadValue; @@ -1151,7 +1210,7 @@ ProcSELinuxGetPropertyContext(ClientPtr client) char *ctx; WindowPtr pWin; PropertyPtr pProp; - SELinuxStateRec *state; + SELinuxObjectRec *obj; SELinuxGetContextReply rep; int rc; @@ -1175,8 +1234,8 @@ ProcSELinuxGetPropertyContext(ClientPtr client) if (rc != Success) return rc; - state = dixLookupPrivate(&pProp->devPrivates, stateKey); - rc = avc_sid_to_context(state->sid, &ctx); + obj = dixLookupPrivate(&pProp->devPrivates, objectKey); + rc = avc_sid_to_context(obj->sid, &ctx); if (rc != Success) return BadValue; @@ -1215,7 +1274,7 @@ ProcSELinuxGetWindowContext(ClientPtr client) { char *ctx; WindowPtr pWin; - SELinuxStateRec *state; + SELinuxObjectRec *obj; SELinuxGetContextReply rep; int rc; @@ -1226,8 +1285,8 @@ ProcSELinuxGetWindowContext(ClientPtr client) if (rc != Success) return rc; - state = dixLookupPrivate(&pWin->devPrivates, stateKey); - rc = avc_sid_to_context(state->sid, &ctx); + obj = dixLookupPrivate(&pWin->devPrivates, objectKey); + rc = avc_sid_to_context(obj->sid, &ctx); if (rc != Success) return BadValue; @@ -1521,7 +1580,8 @@ SELinuxExtensionInit(INITARGS) FatalError("SELinux: Failed to open the system audit log\n"); /* Allocate private storage */ - if (!dixRequestPrivate(stateKey, sizeof(SELinuxStateRec))) + if (!dixRequestPrivate(subjectKey, sizeof(SELinuxSubjectRec)) || + !dixRequestPrivate(objectKey, sizeof(SELinuxObjectRec))) FatalError("SELinux: Failed to allocate private storage.\n"); /* Create atoms for doing window labeling */ @@ -1533,8 +1593,10 @@ SELinuxExtensionInit(INITARGS) FatalError("SELinux: Failed to create atom\n"); /* Register callbacks */ - ret &= dixRegisterPrivateInitFunc(stateKey, SELinuxStateInit, NULL); - ret &= dixRegisterPrivateDeleteFunc(stateKey, SELinuxStateFree, NULL); + ret &= dixRegisterPrivateInitFunc(subjectKey, SELinuxSubjectInit, NULL); + ret &= dixRegisterPrivateDeleteFunc(subjectKey, SELinuxSubjectFree, NULL); + ret &= dixRegisterPrivateInitFunc(objectKey, SELinuxObjectInit, NULL); + ret &= dixRegisterPrivateDeleteFunc(objectKey, SELinuxObjectFree, NULL); ret &= AddCallback(&ClientStateCallback, SELinuxClientState, NULL); ret &= AddCallback(&ResourceStateCallback, SELinuxResourceState, NULL); From 31934132a490b1b8ae73010c44e0b23217d8dab2 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Thu, 7 Feb 2008 16:32:06 -0500 Subject: [PATCH 017/112] xselinux: Use the device name in debugging output. --- Xext/xselinux.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Xext/xselinux.c b/Xext/xselinux.c index 60f0cc88f..9acc93c61 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -92,6 +92,7 @@ static int audit_fd; /* structure passed to auditing callback */ typedef struct { ClientPtr client; /* client */ + DeviceIntPtr dev; /* device */ char *command; /* client's executable path */ unsigned id; /* resource id, if any */ int restype; /* resource type, if any */ @@ -461,11 +462,15 @@ SELinuxAudit(void *auditdata, propertyName = audit->property ? NameForAtom(audit->property) : NULL; selectionName = audit->selection ? NameForAtom(audit->selection) : NULL; - return snprintf(msgbuf, msgbufsize, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", + return snprintf(msgbuf, msgbufsize, + "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", (major >= 0) ? "request=" : "", (major >= 0) ? LookupRequestName(major, minor) : "", audit->command ? " comm=" : "", audit->command ? audit->command : "", + audit->dev ? " xdevice=\"" : "", + audit->dev ? audit->dev->name : "", + audit->dev ? "\"" : "", audit->id ? " resid=" : "", audit->id ? idNum : "", audit->restype ? " restype=" : "", @@ -504,7 +509,7 @@ SELinuxDevice(CallbackListPtr *pcbl, pointer unused, pointer calldata) XaceDeviceAccessRec *rec = calldata; SELinuxSubjectRec *subj; SELinuxObjectRec *obj; - SELinuxAuditRec auditdata = { .client = rec->client }; + SELinuxAuditRec auditdata = { .client = rec->client, .dev = rec->dev }; int rc; subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); @@ -537,7 +542,7 @@ SELinuxSend(CallbackListPtr *pcbl, pointer unused, pointer calldata) XaceSendAccessRec *rec = calldata; SELinuxSubjectRec *subj; SELinuxObjectRec *obj, ev_sid; - SELinuxAuditRec auditdata = { .client = rec->client }; + SELinuxAuditRec auditdata = { .client = rec->client, .dev = rec->dev }; security_class_t class; int rc, i, type; From de16a8c53046764dbdf26a87acc5c984ef00d818 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Thu, 7 Feb 2008 20:14:16 -0500 Subject: [PATCH 018/112] XACE: Correct some protocol error values in the colormap routines. --- dix/dispatch.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dix/dispatch.c b/dix/dispatch.c index 663bf7dd5..0bca4417e 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -2537,7 +2537,7 @@ ProcFreeColormap(ClientPtr client) else { client->errorValue = stuff->id; - return rc; + return (rc == BadValue) ? BadColor : rc; } } @@ -2566,7 +2566,7 @@ ProcCopyColormapAndFree(ClientPtr client) else { client->errorValue = stuff->srcCmap; - return rc; + return (rc == BadValue) ? BadColor : rc; } } @@ -2658,7 +2658,7 @@ ProcListInstalledColormaps(ClientPtr client) xfree(preply); rc = client->noClientException; out: - return (rc == BadValue) ? BadColor : rc; + return rc; } int From 66f8001b61d12eaf4905ac71ccbb3f304914d00d Mon Sep 17 00:00:00 2001 From: Bart Trojanowski Date: Thu, 7 Feb 2008 21:26:54 -0500 Subject: [PATCH 019/112] X86EMU: handle CPUID instruction After trying to switch from X to VT (or just quit) the video-amd driver attempts to issue INT 10/0 to go to mode 3 (VGA). The emulator, running the BIOS code, would then spit out: c000:0282: A2 ILLEGAL EXTENDED X86 OPCODE! The opcode was 0F A2, or CPUID; it was not implemented in the emulator. This simple patch, against 1.3.0.0, handles the CPUID instruction in one of two ways: 1) if ran on __i386__ or __x86_64__ then it calls the CPUID instruction directly. 2) if ran elsewhere it returns a canned 486dx4 set of values for function 1. This fix allows the video-amd driver to switch back to console mode, with the GSW BIOS. Thanks to Symbio Technologies for funding my work, and ThinCan for providing hardware :) Signed-off-by: Bart Trojanowski Acked-by: Eric Anholt --- hw/xfree86/x86emu/ops2.c | 16 ++++- hw/xfree86/x86emu/prim_ops.c | 66 +++++++++++++++++++++ hw/xfree86/x86emu/x86emu/prim_ops.h | 1 + hw/xfree86/x86emu/x86emu/prim_x86_gcc.h | 79 +++++++++++++++++++++++++ 4 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 hw/xfree86/x86emu/x86emu/prim_x86_gcc.h diff --git a/hw/xfree86/x86emu/ops2.c b/hw/xfree86/x86emu/ops2.c index 8c6c53539..324de8ad8 100644 --- a/hw/xfree86/x86emu/ops2.c +++ b/hw/xfree86/x86emu/ops2.c @@ -327,6 +327,20 @@ static void x86emuOp2_pop_FS(u8 X86EMU_UNUSED(op2)) END_OF_INSTR(); } +/**************************************************************************** +REMARKS: CPUID takes EAX/ECX as inputs, writes EAX/EBX/ECX/EDX as output +Handles opcode 0x0f,0xa2 +****************************************************************************/ +static void x86emuOp2_cpuid(u8 X86EMU_UNUSED(op2)) +{ + START_OF_INSTR(); + DECODE_PRINTF("CPUID\n"); + TRACE_AND_STEP(); + cpuid(); + DECODE_CLEAR_SEGOVR(); + END_OF_INSTR(); +} + /**************************************************************************** REMARKS: Handles opcode 0x0f,0xa3 @@ -2734,7 +2748,7 @@ void (*x86emu_optab2[256])(u8) = /* 0xa0 */ x86emuOp2_push_FS, /* 0xa1 */ x86emuOp2_pop_FS, -/* 0xa2 */ x86emuOp2_illegal_op, +/* 0xa2 */ x86emuOp2_cpuid, /* 0xa3 */ x86emuOp2_bt_R, /* 0xa4 */ x86emuOp2_shld_IMM, /* 0xa5 */ x86emuOp2_shld_CL, diff --git a/hw/xfree86/x86emu/prim_ops.c b/hw/xfree86/x86emu/prim_ops.c index b9e7257ca..b42cdc0a5 100644 --- a/hw/xfree86/x86emu/prim_ops.c +++ b/hw/xfree86/x86emu/prim_ops.c @@ -102,6 +102,12 @@ #define PRIM_OPS_NO_REDEFINE_ASM #include "x86emu/x86emui.h" +#if defined(__GNUC__) +# if defined (__i386__) || defined(__i386) || defined(__AMD64__) || defined(__x86_64__) || defined(__amd64__) +# include "x86emu/prim_x86_gcc.h" +# endif +#endif + /*------------------------- Global Variables ------------------------------*/ static u32 x86emu_parity_tab[8] = @@ -2654,3 +2660,63 @@ DB( if (CHECK_SP_ACCESS()) return res; } +/**************************************************************************** +REMARKS: +CPUID takes EAX/ECX as inputs, writes EAX/EBX/ECX/EDX as output +****************************************************************************/ +void cpuid (void) +{ + u32 feature = M.x86.R_EAX; + +#ifdef X86EMU_HAS_HW_CPUID + /* If the platform allows it, we will base our values on the real + * results from the CPUID instruction. We limit support to the + * first two features, and the results of those are sanitized. + */ + if (feature <= 1) + hw_cpuid(&M.x86.R_EAX, &M.x86.R_EBX, &M.x86.R_ECX, &M.x86.R_EDX); +#endif + + switch (feature) { + case 0: + /* Regardless if we have real data from the hardware, the emulator + * will only support upto feature 1, which we set in register EAX. + * Registers EBX:EDX:ECX contain a string identifying the CPU. + */ + M.x86.R_EAX = 1; +#ifndef X86EMU_HAS_HW_CPUID + /* EBX:EDX:ECX = "GenuineIntel" */ + M.x86.R_EBX = 0x756e6547; + M.x86.R_EDX = 0x49656e69; + M.x86.R_ECX = 0x6c65746e; +#endif + break; + case 1: +#ifndef X86EMU_HAS_HW_CPUID + /* If we don't have x86 compatible hardware, we return values from an + * Intel 486dx4; which was one of the first processors to have CPUID. + */ + M.x86.R_EAX = 0x00000480; + M.x86.R_EBX = 0x00000000; + M.x86.R_ECX = 0x00000000; + M.x86.R_EDX = 0x00000002; /* VME */ +#else + /* In the case that we have hardware CPUID instruction, we make sure + * that the features reported are limited to TSC and VME. + */ + M.x86.R_EDX &= 0x00000012; +#endif + break; + default: + /* Finally, we don't support any additional features. Most CPUs + * return all zeros when queried for invalid or unsupported feature + * numbers. + */ + M.x86.R_EAX = 0; + M.x86.R_EBX = 0; + M.x86.R_ECX = 0; + M.x86.R_EDX = 0; + break; + } +} + diff --git a/hw/xfree86/x86emu/x86emu/prim_ops.h b/hw/xfree86/x86emu/x86emu/prim_ops.h index bea8357e4..6ac2a29f6 100644 --- a/hw/xfree86/x86emu/x86emu/prim_ops.h +++ b/hw/xfree86/x86emu/x86emu/prim_ops.h @@ -133,6 +133,7 @@ void push_word (u16 w); void push_long (u32 w); u16 pop_word (void); u32 pop_long (void); +void cpuid (void); #ifdef __cplusplus } /* End of "C" linkage for C++ */ diff --git a/hw/xfree86/x86emu/x86emu/prim_x86_gcc.h b/hw/xfree86/x86emu/x86emu/prim_x86_gcc.h new file mode 100644 index 000000000..af61e2023 --- /dev/null +++ b/hw/xfree86/x86emu/x86emu/prim_x86_gcc.h @@ -0,0 +1,79 @@ +/**************************************************************************** +* +* Inline helpers for x86emu +* +* Copyright (C) 2008 Bart Trojanowski, Symbio Technologies, LLC +* +* ======================================================================== +* +* 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, and that the name of the authors not be used +* in advertising or publicity pertaining to distribution of the software +* without specific, written prior permission. The authors makes no +* representations about the suitability of this software for any purpose. +* It is provided "as is" without express or implied warranty. +* +* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +* EVENT SHALL THE AUTHORS 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. +* +* ======================================================================== +* +* Language: GNU C +* Environment: GCC on i386 or x86-64 +* Developer: Bart Trojanowski +* +* Description: This file defines a few x86 macros that can be used by the +* emulator to execute native instructions. +* +* For PIC vs non-PIC code refer to: +* http://sam.zoy.org/blog/2007-04-13-shlib-with-non-pic-code-have-inline-assembly-and-pic-mix-well +* +****************************************************************************/ +#ifndef __X86EMU_PRIM_X86_GCC_H +#define __X86EMU_PRIM_X86_GCC_H + +#include "x86emu/types.h" + +#if !defined(__GNUC__) || !(defined (__i386__) || defined(__i386) || defined(__AMD64__) || defined(__x86_64__) || defined(__amd64__)) +#error This file is intended to be used by gcc on i386 or x86-64 system +#endif + +#if defined(__PIC__) && defined(__i386__) + +#define X86EMU_HAS_HW_CPUID 1 +static inline void hw_cpuid (u32 *a, u32 *b, u32 *c, u32 *d) +{ + __asm__ __volatile__ ("pushl %%ebx \n\t" + "cpuid \n\t" + "movl %%ebx, %1 \n\t" + "popl %%ebx \n\t" + : "=a" (*a), "=r" (*b), + "=c" (*c), "=d" (*d) + : "a" (*a), "c" (*c) + : "cc"); +} + +#else // ! (__PIC__ && __i386__) + +#define x86EMU_HAS_HW_CPUID 1 +static inline void hw_cpuid (u32 *a, u32 *b, u32 *c, u32 *d) +{ + __asm__ __volatile__ ("cpuid" + : "=a" (*a), "=b" (*b), + "=c" (*c), "=d" (*d) + : "a" (*a), "c" (*c) + : "cc"); +} + +#endif // __PIC__ && __i386__ + + +#endif // __X86EMU_PRIM_X86_GCC_H From 7018f280406eb0ef899a4046de274cfdd582881b Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 7 Feb 2008 15:48:04 +1030 Subject: [PATCH 020/112] xkb: when copying the keymap, make sure the structs default to 0/NULL. It actually does help if a pointer is NULL rather than pointing to nirvana when you're trying to free it lateron. Who would have thought? --- xkb/xkbUtils.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c index 9f813e5e3..3cedf825a 100644 --- a/xkb/xkbUtils.c +++ b/xkb/xkbUtils.c @@ -1730,9 +1730,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) else { if (dst->geom->sz_shapes) { xfree(dst->geom->shapes); - dst->geom->shapes = NULL; } - + dst->geom->shapes = NULL; dst->geom->num_shapes = 0; dst->geom->sz_shapes = 0; } @@ -1781,6 +1780,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) } dst->geom->num_sections = 0; + dst->geom->sections = NULL; } if (src->geom->num_sections) { @@ -1792,6 +1792,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) tmp = xalloc(src->geom->num_sections * sizeof(XkbSectionRec)); if (!tmp) return FALSE; + memset(tmp, 0, src->geom->num_sections * sizeof(XkbSectionRec)); dst->geom->sections = tmp; dst->geom->num_sections = src->geom->num_sections; @@ -1828,6 +1829,10 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) return FALSE; dsection->doodads = tmp; } + else { + dsection->doodads = NULL; + } + for (k = 0, sdoodad = ssection->doodads, ddoodad = dsection->doodads; @@ -1855,9 +1860,9 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) else { if (dst->geom->sz_sections) { xfree(dst->geom->sections); - dst->geom->sections = NULL; } + dst->geom->sections = NULL; dst->geom->num_sections = 0; dst->geom->sz_sections = 0; } @@ -1886,6 +1891,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) } } } + dst->geom->num_doodads = 0; + dst->geom->doodads = NULL; } if (src->geom->num_doodads) { @@ -1898,7 +1905,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) sizeof(XkbDoodadRec)); if (!tmp) return FALSE; - bzero(tmp, src->geom->num_doodads * sizeof(XkbDoodadRec)); + memset(tmp, 0, src->geom->num_doodads * sizeof(XkbDoodadRec)); dst->geom->doodads = tmp; dst->geom->sz_doodads = src->geom->num_doodads; @@ -1927,9 +1934,9 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) else { if (dst->geom->sz_doodads) { xfree(dst->geom->doodads); - dst->geom->doodads = NULL; } + dst->geom->doodads = NULL; dst->geom->num_doodads = 0; dst->geom->sz_doodads = 0; } @@ -1957,10 +1964,10 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) dst->geom->num_key_aliases = dst->geom->sz_key_aliases; } else { - if (dst->geom->sz_key_aliases && dst->geom->key_aliases) { + if (dst->geom->key_aliases) { xfree(dst->geom->key_aliases); - dst->geom->key_aliases = NULL; } + dst->geom->key_aliases = NULL; dst->geom->num_key_aliases = 0; dst->geom->sz_key_aliases = 0; } @@ -1991,8 +1998,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) else { if (dst->geom->label_font) { xfree(dst->geom->label_font); - dst->geom->label_font = NULL; } + dst->geom->label_font = NULL; dst->geom->label_color = NULL; dst->geom->base_color = NULL; } From 8004e160fa8cc75a3f1b7385fee64e5864b3b50a Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Sun, 10 Feb 2008 16:34:40 -0800 Subject: [PATCH 021/112] XQuartz: Converted interface to nib 3.x format (cherry picked from commit 656aaab95773bd70fc3504b68bf7e1d292891d93) --- .../bundle/English.lproj/main.nib/classes.nib | 318 -- .../English.lproj/main.nib/designable.nib | 4098 +++++++++++++++++ .../bundle/English.lproj/main.nib/info.nib | 18 - .../English.lproj/main.nib/keyedobjects.nib | Bin 30865 -> 33883 bytes 4 files changed, 4098 insertions(+), 336 deletions(-) delete mode 100644 hw/xquartz/bundle/English.lproj/main.nib/classes.nib create mode 100644 hw/xquartz/bundle/English.lproj/main.nib/designable.nib delete mode 100644 hw/xquartz/bundle/English.lproj/main.nib/info.nib diff --git a/hw/xquartz/bundle/English.lproj/main.nib/classes.nib b/hw/xquartz/bundle/English.lproj/main.nib/classes.nib deleted file mode 100644 index a82159bd5..000000000 --- a/hw/xquartz/bundle/English.lproj/main.nib/classes.nib +++ /dev/null @@ -1,318 +0,0 @@ - - - - - IBClasses - - - CLASS - IBLibraryObjectTemplate - LANGUAGE - ObjC - OUTLETS - - draggedView - NSView - representedObject - NSObject - - SUPERCLASS - NSView - - - CLASS - IBInspector - LANGUAGE - ObjC - OUTLETS - - inspectorView - NSView - - SUPERCLASS - NSObject - - - CLASS - NSDateFormatter - LANGUAGE - ObjC - SUPERCLASS - NSFormatter - - - ACTIONS - - apps_table_cancel - id - apps_table_delete - id - apps_table_done - id - apps_table_duplicate - id - apps_table_new - id - apps_table_show - id - bring_to_front - id - close_window - id - enable_fullscreen_changed - id - minimize_window - id - next_window - id - prefs_changed - id - prefs_show - id - previous_window - id - toggle_fullscreen - id - x11_help - id - zoom_window - id - - CLASS - X11Controller - LANGUAGE - ObjC - OUTLETS - - apps_separator - id - apps_table - id - depth - id - dock_apps_menu - id - dock_menu - id - dock_window_separator - id - enable_auth - id - enable_fullscreen - id - enable_keyequivs - id - enable_tcp - id - fake_buttons - id - prefs_panel - id - sync_keymap - id - toggle_fullscreen_item - id - use_sysbeep - id - window_separator - id - x11_about_item - id - - SUPERCLASS - NSObject - - - CLASS - NSNumberFormatter - LANGUAGE - ObjC - SUPERCLASS - NSFormatter - - - CLASS - NSFormatter - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - ACTIONS - - alignCenter: - id - alignJustified: - id - alignLeft: - id - alignRight: - id - arrangeInFront: - id - centerSelectionInVisibleArea: - id - changeFont: - id - checkSpelling: - id - clear: - id - clearRecentDocuments: - id - complete: - id - copy: - id - copyFont: - id - copyRuler: - id - cut: - id - delete: - id - deminiaturize: - id - fax: - id - hide: - id - hideOtherApplications: - id - loosenKerning: - id - lowerBaseline: - id - makeKeyAndOrderFront: - id - miniaturize: - id - newDocument: - id - openDocument: - id - orderBack: - id - orderFront: - id - orderFrontColorPanel: - id - orderFrontHelpPanel: - id - orderOut: - id - outline: - id - paste: - id - pasteAsPlainText: - id - pasteAsRichText: - id - pasteFont: - id - pasteRuler: - id - pause: - id - performClose: - id - performFindPanelAction: - id - performMiniaturize: - id - performZoom: - id - play: - id - print: - id - printDocument: - id - raiseBaseline: - id - record: - id - redo: - id - resume: - id - revertDocumentToSaved: - id - run: - id - runPageLayout: - id - runToolbarCustomizationPalette: - id - saveAllDocuments: - id - saveDocument: - id - saveDocumentAs: - id - saveDocumentTo: - id - selectAll: - id - selectText: - id - showGuessPanel: - id - showHelp: - id - start: - id - startSpeaking: - id - stop: - id - stopSpeaking: - id - subscript: - id - superscript: - id - terminate: - id - tightenKerning: - id - toggleContinuousSpellChecking: - id - toggleRuler: - id - toggleToolbarShown: - id - turnOffKerning: - id - turnOffLigatures: - id - underline: - id - undo: - id - unhideAllApplications: - id - unscript: - id - useAllLigatures: - id - useStandardKerning: - id - useStandardLigatures: - id - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - IBVersion - 1 - - diff --git a/hw/xquartz/bundle/English.lproj/main.nib/designable.nib b/hw/xquartz/bundle/English.lproj/main.nib/designable.nib new file mode 100644 index 000000000..c267e45e6 --- /dev/null +++ b/hw/xquartz/bundle/English.lproj/main.nib/designable.nib @@ -0,0 +1,4098 @@ + + + + 1050 + 9C31 + 629 + 949.26 + 352.00 + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + YES + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + + NSMenuMixedState + + submenuAction: + + + + YES + + + About X11 + + 2147483647 + + + + + + Preferences... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + Services + + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Toggle Full Screen + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide X11 + h + 1048576 + 2147483647 + + + 42 + + + + Hide Others + + 1048576 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Applications + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Customize... + + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + Window + + + YES + + + Minimize Window + m + 1048576 + 2147483647 + + + + + + Close Window + w + 1048576 + 2147483647 + + + + + + Zoom Window + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Next Window + 75yDA + 1048576 + 2147483647 + + + + + + Previous Window + 75yCA + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + X11 Help + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{319, 323}, {478, 316}} + 1350041600 + X11 Preferences + NSPanel + + View + + {3.40282e+38, 3.40282e+38} + {213, 107} + + + 256 + + YES + + + 256 + + YES + + + 256 + + YES + + + 256 + {{18, 90}, {402, 18}} + + YES + + 67239424 + 0 + Use system alert effect + + LucidaGrande + 1.300000e+01 + 1044 + + + 1211912703 + 2 + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 56}, {385, 28}} + + YES + + 67239424 + 4194304 + X11 beeps will use the standard system alert, as defined in the Sound Effects system preferences panel. + + + 1.100000e+01 + 3100 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + + controlTextColor + + 3 + MAA + + + + + + + 256 + {{74, 209}, {128, 26}} + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + + 1.300000e+01 + 16 + + + + + + + + 400 + 75 + + + From Display + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + YES + + + + 256 Colors + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Thousands + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Millions + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 212}, {55, 20}} + + YES + + 67239424 + 4194304 + Q29sb3JzOgo + + + + + + + + + 256 + {{36, 190}, {392, 14}} + + YES + + 67239424 + 4194304 + This option takes effect when X11 is launched again. + + + + + + + + + 256 + {{18, 156}, {409, 23}} + + YES + + 67239424 + 0 + Full screen mode + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{36, 119}, {385, 31}} + + YES + + 67239424 + 4194304 + Enables the X11 root window. Use the Command-Option-A keystroke to enter and leave full screen mode. + + + + + + + + {{10, 33}, {438, 253}} + + + + {{10, 7}, {458, 299}} + + + YES + + + 1 + + + + 256 + + YES + + + 256 + {{18, 217}, {402, 18}} + + YES + + 67239424 + 0 + Emulate three button mouse + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{36, 67}, {385, 31}} + + YES + + 67239424 + 4194304 + When enabled, menu bar key equivalents may interfere with X11 applications that use the Meta modifier. + + + + + + + + + 256 + {{36, 182}, {385, 29}} + + YES + + 67239424 + 4194304 + SG9sZCBPcHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8gYWN0aXZhdGUgdGhlIG1pZGRs +ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA + + + + + + + + + 256 + {{18, 104}, {402, 18}} + + YES + + 67239424 + 0 + Enable key equivalents under X11 + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{36, 133}, {385, 14}} + + YES + + 67239424 + 4194304 + Allows input menu changes to overwrite the current X11 keymap. + + + + + + + + + 256 + {{18, 153}, {402, 18}} + + YES + + 67239424 + 0 + Follow system keyboard layout + + + 1211912703 + 2 + + + + 200 + 25 + + + + {{10, 33}, {438, 253}} + + Input + + + + + + 2 + + + Output + + + + + + + 256 + + YES + + + 256 + {{18, 217}, {402, 18}} + + YES + + 67239424 + 0 + Authenticate connections + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{18, 140}, {402, 18}} + + YES + + 67239424 + 0 + Allow connections from network clients + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{36, 169}, {385, 42}} + + YES + + 67239424 + 4194304 + TGF1bmNoaW5nIFgxMSB3aWxsIGNyZWF0ZSBYYXV0aG9yaXR5IGFjY2Vzcy1jb250cm9sIGtleXMuIElm +IHRoZSBzeXN0ZW0ncyBJUCBhZGRyZXNzIGNoYW5nZXMsIHRoZXNlIGtleXMgYmVjb21lIGludmFsaWQg +d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 + + + + + + + + + 256 + {{36, 92}, {385, 42}} + + YES + + 67239424 + 4194304 + If enabled, Authenticate connections must also be enabled to ensure system security. When disabled, connections from remote applications are not allowed. + + + + + + + + + 256 + {{17, 20}, {404, 14}} + + YES + + 67239424 + 4194304 + These options take effect when X11 is next launched. + + + + + + + + {{10, 33}, {438, 253}} + + Security + + + + + + + 0 + YES + YES + + + {478, 316} + + {{0, 0}, {1440, 878}} + {213, 129} + {3.40282e+38, 3.40282e+38} + x11_prefs + + + 11 + 2 + {{279, 270}, {486, 310}} + 1350041600 + X11 Application Menu + + + View + + {3.40282e+38, 3.40282e+38} + {213, 107} + + + 256 + + YES + + + 303 + {{388, 12}, {84, 32}} + + YES + + -2080244224 + 137887744 + Done + + + -2038284033 + 1 + + Helvetica + 1.300000e+01 + 16 + + + + + + 200 + 25 + + + + + 301 + {{372, 230}, {100, 32}} + + YES + + 67239424 + 137887744 + Duplicate + + + -2038284033 + 1 + + + + + + + + 200 + 25 + + + + + 301 + {{372, 198}, {100, 32}} + + YES + + 67239424 + 137887744 + Remove + + + -2038284033 + 1 + + + + + + + + 200 + 25 + + + + + 307 + + YES + + + 2304 + + YES + + + 256 + {333, 197} + + YES + + + 256 + {333, 17} + + + + + + 256 + {{334, 0}, {16, 17}} + + + + YES + + 7.900000e+01 + 4.000000e+01 + 1.000000e+03 + + 75628032 + 0 + Name + + + 3 + MC4zMzMzMzI5OQA + + + 6 + + headerTextColor + + + + + 338820672 + 1024 + + + + 3 + MQA + + + + 3 + YES + YES + + + + 1.937310e+02 + 6.273100e+01 + 1.000000e+03 + + 75628032 + 0 + Command + + + + + + 338820672 + 1024 + + + + + + 3 + YES + YES + + + + 5.100000e+01 + 1.000000e+01 + 1.000000e+03 + + 67239424 + 0 + Shortcut + + + 6 + + headerColor + + + + + + 338820672 + 1024 + + + 1.200000e+01 + 16 + + + YES + + 6 + + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3.000000e+00 + 2.000000e+00 + + + 6 + + gridColor + + 3 + MC41AA + + + 1.700000e+01 + 1379958784 + 1 + -1 + 0 + YES + + + {{1, 17}, {333, 197}} + + + + + 4 + + + + 256 + {{334, 17}, {15, 197}} + + + _doScroller: + 9.949238e-01 + + + + 256 + {{1, 214}, {333, 15}} + + 1 + + + 9.940299e-01 + + + + 2304 + + YES + + + {{1, 0}, {333, 17}} + + + + + 4 + + + + {{20, 60}, {350, 230}} + + + 50 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 303 + {{304, 12}, {84, 32}} + + YES + + 67239424 + 137887744 + Cancel + + + -2038284033 + 1 + + + + + + + + 200 + 25 + + + + + 301 + {{372, 262}, {100, 32}} + + YES + + 67239424 + 137887744 + Add Item + + + -2038284033 + 1 + + + + + + + + 200 + 25 + + + + {{1, 1}, {486, 310}} + + {{0, 0}, {1440, 878}} + {213, 129} + {3.40282e+38, 3.40282e+38} + x11_apps + + + Menu + + YES + + + YES + YES + + + 1048576 + 2147483647 + + + + + + + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Q3VzdG9taXpl4oCmA + + 1048576 + 2147483647 + + + + + + + + + + + + + YES + + + cut: + + + + 175 + + + + paste: + + + + 176 + + + + redo: + + + + 178 + + + + selectAll: + + + + 179 + + + + undo: + + + + 180 + + + + copy: + + + + 181 + + + + delete: + + + + 195 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + window_separator + + + + 260 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_done: + + + + 302 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_cancel: + + + + 309 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + use_sysbeep + + + + 390 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + + + + + 395 + + + + + + + + 396 + + + + + + + + 397 + + + + + + + + 398 + + + + + + + + 399 + + + + + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + terminate: + + + + 432 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + + 19 + + + YES + + + + + + 24 + + + YES + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 208 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + YES + + + + + + 57 + + + YES + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + YES + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + YES + + + + + + 169 + + + YES + + + + + + + + + + + + + 156 + + + + + 157 + + + + + 158 + + + + + 160 + + + + + 164 + + + + + 171 + + + + + 172 + + + + + 173 + + + + + 269 + + + YES + + + + + + 270 + + + YES + + + + + + + 272 + + + + + 305 + + + + + 419 + + + YES + + + + + + 420 + + + YES + + + + + + 421 + + + + + 196 + + + + + + 244 + + + YES + + + + PrefsPanel + + + 245 + + + YES + + + + + + 348 + + + YES + + + + + + + + 349 + + + YES + + + + + + 351 + + + YES + + + + + + + + + + + 363 + + + YES + + + + + + 364 + + + YES + + + + + + 365 + + + YES + + + + + + 368 + + + YES + + + + + + 369 + + + YES + + + + + + 370 + + + YES + + + + + + 352 + + + YES + + + + + + 350 + + + YES + + + + + + + + + + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + 382 + + + YES + + + + + + 385 + + + YES + + + + + + 386 + + + YES + + + + + + 541 + + + YES + + + + + + 543 + + + YES + + + + + + 353 + + + YES + + + + + + 354 + + + YES + + + + + + + + + + 374 + + + YES + + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + 377 + + + YES + + + + + + 379 + + + YES + + + + + + 285 + + + YES + + + + EditPrograms + + + 286 + + + YES + + + + + + + + + + + 291 + + + YES + + + + + + 292 + + + YES + + + + + + 293 + + + YES + + + + + + 295 + + + YES + + + + + + + + + 296 + + + YES + + + + + + + + 297 + + + YES + + + + + + 574 + + + + + 298 + + + YES + + + + + + 573 + + + + + 535 + + + YES + + + + + + 575 + + + + + 299 + + + YES + + + + + + 310 + + + YES + + + + + + 423 + + + YES + + + + + DockMenu + + + 524 + + + + + 526 + + + YES + + + + + + 527 + + + YES + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100371 + + + + + 100372 + + + + + 100382 + + + YES + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 100291 + + + + + 100292 + + + + + 100293 + + + + + 100299 + + + + + 100310 + + + + + 380 + + + YES + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 100295 + + + + + 200295 + + + + + 300295 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + -3.ImportedFromIB2 + 100295.IBShouldRemoveOnLegacySave + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 156.IBPluginDependency + 156.ImportedFromIB2 + 157.IBPluginDependency + 157.ImportedFromIB2 + 158.IBPluginDependency + 158.ImportedFromIB2 + 160.IBPluginDependency + 160.ImportedFromIB2 + 163.IBPluginDependency + 163.ImportedFromIB2 + 164.IBPluginDependency + 164.ImportedFromIB2 + 169.IBPluginDependency + 169.ImportedFromIB2 + 171.IBPluginDependency + 171.ImportedFromIB2 + 172.IBPluginDependency + 172.ImportedFromIB2 + 173.IBPluginDependency + 173.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 200295.IBShouldRemoveOnLegacySave + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 244.IBPluginDependency + 244.ImportedFromIB2 + 244.windowTemplate.hasMaxSize + 244.windowTemplate.hasMinSize + 244.windowTemplate.maxSize + 244.windowTemplate.minSize + 245.IBPluginDependency + 245.ImportedFromIB2 + 269.IBPluginDependency + 269.ImportedFromIB2 + 270.IBPluginDependency + 270.ImportedFromIB2 + 272.IBPluginDependency + 272.ImportedFromIB2 + 285.IBPluginDependency + 285.ImportedFromIB2 + 285.windowTemplate.hasMaxSize + 285.windowTemplate.hasMinSize + 285.windowTemplate.maxSize + 285.windowTemplate.minSize + 286.IBPluginDependency + 286.ImportedFromIB2 + 29.IBPluginDependency + 29.ImportedFromIB2 + 291.IBPluginDependency + 291.ImportedFromIB2 + 292.IBPluginDependency + 292.ImportedFromIB2 + 293.IBPluginDependency + 293.ImportedFromIB2 + 295.IBPluginDependency + 295.ImportedFromIB2 + 296.IBPluginDependency + 296.ImportedFromIB2 + 297.IBPluginDependency + 297.ImportedFromIB2 + 298.IBPluginDependency + 298.ImportedFromIB2 + 299.IBPluginDependency + 299.ImportedFromIB2 + 300295.IBShouldRemoveOnLegacySave + 305.IBPluginDependency + 305.ImportedFromIB2 + 310.IBPluginDependency + 310.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBPluginDependency + 349.ImportedFromIB2 + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 352.IBPluginDependency + 352.ImportedFromIB2 + 353.IBPluginDependency + 353.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 363.IBPluginDependency + 363.ImportedFromIB2 + 364.IBPluginDependency + 364.ImportedFromIB2 + 365.IBPluginDependency + 365.ImportedFromIB2 + 368.IBPluginDependency + 368.ImportedFromIB2 + 369.IBPluginDependency + 369.ImportedFromIB2 + 370.IBPluginDependency + 370.ImportedFromIB2 + 371.IBPluginDependency + 371.ImportedFromIB2 + 372.IBPluginDependency + 372.ImportedFromIB2 + 374.IBPluginDependency + 374.ImportedFromIB2 + 375.IBPluginDependency + 375.ImportedFromIB2 + 376.IBPluginDependency + 376.ImportedFromIB2 + 377.IBPluginDependency + 377.ImportedFromIB2 + 379.IBPluginDependency + 379.ImportedFromIB2 + 380.IBPluginDependency + 380.ImportedFromIB2 + 381.IBPluginDependency + 381.ImportedFromIB2 + 382.IBPluginDependency + 382.ImportedFromIB2 + 383.IBPluginDependency + 383.ImportedFromIB2 + 384.IBPluginDependency + 384.ImportedFromIB2 + 385.IBPluginDependency + 385.ImportedFromIB2 + 386.IBPluginDependency + 386.ImportedFromIB2 + 419.IBPluginDependency + 419.ImportedFromIB2 + 420.IBPluginDependency + 420.ImportedFromIB2 + 421.IBPluginDependency + 421.ImportedFromIB2 + 423.IBPluginDependency + 423.ImportedFromIB2 + 435.IBPluginDependency + 435.ImportedFromIB2 + 5.IBPluginDependency + 5.ImportedFromIB2 + 524.IBPluginDependency + 524.ImportedFromIB2 + 526.IBPluginDependency + 526.ImportedFromIB2 + 527.IBPluginDependency + 527.ImportedFromIB2 + 532.IBPluginDependency + 532.ImportedFromIB2 + 533.IBPluginDependency + 533.ImportedFromIB2 + 535.IBPluginDependency + 535.ImportedFromIB2 + 536.IBPluginDependency + 536.ImportedFromIB2 + 537.IBPluginDependency + 537.ImportedFromIB2 + 538.IBPluginDependency + 538.ImportedFromIB2 + 541.IBPluginDependency + 541.ImportedFromIB2 + 543.IBPluginDependency + 543.ImportedFromIB2 + 544.IBPluginDependency + 544.ImportedFromIB2 + 545.IBPluginDependency + 545.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBPluginDependency + 57.ImportedFromIB2 + 573.IBPluginDependency + 573.ImportedFromIB2 + 574.IBPluginDependency + 574.ImportedFromIB2 + 575.IBPluginDependency + 575.ImportedFromIB2 + 58.IBPluginDependency + 58.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {3.40282e+38, 3.40282e+38} + {213, 107} + + + + + + + + + + + + + {3.40282e+38, 3.40282e+38} + {213, 107} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 300295 + + + + YES + + NSFormatter + + + YES + + YES + + + YES + + + + YES + + YES + + + YES + + + + IBUserSource + + + + + FirstResponder + + + YES + + YES + alignCenter: + alignJustified: + alignLeft: + alignRight: + arrangeInFront: + centerSelectionInVisibleArea: + changeFont: + checkSpelling: + clear: + clearRecentDocuments: + complete: + copy: + copyFont: + copyRuler: + cut: + delete: + deminiaturize: + fax: + hide: + hideOtherApplications: + loosenKerning: + lowerBaseline: + makeKeyAndOrderFront: + miniaturize: + newDocument: + openDocument: + orderBack: + orderFront: + orderFrontColorPanel: + orderFrontHelpPanel: + orderOut: + outline: + paste: + pasteAsPlainText: + pasteAsRichText: + pasteFont: + pasteRuler: + pause: + performClose: + performFindPanelAction: + performMiniaturize: + performZoom: + play: + print: + printDocument: + raiseBaseline: + record: + redo: + resume: + revertDocumentToSaved: + run: + runPageLayout: + runToolbarCustomizationPalette: + saveAllDocuments: + saveDocument: + saveDocumentAs: + saveDocumentTo: + selectAll: + selectText: + showGuessPanel: + showHelp: + start: + startSpeaking: + stop: + stopSpeaking: + subscript: + superscript: + terminate: + tightenKerning: + toggleContinuousSpellChecking: + toggleRuler: + toggleToolbarShown: + turnOffKerning: + turnOffLigatures: + underline: + undo: + unhideAllApplications: + unscript: + useAllLigatures: + useStandardKerning: + useStandardLigatures: + + + YES + id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + YES + + YES + + + YES + + + + + + + + + X11Controller + NSObject + + YES + + YES + apps_table_cancel: + apps_table_delete: + apps_table_done: + apps_table_duplicate: + apps_table_new: + apps_table_show: + bring_to_front: + close_window: + enable_fullscreen_changed: + minimize_window: + next_window: + prefs_changed: + prefs_show: + previous_window: + toggle_fullscreen: + x11_help: + zoom_window: + + + YES + + + + + + + + + + + + + + + + + + + + + YES + + YES + apps_separator + apps_table + depth + dock_apps_menu + dock_menu + dock_window_separator + enable_auth + enable_fullscreen + enable_keyequivs + enable_tcp + fake_buttons + prefs_panel + sync_keymap + toggle_fullscreen_item + use_sysbeep + window_separator + x11_about_item + + + YES + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + 3 + + YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA +AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEDKQALAAwAMQA1ADkAQABD +AEQASABMAIYAjACcAKEAogCjAKgAqQCqAK0AsQCyALUAtgC6AMAAzgDUANUA7wDwAPgA+QD8AQABAQEE +AQgBDgERARIBEwEXAR4BHwEgASEBJgEnASoBLwE0ATUBOgFFAVABUQFSAVYBWwFkAWsBbAFwAXIBcwF4 +AX8BhQGGAY4BjwGUAZsBoAGhAakBqgGrAbABsQG2Ab0BvgHWAdoB3AHeAesB7wHwAfEB9AH7AgUB8AIG +AhAB8AIRAhsB8AIcAiACIwIoAjECNgI3AjwCRQJJAkoCTwJWAlcCXwJgAmECZgJnAmwCiAKJAooCiwKO +Ao8CkAKWApoCqgKuArgCvwLAAsoCywLQAtoC2wLcAuAC4gLnAugC6wLuAvEC+AL5AwADAQMIAwkDEAMR +AxgDGQMhAyIDKQMqAzEDMgMzAzUDNgM8A0UDSANRA1gDWQNgA2EDaANpA3ADcQN4A3kDgQOCA4kDigOR +AzIDkgOTA5YDnQOgA6EDpwOvAlYDtgO+A78DxgPHA84DzwPWA9cD3gPfA+YD5wPuAzID7wPwA/ID8wP0 +Ao4D9QP2A/kD+gP+BAUEBgQHBAgEDQQSBBkEGgQfBCYEKwQsBC0EMgQ5BDoEOwRABEcESARJBEoETwRX +BFgEWQReBF8EZARrBGwEbQRxBHgEeQR6BHsEgASHBIgEiQSKBI4ElQSWBJcEmASdBKQEpQSmBKsEsgS2 +BLcEuAS9BMIEwwTIBNAE1QTWBOAE4QTkBOUE5wTpBOoE7wTwBPUE/AT9BQUFBgUIBQoFCwUQBREFFgUX +BRwFIwUkBSUFJgUrBTMFNAU9BT4FQAVBBUYFSwVMBVEFbAV7BXwFgwWMBY0FkAWVBakFqgWtBbMFxQXM +Bc0F0AXVBdYF2QXgBeMF5gXvBfUF9gX8BgUGCwYMBhEGEgYZBh0GIgYjBigGKQYsBi4GLwY0BjwGPQY+ +Bj8GRAZLBkwGTQZRBlgGWQZaBlsGYAZnBmgGcAZxBnMGdQZ2BnsGfAaBBogGiQaKBosGkAaRBpYGlwac +Bp0GoganBq4GrwawBrEGtga9Br4GvwbABsUGzAbNBtUG1gbYBtoG2wbgBuEG5QbsBu0G7gbvB28HeAeA +B4QHhQeIB5EHkgeTB5YHngefB6MHpAelB6gHqQeuB7cHvAFRB70HzAfVB94BUQffB+QH5gfpB+oH8wf8 +CAUIBgFRCA8IEggeCCcIMAgxCDIIOghDAVEIRAhPCFgIEQFRCGEIagFRCGsIbwhwADgIcwiBCIIIgwKO +Ao8D8wP0Ao4IhQiGCIgJCAmJCgoKCwoMCg0KDgoPChAKEQoSChMKFAoVChYKFwoYChkKGgobChwKHQoe +Ch8KIAohCiIKIwokCiUKJgonCigKKQoqCisKLAotCi4KLwowCjEKMgozCjQKNQo2CjcKOAo5CjoKOwo8 +Cj0KPgo/CkAKQQpCCkMKRApFCkYKRwpICkkKSgpLCkwKTQpOCk8KUApRClIKUwpUClUKVgpXClgKWQpa +ClsKXApdCl4KXwpgCmEKYgpjCmQKZQpmCmcKaAppCmoKawpsCm0KbgpvCnAKcQpyAo0Kcwp0CnUKdgp3 +CngKeQp6CnsKfAp9Cn4KfwqACoEKggqDCoQKhQqICosLQwv7C/wL/Qv+C/8MAAwBDAIMAwwEDAUMBgwH +DAgMCQwKDAsMDAwNDA4MDwwQDBEMEgwTDBQMFQwWDBcMGAwZDBoMGwwcDB0MHgwfDCAMIQwiDCMMJAwl +DCYMJwIaBTAMKAwpDCoMKwwsDC0MLgwvDDAMMQwyDDMMNAw1DDYMNww4DDkMOgw7DDwMPQw+DD8MQAxB +DEIMQwxEDEUMRgxHDEgMSQxKDEsMTAxNDE4MTwxQDFEMUgxTDFQMVQxWDFcMWAxZDFoMWwxcDF0MXgxf +DGAMYQxiDGMMZAxlDGYMZwxoDGkMagxrDGwMbQxuDG8McAxxDHIMcwx0DHUMdgx3BM0MeAx5DHoMewx8 +DH0Mfgx/DIAMgQyCDIMMhAyFDIYMhwyIDIkMigyLDIwMjQyODI8MkAyRDJIMkwyUDJUMlgyXDJgMmQya +DJsMnAydDJ4MnwygDKEMogyjDKQMpQymDKcMqAypDKoMqwysDK0MsAyzDLZVJG51bGzfEBIADQAOAA8A +EAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0A +LgAvADBWTlNSb290ViRjbGFzc11OU09iamVjdHNLZXlzXxAPTlNDbGFzc2VzVmFsdWVzXxAZTlNBY2Nl +c3NpYmlsaXR5T2lkc1ZhbHVlc11OU0Nvbm5lY3Rpb25zW05TTmFtZXNLZXlzW05TRnJhbWV3b3JrXU5T +Q2xhc3Nlc0tleXNaTlNPaWRzS2V5c11OU05hbWVzVmFsdWVzXxAZTlNBY2Nlc3NpYmlsaXR5Q29ubmVj +dG9yc11OU0ZvbnRNYW5hZ2VyXxAQTlNWaXNpYmxlV2luZG93c18QD05TT2JqZWN0c1ZhbHVlc18QF05T +QWNjZXNzaWJpbGl0eU9pZHNLZXlzWU5TTmV4dE9pZFxOU09pZHNWYWx1ZXOAAoEDKIEBp4ECbYEDJ4AJ +gQHugAaBAmyBAm6BAe+BAyWAAIAHgQHtgQMmEgAElQiBAm/SAA4AMgAzADRbTlNDbGFzc05hbWWABYAD +0gAOADYANwA4WU5TLnN0cmluZ4AEXU5TQXBwbGljYXRpb27SADoAOwA8AD1YJGNsYXNzZXNaJGNsYXNz +bmFtZaMAPQA+AD9fEA9OU011dGFibGVTdHJpbmdYTlNTdHJpbmdYTlNPYmplY3TSADoAOwBBAEKiAEIA +P15OU0N1c3RvbU9iamVjdF8QEElCQ29jb2FGcmFtZXdvcmvSAA4ARQBGAEdaTlMub2JqZWN0c4AIoNIA +OgA7AEkASqMASgBLAD9cTlNNdXRhYmxlU2V0VU5TU2V00gAOAEUATQBOgD6vEDcATwBQAFEAUgBTAFQA +VQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIA +cwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhYAKgBiAKYAugDGAQYBHgE6AUIBogGyA +cIB2gHiA3YDigOOA5oDrgO+A9ID4gPqA/oEBA4EBCIEBDYEBEYEBFoEBF4EBGYEBJIEBJoEBLoEBMIEB +MoEBN4EBPoEBP4EBQYEBaoEBb4EBc4EBeIEBgIEBgoEBh4EBiYEBi4EBjYEBjoEBk4EBmIEBoIEBotMA +DgCHAIgAiQCKAItYTlNTb3VyY2VXTlNMYWJlbIAXgAuAFtgADgCNAI4AjwCQAJEAkgCTAJQAlQCWAJcA +mACZAJoAm1dOU1RpdGxlXxARTlNLZXlFcXVpdk1vZE1hc2taTlNLZXlFcXVpdl1OU01uZW1vbmljTG9j +WU5TT25JbWFnZVxOU01peGVkSW1hZ2VWTlNNZW51gBWADRIAEAAAgA4Sf////4APgBOADNMADgCNAJ0A +ngCfAKBbTlNNZW51SXRlbXOAP4EB1IEB1lZEZWxldGVQ0wAOADIApAClAKYAp15OU1Jlc291cmNlTmFt +ZYASgBCAEVdOU0ltYWdlXxAPTlNNZW51Q2hlY2ttYXJr0gA6ADsAqwCsogCsAD9fEBBOU0N1c3RvbVJl +c291cmNl0wAOADIApAClAKYAsIASgBCAFF8QEE5TTWVudU1peGVkU3RhdGXSADoAOwCzALSiALQAP1pO +U01lbnVJdGVtV2RlbGV0ZTrSADoAOwC3ALijALgAuQA/XxAVTlNOaWJDb250cm9sQ29ubmVjdG9yXk5T +TmliQ29ubmVjdG9y1AAOALsAhwCIAIkAvQC+AL9dTlNEZXN0aW5hdGlvboAXgCaAGYAo1wDBAA4AwgDD +AMQAxQDGAMcAyADJAMoAywDMAMdfEA9OU05leHRSZXNwb25kZXJXTlNGcmFtZVZOU0NlbGxYTlN2Rmxh +Z3NZTlNFbmFibGVkW05TU3VwZXJ2aWV3gBqAJYAbgBwRAQAJgBrVAMEADgDCAM8AxAArANEA0gDTAMta +TlNTdWJ2aWV3c4AAgKWAu4CqXxAWe3sxOCwgMTUzfSwgezQwMiwgMTh9fd0A1gAOANcA2ADZANoA2wDc +AN0A3gDfAOAA4QDiAOMAlwDlAOYA5wCXAOkA6gC+AOwA7QDuW05TQ2VsbEZsYWdzXxATTlNBbHRlcm5h +dGVDb250ZW50c18QEk5TUGVyaW9kaWNJbnRlcnZhbF5OU0J1dHRvbkZsYWdzMl8QEE5TQWx0ZXJuYXRl +SW1hZ2VfEA9OU0tleUVxdWl2YWxlbnRaTlNDb250ZW50c1lOU1N1cHBvcnRdTlNDb250cm9sVmlld18Q +D05TUGVyaW9kaWNEZWxheVxOU0NlbGxGbGFnczJdTlNCdXR0b25GbGFncxIEAf4AgCSADhAZEAKAIYAO +gB2AHoAZEMgQABJIPFH/XxAdRm9sbG93IHN5c3RlbSBrZXlib2FyZCBsYXlvdXTUAA4A8QDyAPMA9AD1 +APYA91ZOU1NpemVWTlNOYW1lWE5TZkZsYWdzgCAjQCoAAAAAAACAHxEEFFxMdWNpZGFHcmFuZGXSADoA +OwD6APuiAPsAP1ZOU0ZvbnTSAA4A/QD+AP9bTlNJbWFnZU5hbWWAI4AiWE5TU3dpdGNo0gA6ADsBAgED +ogEDAD9fEBNOU0J1dHRvbkltYWdlU291cmNl0gA6ADsBBQEGpAEGAQcAwwA/XE5TQnV0dG9uQ2VsbFxO +U0FjdGlvbkNlbGzSADoAOwEJAQqlAQoBCwEMAQ0AP1hOU0J1dHRvbllOU0NvbnRyb2xWTlNWaWV3W05T +UmVzcG9uZGVy0gAOADIAMwEQgAWAJ11YMTFDb250cm9sbGVyXnByZWZzX2NoYW5nZWQ60wAOAIcAiACJ +ARUBFoAXgCqALdgADgCNAI4AjwCQAJEAkgCTAJQBGQCWARoAmACZAJoAm4AVgCuALIAPgBOADFpTZWxl +Y3QgQWxsUWFac2VsZWN0QWxsOtQADgC7AIcAiAEiAL0AHwElgDCAJoACgC9YZGVsZWdhdGXSADoAOwEo +ASmjASkAuQA/XxAUTlNOaWJPdXRsZXRDb25uZWN0b3LUAA4AuwCHAIgBIgEsAB8BLoAwgDKAAoBA1AAO +AI0A8gCdAJ4BMQCXATOAP4AzgA6ANFRNZW510gAOAEUATQE3gD6iATgBOYA1gDbaAA4AjQCOATsAjwE8 +AJAAkQCSAJMAlACXAJYAzACXAMwAmACZAJoBLF1OU0lzU2VwYXJhdG9yXE5TSXNEaXNhYmxlZIAVgA4J +gA4JgA+AE4Ay2gAOAUYAjQCOAI8AkACRAJIAkwFHAJQBSQFKAJYAlwCYAJkAmgEsAU9ZTlNTdWJtZW51 +WE5TQWN0aW9ugBWAOYA3gA6AD4ATgDKAOFxBcHBsaWNhdGlvbnNec3VibWVudUFjdGlvbjrTAA4AjQCd +AJ4BSgFVgD+AN4A60gAOAEUATQFYgD6iAVkBWoA7gDzaAA4AjQCOATsAjwE8AJAAkQCSAJMAlACXAJYA +zACXAMwAmACZAJoBSYAVgA4JgA4JgA+AE4A52AAOAI0AjgCPAJAAkQCSAJMAlAFmAJYAlwCYAJkAmgFJ +gBWAPYAOgA+AE4A5agBDAHUAcwB0AG8AbQBpAHoAZSAm0gA6ADsBbQFuowFuAW8AP15OU011dGFibGVB +cnJheVdOU0FycmF50gA6ADsBcQCTogCTAD9YZG9ja01lbnXUAA4AuwCHAIgAiQC9AXYAv4AXgCaAQoAo +1wDBAA4AwgDDAMQAxQDGAXkAyAF7AXwAywDMAXmAQ4AlgESARQmAQ9YAwQAOAMIAzwDEAMYBgADRAYIB +gwDLAYCAgoClgKSAhICCXxAVe3sxOCwgOTB9LCB7NDAyLCAxOH193QDWAA4A1wDYANkA2gDbANwA3QDe +AN8A4ADhAOIA4wCXAOUA5gDnAJcBiwDqAXYA7ADtAO6AJIAOgCGADoBGgB6AQl8QF1VzZSBzeXN0ZW0g +YWxlcnQgZWZmZWN01AAOALsAhwCIASIBkQC9AZOAMIBIgCaATdcAwQAOAMIAwwDEAMUAxgGVAMgBlwGY +AMsAzAGVgEmAJYBKgEsJgEnVAMEADgDCAM8AxAArANEBngGfAMuAAIClgNOAwl8QFnt7MTgsIDE0MH0s +IHs0MDIsIDE4fX3dANYADgDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAJcA5QDmAOcAlwGmAOoBkQDs +AO0A7oAkgA6AIYAOgEyAHoBIXxAmQWxsb3cgY29ubmVjdGlvbnMgZnJvbSBuZXR3b3JrIGNsaWVudHNa +ZW5hYmxlX3RjcNQADgC7AIcAiACJAL0BWgGvgBeAJoA8gE9fEBBhcHBzX3RhYmxlX3Nob3c61AAOALsA +hwCIAIkAvQG0AL+AF4AmgFGAKNcAwQAOAMIAwwDEAMUAxgF5AbgBuQG6AMsAzAF5gEOAZ4BSgFMJgENf +EBZ7ezc0LCAyMDl9LCB7MTI4LCAyNn193xATANYBvwHAANcA2AAOANkA2gDbAN0AtADeAcEBwgHDAN8A +4ACTAOEBxADMAcYBxwHIAckBxgHKAcsA6gHNAbQBzwDMAMwB0gHTAdQB1V8QGk5TTWVudUl0ZW1SZXNw +ZWN0QWxpZ25tZW50XxAPTlNBcnJvd1Bvc2l0aW9uXxAPTlNQcmVmZXJyZWRFZGdlXxASTlNVc2VzSXRl +bUZyb21NZW51XU5TQWx0ZXJzU3RhdGUT/////4RB/kAJEAGAVRBLgGaAVIBWgB6AV4BREAMJCREBkBEE +AIBYEgaCQP/UAA4A8QDyAPMA9AD1APYB2YAggB8QENIADgA2ADcAooAE0gAOADYANwCigATcAd8ADgCN +AI4AjwCQAJEAkgCTAUcB4AHhAboAlAHkAJYAlwCYAJkAmgHUAekB6gHGWE5TVGFyZ2V0VU5TVGFnV05T +U3RhdGWAU4AVgFmADoAPgBOAWIBaE///////////0wAOAI0AnQCeAe0B7oA/gFuAXFxGcm9tIERpc3Bs +YXlfEBFfcG9wVXBJdGVtQWN0aW9uOtIADgA2ADcB84AEWk90aGVyVmlld3PSAA4ARQBNAfaAPqQBzQH4 +AfkB+oBXgF2AYIBj2wHfAA4AjQCOAI8AkACRAJIAkwFHAeABugCUAf4AlgCXAJgAmQCaAdQCAwIEgFOA +FYBegA6AD4ATgFiAXxAIWjI1NiBDb2xvcnPbAd8ADgCNAI4AjwCQAJEAkgCTAUcB4AG6AJQCCQCWAJcA +mACZAJoB1AIOAg+AU4AVgGGADoAPgBOAWIBiEA9ZVGhvdXNhbmRz2wHfAA4AjQCOAI8AkACRAJIAkwFH +AeABugCUAhQAlgCXAJgAmQCaAdQCGQIagFOAFYBkgA6AD4ATgFiAZRAYWE1pbGxpb25z0gA6ADsCHQIe +pgIeAh8BBgEHAMMAP18QEU5TUG9wVXBCdXR0b25DZWxsXk5TTWVudUl0ZW1DZWxs0gA6ADsCIQIipgIi +AQoBCwEMAQ0AP11OU1BvcFVwQnV0dG9u1AAOALsAhwCIASICJQC9AieAMIBpgCaAa9oADgCNAI4BOwCP +ATwAkACRAJIAkwCUAJcAlgDMAJcAzACYAJkAmgIwgBWADgmADgmAD4ATgGrUAA4AjQDyAJ0AngIzAjQC +NYA/gQHMgQHQgQHNXxAQd2luZG93X3NlcGFyYXRvctQADgC7AIcAiAEiAjkAvQI7gDCAbYAmgG/aAA4A +jQCOATsAjwE8AJAAkQCSAJMAlACXAJYAzACXAMwAmACZAJoCRIAVgA4JgA4JgA+AE4Bu0wAOAI0AnQCe +AUoCSIA/gDeBAbheYXBwc19zZXBhcmF0b3LUAA4AuwCHAIgBIgJMAL0CToAwgHGAJoB11wDBAA4AwgDD +AMQAxQDGAMcAyAJSAlMAywDMAMeAGoAlgHKAcwmAGl8QFnt7MTgsIDIxN30sIHs0MDIsIDE4fX3dANYA +DgDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAJcA5QDmAOcAlwJcAOoCTADsAO0A7oAkgA6AIYAOgHSA +HoBxXxAaRW11bGF0ZSB0aHJlZSBidXR0b24gbW91c2VcZmFrZV9idXR0b25z1AAOALsAhwCIASIBtAC9 +AmWAMIBRgCaAd1VkZXB0aNQADgC7AIcAiAEiAmkAvQJrgDCAeYAmgNzfEA8CbQAOAm4CbwJwAnECcgJz +AnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAOYBzwKGAodcTlNXaW5kb3dWaWV3XxAW +TlNXaW5kb3dDb250ZW50TWF4U2l6ZVxOU1NjcmVlblJlY3RfEBNOU0ZyYW1lQXV0b3NhdmVOYW1lXU5T +V2luZG93VGl0bGVZTlNXVEZsYWdzXU5TV2luZG93Q2xhc3NfEBZOU1dpbmRvd0NvbnRlbnRNaW5TaXpl +XE5TV2luZG93UmVjdFlOU01heFNpemVfEA9OU1dpbmRvd0JhY2tpbmdfEBFOU1dpbmRvd1N0eWxlTWFz +a1lOU01pblNpemVbTlNWaWV3Q2xhc3OAgIDbgH6A14DagHsSUHgAAIB8gH+AeoDZgNiAfV8QGHt7MzE5 +LCAzMjN9LCB7NDc4LCAzMTZ9fV8QD1gxMSBQcmVmZXJlbmNlc1dOU1BhbmVs0gAOADYANwKNgARUVmll +d18QGnszLjQwMjgyZSszOCwgMy40MDI4MmUrMzh9WnsyMTMsIDEwN33VAMEADgDPAMQCkQArANEClADL +ApVbTlNGcmFtZVNpemWAAIClgIGA1tIADgBFAE0CmIA+oQGAgILcAMEADgKbApwAwgD7AM8AxAKdAMYC +ngKfAnsCoQKiAO0CowDqAqUAywDMAnsAzAKpXk5TVGFiVmlld0l0ZW1zWU5TVHZGbGFnc18QEU5TRHJh +d3NCYWNrZ3JvdW5kXxAWTlNBbGxvd1RydW5jYXRlZExhYmVsc18QFU5TU2VsZWN0ZWRUYWJWaWV3SXRl +bYCAgNWAp4CmgB6AgwmAgAmAvtIADgBFAE0CrIA+oQF5gEPSAA4ARQBNArCAPqcBdgKyAbQCtAK1ArYC +t4BCgIWAUYCUgJiAnICg1wDBAA4AwgDDAMQAxQDGAXkCugK7ArwAywDMAXmAQ4CTgIaAhwmAQ18QFXt7 +MzYsIDU2fSwgezM4NSwgMjh9fdgA1gAOAsEA3ADdAN4A4ALCAOICwwLEAsUCxgKyAsgCyV8QEU5TQmFj +a2dyb3VuZENvbG9yW05TVGV4dENvbG9ygJKAioCIgImAhRIAQAAAgI9fEGdYMTEgYmVlcHMgd2lsbCB1 +c2UgdGhlIHN0YW5kYXJkIHN5c3RlbSBhbGVydCwgYXMgZGVmaW5lZCBpbiB0aGUgU291bmQgRWZmZWN0 +cyBzeXN0ZW0gcHJlZmVyZW5jZXMgcGFuZWwu1AAOAPEA8gDzAPQCzQD2As+AICNAJgAAAAAAAIAfEQwc +1QAOAtEC0gLTAtQC1QLWAtcC2ALZV05TQ29sb3JcTlNDb2xvclNwYWNlW05TQ29sb3JOYW1lXU5TQ2F0 +YWxvZ05hbWWAjoCNEAaAjICLVlN5c3RlbVxjb250cm9sQ29sb3LTAA4C0gLdAtUBzwLfV05TV2hpdGWA +jkswLjY2NjY2NjY5ANIAOgA7AuEC0aIC0QA/1QAOAtEC0gLTAtQC1QLkAtcC5QLZgI6AkYCQgItfEBBj +b250cm9sVGV4dENvbG9y0wAOAtIC3QLVAc8C6oCOQjAA0gA6ADsC7ALtpALtAQcAwwA/XxAPTlNUZXh0 +RmllbGRDZWxs0gA6ADsC7wLwpQLwAQsBDAENAD9bTlNUZXh0RmllbGTXAMEADgDCAMMAxADFAMYBeQK6 +AvQC9QDLAMwBeYBDgJOAlYCWCYBDXxAVe3sxNywgMjEyfSwgezU1LCAyMH192ADWAA4CwQDcAN0A3gDg +AsIA4gLDAsQC/ADqArQCyALJgJKAioCXgB6AlICPWENvbG9yczoK1wDBAA4AwgDDAMQAxQDGAXkCugME +AwUAywDMAXmAQ4CTgJmAmgmAQ18QFnt7MzYsIDE5MH0sIHszOTIsIDE0fX3YANYADgLBANwA3QDeAOAC +wgDiAsMCxAMMAsYCtQLIAsmAkoCKgJuAiYCYgI9fEDRUaGlzIG9wdGlvbiB0YWtlcyBlZmZlY3Qgd2hl +biBYMTEgaXMgbGF1bmNoZWQgYWdhaW4u1wDBAA4AwgDDAMQAxQDGAXkAyAMUAxUAywDMAXmAQ4AlgJ2A +ngmAQ18QFnt7MTgsIDE1Nn0sIHs0MDksIDIzfX3dANYADgDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDj +AJcA5QDmAOcAlwMeAOoCtgDsAO0A7oAkgA6AIYAOgJ+AHoCcXxAQRnVsbCBzY3JlZW4gbW9kZdcAwQAO +AMIAwwDEAMUAxgF5AroDJQMmAMsAzAF5gEOAk4ChgKIJgENfEBZ7ezM2LCAxMTl9LCB7Mzg1LCAzMX19 +2ADWAA4CwQDcAN0A3gDgAsIA4gLDAsQDLQLGArcCyALJgJKAioCjgImAoICPXxBkRW5hYmxlcyB0aGUg +WDExIHJvb3Qgd2luZG93LiBVc2UgdGhlIENvbW1hbmQtT3B0aW9uLUEga2V5c3Ryb2tlIHRvIGVudGVy +IGFuZCBsZWF2ZSBmdWxsIHNjcmVlbiBtb2RlLl8QFnt7MTAsIDMzfSwgezQzOCwgMjUzfX3SADoAOwM0 +AQyjAQwBDQA/XxAVe3sxMCwgN30sIHs0NTgsIDI5OX190gAOAEUATQM4gD6jAzkCqQM7gKiAvoDB1gAO +Az0BDAM+AtEAiAM/A0AAxwGAAsQDRFxOU0lkZW50aWZpZXJZTlNUYWJWaWV3gL2AqYAagIKAioC80gAO +ADYANwNHgARRMdIADgBFAE0DSoA+pgJMA0wDTQNOA08AvoBxgKuAr4CzgLeAGdcAwQAOAMIAwwDEAMUA +xgDHAroDVANVAMsAzADHgBqAk4CsgK0JgBpfEBV7ezM2LCA2N30sIHszODUsIDMxfX3YANYADgLBANwA +3QDeAOACwgDiAsMCxANcAsYDTALIAsmAkoCKgK6AiYCrgI9fEGZXaGVuIGVuYWJsZWQsIG1lbnUgYmFy +IGtleSBlcXVpdmFsZW50cyBtYXkgaW50ZXJmZXJlIHdpdGggWDExIGFwcGxpY2F0aW9ucyB0aGF0IHVz +ZSB0aGUgTWV0YSBtb2RpZmllci7XAMEADgDCAMMAxADFAMYAxwK6A2QDZQDLAMwAx4AagJOAsICxCYAa +XxAWe3szNiwgMTgyfSwgezM4NSwgMjl9fdgA1gAOAsEA3ADdAN4A4ALCAOICwwLEA2wCxgNNAsgCyYCS +gIqAsoCJgK+Aj18QV0hvbGQgT3B0aW9uIGFuZCBDb21tYW5kIHdoaWxlIGNsaWNraW5nIHRvIGFjdGl2 +YXRlIHRoZSBtaWRkbGUgYW5kIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCtcAwQAOAMIAwwDEAMUAxgDHAMgD +dAN1AMsAzADHgBqAJYC0gLUJgBpfEBZ7ezE4LCAxMDR9LCB7NDAyLCAxOH193QDWAA4A1wDYANkA2gDb +ANwA3QDeAN8A4ADhAOIA4wCXAOUA5gDnAJcDfgDqA04A7ADtAO6AJIAOgCGADoC2gB6As18QIEVuYWJs +ZSBrZXkgZXF1aXZhbGVudHMgdW5kZXIgWDEx1wDBAA4AwgDDAMQAxQDGAMcCugOFA4YAywDMAMeAGoCT +gLiAuQmAGl8QFnt7MzYsIDEzM30sIHszODUsIDE0fX3YANYADgLBANwA3QDeAOACwgDiAsMCxAONAsYD +TwLIAsmAkoCKgLqAiYC3gI9fED5BbGxvd3MgaW5wdXQgbWVudSBjaGFuZ2VzIHRvIG92ZXJ3cml0ZSB0 +aGUgY3VycmVudCBYMTEga2V5bWFwLlVJbnB1dNIAOgA7A5QDlaIDlQA/XU5TVGFiVmlld0l0ZW3WAA4D +PQEMAz4C0QCIAz8DmAF5AYACxAOcgL2Av4BDgIKAioDA0gAOADYANwOfgARRMlZPdXRwdXTVAA4BDAM+ +AtEAiAM/AZUBgALEA6aAvYBJgIKAioDU0gAOAEUATQOpgD6lA6oBkQOsA60DroDDgEiAx4DLgM/XAMEA +DgDCAMMAxADFAMYBlQDIA7IDswDLAMwBlYBJgCWAxIDFCYBJ3QDWAA4A1wDYANkA2gDbANwA3QDeAN8A +4ADhAOIA4wCXAOUA5gDnAJcDuwDqA6oA7ADtAO6AJIAOgCGADoDGgB6Aw18QGEF1dGhlbnRpY2F0ZSBj +b25uZWN0aW9uc9cAwQAOAMIAwwDEAMUAxgGVAroDwgPDAMsAzAGVgEmAk4DIgMkJgElfEBZ7ezM2LCAx +Njl9LCB7Mzg1LCA0Mn192ADWAA4CwQDcAN0A3gDgAsIA4gLDAsQDygLGA6wCyALJgJKAioDKgImAx4CP +XxCqTGF1bmNoaW5nIFgxMSB3aWxsIGNyZWF0ZSBYYXV0aG9yaXR5IGFjY2Vzcy1jb250cm9sIGtleXMu +IElmIHRoZSBzeXN0ZW0ncyBJUCBhZGRyZXNzIGNoYW5nZXMsIHRoZXNlIGtleXMgYmVjb21lIGludmFs +aWQgd2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy7XAMEADgDC +AMMAxADFAMYBlQK6A9ID0wDLAMwBlYBJgJOAzIDNCYBJXxAVe3szNiwgOTJ9LCB7Mzg1LCA0Mn192ADW +AA4CwQDcAN0A3gDgAsIA4gLDAsQD2gLGA60CyALJgJKAioDOgImAy4CPXxCZSWYgZW5hYmxlZCwgQXV0 +aGVudGljYXRlIGNvbm5lY3Rpb25zIG11c3QgYWxzbyBiZSBlbmFibGVkIHRvIGVuc3VyZSBzeXN0ZW0g +c2VjdXJpdHkuIFdoZW4gZGlzYWJsZWQsIGNvbm5lY3Rpb25zIGZyb20gcmVtb3RlIGFwcGxpY2F0aW9u +cyBhcmUgbm90IGFsbG93ZWQu1wDBAA4AwgDDAMQAxQDGAZUCugPiA+MAywDMAZWASYCTgNCA0QmASV8Q +FXt7MTcsIDIwfSwgezQwNCwgMTR9fdgA1gAOAsEA3ADdAN4A4ALCAOICwwLEA+oCxgOuAsgCyYCSgIqA +0oCJgM+Aj18QNFRoZXNlIG9wdGlvbnMgdGFrZSBlZmZlY3Qgd2hlbiBYMTEgaXMgbmV4dCBsYXVuY2hl +ZC5YU2VjdXJpdHnSADoAOwPxAz6kAz4BDAENAD9aezQ3OCwgMzE2fV8QFXt7MCwgMH0sIHsxNDQwLCA4 +Nzh9fVp7MjEzLCAxMjl9WXgxMV9wcmVmc9IAOgA7A/cD+KID+AA/XxAQTlNXaW5kb3dUZW1wbGF0ZVtw +cmVmc19wYW5lbNMADgCHAIgAiQP8A/2AF4DegOHYAA4AjQCOAI8AkACRAJIAkwCUBAAAlgQBAJgAmQCa +AJuAFYDfgOCAD4ATgAxTQ3V0UXhUY3V0OtQADgC7AIcAiACJAL0BkQC/gBeAJoBIgCjUAA4AuwCHAIgA +iQC9BBABr4AXgCaA5IBP2AAOAI0AjgCPAJAAkQCSAJMAlAQUAJYAlwCYAJkAmgJEgBWA5YAOgA+AE4Bu +XEN1c3RvbWl6ZS4uLtQADgC7AIcAiAEiBBwAvQQegDCA54AmgOrXAA4AjQCPAJAAkQCSAJMAlAQhAJcA +mACZAJoEJYAVgOmADoAPgBOA6NQADgCNAPIAnQCeBCgEKQQqgD+BAbuBAcmBAb1ZQWJvdXQgWDExXngx +MV9hYm91dF9pdGVt1AAOALsAhwCIAIkAvQQwBDGAF4AmgOyA7tgADgCNAI4AjwCQAJEAkgCTAJQENACW +AJcAmACZAJoCMIAVgO2ADoAPgBOAal8QEkJyaW5nIEFsbCB0byBGcm9udF8QD2JyaW5nX3RvX2Zyb250 +OtQADgC7AIcAiACJAL0EPgQ/gBeAJoDwgPPYAA4AjQCOAI8AkACRAJIAkwCUBEIAlgRDAJgAmQCaAjCA +FYDxgPKAD4ATgGpcQ2xvc2UgV2luZG93UXddY2xvc2Vfd2luZG93OtQADgC7AIcAiAEiBEwAvQROgDCA +9YAmgPfYAA4AjQCOAI8AkACRAJIAkwCUBFEEUgEaAJgAmQCaBCWAFYD2EgAYAACALIAPgBOA6F8QElRv +Z2dsZSBGdWxsIFNjcmVlbl8QFnRvZ2dsZV9mdWxsc2NyZWVuX2l0ZW3UAA4AuwCHAIgBIgK2AL0EXYAw +gJyAJoD5XxARZW5hYmxlX2Z1bGxzY3JlZW7UAA4AuwCHAIgAiQC9BGIEY4AXgCaA+4D92AAOAI0AjgCP +AJAAkQCSAJMAlARmAJYAlwCYAJkAmgIwgBWA/IAOgA+AE4BqW1pvb20gV2luZG93XHpvb21fd2luZG93 +OtMADgCHAIgAiQRvBHCAF4D/gQEC2AAOAI0AjgCPAJAAkQCSAJMAlARzAJYEdACYAJkAmgCbgBWBAQCB +AQGAD4ATgAxUUmVkb1FaVXJlZG861AAOALsAhwCIAIkAHwR+BH+AF4ACgQEEgQEH2AAOAI0AjgCPAJAA +kQCSAJMAlASCAJYEgwCYAJkAmgQlgBWBAQWBAQaAD4ATgOhYUXVpdCBYMTFRcVp0ZXJtaW5hdGU60wAO +AIcAiACJBIwEjYAXgQEJgQEM2AAOAI0AjgCPAJAAkQCSAJMAlASQAJYEkQCYAJkAmgCbgBWBAQqBAQuA +D4ATgAxUVW5kb1F6VXVuZG861AAOALsAhwCIAIkAHwSbBJyAF4ACgQEOgQEQ2AAOAI0AjgCPAJAAkQCS +AJMAlASfAJYAlwCYAJkAmgQlgBWBAQ+ADoAPgBOA6FtIaWRlIE90aGVyc18QFmhpZGVPdGhlckFwcGxp +Y2F0aW9uczrUAA4AuwCHAIgAiQC9BKkEqoAXgCaBARKBARXYAA4AjQCOAI8AkACRAJIAkwCUBK0AlgCX +AJgAmQCaBLGAFYEBFIAOgA+AE4EBE9MADgCNAJ0AngS0BLWAP4EB3IEB3lhYMTEgSGVscFl4MTFfaGVs +cDrUAA4AuwCHAIgAiQC9A04Av4AXgCaAs4Ao1AAOALsAhwCIASIDTgC9BMGAMICzgCaBARhfEBBlbmFi +bGVfa2V5ZXF1aXZz1AAOALsAhwCIAIkAvQTGBMeAF4AmgQEagQEj1wDBAA4AwgDDAMQAxQDGBMkAyATL +BMwEzQDMBMmBARuAJYEBHIEBHREBLQmBARvVAMEADgDCAM8AxAArANEE0wTUAMuAAIClgQG3gQGoXxAX +e3szNzIsIDIzMH0sIHsxMDAsIDMyfX3dANYADgDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjBNgA5QHG +BNkE2gTbAOoExgDsBN4E34AkgQEhgQEfgQEigQEegB6BARoSCDgAABP/////hoJA/1lEdXBsaWNhdGXU +AA4A8QDyAPMA9AD1BOMB2YAggQEgWUhlbHZldGljYdIADgA2ADcAooAE0gAOADYANwCigARfEBVhcHBz +X3RhYmxlX2R1cGxpY2F0ZTrUAA4AuwCHAIgBIgFJAL0E7oAwgDmAJoEBJV5kb2NrX2FwcHNfbWVuddQA +DgC7AIcAiACJAL0E8wT0gBeAJoEBJ4EBLdcAwQAOAMIAwwDEAMUAxgTJAMgE+AT5BM0AzATJgQEbgCWB +ASiBASkJgQEbXxAXe3szNzIsIDI2Mn0sIHsxMDAsIDMyfX3dANYADgDXANgA2QDaANsA3ADdAN4A3wDg +AOEA4gDjBP8A5QHGBNkFAQUCAOoE8wDsBN4E34AkgQErgQEfgQEsgQEqgB6BASdYQWRkIEl0ZW3SAA4A +NgA3AKKABNIADgA2ADcAooAEXxAPYXBwc190YWJsZV9uZXc61AAOALsAhwCIAIkAHwQcBQ+AF4ACgOeB +AS9fEB1vcmRlckZyb250U3RhbmRhcmRBYm91dFBhbmVsOtQADgC7AIcAiAEiASwAvQUVgDCAMoAmgQEx +WWRvY2tfbWVuddQADgC7AIcAiACJAL0FGgUbgBeAJoEBM4EBNtgADgCNAI4AjwCQAJEAkgCTAJQFHgCW +BR8AmACZAJoCMIAVgQE0gQE1gA+AE4BqW05leHQgV2luZG93YfcDXG5leHRfd2luZG93OtQADgC7AIcA +iACJAL0FKQUqgBeAJoEBOIEBPdcAwQAOAMIAwwDEAMUAxgTJAMgFLgUvBTAAzATJgQEbgCWBATmBAToR +AS8JgQEbXxAVe3szODgsIDEyfSwgezg0LCAzMn193QDWAA4A1wDYANkA2gDbANwA3QDeAN8A4ADhBTUA +4wCXAOUBxgTZBTkFOgDqBSkA7ATeBN8T/////4QB/gCAJIAOgQEfgQE8gQE7gB6BAThURG9uZdIADgA2 +ADcAooAEXxAQYXBwc190YWJsZV9kb25lOtQADgC7AIcAiACJAL0DqgC/gBeAJoDDgCjUAA4AuwCHAIgB +IgOqAL0FSoAwgMOAJoEBQFtlbmFibGVfYXV0aNQADgC7AIcAiAEiBU4AvQVQgDCBAUKAJoEBad8QEwDB +BVIADgKcBVMCwQVUBVUFVgVXBVgAxAKRAMUFWQVaAMYFWwVcBV0A7QVeBV8FYAVhAMwFYwVkAcYFZQDL +BWYAzAVoAeoFXQVqBWtfEB9OU0RyYWdnaW5nU291cmNlTWFza0Zvck5vbkxvY2FsXE5TSGVhZGVyVmll +d18QEk5TQWxsb3dzVHlwZVNlbGVjdFxOU0Nvcm5lclZpZXdfEBdOU0ludGVyY2VsbFNwYWNpbmdXaWR0 +aF8QGU5TQ29sdW1uQXV0b3Jlc2l6aW5nU3R5bGVfEBhOU0ludGVyY2VsbFNwYWNpbmdIZWlnaHRbTlNH +cmlkQ29sb3JfEBxOU0RyYWdnaW5nU291cmNlTWFza0ZvckxvY2FsXk5TVGFibGVDb2x1bW5zW05TUm93 +SGVpZ2h0gQFDgQFoElJAgACBAUWBAVYJgQFJI0AIAAAAAAAAI0AAAAAAAAAAgQFECYEBZYEBQ4EBTSNA +MQAAAAAAANoAwQAOAMIFbQDPAMQFbgVvAMYFcAVxBXIFcwV0BXUFdgVOBXgFcQVOWU5TY3ZGbGFnc1lO +U0RvY1ZpZXdZTlNCR0NvbG9yXU5TTmV4dEtleVZpZXeBAUqBAayBAasQBIEBqhEJAIEBQoEBY4EBSoEB +Qlp7MzMzLCAxOTd91gDBAA4AxAKRAMYFfQV+BX8AywWABX4FTltOU1RhYmxlVmlld4EBRoEBSIEBR4EB +RoEBQtoAwQAOAMIFbQDPAMQFbgVvAMYFcAVxBXIFhgV0BYcFdgVgBXgFcQVggQFKgQGsgQG0gQGzgQFF +gQFjgQFKgQFFWXszMzMsIDE3fdIAOgA7BY4Fj6QFjwEMAQ0AP18QEU5TVGFibGVIZWFkZXJWaWV31QDB +AA4AwgDEAMYFcQWSBZMAywVxgQFKgQFMgQFLgQFK3QDBBZYADgDCBZcFmADPBZkAxADGBZoFcAWbBMkF +nQWeBZ8FoAV+BaIFowWkBMkFpgVdBV1bTlNIU2Nyb2xsZXJYTlNzRmxhZ3NfEBBOU0hlYWRlckNsaXBW +aWV3XE5TU2Nyb2xsQW10c1tOU1ZTY3JvbGxlcl1OU0NvbnRlbnRWaWV3gQEbgQGxgQG2gQG1EDKBAUaB +AalPEBBBIAAAQSAAAEGYAABBmAAAEQEzgQEbgQGtgQFDgQFDXxAUe3szMzQsIDB9LCB7MTYsIDE3fX3S +ADoAOwWrBaykBawBDAENAD9dX05TQ29ybmVyVmlld9IADgBFAE0Fr4A+owWwBbEFsoEBToEBWIEBXNoF +tAAOBbUFtgW3BbgFuQW6BbsFfQDMBb0FvgW/BcABzwXBBcIAzAVOXk5TSXNSZXNpemVhYmxlXE5TSGVh +ZGVyQ2VsbFdOU1dpZHRoWk5TRGF0YUNlbGxeTlNSZXNpemluZ01hc2taTlNNaW5XaWR0aFpOU01heFdp +ZHRoXE5TSXNFZGl0YWJsZQmBAVeBAU8jQFPAAAAAAACBAVUjQEQAAAAAAAAjQI9AAAAAAAAJgQFC1wDW +AA4CwQDcAN0A4ALCBcYFxwXIBckCxgDtBcsSBIH+AIEBVIEBUYEBUICJgQFSVE5hbWXTAA4C0gLdAtUB +zwXPgI5LMC4zMzMzMzI5OQDVAA4C0QLSAtMC1ALVAuQC1wXTAtmAjoCRgQFTgItfEA9oZWFkZXJUZXh0 +Q29sb3LSADoAOwXXBdilBdgC7QEHAMMAP18QEU5TVGFibGVIZWFkZXJDZWxs1wDWAA4CwQDdAN4A4ALC +BdoCwwVhAOoFTgHTAskSFDH+QICSgQFWgB6BAUKAj9MADgLSAt0C1QHPBeKAjkIxANIAOgA7BeQF5aIF +5QA/XU5TVGFibGVDb2x1bW7aBbQADgW1BbYFtwW4BbkFugW7BX0AzAW9BekF6gXrAc8F7AXCAMwFTgmB +AVeBAVkjQGg3ZGAAAACBAVsjQE9dkWAAAAAJgQFC1wDWAA4CwQDcAN0A4ALCBcYFxwXIBfICxgDtBcuB +AVSBAVGBAVqAiYEBUldDb21tYW5k1wDWAA4CwQDdAN4A4ALCBdoCwwVhAOoFTgHTAsmAkoEBVoAegQFC +gI/aBbQADgW1BbYFtwW4BbkFugW7BX0AzAW9Bf8GAAYBAc8GAgXCAMwFTgmBAVeBAV0jQEmAAAAAAACB +AWEjQCQAAAAAAAAJgQFC1wDWAA4CwQDcAN0A4ALCAOIFxwYHBggCxgDtBcuBAVSBAV+BAV6AiYEBUlhT +aG9ydGN1dNUADgLRAtIC0wLUAtUFYQLXBg8C2YCOgQFWgQFggItbaGVhZGVyQ29sb3LYANYADgLBAN0A +3gDgAp0CwgXaAsMFeAYVBU4B0wDMAsmAkoEBY4EBYoEBQgmAj9QADgDxAPIA8wD0BhsA9gHZgCAjQCgA +AAAAAACAH9UADgLRAtIC0wLUAtUC1gLXBiAC2YCOgI2BAWSAi18QFmNvbnRyb2xCYWNrZ3JvdW5kQ29s +b3LVAA4C0QLSAtMC1ALVBiUC1wYmAtmAjoEBZ4EBZoCLWWdyaWRDb2xvctMADgLSAt0C1QHPBiuAjkQw +LjUA0gA6ADsGLQV9pQV9AQsBDAENAD9aYXBwc190YWJsZdQADgC7AIcAiACJAB8GMgYzgBeAAoEBa4EB +btkADgCNAI4AjwCQAJEAkgCTAeAAlAY2AJYGNwCYAJkAmgQlBjuAFYEBbIEBbYAPgBOA6BAqWEhpZGUg +WDExUWhVaGlkZTrUAA4AuwCHAIgAiQAfBkIGQ4AXgAKBAXCBAXLZAA4AjQCOAI8AkACRAJIAkwHgAJQG +RgCWAJcAmACZAJoEJQY7gBWBAXGADoAPgBOA6FhTaG93IEFsbF8QFnVuaGlkZUFsbEFwcGxpY2F0aW9u +czrTAA4AhwCIAIkGTwZQgBeBAXSBAXfYAA4AjQCOAI8AkACRAJIAkwCUBlMAlgZUAJgAmQCaAJuAFYEB +dYEBdoAPgBOADFVQYXN0ZVF2VnBhc3RlOtQADgC7AIcAiACJAL0GXgZfgBeAJoEBeYEBf9cAwQAOAMIA +wwDEAMUAxgTJAMgGYwZkBM0AzATJgQEbgCWBAXqBAXsJgQEbXxAXe3szNzIsIDE5OH0sIHsxMDAsIDMy +fX3dANYADgDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjBmoA5QHGBNkGbAZtAOoGXgDsBN4E34AkgQF9 +gQEfgQF+gQF8gB6BAXlWUmVtb3Zl0gAOADYANwCigATSAA4ANgA3AKKABF8QEmFwcHNfdGFibGVfZGVs +ZXRlOtQADgC7AIcAiAEiAL4AvQZ6gDCAGYAmgQGBW3N5bmNfa2V5bWFw1AAOALsAhwCIAIkAvQZ/BoCA +F4AmgQGDgQGG2AAOAI0AjgCPAJAAkQCSAJMAlAaDAJYGhACYAJkAmgQlgBWBAYSBAYWAD4ATgOheUHJl +ZmVyZW5jZXMuLi5RLFtwcmVmc19zaG93OtQADgC7AIcAiACJAL0ETAaPgBeAJoD1gQGIXxASdG9nZ2xl +X2Z1bGxzY3JlZW461AAOALsAhwCIAIkAvQK2BpWAF4AmgJyBAYpfEBplbmFibGVfZnVsbHNjcmVlbl9j +aGFuZ2VkOtQADgC7AIcAiAEiATgAvQabgDCANYAmgQGMXxAVZG9ja193aW5kb3dfc2VwYXJhdG9y1AAO +ALsAhwCIAIkAvQJMAL+AF4AmgHGAKNQADgC7AIcAiACJAL0GpQamgBeAJoEBj4EBktgADgCNAI4AjwCQ +AJEAkgCTAJQGqQCWBqoAmACZAJoCMIAVgQGQgQGRgA+AE4BqXxAPUHJldmlvdXMgV2luZG93YfcCXxAQ +cHJldmlvdXNfd2luZG93OtQADgC7AIcAiACJAL0GtAa1gBeAJoEBlIEBl9gADgCNAI4AjwCQAJEAkgCT +AJQGuACWBrkAmACZAJoCMIAVgQGVgQGWgA+AE4BqXxAPTWluaW1pemUgV2luZG93UW1fEBBtaW5pbWl6 +ZV93aW5kb3c61AAOALsAhwCIAIkAvQbDBsSAF4AmgQGZgQGf1wDBAA4AwgDDAMQAxQDGBMkAyAbIBskF +MADMBMmBARuAJYEBmoEBmwmBARtfEBV7ezMwNCwgMTJ9LCB7ODQsIDMyfX3dANYADgDXANgA2QDaANsA +3ADdAN4A3wDgAOEA4gDjBs8A5QHGBNkG0QbSAOoGwwDsBN4E34AkgQGdgQEfgQGegQGcgB6BAZlWQ2Fu +Y2Vs0gAOADYANwCigATSAA4ANgA3AKKABF8QEmFwcHNfdGFibGVfY2FuY2VsOtQADgC7AIcAiAEiAXYA +vQbfgDCAQoAmgQGhW3VzZV9zeXNiZWVw0wAOAIcAiACJBuMG5IAXgQGjgQGm2AAOAI0AjgCPAJAAkQCS +AJMAlAbnAJYG6ACYAJkAmgCbgBWBAaSBAaWAD4ATgAxUQ29weVFjVWNvcHk60gAOAEUG8AbxgQHsrxB9 +BsMEyQG6AZECRAH6BBwGtAMVAyYBeQC+Bv4EfgNNAZUFKQcDBZ0HBQcGBBABOQOuASwDZQK3Ac0BdgWy +BJsC9QZeAjACewQ+A04DdQF8A/wHGgHUBxwHHQYyA8MHIAJpBMYGyQNPBk8E8wK0BGIGfwcqAwUHLAIl +AUkGQgcwArwCTAC9AYAFcQRMBbEE+QQwA7MBOAVOBbADOQNVAIoCOQdCBaYBWgdFBKkEjAH4BuMHSgKy +BWADOwK1AlMD4wYBAqkFwAOGB1UBtAOsA60BFQK2A9MAxwZkBqUHXwSxA6oEJQdjBMwF6wFZBRoB+QGY +BS8AmwDKA0wEb4EBmYEBG4BTgEiAboBjgOeBAZSAnoCigEOAGYEBuYEBBICvgEmBATiBAb+BAbGBAcaB +AcqA5IA2gM+AMoCxgKCAV4BCgQFcgQEOgJaBAXmAaoCAgPCAs4C1gEWA3oEBuoBYgQHbgQHHgQFrgMmB +AdeAeYEBGoEBm4C3gQF0gQEngJSA+4EBg4EBzoCagQHggGmAOYEBcIEBvoCHgHGAJoCCgQFKgPWBAViB +ASmA7IDFgDWBAUKBAU6AqICtgAuAbYEB4oEBrYA8gQHYgQESgQEJgF2BAaOBAdOAhYEBRYDBgJiAc4DR +gQFhgL6BAVWAuYEBz4BRgMeAy4AqgJyAzYAagQF7gQGPgQHIgQETgMOA6IEBwoEBHYEBW4A7gQEzgGCA +S4EBOoAMgByAq4D/0gAOAEUATQdxgD6mBSkExgZeBXEGwwTzgQE4gQEagQF5gQFKgQGZgQEn0gAOAEUA +TQd6gD6lBV0FpgWdBX4FY4EBQ4EBrYEBsYEBRoEBSdIADgBFAE0HgoA+oQVOgQFCXxAVe3sxLCAxN30s +IHszMzMsIDE5N3190gA6ADsHhgeHpAeHAQwBDQA/Wk5TQ2xpcFZpZXfYAMEB3wAOAMIAxAFHAMYHiQVx +BXEHjAeNAMsHjgVxB5BZTlNQZXJjZW50gQFKgQFKgQGwgQGugQGvgQFKIz/v1mqAAAAAXxAWe3szMzQs +IDE3fSwgezE1LCAxOTd9fVxfZG9TY3JvbGxlcjrSADoAOweUB5WlB5UBCwEMAQ0AP1pOU1Njcm9sbGVy +2QDBAd8ADgDCBZcAxAFHAMYHiQVxBXEHjAeaAcYAyweOBXEHnYEBSoEBSoEBsIEBsoEBr4EBSiM/788X +wAAAAF8QFXt7MSwgMjE0fSwgezMzMywgMTV9fdIADgBFAE0HoYA+oQVggQFFXxATe3sxLCAwfSwgezMz +MywgMTd9fV8QFnt7MjAsIDYwfSwgezM1MCwgMjMwfX3SADoAOwemB6ekB6cBDAENAD9cTlNTY3JvbGxW +aWV3XxAUe3sxLCAxfSwgezQ4NiwgMzEwfX3SAA4ARQBNB6uAPqICOQQQgG2A5NoADgFGAI0AjgCPAJAA +kQCSAJMBRwCUBCUEKACWAJcAmACZAJoHGge2gBWA6IEBu4AOgA+AE4EBuoEBvNQADgCNAPIAnQCeB7kH +uge7gD+BAdGBAd+BAdJTWDEx0gAOAEUATQe/gD6sBBwGfwcwBwMHBQRMBx0GMgSbBkIHXwR+gOeBAYOB +Ab6BAb+BAcaA9YEBx4EBa4EBDoEBcIEByIEBBNoADgCNAI4BOwCPATwAkACRAJIAkwCUAJcAlgDMAJcA +zACYAJkAmgQlgBWADgmADgmAD4ATgOjaAA4BRgCNAI4AjwCQAJEAkgCTAUcAlAdjB9gAlgCXAJgAmQCa +BCUH3YAVgQHCgQHAgA6AD4ATgOiBAcFYU2VydmljZXPUAA4AjQDyAJ0AngfhB+IH44A/gQHDgQHFgQHE +0gAOADYANwfegATSAA4ARQBNB+iAPqBfEA9fTlNTZXJ2aWNlc01lbnXaAA4AjQCOATsAjwE8AJAAkQCS +AJMAlACXAJYAzACXAMwAmACZAJoEJYAVgA4JgA4JgA+AE4Do2gAOAI0AjgE7AI8BPACQAJEAkgCTAJQA +lwCWAMwAlwDMAJgAmQCaBCWAFYAOCYAOCYAPgBOA6NoADgCNAI4BOwCPATwAkACRAJIAkwCUAJcAlgDM +AJcAzACYAJkAmgQlgBWADgmADgmAD4ATgOhcX05TQXBwbGVNZW512gAOAUYAjQCOAI8AkACRAJIAkwFH +AJQCRAFKAJYAlwCYAJkAmgcaCA6AFYBugDeADoAPgBOBAbqBAcvSAA4ANgA3CBGABFZXaW5kb3fSAA4A +RQBNCBSAPqkGtAQ+BGIHKgUaBqUHVQQwAiWBAZSA8ID7gQHOgQEzgQGPgQHPgOyAadoADgCNAI4BOwCP +ATwAkACRAJIAkwCUAJcAlgDMAJcAzACYAJkAmgIwgBWADgmADgmAD4ATgGraAA4AjQCOATsAjwE8AJAA +kQCSAJMAlACXAJYAzACXAMwAmACZAJoCMIAVgA4JgA4JgA+AE4BqXl9OU1dpbmRvd3NNZW51WE1haW5N +ZW510gAOAEUATQg0gD6lBv4HBgdKB0UHHIEBuYEByoEB04EB2IEB29oADgFGAI0AjgCPAJAAkQCSAJMB +RwCUAJsAnwCWAJcAmACZAJoHGghCgBWADIEB1IAOgA+AE4EBuoEB1VRFZGl00gAOAEUATQhGgD6oBIwE +bwcgA/wG4wZPAIoBFYEBCYD/gQHXgN6BAaOBAXSAC4Aq2gAOAI0AjgE7AI8BPACQAJEAkgCTAJQAlwCW +AMwAlwDMAJgAmQCaAJuAFYAOCYAOCYAPgBOADNoADgFGAI0AjgCPAJAAkQCSAJMBRwCUAjAIWwCWAJcA +mACZAJoHGghggBWAaoEB2YAOgA+AE4EBuoEB2toADgFGAI0AjgCPAJAAkQCSAJMBRwCUBLEEtACWAJcA +mACZAJoHGghpgBWBAROBAdyADoAPgBOBAbqBAd1USGVscNIADgBFAE0IbYA+oQSpgQESW19OU01haW5N +ZW510gAOADIAMwhygAWBAeHfEA8CbQAOAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoEyQJ8CHYIdwh4 +CHkCgQKCCHsIfAh9AOYIfgh/CICBARuA24EB5oEB6IEB64EB5IB8gQHngQHjgQHqEAuBAemBAeVfEBh7 +ezI3OSwgMjcwfSwgezQ4NiwgMzEwfX1fEBRYMTEgQXBwbGljYXRpb24gTWVuddIADgA2ADcCjYAEWHgx +MV9hcHBz0gA6ADsIhwFvogFvAD/SAA4ARQbwCIqBAeyvEH0EyQdCAbQBlQcGAdQEJQIwArYCtwKpAMcH +GgQlAMcDOwTJBCUFcQQlBxoCRAEsAZUAHwNNAXkB1AF5BU4EJQK0BMkHRQJpAjAAxwNOAXYAmwAfAboH +GgQlBCUDrACbAB8EyQbDAMcAmwTJAXkCMAQlAjACtQAfAjABOQQlBCUCsgDHAB8CewTJBCUFTgTzAjAD +qgEsBXEFTgGAA0wAmwJEAB8FcQFJBxoEsQCbAdQAmwcaAXkFcQGAAXkCTAOuBbIBgAWwA08CMAF5AZUB +lQCbAXkDrQM5Bl4CMAQlBxwBlQb+BwMExgWxAUkCMAHUAZEFKQdKAL4AxwCbgQEbgQHigFGASYEByoBY +gOiAaoCcgKCAvoAagQG6gOiAGoDBgQEbgOiBAUqA6IEBuoBugDKASYACgK+AQ4BYgEOBAUKA6ICUgQEb +gQHYgHmAaoAagLOAQoAMgAKAU4EBuoDogOiAx4AMgAKBARuBAZmAGoAMgQEbgEOAaoDogGqAmIACgGqA +NoDogOiAhYAagAKAgIEBG4DogQFCgQEngGqAw4AygQFKgQFCgIKAq4AMgG6AAoEBSoA5gQG6gQETgAyA +WIAMgQG6gEOBAUqAgoBDgHGAz4EBXICCgQFOgLeAaoBDgEmASYAMgEOAy4CogQF5gGqA6IEB24BJgQG5 +gQG/gQEagQFYgDmAaoBYgEiBATiBAdOAGYAagAzSAA4ARQbwCQqBAeyvEH4GwwTJAboBkQJEAfoEHAa0 +AxUDJgAfAXkBlQb+BH4FKQWdAL4HAwNNBwYHBQQQATkDrgEsA2UCtwHNBbIBdgSbBl4C9QIwAnsEPgNO +A3UBfAP8BxoB1AccBMYHHQYyAmkHIAbJBPMDTwZPA8MCtARiBn8HKgMFAiUHLAFJBkIHMAK8AkwAvQGA +BXEETAT5BbEEMAE4A7MFTgWwB0IDOQCKAjkFpgNVAVoHRQSpBIwB+AbjB0oFYAKyAzsCtQYBAlMD4wKp +BcADhgdVA6wBtAOtARUCtgZkAMcD0wSxB18GpQOqBCUBWQTMB2MF6wUaAZgB+QUvAJsAygNMBG+BAZmB +ARuAU4BIgG6AY4DngQGUgJ6AooACgEOASYEBuYEBBIEBOIEBsYAZgQG/gK+BAcqBAcaA5IA2gM+AMoCx +gKCAV4EBXIBCgQEOgQF5gJaAaoCAgPCAs4C1gEWA3oEBuoBYgQHbgQEagQHHgQFrgHmBAdeBAZuBASeA +t4EBdIDJgJSA+4EBg4EBzoCagGmBAeCAOYEBcIEBvoCHgHGAJoCCgQFKgPWBASmBAViA7IA1gMWBAUKB +AU6BAeKAqIALgG2BAa2ArYA8gQHYgQESgQEJgF2BAaOBAdOBAUWAhYDBgJiBAWGAc4DRgL6BAVWAuYEB +z4DHgFGAy4AqgJyBAXuAGoDNgQETgQHIgQGPgMOA6IA7gQEdgQHCgQFbgQEzgEuAYIEBOoAMgByAq4D/ +0gAOAEUG8AmLgQHsrxB+CYwJjQmOCY8JkAmRCZIJkwmUCZUJlgmXCZgJmQmaCZsJnAmdCZ4JnwmgCaEJ +ogmjCaQJpQmmCacJqAmpCaoJqwmsCa0JrgmvCbAJsQmyCbMJtAe5CbYJtwm4CbkJugm7CbwJvQm+Cb8J +wAnBCcIJwwnECcUJxgnHCcgJyQnKCcsJzAnNARAJzwnQCdEJ0gnTCdQJ1QnWCdcJ2AnZCdoJ2wncCd0J +3gnfCeAJ4QniCeMJ5AnlCeYJ5wnoCekJ6gnrCewJ7QnuCe8J8AnxCfIJ8wn0CfUJ9gn3CfgJ+Qn6CfsJ +/An9Cf4J/woACgEKAgoDCgQKBQoGCgcKCAoJgQHwgQHxgQHygQHzgQH0gQH1gQH2gQH3gQH4gQH5gQH6 +gQH7gQH8gQH9gQH+gQH/gQIAgQIBgQICgQIDgQIEgQIFgQIGgQIHgQIIgQIJgQIKgQILgQIMgQINgQIO +gQIPgQIQgQIRgQISgQITgQIUgQIVgQIWgQIXgQIYgQHRgQIZgQIagQIbgQIcgQIdgQIegQIfgQIggQIh +gQIigQIjgQIkgQIlgQImgQIngQIogQIpgQIqgQIrgQIsgQItgQIugQIvgQIwgCeBAjGBAjKBAjOBAjSB +AjWBAjaBAjeBAjiBAjmBAjqBAjuBAjyBAj2BAj6BAj+BAkCBAkGBAkKBAkOBAkSBAkWBAkaBAkeBAkiB +AkmBAkqBAkuBAkyBAk2BAk6BAk+BAlCBAlGBAlKBAlOBAlSBAlWBAlaBAleBAliBAlmBAlqBAluBAlyB +Al2BAl6BAl+BAmCBAmGBAmKBAmOBAmSBAmWBAmaBAmeBAmiBAmmBAmqBAmtfEBRQdXNoIEJ1dHRvbiAo +Q2FuY2VsKV5Db250ZW50IFZpZXctMV8QIVBvcCBVcCBCdXR0b24gQ2VsbCAoRnJvbSBEaXNwbGF5KV8Q +MkNoZWNrIEJveCAoQWxsb3cgY29ubmVjdGlvbnMgZnJvbSBuZXR3b3JrIGNsaWVudHMpXxATTWVudSAo +QXBwbGljYXRpb25zKV8QFE1lbnUgSXRlbSAoTWlsbGlvbnMpXxAVTWVudSBJdGVtIChBYm91dCBYMTEp +XxAbTWVudSBJdGVtIChNaW5pbWl6ZSBXaW5kb3cpXxAeQnV0dG9uIENlbGwgKEZ1bGwgc2NyZWVuIG1v +ZGUpXxB2VGV4dCBGaWVsZCBDZWxsIChFbmFibGVzIHRoZSBYMTEgcm9vdCB3aW5kb3cuIFVzZSB0aGUg +Q29tbWFuZC1PcHRpb24tQSBrZXlzdHJva2UgdG8gZW50ZXIgYW5kIGxlYXZlIGZ1bGwgc2NyZWVuIG1v +ZGUuKVxGaWxlJ3MgT3duZXJWVmlldy0yVlZpZXctMV8QD01lbnUgSXRlbSAoWDExKV8QFE1lbnUgSXRl +bSAoUXVpdCBYMTEpXxASUHVzaCBCdXR0b24gKERvbmUpXxATSG9yaXpvbnRhbCBTY3JvbGxlcl8QKUNo +ZWNrIEJveCAoRm9sbG93IHN5c3RlbSBrZXlib2FyZCBsYXlvdXQpXxAUTWVudSBJdGVtIChTZXJ2aWNl +cylfEGVTdGF0aWMgVGV4dCAoSG9sZCBPcHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8g +YWN0aXZhdGUgdGhlIG1pZGRsZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KKV8QGE1lbnUgSXRlbSAo +QXBwbGljYXRpb25zKVtTZXBhcmF0b3ItMV8QGE1lbnUgSXRlbSAoQ3VzdG9taXplLi4uKV8QGk1lbnUg +SXRlbSAoQXBwbGljYXRpb25zKS0xXxBCU3RhdGljIFRleHQgKFRoZXNlIG9wdGlvbnMgdGFrZSBlZmZl +Y3Qgd2hlbiBYMTEgaXMgbmV4dCBsYXVuY2hlZC4pWERvY2tNZW51XxBpVGV4dCBGaWVsZCBDZWxsIChI +b2xkIE9wdGlvbiBhbmQgQ29tbWFuZCB3aGlsZSBjbGlja2luZyB0byBhY3RpdmF0ZSB0aGUgbWlkZGxl +IGFuZCByaWdodCBtb3VzZSBidXR0b25zLgopXxByU3RhdGljIFRleHQgKEVuYWJsZXMgdGhlIFgxMSBy +b290IHdpbmRvdy4gVXNlIHRoZSBDb21tYW5kLU9wdGlvbi1BIGtleXN0cm9rZSB0byBlbnRlciBhbmQg +bGVhdmUgZnVsbCBzY3JlZW4gbW9kZS4pXxAYTWVudSBJdGVtIChGcm9tIERpc3BsYXkpXxAXVGFibGUg +Q29sdW1uIChTaG9ydGN1dClfECNDaGVjayBCb3ggKFVzZSBzeXN0ZW0gYWxlcnQgZWZmZWN0KV8QF01l +bnUgSXRlbSAoSGlkZSBPdGhlcnMpXxAUUHVzaCBCdXR0b24gKFJlbW92ZSlfEBpUZXh0IEZpZWxkIENl +bGwgKENvbG9yczoKKV1NZW51IChXaW5kb3cpXENvbnRlbnQgVmlld18QGE1lbnUgSXRlbSAoQ2xvc2Ug +V2luZG93KV8QLENoZWNrIEJveCAoRW5hYmxlIGtleSBlcXVpdmFsZW50cyB1bmRlciBYMTEpXxAuQnV0 +dG9uIENlbGwgKEVuYWJsZSBrZXkgZXF1aXZhbGVudHMgdW5kZXIgWDExKV8QJUJ1dHRvbiBDZWxsIChV +c2Ugc3lzdGVtIGFsZXJ0IGVmZmVjdClfEA9NZW51IEl0ZW0gKEN1dClfEBFNZW51IChPdGhlclZpZXdz +KV8QEE1lbnUgSXRlbSAoSGVscClfEBdQdXNoIEJ1dHRvbiAoRHVwbGljYXRlKVtTZXBhcmF0b3ItMl8Q +FE1lbnUgSXRlbSAoSGlkZSBYMTEpWlByZWZzUGFuZWxbU2VwYXJhdG9yLTlfEBRCdXR0b24gQ2VsbCAo +Q2FuY2VsKV8QFlB1c2ggQnV0dG9uIChBZGQgSXRlbSlfEExTdGF0aWMgVGV4dCAoQWxsb3dzIGlucHV0 +IG1lbnUgY2hhbmdlcyB0byBvdmVyd3JpdGUgdGhlIGN1cnJlbnQgWDExIGtleW1hcC4pXxARTWVudSBJ +dGVtIChQYXN0ZSlfELxUZXh0IEZpZWxkIENlbGwgKExhdW5jaGluZyBYMTEgd2lsbCBjcmVhdGUgWGF1 +dGhvcml0eSBhY2Nlc3MtY29udHJvbCBrZXlzLiBJZiB0aGUgc3lzdGVtJ3MgSVAgYWRkcmVzcyBjaGFu +Z2VzLCB0aGVzZSBrZXlzIGJlY29tZSBpbnZhbGlkIHdoaWNoIG1heSBwcmV2ZW50IFgxMSBhcHBsaWNh +dGlvbnMgZnJvbSBsYXVuY2hpbmcuKV8QFlN0YXRpYyBUZXh0IChDb2xvcnM6CilfEBdNZW51IEl0ZW0g +KFpvb20gV2luZG93KV8QGk1lbnUgSXRlbSAoUHJlZmVyZW5jZXMuLi4pW1NlcGFyYXRvci02XxBGVGV4 +dCBGaWVsZCBDZWxsIChUaGlzIG9wdGlvbiB0YWtlcyBlZmZlY3Qgd2hlbiBYMTEgaXMgbGF1bmNoZWQg +YWdhaW4uKVtTZXBhcmF0b3ItN1tBcHBsaWNhdGlvbl8QFU1lbnUgKEFwcGxpY2F0aW9ucyktMV8QFE1l +bnUgSXRlbSAoU2hvdyBBbGwpW1NlcGFyYXRvci0zXxB5VGV4dCBGaWVsZCBDZWxsIChYMTEgYmVlcHMg +d2lsbCB1c2UgdGhlIHN0YW5kYXJkIHN5c3RlbSBhbGVydCwgYXMgZGVmaW5lZCBpbiB0aGUgU291bmQg +RWZmZWN0cyBzeXN0ZW0gcHJlZmVyZW5jZXMgcGFuZWwuKV8QJkNoZWNrIEJveCAoRW11bGF0ZSB0aHJl +ZSBidXR0b24gbW91c2UpXxAmVG9wIFRhYiBWaWV3IChJbnB1dCwgT3V0cHV0LCBTZWN1cml0eSlbU2Ny +b2xsIFZpZXdfEB5NZW51IEl0ZW0gKFRvZ2dsZSBGdWxsIFNjcmVlbilfEBZCdXR0b24gQ2VsbCAoQWRk +IEl0ZW0pXxAWVGFibGUgQ29sdW1uIChDb21tYW5kKV8QHk1lbnUgSXRlbSAoQnJpbmcgQWxsIHRvIEZy +b250KVlTZXBhcmF0b3JfECZCdXR0b24gQ2VsbCAoQXV0aGVudGljYXRlIGNvbm5lY3Rpb25zKV8QJFRh +YmxlIFZpZXcgKE5hbWUsIENvbW1hbmQsIFNob3J0Y3V0KV8QE1RhYmxlIENvbHVtbiAoTmFtZSlcRWRp +dFByb2dyYW1zXxAVVGFiIFZpZXcgSXRlbSAoSW5wdXQpXxASTWVudSBJdGVtIChEZWxldGUpW1NlcGFy +YXRvci01XxARVmVydGljYWwgU2Nyb2xsZXJfEHhUZXh0IEZpZWxkIENlbGwgKFdoZW4gZW5hYmxlZCwg +bWVudSBiYXIga2V5IGVxdWl2YWxlbnRzIG1heSBpbnRlcmZlcmUgd2l0aCBYMTEgYXBwbGljYXRpb25z +IHRoYXQgdXNlIHRoZSBNZXRhIG1vZGlmaWVyLilvEBYATQBlAG4AdQAgAEkAdABlAG0AIAAoAEMAdQBz +AHQAbwBtAGkAegBlICYAKV8QEk1lbnUgSXRlbSAoV2luZG93KV8QFE1lbnUgSXRlbSAoWDExIEhlbHAp +XxAQTWVudSBJdGVtIChVbmRvKV8QFk1lbnUgSXRlbSAoMjU2IENvbG9ycylfEBBNZW51IEl0ZW0gKENv +cHkpXxAQTWVudSBJdGVtIChFZGl0KV8QEVRhYmxlIEhlYWRlciBWaWV3XxB1U3RhdGljIFRleHQgKFgx +MSBiZWVwcyB3aWxsIHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIGFsZXJ0LCBhcyBkZWZpbmVkIGluIHRo +ZSBTb3VuZCBFZmZlY3RzIHN5c3RlbSBwcmVmZXJlbmNlcyBwYW5lbC4pXxAYVGFiIFZpZXcgSXRlbSAo +U2VjdXJpdHkpXxBCU3RhdGljIFRleHQgKFRoaXMgb3B0aW9uIHRha2VzIGVmZmVjdCB3aGVuIFgxMSBp +cyBsYXVuY2hlZCBhZ2Fpbi4pXxAPVGV4dCBGaWVsZCBDZWxsXxAoQnV0dG9uIENlbGwgKEVtdWxhdGUg +dGhyZWUgYnV0dG9uIG1vdXNlKV8QRlRleHQgRmllbGQgQ2VsbCAoVGhlc2Ugb3B0aW9ucyB0YWtlIGVm +ZmVjdCB3aGVuIFgxMSBpcyBuZXh0IGxhdW5jaGVkLilfEBZUYWIgVmlldyBJdGVtIChPdXRwdXQpXxAR +VGV4dCBGaWVsZCBDZWxsLTJfEFBUZXh0IEZpZWxkIENlbGwgKEFsbG93cyBpbnB1dCBtZW51IGNoYW5n +ZXMgdG8gb3ZlcndyaXRlIHRoZSBjdXJyZW50IFgxMSBrZXltYXAuKVtTZXBhcmF0b3ItOF8QuFN0YXRp +YyBUZXh0IChMYXVuY2hpbmcgWDExIHdpbGwgY3JlYXRlIFhhdXRob3JpdHkgYWNjZXNzLWNvbnRyb2wg +a2V5cy4gSWYgdGhlIHN5c3RlbSdzIElQIGFkZHJlc3MgY2hhbmdlcywgdGhlc2Uga2V5cyBiZWNvbWUg +aW52YWxpZCB3aGljaCBtYXkgcHJldmVudCBYMTEgYXBwbGljYXRpb25zIGZyb20gbGF1bmNoaW5nLilf +EBtQb3B1cCBCdXR0b24gKEZyb20gRGlzcGxheSlfEKdTdGF0aWMgVGV4dCAoSWYgZW5hYmxlZCwgQXV0 +aGVudGljYXRlIGNvbm5lY3Rpb25zIG11c3QgYWxzbyBiZSBlbmFibGVkIHRvIGVuc3VyZSBzeXN0ZW0g +c2VjdXJpdHkuIFdoZW4gZGlzYWJsZWQsIGNvbm5lY3Rpb25zIGZyb20gcmVtb3RlIGFwcGxpY2F0aW9u +cyBhcmUgbm90IGFsbG93ZWQuKV8QFk1lbnUgSXRlbSAoU2VsZWN0IEFsbClfEBxDaGVjayBCb3ggKEZ1 +bGwgc2NyZWVuIG1vZGUpXxAUQnV0dG9uIENlbGwgKFJlbW92ZSlfEKtUZXh0IEZpZWxkIENlbGwgKElm +IGVuYWJsZWQsIEF1dGhlbnRpY2F0ZSBjb25uZWN0aW9ucyBtdXN0IGFsc28gYmUgZW5hYmxlZCB0byBl +bnN1cmUgc3lzdGVtIHNlY3VyaXR5LiBXaGVuIGRpc2FibGVkLCBjb25uZWN0aW9ucyBmcm9tIHJlbW90 +ZSBhcHBsaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLilbTWVudSAoSGVscClbU2VwYXJhdG9yLTRfEBtN +ZW51IEl0ZW0gKFByZXZpb3VzIFdpbmRvdylfECRDaGVjayBCb3ggKEF1dGhlbnRpY2F0ZSBjb25uZWN0 +aW9ucylaTWVudSAoWDExKVxTZXBhcmF0b3ItMTBfEBdCdXR0b24gQ2VsbCAoRHVwbGljYXRlKV8QD01l +bnUgKFNlcnZpY2VzKV8QEVRleHQgRmllbGQgQ2VsbC0xXxAXTWVudSBJdGVtIChOZXh0IFdpbmRvdylf +EDRCdXR0b24gQ2VsbCAoQWxsb3cgY29ubmVjdGlvbnMgZnJvbSBuZXR3b3JrIGNsaWVudHMpXxAVTWVu +dSBJdGVtIChUaG91c2FuZHMpXxASQnV0dG9uIENlbGwgKERvbmUpW01lbnUgKEVkaXQpXxArQnV0dG9u +IENlbGwgKEZvbGxvdyBzeXN0ZW0ga2V5Ym9hcmQgbGF5b3V0KV8QdFN0YXRpYyBUZXh0IChXaGVuIGVu +YWJsZWQsIG1lbnUgYmFyIGtleSBlcXVpdmFsZW50cyBtYXkgaW50ZXJmZXJlIHdpdGggWDExIGFwcGxp +Y2F0aW9ucyB0aGF0IHVzZSB0aGUgTWV0YSBtb2RpZmllci4pXxAQTWVudSBJdGVtIChSZWRvKdIADgBF +BvAKh4EB7KDSAA4ARQbwCoqBAeyg0gAOAEUG8AqNgQHsrxC1BsMAbgTJAboBkQJEAfoAhAQcAFYGtAMV +AyYAHwBpAXkAvgb+BH4DTQGVBSkHAwWdBwUHBgQQAFIAVQB4AH4BOQCAA64BLANlArcBzQBTAXYFsgSb +AGsC9QZeAjAAegBQAnsEPgNOA3UBfABnAH0D/ACBAE8HGgHUBxwAYwB7AHEHHQYyA8MHIAJpBMYGyQNP +Bk8E8wBcAGwAUQBeArQEYgBZAGUGfwcqAwUHLAIlAIMBSQZCAG8HMAK8AkwAVABiAHcAvQGABXEETAWx +BPkEMAOzATgFTgWwAFgDOQNVAIoCOQdCBaYAZABbAVoAagBtB0UAcgCCBKkEjAB0AfgAdgB5BuMHSgKy +BWADOwK1AHACUwPjBgECqQXAA4YHVQCFAGYBtAOsA60BFQK2A9MAxwZkAGAAYQBzBqUHXwSxA6oAVwB/ +BCUHYwTMBesBWQBaBRoAXwBoAfkBmAB8BS8AdQCbAMoDTARvAF2BAZmBASSBARuAU4BIgG6AY4EBoIDn +gE6BAZSAnoCigAKBAQ2AQ4AZgQG5gQEEgK+ASYEBOIEBv4EBsYEBxoEByoDkgC6AR4EBb4EBiYA2gQGN +gM+AMoCxgKCAV4AxgEKBAVyBAQ6BARaAloEBeYBqgQF4gBiAgIDwgLOAtYBFgQEDgQGHgN6BAY6ACoEB +uoBYgQHbgPSBAYCBATCBAceBAWuAyYEB14B5gQEagQGbgLeBAXSBASeAeIEBF4ApgOKAlID7gGyA+oEB +g4EBzoCagQHggGmBAZiAOYEBcIEBJoEBvoCHgHGAQYDvgQFqgCaAgoEBSoD1gQFYgQEpgOyAxYA1gQFC +gQFOgGiAqICtgAuAbYEB4oEBrYD4gHaAPIEBEYEBGYEB2IEBMoEBk4EBEoEBCYEBPoBdgQFBgQFzgQGj +gQHTgIWBAUWAwYCYgQEugHOA0YEBYYC+gQFVgLmBAc+BAaKA/oBRgMeAy4AqgJyAzYAagQF7gOaA64EB +N4EBj4EByIEBE4DDgFCBAYuA6IEBwoEBHYEBW4A7gHCBATOA44EBCIBggEuBAYKBATqBAT+ADIAcgKuA +/4Dd0gAOAEUG8AtFgQHsrxC1C0YLRwtIC0kLSgtLC0wLTQtOC08LUAtRC1ILUwtUC1ULVgtXC1gLWQta +C1sLXAtdC14LXwtgC2ELYgtjC2QLZQtmC2cLaAtpC2oLawtsC20LbgtvC3ALcQtyC3MLdAt1C3YLdwt4 +C3kLegt7C3wLfQt+C38LgAuBC4ILgwuEC4ULhguHC4gLiQuKC4sLjAuNC44LjwuQC5ELkguTC5QLlQuW +C5cLmAuZC5oLmwucC50LngufC6ALoQuiC6MLpAulC6YLpwuoC6kLqgurC6wLrQuuC68LsAuxC7ILswu0 +C7ULtgu3C7gLuQu6C7sLvAu9C74LvwvAC8ELwgvDC8QLxQvGC8cLyAvJC8oLywvMC80LzgvPC9AL0QvS +C9ML1AvVC9YL1wvYC9kL2gvbC9wL3QveC98L4AvhC+IL4wvkC+UL5gvnC+gL6QvqC+sL7AvtC+4L7wvw +C/EL8gvzC/QL9Qv2C/cL+Av5C/qBAnCBAnGBAnKBAnOBAnSBAnWBAnaBAneBAniBAnmBAnqBAnuBAnyB +An2BAn6BAn+BAoCBAoGBAoKBAoOBAoSBAoWBAoaBAoeBAoiBAomBAoqBAouBAoyBAo2BAo6BAo+BApCB +ApGBApKBApOBApSBApWBApaBApeBApiBApmBApqBApuBApyBAp2BAp6BAp+BAqCBAqGBAqKBAqOBAqSB +AqWBAqaBAqeBAqiBAqmBAqqBAquBAqyBAq2BAq6BAq+BArCBArGBArKBArOBArSBArWBAraBAreBAriB +ArmBArqBAruBAryBAr2BAr6BAr+BAsCBAsGBAsKBAsOBAsSBAsWBAsaBAseBAsiBAsmBAsqBAsuBAsyB +As2BAs6BAs+BAtCBAtGBAtKBAtOBAtSBAtWBAtaBAteBAtiBAtmBAtqBAtuBAtyBAt2BAt6BAt+BAuCB +AuGBAuKBAuOBAuSBAuWBAuaBAueBAuiBAumBAuqBAuuBAuyBAu2BAu6BAu+BAvCBAvGBAvKBAvOBAvSB +AvWBAvaBAveBAviBAvmBAvqBAvuBAvyBAv2BAv6BAv+BAwCBAwGBAwKBAwOBAwSBAwWBAwaBAweBAwiB +AwmBAwqBAwuBAwyBAw2BAw6BAw+BAxCBAxGBAxKBAxOBAxSBAxWBAxaBAxeBAxiBAxmBAxqBAxuBAxyB +Ax2BAx6BAx+BAyCBAyGBAyKBAyOBAyQRASsRAhIRAR4SAAGIHhEBdxEBDhEBfREBhhA6EQIWEBcSAAGI +vRIAAYi/EQJDEQEHEQFeEQFyEDgQiBEBbREBYhEBIxCDEgADDmcQkBEBDREBMREBrREBhBEBrxECIxEC +DhEBihEBexEBpxIAAYgNEQIfEQGAEQGqEQFzEQIXEJERAYwSAAGIIREBJREBixD1EMsRAXASAAGIEBIA +AYgTEQGwEQIkEKARAhwQwxAdEQF8EQGjEQIlEQGIEQGsEQIhEIYSAAGIGBCcEPQRASQSAAGHyxEBcRCr +EQE2EQGSEQGJELMRAZERAYEQzBEBERDOEIEQXBIAAYgiE//////////9ENARATURAg8QlhEBNxCPEgAB +iBQRAWsRAY0QzREBrhDEEQFcEQEnEQIgEQEqEgABh9YQBRIAAYgWEQIMEQEoEQEpEQEEEQFdEgABiAwQ +pBEBEBEBHRIAAYfHEQIiEQGFEQIUEQGmEQEwEBMRAhsQyhEBpRCeEQGPEQGzELAQnRCjEQF0EgAElQcR +AWERAYIRAbESAAGICxIAAYgbEQI/EQFgEQI+EgABiBERAhgQtRCyEQF+EQF4EQF5EKwRAh0SAAGIGREB +XxIAAYfFEQFBEM8RAS4RAhoQlREBpBEBdhEBjhECExA5EIISAAGHxBECPRECFREBhxECGREBNBC0EQF/ +EgABiBcRAT4SAAGHwxEBgxCpEgABiBIRAWwQrRCv0gAOAEUATQyvgD6g0gAOAEUG8AyygQHsoNIADgBF +BvAMtYEB7KDSADoAOwy3DLiiDLgAP15OU0lCT2JqZWN0RGF0YQAIABkAIgAnADEAOgA/AEQAUgBUAGYG +vAbCBw0HFAcbBykHOwdXB2UHcQd9B4sHlgekB8AHzgfhB/MIDQgXCCQIJggpCCwILwgyCDQINwg5CDwI +PwhCCEUIRwhJCEwITwhUCFcIYAhsCG4IcAh5CIMIhQiTCJwIpQiwCLcIyQjSCNsI5AjpCPgJCwkUCR8J +IQkiCSsJMgk/CUUJTglQCcEJwwnFCccJyQnLCc0JzwnRCdMJ1QnXCdkJ2wndCd8J4QnjCeUJ5wnpCesJ +7QnvCfEJ9An3CfoJ/QoACgMKBgoJCgwKDwoSChUKGAobCh4KIQokCicKKgotCjAKMwo2CjkKPAo/CkIK +RQpICksKTgpbCmQKbApuCnAKcgqTCpsKrwq6CsgK0grfCuYK6ArqCu8K8Qr2CvgK+gr8CwkLFQsXCxoL +HQskCyULMgtBC0MLRQtHC08LYQtqC28LgguPC5ELkwuVC6gLsQu2C8ELyQvSC9kL8QwADBEMHwwhDCMM +JQwnDEQMVgxeDGUMbgx4DIQMhgyIDIoMjAyPDJAMkgynDLIMtAy2DLgMugzTDQgNFA0qDT8NTg1hDXMN +fg2IDZYNqA21DcMNyA3KDcwNzg3QDdIN1A3WDdgN2g3cDd4N4w4DDhQOGw4iDisOLQ42DjgOOw5IDlEO +Vg5dDmYOcg50DnYOfw6IDo0Oow6sDrUOwg7PDtgO4w7sDvYO/Q8JDxIPFA8WDyQPMw9AD0IPRA9GD2cP +aQ9rD20Pbw9xD3MPfg+AD4sPnA+eD6APog+kD60Ptg+9D9QP5Q/nD+kP6w/tD/4QABACEAQQBhALEBQQ +FhAbEB0QHxBIEFYQYxBlEGcQaBBqEGsQbRBvEHEQmhCkEK0QrxCxELMQtRC3ELkQuxC9EMoQ2RDmEOgQ +6hDsEPUQ9xD8EP4RABEpESsRLREuETARMREzETURNxFYEVoRXBFeEWARYhFkEXkRghGJEZgRoBGpEa4R +txHIEcoRzBHOEdAR7RHvEfER8xH1EfYR+BIREhMSFRIXEhkSGxIzEmgSahJsEm4ScBJyEnQSdhKQEqES +oxKlEqcSqRLGEsgSyhLMEs4SzxLREuYS6BLqEuwS7hMHEzwTPhNAE0ITRBNGE0gTShNzE34TjxORE5MT +lROXE6oTuxO9E78TwRPDE+AT4hPkE+YT6BPpE+sUBBRTFHAUghSUFKkUtxTAFMEUwxTFFMcUyRTLFM0U +zxTRFNMU1RTWFNcU2hTdFN8U5BT1FPcU+RT7FQQVBhUPFREVQhVLFVEVWRVbFV0VXxVhFWMVZRVnFWkV +chV/FYEVgxWFFZIVphWvFbEVvBXFFccV0BXSFdQV1hXYFgUWBxYJFgsWDRYPFhEWExYVFhcWIhZPFlEW +UxZVFlcWWRZbFl0WXxZhFmsWmBaaFpwWnhagFqIWpBamFqgWqhazFrwWyRbdFuwW9RcCFxAXIRcjFyUX +JxcpF1IXVBdWF1cXWRdaF1wXXhdgF3EXcxd2F3kXfBePF6AXohekF6YXqBfRF9MX1RfWF9gX2RfbF90X +3xfsF+4X8BfzGAIYExgVGBcYGRgbGDgYOhg8GD4YQBhBGEMYXBiRGJMYlRiXGJkYmxidGJ8YvBjJGNoY +3BjeGOAY4hjoGPkY+xj9GP8ZARlAGU0ZZhlzGYkZlxmhGa8ZyBnVGd8Z8RoFGg8aGxodGh8aIRojGiUa +JxosGi4aMBoyGjQaNho4GlMaZRptGnYaeBp9GpoapRq6GsYayBrKGswazhrXGtka3BreGw8bHhsoGzwb +VRttG28bcRtzG3Ubdxt5G3obfBt9G38biBuKG40bjxuYG5obqRurG60brxuxG7MbtRu3G9Qb1hvYG9ob +3BvdG98b9xwYHCwcOBw6HDwcPhxAHEIcRxxJHLMcxBzGHM8c0RzUHOkc8Rz+HQodGB0aHRwdHh0gHSId +KR02HUMdSx1NHVkdYh1nHXwdfh2AHYIdhB2XHaQdph2pHbIdux3NHdYd4R3tHgoeDB4OHhAeEh4THhUe +LR5OHlAeUh5UHlYeWB5aHmMegB6CHoQehh6IHokeix6kHsUexx7JHssezR7PHtEfCB8lHycfKR8rHy0f +Lh8wH0kffh+AH4IfhB+GH4gfih+MH58fvB++H8Afwh/EH8Ufxx/gIAEgAyAFIAcgCSALIA0gdCCNIJYg +nSC1IL4gwCDHIMkgyyDNIOYg8yD9IP8hASEDIQUhByEJIRIhFCEWIR8hISEuITAhMiE0ITYhOCE6IVch +WSFbIV0hXyFgIWIheiGbIZ0hnyGhIaMhpSGnIhAiLSIvIjEiMyI1IjYiOCJRInIidCJ2IngieiJ8In4i +2CL1Ivci+SL7Iv0i/iMAIxkjTiNQI1IjVCNWI1gjWiNcI38jnCOeI6AjoiOkI6UjpyPAI+Ej4yPlI+cj +6SPrI+0kLiQ0JD0kQiRQJGkkayRtJG8kcSRzJHUkfiSAJIIkiSSeJKAkoiSkJKYkqCSxJLMkviTAJMIk +xCTGJMgk5STnJOkk6yTtJO4k8CUlJSclKSUrJS0lLyUxJTMlTiVrJW0lbyVxJXMldCV2JY8lsCWyJbQl +tiW4JbolvCZpJoYmiCaKJowmjiaPJpEmqSbKJswmzibQJtIm1CbWJ3InjyeRJ5MnlSeXJ5gnmieyJ9Mn +1SfXJ9kn2yfdJ98oFigfKCgoMSg8KFQoXyhpKHIodyiKKJYooyilKKcoqSjKKMwozijQKNIo1CjWKNoo +3CjhKPIo9Cj2KPgo+ikLKQ0pDykRKRMpNCk2KTgpOik8KT4pQClNKV4pYCliKWQpZimDKYUphymJKYsp +jSmPKaApoimlKagpqym1KcQp1SnXKdkp2yndKf4qACoCKgQqBioIKgoqHyoxKkIqRCpGKkgqSiprKm0q +bypxKnMqdSp3KoQqhiqUKqUqpyqpKqsqrSrOKtAq0irXKtkq2yrdKt8q9CsNKx4rICsiKyQrJis6K0sr +TStPK1ErUyt0K3YreCt6K3wrfiuAK4wrmSumK6grqiutK84r0CvTK9Yr2CvaK9wr4SvjK+kr+iv8K/4s +ASwELCUsJywqLC0sLywxLDMsPCw+LEksVixYLFssXix/LIEshCyHLIksiyyNLJIslCyaLKssrSyvLLIs +tSzWLNgs2yzdLN8s4SzjLO8tCC0ZLRstHS0gLSMtRC1GLUktSy1NLU8tUi1fLWEtZC1nLXAtei2LLY0t +jy2RLZMtpC2mLagtqi2tLcAt0S3TLdUt2C3bLfgt+y39LgAuAy4GLgcuCi4fLiEuIy4mLikuQy54Lnou +fS6ALoMuhi6ILosukC6ZLqMutC62Lrkuwy7MLs4u1y7ZLvEvAi8ELwYvCC8LLxovKy8tLy8vMi81L1Iv +VS9XL1ovXS9eL2Evey+wL7IvtS+4L7svvi/AL8MvzC/VL9cv4C/iL/QwBTAHMAkwCzAOMC4wPzBBMEMw +RTBIMFIwYzBlMGcwajBtMI4wkDCTMJYwmDCaMJwwqDCrMLgwyTDLMM0w0DDTMPAw8zD1MPgw+zD+MP8x +AjEaMU8xWDFaMVwxXzFiMWUxZzFqMW8xeDF6MY0xnjGgMaIxpDGmMbcxuTG7Mb0xwDHMMd0x3zHiMeQx +5zI2MlgyZTJ6MocyoTK9Mtgy5DMDMxIzHjMhMyQzKTMsMy8zMDMzMzwzRTNIM0kzTDNPM1IzWzOEM44z +mDOiM7AzszO2M7kzuzO+M8EzxDPHM8ozzTPYM/Ez/TQANAM0BjQJNAw0NTQ4NDs0PjRBNEQ0RzRKNE00 +VzRgNGk0fTSSNJU0mDSbNJ400zTfNOg0+zUINRQ1IjUlNSg1KzUuNTA1MzU2NUk1TDVPNVI1VTVYNW81 +eDWBNY81mDWaNaE1pDWnNao10zXiNe819zYCNhE2HDYnNjQ2NTY4Njs2RDZHNlA2WTZaNl02ejZ/NoI2 +hTaINoo2jTaSNp82oTatNsI2xDbGNsk2yzbdNuY28TcFNyI3JzcpNyw3LjcxNzM3QDdCN0U3TjdTN2E3 +ijeLN443kTeaN503pjenN6o3xzfKN8030DfSN9U33Tf6N/w3/zgBOAQ4BjgvODA4Mzg2OD84QjhLOEw4 +TzhsOG84cjh1OHc4ejiDOJg4mjidOKA4ojiuOM840TjUONc42jjbON047jjwOPk4+zkQORI5FDkXORk5 +MjlHOUk5TDlPOVE5WzloOWo5bzl4OYM5jjmfOaE5ozmmOak5zjnQOdM51jnYOdo53DneOec56TnvOgA6 +AjoEOgc6CjovOjE6NDo2Ojg6Ojo8OkU6XjprOm06cDpzOpQ6ljqZOpw6njqgOqI6qDqqOrE6wjrEOsY6 +yTrMOuk67DruOvE69Dr1Ovg7EjtHO0k7TDtPO1I7VTtXO1o7YTtqO2w7dTt3O4w7nTufO6E7ozumO7I7 +wzvFO8c7yjvNO+478DvzO/Y7+Dv6O/w8CzwNPBk8KjwsPC48MDwzPEg8WTxbPF08XzxiPH88kDySPJQ8 +ljyZPLE8wjzEPMY8yDzKPNs83TzfPOI85T0GPQg9Cz0OPRA9Ej0UPSY9KT08PU09Tz1RPVQ9Vz14PXo9 +fT2APYI9hD2GPZg9mj2tPb49wD3CPcU9yD3lPeg96j3tPfA98T30Pgw+QT5DPkY+ST5MPk8+UT5UPls+ +ZD5mPm8+cT6GPpc+mT6bPp0+oD6sPrk+uz6+PsE+4j7kPuc+6j7sPu4+8D71Pvc+/T8GPwlABkAJQAxA +DkAQQBJAFEAWQBlAG0AdQB9AIUAkQCdAKUArQC5AMUA0QDdAOkA8QD5AQEBCQERARkBIQEpATUBQQFJA +VUBXQFlAW0BdQF9AYUBjQGZAaEBrQG5AcUBzQHZAeEB7QH5AgECDQIZAiECKQI1AkECSQJVAl0CZQJxA +n0ChQKNApUCnQKpArECvQLJAtEC2QLhAu0C+QMBAwkDEQMZAyUDMQM5A0UDUQNdA2UDcQN9A4UDkQOZA +6EDqQOxA70DxQPRA9kD5QPtA/UD/QQFBA0EFQQdBCkENQRBBE0EVQRdBGkEdQSBBIkElQSdBKUEsQS5B +MEEyQTRBPUE/QUxBT0FSQVVBWEFbQV5BZ0FpQXRBd0F6QX1BgEGDQYxBjkGRQZRBrEG1Qb5ByUHqQfRB +90H6Qf1CAEIDQgZCD0IoQjVCPkJJQlRCeUJ8Qn9CgkKFQohCi0KUQqxCtUK3QrpCvULTQuxC9UL+QwtD +IkMrQy1DMkM0QzZDX0NhQ2NDZkNoQ2pDbENvQ3JDg0OFQ4hDi0OOQ5JDm0OdQ7ZDuEO7Q75DwUPEQ8ZD +yUPMQ89D0kPVQ9hEAUQDRAVEBkQIRAlEC0QNRA9EOEQ6RD1EQERCRERERkRIREtEVERlRGdEakRtRHBE +eUR7RIREhkSHRJlEwkTERMZEx0TJRMpEzETORNBE+UT7RP1E/kUARQFFA0UFRQdFMEUyRTRFNUU3RThF +OkU8RT5FS0V0RXZFeEV6RXxFfkWARYNFhkWPRZFFmEWhRaNFtkW5RbtFvUXARcNFxkXJRctFzUX2RfhF ++kX7Rf1F/kYARgJGBEYtRi9GMUYyRjRGNUY3RjlGO0ZKRlNGXEZeRmlGbEZvRnJGdUZ4RqFGo0alRqhG +qkasRq5GsUa0RrlGwkbERtVG2EbaRt1G30biRuVG50bpRxJHFEcWRxdHGUcaRxxHHkcgR0lHS0dNR1BH +UkdUR1ZHWUdcR4VHh0eKR41Hj0eRR5NHlkeZR55Hp0epR6xHr0e7R8RHxkfJSAhIC0gNSBBIE0gWSBlI +G0geSCFIJEgmSClILEhHSF5IZ0hpSHJIe0iASIlIjEmJSYxJj0mRSZNJlkmYSZpJnEmeSaBJokmkSadJ +qUmrSa1JsEmySbVJt0m6SbxJvknAScJJxEnGSchJyknNSc9J0UnUSddJ2UnbSd1J30nhSeNJ5UnnSepJ +7EnuSfBJ8kn0SfdJ+kn8Sf5KAUoDSgVKB0oJSgtKDUoPShFKE0oVShdKGUobSh1KIEoiSiVKKEoqSixK +LkoxSjRKNko4SjpKPEo+SkFKQ0pGSklKS0pNSk9KUkpUSldKWUpbSl1KX0piSmRKZ0ppSmtKbUpvSnFK +c0p1SndKeUp8Sn5KgEqDSoVKiEqLSo5KkUqTSpVKl0qZSpxKn0qhSqNKpUquSrFLsEuzS7ZLuEu6S7xL +vkvAS8NLxUvHS8lLy0vNS9BL00vWS9lL20veS+BL40vmS+hL6kvsS+5L8EvyS/RL90v5S/xL/0wBTANM +BUwHTAlMC0wNTA9MEkwUTBdMGkwdTCBMIkwlTChMK0wtTDBMMkw0TDZMOUw8TD5MQExDTEVMSExLTE1M +T0xRTFNMVkxYTFtMXkxgTGJMZExnTGpMbUxvTHFMc0x2THhMekx9TIBMg0yFTIhMi0yOTJBMkkyUTJdM +mUybTJ1MoEyiTKVMp0ypTKtMrUyvTLJMtEy2TLlMvEy/TMFMw0zFTMhMy0zOTNFM00zVTNhM2kzcTN5M +4EzpTOxN603uTfFN9E33TfpN/U4ATgNOBk4JTgxOD04SThVOGE4bTh5OIU4kTidOKk4tTjBOM042TjlO +PE4/TkJORU5ITktOTk5RTlROV05aTl1OYE5jTmZOaU5sTm9Ock51TnhOe05+ToFOhE6HTopOjU6QTpNO +lk6ZTpxOn06iTqVOqE6rTq5OsU6zTrZOuU68Tr9Owk7FTshOy07OTtFO1E7XTtpO3U7gTuNO5k7pTuxO +707yTvVO+E77Tv5PAU8ETwdPCk8NTxBPE08WTxlPHE8fTyJPJU8oTytPLk8xTzRPN086Tz1PQE9DT0ZP +SU9MT09PUk9VT1hPW09eT2FPZE97T4pPrk/jT/lQEFAoUEZQZ1DgUO1Q9FD7UQ1RJFE5UU9Re1GSUfpS +FVIhUjxSWVKeUqdTE1OIU6NTvVPjU/1UFFQxVD9UTFRnVJZUx1TvVQFVFVUoVUJVTlVlVXBVfFWTVaxV ++1YPVs5W51cBVx5XKldzV39Xi1ejV7pXxlhCWGtYlFigWMFY2ljzWRRZHllHWW5ZhFmRWalZvlnKWd5a +WVqIWp1atFrHWuBa81sGWxpbklutW/JcBFwvXHhckVylXPhdBF2/Xd1eh16gXr9e1l+EX5BfnF+6X+Ff +7F/5YBNgJWA5YFNgimCiYLdgw2DxYWhhe2GEYYdhiGGRYZRhlWGeYaFjDmMRYxRjF2MZYxtjHWMfYyJj +JGMmYyljK2MtYy9jMmM0YzZjOWM8Yz5jQGNDY0ZjSWNMY09jUWNTY1VjWGNbY11jYGNiY2RjZmNoY2pj +bGNuY3FjdGN3Y3ljfGN+Y4Fjg2OFY4djiWOLY41jkGOTY5VjmGOaY51jn2OiY6Rjp2OqY61jsGOyY7Vj +t2O6Y71jv2PCY8Vjx2PKY8xjzmPQY9Jj1GPWY9lj3GPeY+Fj42PmY+hj62PuY/Fj82P1Y/dj+WP8Y/5k +AGQDZAVkCGQLZA1kD2QRZBRkF2QZZBtkHWQfZCFkJGQnZClkK2QtZDBkM2Q2ZDlkPGQ/ZEJkRWRHZEpk +TWRQZFNkVWRYZFpkXGRfZGFkY2RmZGhka2RtZHBkc2R1ZHdkeWR7ZH1kf2SBZINkhmSIZIpkjWSQZJNk +lmSYZJpknWSfZKJkpWSoZKpkrGSvZLFktGS2ZLhku2S+ZMFkw2TFZMdkyWTLZNRk12ZEZkdmSmZNZlBm +U2ZWZllmXGZfZmJmZWZoZmtmbmZxZnRmd2Z6Zn1mgGaDZoZmiWaMZo9mkmaVZphmm2aeZqFmpGanZqpm +rWawZrNmtma5Zrxmv2bCZsVmyGbLZs5m0WbUZtdm2mbdZuBm42bmZulm7GbvZvJm9Wb4Zvtm/mcBZwRn +B2cKZw1nEGcTZxZnGWccZx9nImclZyhnK2cuZzFnNGc3ZzpnPWdAZ0NnRmdJZ0xnT2dSZ1VnWGdbZ15n +YWdkZ2dnamdtZ3Bnc2d2Z3lnfGd/Z4JnhWeIZ4tnjmeRZ5Rnl2eaZ51noGejZ6ZnqWesZ69nsme1Z7hn +u2e+Z8FnxGfHZ8pnzWfQZ9Nn1mfZZ9xn32fiZ+Vn6GfrZ+5n8Wf0Z/dn+mf9aABoA2gGaAloDGgPaBJo +FWgYaBtoHmghaCRoJ2gqaC1oMGgzaDZoOWg8aD9oQmhFaEhoS2hOaFFoVGhXaFpoXWhgaGNoZmhpaGxo +cWh0aHdoemh9aH9ogmiEaIlojmiRaJRol2iaaJxonmihaKRop2ipaK5osGizaLZouWi8aL9owmjFaMho +y2jOaNNo1mjZaNxo32jiaORo52jsaO9o8mj0aPZo+Wj+aQNpBmkJaQtpDmkQaRJpFWkYaRtpHmkhaSRp +JmkraS1pL2kyaTdpOmk8aT9pQmlFaUdpSmlNaU9pUmlUaVZpWGldaWZpaGlraW5pcGlzaXVpeml9aYBp +gmmFaYdpimmNaZBpk2mYaZppn2miaaVpqGmraa5ps2m1abhpu2nAacNpxmnJacxpz2nRadRp1mnZadtp +3mnhaeNp5Wnnaepp72nyafVp+Gn9agJqBWoIagtqEGoTahVqF2oaah1qIGoiaiVqKmotajJqNWo3ajpq +PWo/akJqRWpIaktqTWpPalRqV2paal1qYGpjamVqaGptanBqdWp4anpqf2qCaoRqhmqPapFqkmqbap5q +n2qoaqtqrGq1aroAAAAAAAACAgAAAAAAAAy5AAAAAAAAAAAAAAAAAABqyQ + + + diff --git a/hw/xquartz/bundle/English.lproj/main.nib/info.nib b/hw/xquartz/bundle/English.lproj/main.nib/info.nib deleted file mode 100644 index 88bc6260d..000000000 --- a/hw/xquartz/bundle/English.lproj/main.nib/info.nib +++ /dev/null @@ -1,18 +0,0 @@ - - - - - IBFramework Version - 588 - IBOpenObjects - - 244 - 29 - 423 - - IBSystem Version - 9A356 - targetFramework - IBCocoaFramework - - diff --git a/hw/xquartz/bundle/English.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/English.lproj/main.nib/keyedobjects.nib index 8b31450ff5c9a6357f70baf56268899dee194109..194f4df7fdb98fef6f7ddc27edea49aab5e51e80 100644 GIT binary patch literal 33883 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 Lo`3xR{IdT8eg3A2 literal 30865 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 From 3570ca1cb76f084272f7d8bd22c4cfdf03201a77 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Sun, 10 Feb 2008 18:27:52 -0800 Subject: [PATCH 022/112] XQuartz: Added option for setting quartz-wm click-through preference (cherry picked from commit bf54c267cba97b2b3b9a621da0575776a388b2cb) --- hw/xquartz/X11Application.h | 1 + hw/xquartz/X11Controller.h | 54 +- hw/xquartz/X11Controller.m | 4 +- .../English.lproj/main.nib/designable.nib | 4673 ++++++++--------- .../English.lproj/main.nib/keyedobjects.nib | Bin 33883 -> 35390 bytes 5 files changed, 2374 insertions(+), 2358 deletions(-) diff --git a/hw/xquartz/X11Application.h b/hw/xquartz/X11Application.h index af5aea2ce..86da67f2e 100644 --- a/hw/xquartz/X11Application.h +++ b/hw/xquartz/X11Application.h @@ -98,5 +98,6 @@ extern int quartzHasRoot, quartzEnableRootless; #define PREFS_XP_OPTIONS "xp_options" #define PREFS_ENABLE_STEREO "enable_stereo" #define PREFS_LOGIN_SHELL "login_shell" +#define PREFS_QUARTZ_WM_CLICK_THROUGH "wm_click_through" #endif /* X11APPLICATION_H */ diff --git a/hw/xquartz/X11Controller.h b/hw/xquartz/X11Controller.h index 47f5220e4..64d5cd1ce 100644 --- a/hw/xquartz/X11Controller.h +++ b/hw/xquartz/X11Controller.h @@ -37,29 +37,30 @@ @interface X11Controller : NSObject { - NSPanel *prefs_panel; + IBOutlet NSPanel *prefs_panel; - NSButton *fake_buttons; - NSButton *enable_fullscreen; - NSButton *use_sysbeep; - NSButton *enable_keyequivs; - NSButton *sync_keymap; - NSButton *enable_auth; - NSButton *enable_tcp; - NSPopUpButton *depth; + IBOutlet NSButton *fake_buttons; + IBOutlet NSButton *enable_fullscreen; + IBOutlet NSButton *use_sysbeep; + IBOutlet NSButton *enable_keyequivs; + IBOutlet NSButton *sync_keymap; + IBOutlet NSButton *click_through; + IBOutlet NSButton *enable_auth; + IBOutlet NSButton *enable_tcp; + IBOutlet NSPopUpButton *depth; - NSMenuItem *x11_about_item; - NSMenuItem *window_separator; - NSMenuItem *dock_window_separator; - NSMenuItem *apps_separator; - NSMenuItem *toggle_fullscreen_item; - NSMenu *dock_apps_menu; - NSTableView *apps_table; + IBOutlet NSMenuItem *x11_about_item; + IBOutlet NSMenuItem *window_separator; + IBOutlet NSMenuItem *dock_window_separator; + IBOutlet NSMenuItem *apps_separator; + IBOutlet NSMenuItem *toggle_fullscreen_item; + IBOutlet NSMenu *dock_apps_menu; + IBOutlet NSTableView *apps_table; NSArray *apps; NSMutableArray *table_apps; - NSMenu *dock_menu; + IBOutlet NSMenu *dock_menu; int checked_window_item; x_list *pending_apps; @@ -74,6 +75,25 @@ - (void) set_can_quit:(BOOL)state; - (void) server_ready; +- (IBAction) apps_table_show:(id)sender; +- (IBAction) apps_table_cancel:(id)sender; +- (IBAction) apps_table_done:(id)sender; +- (IBAction) apps_table_new:(id)sender; +- (IBAction) apps_table_duplicate:(id)sender; +- (IBAction) apps_table_delete:(id)sender; +- (IBAction) bring_to_front:(id)sender; +- (IBAction) close_window:(id)sender; +- (IBAction) minimize_window:(id)sender; +- (IBAction) zoom_window:(id)sender; +- (IBAction) next_window:(id)sender; +- (IBAction) previous_window:(id)sender; +- (IBAction) enable_fullscreen_changed:(id)sender; +- (IBAction) toggle_fullscreen:(id)sender; +- (IBAction) prefs_changed:(id)sender; +- (IBAction) prefs_show:(id)sender; +- (IBAction) quit:(id)sender; +- (IBAction) x11_help:(id)sender; + @end #endif /* __OBJC__ */ diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m index d3f83656c..5111eafc3 100644 --- a/hw/xquartz/X11Controller.m +++ b/hw/xquartz/X11Controller.m @@ -613,7 +613,7 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row quartzUseSysBeep = [use_sysbeep intValue]; X11EnableKeyEquivalents = [enable_keyequivs intValue]; darwinSyncKeymap = [sync_keymap intValue]; - + /* after adding prefs here, also add to [X11Application read_defaults] and below */ @@ -621,6 +621,7 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row [NSApp prefs_set_boolean:@PREFS_SYSBEEP value:quartzUseSysBeep]; [NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value:X11EnableKeyEquivalents]; [NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap]; + [NSApp prefs_set_boolean:@PREFS_QUARTZ_WM_CLICK_THROUGH value:[click_through intValue]]; [NSApp prefs_set_boolean:@PREFS_NO_AUTH value:![enable_auth intValue]]; [NSApp prefs_set_boolean:@PREFS_NO_TCP value:![enable_tcp intValue]]; [NSApp prefs_set_integer:@PREFS_DEPTH value:[depth selectedTag]]; @@ -635,6 +636,7 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row [enable_keyequivs setIntValue:X11EnableKeyEquivalents]; [sync_keymap setIntValue:darwinSyncKeymap]; [sync_keymap setEnabled:darwinKeymapFile == NULL]; + [click_through setIntValue:[NSApp prefs_get_boolean:@PREFS_QUARTZ_WM_CLICK_THROUGH default:NO]]; [enable_auth setIntValue:![NSApp prefs_get_boolean:@PREFS_NO_AUTH default:NO]]; [enable_tcp setIntValue:![NSApp prefs_get_boolean:@PREFS_NO_TCP default:NO]]; diff --git a/hw/xquartz/bundle/English.lproj/main.nib/designable.nib b/hw/xquartz/bundle/English.lproj/main.nib/designable.nib index c267e45e6..08b381039 100644 --- a/hw/xquartz/bundle/English.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/English.lproj/main.nib/designable.nib @@ -8,85 +8,86 @@ 352.00 YES + YES - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + YES - + NSApplication - - FirstResponder + + FirstResponder - + NSApplication - - MainMenu + + MainMenu YES - - - X11 - + + + X11 + 1048576 2147483647 - - NSImage + + NSImage NSMenuCheckmark - - + + NSMenuMixedState submenuAction: - - + + YES - - + + About X11 - + 2147483647 - - + + - - + + Preferences... , 1048576 2147483647 - - + + - - + + YES YES - - + + 1048576 2147483647 - - + + - - + + Services - + 1048576 2147483647 - - + + submenuAction: - + Services @@ -96,343 +97,343 @@ _NSServicesMenu - - + + YES YES - - + + 1048576 2147483647 - - + + - - + + Toggle Full Screen - a + a 1572864 2147483647 - - + + - - + + YES YES - - + + 1048576 2147483647 - - + + - - + + Hide X11 h 1048576 2147483647 - - + + 42 - - + + Hide Others - + 1048576 2147483647 - - + + - - + + Show All - + 1048576 2147483647 - - + + 42 - - + + YES YES - - + + 1048576 2147483647 - - + + - - + + Quit X11 q 1048576 2147483647 - - + + _NSAppleMenu - - - Applications - + + + Applications + 1048576 2147483647 - - + + submenuAction: - - + + YES - - + + YES YES - - + + 1048576 2147483647 - - + + - - + + Customize... - + 1048576 2147483647 - - + + - - - Edit - + + + Edit + 1048576 2147483647 - - + + submenuAction: - - + + YES - - + + Undo z 1048576 2147483647 - - + + - - + + Redo Z 1048576 2147483647 - - + + - - + + YES YES - - + + 1048576 2147483647 - - + + - - + + Cut x 1048576 2147483647 - - + + - - + + Copy c 1048576 2147483647 - - + + - - + + Paste v 1048576 2147483647 - - + + - - + + Delete - + 1048576 2147483647 - - + + - - + + Select All - + 1048576 2147483647 - - + + - - + + Window - + 1048576 2147483647 - - + + submenuAction: - + Window YES - - - Minimize Window + + + Minimize m 1048576 2147483647 - - + + - - - Close Window + + + Zoom + + 1048576 + 2147483647 + + + + + + Cycle Through Windows + ` + 1048840 + 2147483647 + + + + + + Reverse Cycle Through Windows + ~ + 1179914 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close w 1048576 2147483647 - - + + - - - Zoom Window - - 1048576 - 2147483647 - - - - - + + YES YES - - + + 1048576 2147483647 - - + + - - - Next Window - 75yDA - 1048576 - 2147483647 - - - - - - Previous Window - 75yCA - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - + + Bring All to Front - + 1048576 2147483647 - - + + - - + + YES YES - - + + 1048576 2147483647 - - + + _NSWindowsMenu - - - Help - + + + Help + 1048576 2147483647 - - + + submenuAction: - - + + YES - - + + X11 Help - + 1048576 2147483647 - - + + @@ -440,562 +441,599 @@ _NSMainMenu - - X11Controller + + X11Controller - + 3 2 - {{319, 323}, {478, 316}} + {{319, 294}, {481, 345}} 1350041600 X11 Preferences - NSPanel + NSPanel View {3.40282e+38, 3.40282e+38} {213, 107} - + 256 YES - - + + 256 YES - - + + 256 YES - - + + 256 - {{18, 90}, {402, 18}} - + {{18, 243}, {402, 18}} + YES - + 67239424 0 - Use system alert effect - - LucidaGrande + Emulate three button mouse + + LucidaGrande 1.300000e+01 1044 - + 1211912703 2 - + NSSwitch - - + + 200 25 - - + + 256 - {{36, 56}, {385, 28}} - + {{36, 93}, {385, 31}} + YES - + 67239424 4194304 - X11 beeps will use the standard system alert, as defined in the Sound Effects system preferences panel. + When enabled, menu bar key equivalents may interfere with X11 applications that use the Meta modifier. - + 1.100000e+01 3100 - - + + 6 - System + System controlColor - + 3 MC42NjY2NjY2OQA - + 6 - + controlTextColor - + 3 MAA - - + + 256 - {{74, 209}, {128, 26}} - + {{36, 208}, {385, 29}} + YES - - -2076049856 - 1024 - - - 109199615 - 1 - - - 1.300000e+01 - 16 - - - - - - - - 400 - 75 - - - From Display - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - -1 - - - YES - - - OtherViews - - - YES - - - - 256 Colors - - 1048576 - 2147483647 - - - _popUpItemAction: - 8 - - - - - Thousands - - 1048576 - 2147483647 - - - _popUpItemAction: - 15 - - - - - Millions - - 1048576 - 2147483647 - - - _popUpItemAction: - 24 - - - - - 3 - YES - YES - 1 - - - - - 256 - {{17, 212}, {55, 20}} - - YES - + 67239424 4194304 - Q29sb3JzOgo - - - - - - - - - 256 - {{36, 190}, {392, 14}} - - YES - - 67239424 - 4194304 - This option takes effect when X11 is launched again. + SG9sZCBPcHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8gYWN0aXZhdGUgdGhlIG1pZGRs +ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA - - - + + + - - + + 256 - {{18, 156}, {409, 23}} - + {{18, 130}, {402, 18}} + YES - + 67239424 0 - Full screen mode - - + Enable key equivalents under X11 + + 1211912703 2 - - - + + + 200 25 - - + + 256 - {{36, 119}, {385, 31}} - + {{36, 159}, {385, 14}} + YES - + 67239424 4194304 - Enables the X11 root window. Use the Command-Option-A keystroke to enter and leave full screen mode. + Allows input menu changes to overwrite the current X11 keymap. - - - + + + + + + + + 256 + {{18, 179}, {402, 18}} + + YES + + 67239424 + 0 + Follow system keyboard layout + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{18, 69}, {402, 18}} + + YES + + 67239424 + 0 + Click-through Inactive Windows + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{33, 32}, {385, 31}} + + YES + + 67239424 + 4194304 + When enabled, clicking on an inactive window will cause that mouse click to pass through to that window in addition to activating it. + + + + - {{10, 33}, {438, 253}} - + {{10, 33}, {438, 279}} + - {{10, 7}, {458, 299}} - + {{10, 10}, {458, 325}} + YES - + 1 - - - 256 - - YES - - - 256 - {{18, 217}, {402, 18}} - - YES - - 67239424 - 0 - Emulate three button mouse - - - 1211912703 - 2 - - - - 200 - 25 - - - - - 256 - {{36, 67}, {385, 31}} - - YES - - 67239424 - 4194304 - When enabled, menu bar key equivalents may interfere with X11 applications that use the Meta modifier. - - - - - - - - - 256 - {{36, 182}, {385, 29}} - - YES - - 67239424 - 4194304 - SG9sZCBPcHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8gYWN0aXZhdGUgdGhlIG1pZGRs -ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA - - - - - - - - - 256 - {{18, 104}, {402, 18}} - - YES - - 67239424 - 0 - Enable key equivalents under X11 - - - 1211912703 - 2 - - - - 200 - 25 - - - - - 256 - {{36, 133}, {385, 14}} - - YES - - 67239424 - 4194304 - Allows input menu changes to overwrite the current X11 keymap. - - - - - - - - - 256 - {{18, 153}, {402, 18}} - - YES - - 67239424 - 0 - Follow system keyboard layout - - - 1211912703 - 2 - - - - 200 - 25 - - - - {{10, 33}, {438, 253}} - + Input - - + + - + 2 - - Output - - - - - + 256 YES - - + + 256 - {{18, 217}, {402, 18}} - + {{18, 116}, {402, 18}} + YES - + + 67239424 + 0 + Use system alert effect + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{36, 82}, {385, 28}} + + YES + + 67239424 + 4194304 + X11 beeps will use the standard system alert, as defined in the Sound Effects system preferences panel. + + + + + + + + + 256 + {{74, 235}, {128, 26}} + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + + 1.300000e+01 + 16 + + + + + + + + 400 + 75 + + + From Display + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + YES + + + + 256 Colors + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Thousands + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Millions + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {55, 20}} + + YES + + 67239424 + 4194304 + Q29sb3JzOgo + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + YES + + 67239424 + 4194304 + This option takes effect when X11 is launched again. + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + YES + + 67239424 + 0 + Full screen mode + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{36, 145}, {385, 31}} + + YES + + 67239424 + 4194304 + Enables the X11 root window. Use the Command-Option-A keystroke to enter and leave full screen mode. + + + + + + + + {{10, 33}, {438, 279}} + + Output + + + + + + + 256 + + YES + + + 256 + {{18, 243}, {402, 18}} + + YES + 67239424 0 Authenticate connections - - + + 1211912703 2 - - - + + + 200 25 - - + + 256 - {{18, 140}, {402, 18}} - + {{18, 166}, {402, 18}} + YES - + 67239424 0 Allow connections from network clients - - + + 1211912703 2 - - - + + + 200 25 - - + + 256 - {{36, 169}, {385, 42}} - + {{36, 195}, {385, 42}} + YES - + 67239424 4194304 TGF1bmNoaW5nIFgxMSB3aWxsIGNyZWF0ZSBYYXV0aG9yaXR5IGFjY2Vzcy1jb250cm9sIGtleXMuIElm IHRoZSBzeXN0ZW0ncyBJUCBhZGRyZXNzIGNoYW5nZXMsIHRoZXNlIGtleXMgYmVjb21lIGludmFsaWQg d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - - - + + + - - + + 256 - {{36, 92}, {385, 42}} - + {{36, 118}, {385, 42}} + YES - + 67239424 4194304 If enabled, Authenticate connections must also be enabled to ensure system security. When disabled, connections from remote applications are not allowed. - - - + + + - - + + 256 - {{17, 20}, {404, 14}} - + {{20, 17}, {404, 14}} + YES - + 67239424 4194304 These options take effect when X11 is next launched. - - - + + + - {{10, 33}, {438, 253}} + {{10, 33}, {438, 279}} Security - - + + - - + + 0 YES YES - {478, 316} + {481, 345} {{0, 0}, {1440, 878}} {213, 129} {3.40282e+38, 3.40282e+38} x11_prefs - + 11 2 - {{279, 270}, {486, 310}} + {{279, 253}, {486, 327}} 1350041600 X11 Application Menu - + View {3.40282e+38, 3.40282e+38} {213, 107} - + 256 YES - - + + 303 - {{388, 12}, {84, 32}} - + {{268, 12}, {84, 32}} + YES - + -2080244224 137887744 Done - - + + -2038284033 1 - + Helvetica 1.300000e+01 16 - + @@ -1003,21 +1041,21 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 25 - - + + 301 - {{372, 230}, {100, 32}} - + {{372, 247}, {100, 32}} + YES - + 67239424 137887744 Duplicate - - + + -2038284033 1 - + @@ -1028,21 +1066,21 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 25 - - + + 301 - {{372, 198}, {100, 32}} - + {{372, 215}, {100, 32}} + YES - + 67239424 137887744 Remove - - + + -2038284033 1 - + @@ -1053,39 +1091,39 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 25 - - + + 307 YES - - + + 2304 YES - - + + 256 {333, 197} - + YES - - + + 256 {333, 17} - - + + - - + + 256 {{334, 0}, {16, 17}} - + YES - - 7.900000e+01 + + 1.110000e+02 4.000000e+01 1.000000e+03 @@ -1093,35 +1131,36 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 0 Name - + 3 MC4zMzMzMzI5OQA - + 6 - + headerTextColor - + - + 338820672 1024 - - - + Text Cell + + + 3 MQA - + 3 YES YES - + - - 1.937310e+02 + + 1.327310e+02 6.273100e+01 1.000000e+03 @@ -1129,24 +1168,25 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 0 Command - - + + - + 338820672 1024 - - - - + + + + + 3 YES YES - + - - 5.100000e+01 + + 8.000000e+01 1.000000e+01 1.000000e+03 @@ -1156,42 +1196,43 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 6 - + headerColor - + - + - + 338820672 1024 + - + 1.200000e+01 16 - + YES - + 6 - + controlBackgroundColor - + - + 3 YES YES - + 3.000000e+00 2.000000e+00 - + 6 - + gridColor 3 @@ -1207,72 +1248,73 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 {{1, 17}, {333, 197}} - - - - + + + + 4 - - + + 256 {{334, 17}, {15, 197}} - - - _doScroller: + + + _doScroller: 9.949238e-01 - - + + 256 {{1, 214}, {333, 15}} - + 1 - - - 9.940299e-01 + + + 6.885246e-01 - - + + 2304 YES - + {{1, 0}, {333, 17}} - - - - + + + + 4 - + - {{20, 60}, {350, 230}} - - + {{20, 77}, {350, 230}} + + 50 - - - - + + + + + QSAAAEEgAABBmAAAQZgAAA - - + + 303 - {{304, 12}, {84, 32}} - + {{352, 12}, {84, 32}} + YES - - 67239424 + + -2080244224 137887744 Cancel - - + + -2038284033 1 - + @@ -1283,21 +1325,21 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 25 - - + + 301 - {{372, 262}, {100, 32}} - + {{372, 279}, {100, 32}} + YES - + 67239424 137887744 Add Item - - + + -2038284033 1 - + @@ -1309,66 +1351,66 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - {{1, 1}, {486, 310}} + {486, 327} {{0, 0}, {1440, 878}} {213, 129} {3.40282e+38, 3.40282e+38} x11_apps - + Menu YES - - + + YES YES - - + + 1048576 2147483647 - - + + - - - - + + + + 1048576 2147483647 - - + + submenuAction: - - + + YES - - + + YES YES - - + + 1048576 2147483647 - - + + - - + + Q3VzdG9taXpl4oCmA - + 1048576 2147483647 - - + + - + @@ -1377,1384 +1419,1438 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 cut: - - + + 175 paste: - - + + 176 redo: - - + + 178 selectAll: - - + + 179 undo: - - + + 180 copy: - - + + 181 delete: - - + + 195 minimize_window: - - + + 202 close_window: - - + + 205 zoom_window: - - + + 206 bring_to_front: - - + + 207 - - - window_separator - - - - 260 - hideOtherApplications: - - + + 263 apps_separator - - + + 273 apps_table - - + + 301 apps_table_done: - - + + 302 apps_table_delete: - - + + 303 apps_table_duplicate: - - + + 304 - apps_table_show: - - + apps_table_show: + + 308 apps_table_cancel: - - + + 309 apps_table_new: - - + + 311 prefs_show: - - + + 318 x11_about_item - - + + 321 enable_auth - - + + 387 enable_tcp - - + + 388 depth - - + + 389 use_sysbeep - - + + 390 fake_buttons - - + + 391 sync_keymap - - + + 392 enable_keyequivs - - + + 393 - prefs_changed: - - + prefs_changed: + + 394 - - - + + + 395 - - - + + + 396 - - - + + + 397 - - - + + + 398 - - - + + + 399 - - - + + + 401 prefs_panel - - + + 402 x11_help: - - + + 422 dockMenu - - + + 426 dock_menu - - + + 428 delegate - - + + 429 hide: - - + + 430 unhideAllApplications: - - + + 431 - - - terminate: - - - - 432 - orderFrontStandardAboutPanel: - - + + 433 dock_apps_menu - - + + 530 dock_window_separator - - + + 531 - - - + + + 534 next_window: - - + + 539 previous_window: - - + + 540 enable_fullscreen - - + + 546 enable_fullscreen_changed: - - + + 547 toggle_fullscreen: - - + + 548 toggle_fullscreen_item - - + + 549 + + + + + + + 300300 + + + + window_separator + + + + 300331 + + + + click_through + + + + 300332 + + + + quit: + + + + 300333 + + + + menu + + + + 300334 + YES 0 - + YES - + -2 - - + + RmlsZSdzIE93bmVyA -1 - - + + First Responder -3 - - + + Application 29 - + YES - - - - - + + + + + - - + + 19 - + YES - + - + 24 - + YES - - - - - - - - - + + + + + + + + + - + 5 - - + + 23 - - + + 92 - - + + 203 - - + + 204 - - - - - 208 - - + + 536 - - + + 537 - - + + 538 - - + + 56 - + YES - + - + 57 - + YES - - - - - - - - - - - - + + + + + + + + + + + + - + 58 - - + + 129 - - + + 131 - + YES - + - + 130 - - + + 134 - - + + 136 - - + + 143 - - + + 144 - - + + 145 - - + + 149 - - + + 150 - - + + 544 - - + + 545 - - + + 163 - + YES - + - + 169 - + YES - - - - - - - - + + + + + + + + - + 156 - - + + 157 - - + + 158 - - + + 160 - - + + 164 - - + + 171 - - + + 172 - - + + 173 - - + + 269 - + YES - + - + 270 - + YES - - + + - + 272 - - + + 305 - - + + 419 - + YES - + - + 420 - + YES - + - + 421 - - + + 196 - - - + + + 244 - + YES - + - + PrefsPanel 245 - + YES - + - + 348 - + YES - - - + + + - + 349 - + YES - + - + 351 - + YES - - - - - - + + + + + + + + - + 363 - + YES - + - + 364 - + YES - + - + 365 - + YES - + - + 368 - + YES - + - + 369 - + YES - + - + 370 - + YES - + - + 352 - + YES - + - + 350 - + YES - - - - - - - + + + + + + + - + 371 - + YES - + - + 372 - + YES - + - + 382 - + YES - + - + 385 - + YES - + - + 386 - + YES - + - + 541 - + YES - + - + 543 - + YES - + - + 353 - + YES - + - + 354 - + YES - - - - - + + + + + - + 374 - + YES - + - + 375 - + YES - + - + 376 - + YES - + - + 377 - + YES - + - + 379 - + YES - + - + 285 - + YES - + - + EditPrograms 286 - + YES - - - - - - + + + + + + - - - - 291 - - - YES - - - - - - 292 - - - YES - - - - - - 293 - - - YES - - - - - - 295 - - - YES - - - - - - - - - 296 - - - YES - - - - - - - - 297 - - - YES - - - - - - 574 - - - - - 298 - - - YES - - - - - - 573 - - - - - 535 - - - YES - - - - - - 575 - - - - - 299 - - - YES - - - - - - 310 - - - YES - - - + 423 - + YES - - + + - + DockMenu 524 - - + + 526 - + YES - + - + 527 - + YES - - + + - + 532 - - + + 533 - - + + 100363 - - + + 100364 - - + + 100365 - - + + 100368 - - + + 100369 - - + + 100370 - - + + 100371 - - + + 100372 - - + + 100382 - + YES - + - + 100385 - - + + 100386 - - + + 100541 - - + + 100543 - - + + 100374 - - + + 100375 - - + + 100376 - - + + 100377 - - + + 100379 - - - - - 100291 - - - - - 100292 - - - - - 100293 - - - - - 100299 - - - - - 100310 - - + + 380 - + YES - - - - + + + + - + 435 - - + + 384 - - + + 383 - - + + 381 - - + + - 100295 - - + 300296 + + + YES + + + - 200295 - - + 300297 + + + + + 300298 + + + YES + + + + + + 300299 + + + + + 295 + + + YES + + + + + + 300295 - - + + + + + 200295 + + + + + 100295 + + + + + 296 + + + YES + + + + + + + + 535 + + + YES + + + + + + 575 + + + + + 298 + + + YES + + + + + + 573 + + + + + 297 + + + YES + + + + + + 574 + + + + + 310 + + + YES + + + + + + 100310 + + + + + 292 + + + YES + + + + + + 100292 + + + + + 293 + + + YES + + + + + + 100293 + + + + + 299 + + + YES + + + + + + 100299 + + + + + 291 + + + YES + + + + + + 100291 + + + + + 300330 + + @@ -2801,6 +2897,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 164.ImportedFromIB2 169.IBPluginDependency 169.ImportedFromIB2 + 169.editorWindowContentRectSynchronizationRect 171.IBPluginDependency 171.ImportedFromIB2 172.IBPluginDependency @@ -2816,14 +2913,15 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 203.ImportedFromIB2 204.IBPluginDependency 204.ImportedFromIB2 - 208.IBPluginDependency - 208.ImportedFromIB2 23.IBPluginDependency 23.ImportedFromIB2 24.IBPluginDependency 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect 244.IBPluginDependency + 244.IBWindowTemplateEditedContentRect 244.ImportedFromIB2 + 244.editorWindowContentRectSynchronizationRect 244.windowTemplate.hasMaxSize 244.windowTemplate.hasMinSize 244.windowTemplate.maxSize @@ -2834,10 +2932,15 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 269.ImportedFromIB2 270.IBPluginDependency 270.ImportedFromIB2 + 270.editorWindowContentRectSynchronizationRect 272.IBPluginDependency 272.ImportedFromIB2 285.IBPluginDependency + 285.IBViewEditorWindowController.showingBoundsRectangles + 285.IBViewEditorWindowController.showingLayoutRectangles + 285.IBWindowTemplateEditedContentRect 285.ImportedFromIB2 + 285.editorWindowContentRectSynchronizationRect 285.windowTemplate.hasMaxSize 285.windowTemplate.hasMinSize 285.windowTemplate.maxSize @@ -2846,6 +2949,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 286.ImportedFromIB2 29.IBPluginDependency 29.ImportedFromIB2 + 29.editorWindowContentRectSynchronizationRect 291.IBPluginDependency 291.ImportedFromIB2 292.IBPluginDependency @@ -2863,6 +2967,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 299.IBPluginDependency 299.ImportedFromIB2 300295.IBShouldRemoveOnLegacySave + 300296.IBPluginDependency + 300296.ImportedFromIB2 + 300298.IBPluginDependency + 300298.ImportedFromIB2 + 300330.IBPluginDependency + 300330.ImportedFromIB2 305.IBPluginDependency 305.ImportedFromIB2 310.IBPluginDependency @@ -2963,6 +3073,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 56.ImportedFromIB2 57.IBPluginDependency 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect 573.IBPluginDependency 573.ImportedFromIB2 574.IBPluginDependency @@ -2976,217 +3087,232 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {3.40282e+38, 3.40282e+38} - {213, 107} - - - - - - - - - - - - - {3.40282e+38, 3.40282e+38} - {213, 107} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{202, 626}, {154, 153}} + + + + + + + + + + + + + + + + + + + + {{271, 666}, {301, 153}} + + {{184, 290}, {481, 345}} + + {{184, 290}, {481, 345}} + + + {3.40282e+38, 3.40282e+38} + {213, 107} + + + + + + + {{100, 746}, {155, 33}} + + + + + + {{433, 406}, {486, 327}} + + + + + + + + + + + {{67, 819}, {336, 20}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{79, 616}, {218, 203}} + + + + + + + + + + @@ -3209,13 +3335,13 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - 300295 + 300334 YES - NSFormatter + YES @@ -3236,196 +3362,8 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - IBUserSource - - - - - FirstResponder - - - YES - - YES - alignCenter: - alignJustified: - alignLeft: - alignRight: - arrangeInFront: - centerSelectionInVisibleArea: - changeFont: - checkSpelling: - clear: - clearRecentDocuments: - complete: - copy: - copyFont: - copyRuler: - cut: - delete: - deminiaturize: - fax: - hide: - hideOtherApplications: - loosenKerning: - lowerBaseline: - makeKeyAndOrderFront: - miniaturize: - newDocument: - openDocument: - orderBack: - orderFront: - orderFrontColorPanel: - orderFrontHelpPanel: - orderOut: - outline: - paste: - pasteAsPlainText: - pasteAsRichText: - pasteFont: - pasteRuler: - pause: - performClose: - performFindPanelAction: - performMiniaturize: - performZoom: - play: - print: - printDocument: - raiseBaseline: - record: - redo: - resume: - revertDocumentToSaved: - run: - runPageLayout: - runToolbarCustomizationPalette: - saveAllDocuments: - saveDocument: - saveDocumentAs: - saveDocumentTo: - selectAll: - selectText: - showGuessPanel: - showHelp: - start: - startSpeaking: - stop: - stopSpeaking: - subscript: - superscript: - terminate: - tightenKerning: - toggleContinuousSpellChecking: - toggleRuler: - toggleToolbarShown: - turnOffKerning: - turnOffLigatures: - underline: - undo: - unhideAllApplications: - unscript: - useAllLigatures: - useStandardKerning: - useStandardLigatures: - - - YES - id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - YES - - YES - - - YES - - - - - + IBUserSource + @@ -3449,29 +3387,31 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 prefs_changed: prefs_show: previous_window: + quit: toggle_fullscreen: x11_help: zoom_window: YES - - - - - - - - - - - - - - - - - + id + + + + + + + + + + + + + + + + + @@ -3480,6 +3420,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES apps_separator apps_table + click_through depth dock_apps_menu dock_menu @@ -3498,28 +3439,55 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES - - - - - - - - - - - - - - - - - + NSMenuItem + NSTableView + NSButton + NSPopUpButton + NSMenu + + + + + + + + NSPanel + + + + + - - + IBUserSource + + + + + NSFormatter + + + YES + + YES + + + YES + + + + YES + + YES + + + YES + + + + + @@ -3529,570 +3497,595 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 3 YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA -AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEDKQALAAwAMQA1ADkAQABD -AEQASABMAIYAjACcAKEAogCjAKgAqQCqAK0AsQCyALUAtgC6AMAAzgDUANUA7wDwAPgA+QD8AQABAQEE -AQgBDgERARIBEwEXAR4BHwEgASEBJgEnASoBLwE0ATUBOgFFAVABUQFSAVYBWwFkAWsBbAFwAXIBcwF4 -AX8BhQGGAY4BjwGUAZsBoAGhAakBqgGrAbABsQG2Ab0BvgHWAdoB3AHeAesB7wHwAfEB9AH7AgUB8AIG -AhAB8AIRAhsB8AIcAiACIwIoAjECNgI3AjwCRQJJAkoCTwJWAlcCXwJgAmECZgJnAmwCiAKJAooCiwKO -Ao8CkAKWApoCqgKuArgCvwLAAsoCywLQAtoC2wLcAuAC4gLnAugC6wLuAvEC+AL5AwADAQMIAwkDEAMR -AxgDGQMhAyIDKQMqAzEDMgMzAzUDNgM8A0UDSANRA1gDWQNgA2EDaANpA3ADcQN4A3kDgQOCA4kDigOR -AzIDkgOTA5YDnQOgA6EDpwOvAlYDtgO+A78DxgPHA84DzwPWA9cD3gPfA+YD5wPuAzID7wPwA/ID8wP0 -Ao4D9QP2A/kD+gP+BAUEBgQHBAgEDQQSBBkEGgQfBCYEKwQsBC0EMgQ5BDoEOwRABEcESARJBEoETwRX -BFgEWQReBF8EZARrBGwEbQRxBHgEeQR6BHsEgASHBIgEiQSKBI4ElQSWBJcEmASdBKQEpQSmBKsEsgS2 -BLcEuAS9BMIEwwTIBNAE1QTWBOAE4QTkBOUE5wTpBOoE7wTwBPUE/AT9BQUFBgUIBQoFCwUQBREFFgUX -BRwFIwUkBSUFJgUrBTMFNAU9BT4FQAVBBUYFSwVMBVEFbAV7BXwFgwWMBY0FkAWVBakFqgWtBbMFxQXM -Bc0F0AXVBdYF2QXgBeMF5gXvBfUF9gX8BgUGCwYMBhEGEgYZBh0GIgYjBigGKQYsBi4GLwY0BjwGPQY+ -Bj8GRAZLBkwGTQZRBlgGWQZaBlsGYAZnBmgGcAZxBnMGdQZ2BnsGfAaBBogGiQaKBosGkAaRBpYGlwac -Bp0GoganBq4GrwawBrEGtga9Br4GvwbABsUGzAbNBtUG1gbYBtoG2wbgBuEG5QbsBu0G7gbvB28HeAeA -B4QHhQeIB5EHkgeTB5YHngefB6MHpAelB6gHqQeuB7cHvAFRB70HzAfVB94BUQffB+QH5gfpB+oH8wf8 -CAUIBgFRCA8IEggeCCcIMAgxCDIIOghDAVEIRAhPCFgIEQFRCGEIagFRCGsIbwhwADgIcwiBCIIIgwKO -Ao8D8wP0Ao4IhQiGCIgJCAmJCgoKCwoMCg0KDgoPChAKEQoSChMKFAoVChYKFwoYChkKGgobChwKHQoe -Ch8KIAohCiIKIwokCiUKJgonCigKKQoqCisKLAotCi4KLwowCjEKMgozCjQKNQo2CjcKOAo5CjoKOwo8 -Cj0KPgo/CkAKQQpCCkMKRApFCkYKRwpICkkKSgpLCkwKTQpOCk8KUApRClIKUwpUClUKVgpXClgKWQpa -ClsKXApdCl4KXwpgCmEKYgpjCmQKZQpmCmcKaAppCmoKawpsCm0KbgpvCnAKcQpyAo0Kcwp0CnUKdgp3 -CngKeQp6CnsKfAp9Cn4KfwqACoEKggqDCoQKhQqICosLQwv7C/wL/Qv+C/8MAAwBDAIMAwwEDAUMBgwH -DAgMCQwKDAsMDAwNDA4MDwwQDBEMEgwTDBQMFQwWDBcMGAwZDBoMGwwcDB0MHgwfDCAMIQwiDCMMJAwl -DCYMJwIaBTAMKAwpDCoMKwwsDC0MLgwvDDAMMQwyDDMMNAw1DDYMNww4DDkMOgw7DDwMPQw+DD8MQAxB -DEIMQwxEDEUMRgxHDEgMSQxKDEsMTAxNDE4MTwxQDFEMUgxTDFQMVQxWDFcMWAxZDFoMWwxcDF0MXgxf -DGAMYQxiDGMMZAxlDGYMZwxoDGkMagxrDGwMbQxuDG8McAxxDHIMcwx0DHUMdgx3BM0MeAx5DHoMewx8 -DH0Mfgx/DIAMgQyCDIMMhAyFDIYMhwyIDIkMigyLDIwMjQyODI8MkAyRDJIMkwyUDJUMlgyXDJgMmQya -DJsMnAydDJ4MnwygDKEMogyjDKQMpQymDKcMqAypDKoMqwysDK0MsAyzDLZVJG51bGzfEBIADQAOAA8A -EAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0A -LgAvADBWTlNSb290ViRjbGFzc11OU09iamVjdHNLZXlzXxAPTlNDbGFzc2VzVmFsdWVzXxAZTlNBY2Nl -c3NpYmlsaXR5T2lkc1ZhbHVlc11OU0Nvbm5lY3Rpb25zW05TTmFtZXNLZXlzW05TRnJhbWV3b3JrXU5T -Q2xhc3Nlc0tleXNaTlNPaWRzS2V5c11OU05hbWVzVmFsdWVzXxAZTlNBY2Nlc3NpYmlsaXR5Q29ubmVj -dG9yc11OU0ZvbnRNYW5hZ2VyXxAQTlNWaXNpYmxlV2luZG93c18QD05TT2JqZWN0c1ZhbHVlc18QF05T -QWNjZXNzaWJpbGl0eU9pZHNLZXlzWU5TTmV4dE9pZFxOU09pZHNWYWx1ZXOAAoEDKIEBp4ECbYEDJ4AJ -gQHugAaBAmyBAm6BAe+BAyWAAIAHgQHtgQMmEgAElQiBAm/SAA4AMgAzADRbTlNDbGFzc05hbWWABYAD -0gAOADYANwA4WU5TLnN0cmluZ4AEXU5TQXBwbGljYXRpb27SADoAOwA8AD1YJGNsYXNzZXNaJGNsYXNz -bmFtZaMAPQA+AD9fEA9OU011dGFibGVTdHJpbmdYTlNTdHJpbmdYTlNPYmplY3TSADoAOwBBAEKiAEIA -P15OU0N1c3RvbU9iamVjdF8QEElCQ29jb2FGcmFtZXdvcmvSAA4ARQBGAEdaTlMub2JqZWN0c4AIoNIA -OgA7AEkASqMASgBLAD9cTlNNdXRhYmxlU2V0VU5TU2V00gAOAEUATQBOgD6vEDcATwBQAFEAUgBTAFQA -VQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIA -cwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhYAKgBiAKYAugDGAQYBHgE6AUIBogGyA -cIB2gHiA3YDigOOA5oDrgO+A9ID4gPqA/oEBA4EBCIEBDYEBEYEBFoEBF4EBGYEBJIEBJoEBLoEBMIEB -MoEBN4EBPoEBP4EBQYEBaoEBb4EBc4EBeIEBgIEBgoEBh4EBiYEBi4EBjYEBjoEBk4EBmIEBoIEBotMA -DgCHAIgAiQCKAItYTlNTb3VyY2VXTlNMYWJlbIAXgAuAFtgADgCNAI4AjwCQAJEAkgCTAJQAlQCWAJcA -mACZAJoAm1dOU1RpdGxlXxARTlNLZXlFcXVpdk1vZE1hc2taTlNLZXlFcXVpdl1OU01uZW1vbmljTG9j -WU5TT25JbWFnZVxOU01peGVkSW1hZ2VWTlNNZW51gBWADRIAEAAAgA4Sf////4APgBOADNMADgCNAJ0A -ngCfAKBbTlNNZW51SXRlbXOAP4EB1IEB1lZEZWxldGVQ0wAOADIApAClAKYAp15OU1Jlc291cmNlTmFt -ZYASgBCAEVdOU0ltYWdlXxAPTlNNZW51Q2hlY2ttYXJr0gA6ADsAqwCsogCsAD9fEBBOU0N1c3RvbVJl -c291cmNl0wAOADIApAClAKYAsIASgBCAFF8QEE5TTWVudU1peGVkU3RhdGXSADoAOwCzALSiALQAP1pO -U01lbnVJdGVtV2RlbGV0ZTrSADoAOwC3ALijALgAuQA/XxAVTlNOaWJDb250cm9sQ29ubmVjdG9yXk5T -TmliQ29ubmVjdG9y1AAOALsAhwCIAIkAvQC+AL9dTlNEZXN0aW5hdGlvboAXgCaAGYAo1wDBAA4AwgDD -AMQAxQDGAMcAyADJAMoAywDMAMdfEA9OU05leHRSZXNwb25kZXJXTlNGcmFtZVZOU0NlbGxYTlN2Rmxh -Z3NZTlNFbmFibGVkW05TU3VwZXJ2aWV3gBqAJYAbgBwRAQAJgBrVAMEADgDCAM8AxAArANEA0gDTAMta -TlNTdWJ2aWV3c4AAgKWAu4CqXxAWe3sxOCwgMTUzfSwgezQwMiwgMTh9fd0A1gAOANcA2ADZANoA2wDc -AN0A3gDfAOAA4QDiAOMAlwDlAOYA5wCXAOkA6gC+AOwA7QDuW05TQ2VsbEZsYWdzXxATTlNBbHRlcm5h -dGVDb250ZW50c18QEk5TUGVyaW9kaWNJbnRlcnZhbF5OU0J1dHRvbkZsYWdzMl8QEE5TQWx0ZXJuYXRl -SW1hZ2VfEA9OU0tleUVxdWl2YWxlbnRaTlNDb250ZW50c1lOU1N1cHBvcnRdTlNDb250cm9sVmlld18Q -D05TUGVyaW9kaWNEZWxheVxOU0NlbGxGbGFnczJdTlNCdXR0b25GbGFncxIEAf4AgCSADhAZEAKAIYAO -gB2AHoAZEMgQABJIPFH/XxAdRm9sbG93IHN5c3RlbSBrZXlib2FyZCBsYXlvdXTUAA4A8QDyAPMA9AD1 -APYA91ZOU1NpemVWTlNOYW1lWE5TZkZsYWdzgCAjQCoAAAAAAACAHxEEFFxMdWNpZGFHcmFuZGXSADoA -OwD6APuiAPsAP1ZOU0ZvbnTSAA4A/QD+AP9bTlNJbWFnZU5hbWWAI4AiWE5TU3dpdGNo0gA6ADsBAgED -ogEDAD9fEBNOU0J1dHRvbkltYWdlU291cmNl0gA6ADsBBQEGpAEGAQcAwwA/XE5TQnV0dG9uQ2VsbFxO -U0FjdGlvbkNlbGzSADoAOwEJAQqlAQoBCwEMAQ0AP1hOU0J1dHRvbllOU0NvbnRyb2xWTlNWaWV3W05T -UmVzcG9uZGVy0gAOADIAMwEQgAWAJ11YMTFDb250cm9sbGVyXnByZWZzX2NoYW5nZWQ60wAOAIcAiACJ -ARUBFoAXgCqALdgADgCNAI4AjwCQAJEAkgCTAJQBGQCWARoAmACZAJoAm4AVgCuALIAPgBOADFpTZWxl -Y3QgQWxsUWFac2VsZWN0QWxsOtQADgC7AIcAiAEiAL0AHwElgDCAJoACgC9YZGVsZWdhdGXSADoAOwEo -ASmjASkAuQA/XxAUTlNOaWJPdXRsZXRDb25uZWN0b3LUAA4AuwCHAIgBIgEsAB8BLoAwgDKAAoBA1AAO -AI0A8gCdAJ4BMQCXATOAP4AzgA6ANFRNZW510gAOAEUATQE3gD6iATgBOYA1gDbaAA4AjQCOATsAjwE8 -AJAAkQCSAJMAlACXAJYAzACXAMwAmACZAJoBLF1OU0lzU2VwYXJhdG9yXE5TSXNEaXNhYmxlZIAVgA4J -gA4JgA+AE4Ay2gAOAUYAjQCOAI8AkACRAJIAkwFHAJQBSQFKAJYAlwCYAJkAmgEsAU9ZTlNTdWJtZW51 -WE5TQWN0aW9ugBWAOYA3gA6AD4ATgDKAOFxBcHBsaWNhdGlvbnNec3VibWVudUFjdGlvbjrTAA4AjQCd -AJ4BSgFVgD+AN4A60gAOAEUATQFYgD6iAVkBWoA7gDzaAA4AjQCOATsAjwE8AJAAkQCSAJMAlACXAJYA -zACXAMwAmACZAJoBSYAVgA4JgA4JgA+AE4A52AAOAI0AjgCPAJAAkQCSAJMAlAFmAJYAlwCYAJkAmgFJ -gBWAPYAOgA+AE4A5agBDAHUAcwB0AG8AbQBpAHoAZSAm0gA6ADsBbQFuowFuAW8AP15OU011dGFibGVB -cnJheVdOU0FycmF50gA6ADsBcQCTogCTAD9YZG9ja01lbnXUAA4AuwCHAIgAiQC9AXYAv4AXgCaAQoAo -1wDBAA4AwgDDAMQAxQDGAXkAyAF7AXwAywDMAXmAQ4AlgESARQmAQ9YAwQAOAMIAzwDEAMYBgADRAYIB -gwDLAYCAgoClgKSAhICCXxAVe3sxOCwgOTB9LCB7NDAyLCAxOH193QDWAA4A1wDYANkA2gDbANwA3QDe -AN8A4ADhAOIA4wCXAOUA5gDnAJcBiwDqAXYA7ADtAO6AJIAOgCGADoBGgB6AQl8QF1VzZSBzeXN0ZW0g -YWxlcnQgZWZmZWN01AAOALsAhwCIASIBkQC9AZOAMIBIgCaATdcAwQAOAMIAwwDEAMUAxgGVAMgBlwGY -AMsAzAGVgEmAJYBKgEsJgEnVAMEADgDCAM8AxAArANEBngGfAMuAAIClgNOAwl8QFnt7MTgsIDE0MH0s -IHs0MDIsIDE4fX3dANYADgDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAJcA5QDmAOcAlwGmAOoBkQDs -AO0A7oAkgA6AIYAOgEyAHoBIXxAmQWxsb3cgY29ubmVjdGlvbnMgZnJvbSBuZXR3b3JrIGNsaWVudHNa -ZW5hYmxlX3RjcNQADgC7AIcAiACJAL0BWgGvgBeAJoA8gE9fEBBhcHBzX3RhYmxlX3Nob3c61AAOALsA -hwCIAIkAvQG0AL+AF4AmgFGAKNcAwQAOAMIAwwDEAMUAxgF5AbgBuQG6AMsAzAF5gEOAZ4BSgFMJgENf -EBZ7ezc0LCAyMDl9LCB7MTI4LCAyNn193xATANYBvwHAANcA2AAOANkA2gDbAN0AtADeAcEBwgHDAN8A -4ACTAOEBxADMAcYBxwHIAckBxgHKAcsA6gHNAbQBzwDMAMwB0gHTAdQB1V8QGk5TTWVudUl0ZW1SZXNw -ZWN0QWxpZ25tZW50XxAPTlNBcnJvd1Bvc2l0aW9uXxAPTlNQcmVmZXJyZWRFZGdlXxASTlNVc2VzSXRl -bUZyb21NZW51XU5TQWx0ZXJzU3RhdGUT/////4RB/kAJEAGAVRBLgGaAVIBWgB6AV4BREAMJCREBkBEE -AIBYEgaCQP/UAA4A8QDyAPMA9AD1APYB2YAggB8QENIADgA2ADcAooAE0gAOADYANwCigATcAd8ADgCN -AI4AjwCQAJEAkgCTAUcB4AHhAboAlAHkAJYAlwCYAJkAmgHUAekB6gHGWE5TVGFyZ2V0VU5TVGFnV05T -U3RhdGWAU4AVgFmADoAPgBOAWIBaE///////////0wAOAI0AnQCeAe0B7oA/gFuAXFxGcm9tIERpc3Bs -YXlfEBFfcG9wVXBJdGVtQWN0aW9uOtIADgA2ADcB84AEWk90aGVyVmlld3PSAA4ARQBNAfaAPqQBzQH4 -AfkB+oBXgF2AYIBj2wHfAA4AjQCOAI8AkACRAJIAkwFHAeABugCUAf4AlgCXAJgAmQCaAdQCAwIEgFOA -FYBegA6AD4ATgFiAXxAIWjI1NiBDb2xvcnPbAd8ADgCNAI4AjwCQAJEAkgCTAUcB4AG6AJQCCQCWAJcA -mACZAJoB1AIOAg+AU4AVgGGADoAPgBOAWIBiEA9ZVGhvdXNhbmRz2wHfAA4AjQCOAI8AkACRAJIAkwFH -AeABugCUAhQAlgCXAJgAmQCaAdQCGQIagFOAFYBkgA6AD4ATgFiAZRAYWE1pbGxpb25z0gA6ADsCHQIe -pgIeAh8BBgEHAMMAP18QEU5TUG9wVXBCdXR0b25DZWxsXk5TTWVudUl0ZW1DZWxs0gA6ADsCIQIipgIi -AQoBCwEMAQ0AP11OU1BvcFVwQnV0dG9u1AAOALsAhwCIASICJQC9AieAMIBpgCaAa9oADgCNAI4BOwCP -ATwAkACRAJIAkwCUAJcAlgDMAJcAzACYAJkAmgIwgBWADgmADgmAD4ATgGrUAA4AjQDyAJ0AngIzAjQC -NYA/gQHMgQHQgQHNXxAQd2luZG93X3NlcGFyYXRvctQADgC7AIcAiAEiAjkAvQI7gDCAbYAmgG/aAA4A -jQCOATsAjwE8AJAAkQCSAJMAlACXAJYAzACXAMwAmACZAJoCRIAVgA4JgA4JgA+AE4Bu0wAOAI0AnQCe -AUoCSIA/gDeBAbheYXBwc19zZXBhcmF0b3LUAA4AuwCHAIgBIgJMAL0CToAwgHGAJoB11wDBAA4AwgDD -AMQAxQDGAMcAyAJSAlMAywDMAMeAGoAlgHKAcwmAGl8QFnt7MTgsIDIxN30sIHs0MDIsIDE4fX3dANYA -DgDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAJcA5QDmAOcAlwJcAOoCTADsAO0A7oAkgA6AIYAOgHSA -HoBxXxAaRW11bGF0ZSB0aHJlZSBidXR0b24gbW91c2VcZmFrZV9idXR0b25z1AAOALsAhwCIASIBtAC9 -AmWAMIBRgCaAd1VkZXB0aNQADgC7AIcAiAEiAmkAvQJrgDCAeYAmgNzfEA8CbQAOAm4CbwJwAnECcgJz -AnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAOYBzwKGAodcTlNXaW5kb3dWaWV3XxAW -TlNXaW5kb3dDb250ZW50TWF4U2l6ZVxOU1NjcmVlblJlY3RfEBNOU0ZyYW1lQXV0b3NhdmVOYW1lXU5T -V2luZG93VGl0bGVZTlNXVEZsYWdzXU5TV2luZG93Q2xhc3NfEBZOU1dpbmRvd0NvbnRlbnRNaW5TaXpl -XE5TV2luZG93UmVjdFlOU01heFNpemVfEA9OU1dpbmRvd0JhY2tpbmdfEBFOU1dpbmRvd1N0eWxlTWFz -a1lOU01pblNpemVbTlNWaWV3Q2xhc3OAgIDbgH6A14DagHsSUHgAAIB8gH+AeoDZgNiAfV8QGHt7MzE5 -LCAzMjN9LCB7NDc4LCAzMTZ9fV8QD1gxMSBQcmVmZXJlbmNlc1dOU1BhbmVs0gAOADYANwKNgARUVmll -d18QGnszLjQwMjgyZSszOCwgMy40MDI4MmUrMzh9WnsyMTMsIDEwN33VAMEADgDPAMQCkQArANEClADL -ApVbTlNGcmFtZVNpemWAAIClgIGA1tIADgBFAE0CmIA+oQGAgILcAMEADgKbApwAwgD7AM8AxAKdAMYC -ngKfAnsCoQKiAO0CowDqAqUAywDMAnsAzAKpXk5TVGFiVmlld0l0ZW1zWU5TVHZGbGFnc18QEU5TRHJh -d3NCYWNrZ3JvdW5kXxAWTlNBbGxvd1RydW5jYXRlZExhYmVsc18QFU5TU2VsZWN0ZWRUYWJWaWV3SXRl -bYCAgNWAp4CmgB6AgwmAgAmAvtIADgBFAE0CrIA+oQF5gEPSAA4ARQBNArCAPqcBdgKyAbQCtAK1ArYC -t4BCgIWAUYCUgJiAnICg1wDBAA4AwgDDAMQAxQDGAXkCugK7ArwAywDMAXmAQ4CTgIaAhwmAQ18QFXt7 -MzYsIDU2fSwgezM4NSwgMjh9fdgA1gAOAsEA3ADdAN4A4ALCAOICwwLEAsUCxgKyAsgCyV8QEU5TQmFj -a2dyb3VuZENvbG9yW05TVGV4dENvbG9ygJKAioCIgImAhRIAQAAAgI9fEGdYMTEgYmVlcHMgd2lsbCB1 -c2UgdGhlIHN0YW5kYXJkIHN5c3RlbSBhbGVydCwgYXMgZGVmaW5lZCBpbiB0aGUgU291bmQgRWZmZWN0 -cyBzeXN0ZW0gcHJlZmVyZW5jZXMgcGFuZWwu1AAOAPEA8gDzAPQCzQD2As+AICNAJgAAAAAAAIAfEQwc -1QAOAtEC0gLTAtQC1QLWAtcC2ALZV05TQ29sb3JcTlNDb2xvclNwYWNlW05TQ29sb3JOYW1lXU5TQ2F0 -YWxvZ05hbWWAjoCNEAaAjICLVlN5c3RlbVxjb250cm9sQ29sb3LTAA4C0gLdAtUBzwLfV05TV2hpdGWA -jkswLjY2NjY2NjY5ANIAOgA7AuEC0aIC0QA/1QAOAtEC0gLTAtQC1QLkAtcC5QLZgI6AkYCQgItfEBBj -b250cm9sVGV4dENvbG9y0wAOAtIC3QLVAc8C6oCOQjAA0gA6ADsC7ALtpALtAQcAwwA/XxAPTlNUZXh0 -RmllbGRDZWxs0gA6ADsC7wLwpQLwAQsBDAENAD9bTlNUZXh0RmllbGTXAMEADgDCAMMAxADFAMYBeQK6 -AvQC9QDLAMwBeYBDgJOAlYCWCYBDXxAVe3sxNywgMjEyfSwgezU1LCAyMH192ADWAA4CwQDcAN0A3gDg -AsIA4gLDAsQC/ADqArQCyALJgJKAioCXgB6AlICPWENvbG9yczoK1wDBAA4AwgDDAMQAxQDGAXkCugME -AwUAywDMAXmAQ4CTgJmAmgmAQ18QFnt7MzYsIDE5MH0sIHszOTIsIDE0fX3YANYADgLBANwA3QDeAOAC -wgDiAsMCxAMMAsYCtQLIAsmAkoCKgJuAiYCYgI9fEDRUaGlzIG9wdGlvbiB0YWtlcyBlZmZlY3Qgd2hl -biBYMTEgaXMgbGF1bmNoZWQgYWdhaW4u1wDBAA4AwgDDAMQAxQDGAXkAyAMUAxUAywDMAXmAQ4AlgJ2A -ngmAQ18QFnt7MTgsIDE1Nn0sIHs0MDksIDIzfX3dANYADgDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDj -AJcA5QDmAOcAlwMeAOoCtgDsAO0A7oAkgA6AIYAOgJ+AHoCcXxAQRnVsbCBzY3JlZW4gbW9kZdcAwQAO -AMIAwwDEAMUAxgF5AroDJQMmAMsAzAF5gEOAk4ChgKIJgENfEBZ7ezM2LCAxMTl9LCB7Mzg1LCAzMX19 -2ADWAA4CwQDcAN0A3gDgAsIA4gLDAsQDLQLGArcCyALJgJKAioCjgImAoICPXxBkRW5hYmxlcyB0aGUg -WDExIHJvb3Qgd2luZG93LiBVc2UgdGhlIENvbW1hbmQtT3B0aW9uLUEga2V5c3Ryb2tlIHRvIGVudGVy -IGFuZCBsZWF2ZSBmdWxsIHNjcmVlbiBtb2RlLl8QFnt7MTAsIDMzfSwgezQzOCwgMjUzfX3SADoAOwM0 -AQyjAQwBDQA/XxAVe3sxMCwgN30sIHs0NTgsIDI5OX190gAOAEUATQM4gD6jAzkCqQM7gKiAvoDB1gAO -Az0BDAM+AtEAiAM/A0AAxwGAAsQDRFxOU0lkZW50aWZpZXJZTlNUYWJWaWV3gL2AqYAagIKAioC80gAO -ADYANwNHgARRMdIADgBFAE0DSoA+pgJMA0wDTQNOA08AvoBxgKuAr4CzgLeAGdcAwQAOAMIAwwDEAMUA -xgDHAroDVANVAMsAzADHgBqAk4CsgK0JgBpfEBV7ezM2LCA2N30sIHszODUsIDMxfX3YANYADgLBANwA -3QDeAOACwgDiAsMCxANcAsYDTALIAsmAkoCKgK6AiYCrgI9fEGZXaGVuIGVuYWJsZWQsIG1lbnUgYmFy +AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEDQgALAAwAMQA1ADkAQABD +AEQASABMAIkAkQCZAJoAnwCyALMAuAC5ALoAvQDBAMIAxQDQANEA0gDWANsA5ADrAOwA8ADyAPMA9wD8 +AQoBEgETAS0BLgE1ATYBOQE9AT4BQAFCAUYBTAFPAVABUQFUAVkBYAFlAWYBZwFsAXMBeAF5AXoBewGA +AYcBjQGOAZkBmgGeAZ8BogGjAagBrwGwAbgBuQG6Ab8BwAHFAcwB0QHSAekB7AHuAfAB/QIBAgICAwIG +Ag0CFwICAhgCIgICAiMCLQICAi4CMgI1AjYCOwJDAkQCRQJKAlMCVwJYAl0CZAJlAm0CbgJzAnsCfAJ9 +An4CgwKIAo8ClAKVAp0CngKjAqoCqwKzArQCuQLBAsICwwLEAskC0QLSAtMC1ALZAtoC3wLgAuQC6wLv +AvAC8QL1AvwC/QL+Av8DBAMJAwoDEgMbANEDHAMrAzIDMwM0Az0DRgDRA0cDTANOA1EDUgNbA2QDawNs +A20DdAN1A34DhQOGA4cDiADRA5EDlgOdA54DpwDRA6gDswO6A7sDvAPDA8QDxQPOA9UD1gPXA94D3wPg +A+cD6APxANED8gP0BAAEBwQIBAkEEAQRBBoEIwQqBCsENAQ1BD4A0QQ/BEMERwROBE8EUARRBFYEWwRi +BGMEawRsBG0EcgRzBHgEfwSABIgEiQSLBI0EjgSSBJMEmASZBJ4EnwSkBMAEwQTCBMMExgTHBMgEzQTR +BOEE5QTwBPcE+AUCBQMFCAUSBRMFFAUYBRoFHwUgBSMFJgUpBTAFMQU4BTkFQAVBBUgFSQVQBVEFWAVZ +BVoFXAVdBWMFbAVvBXAFcwV6BX0FhwWOBY8FlwWYBZ8FoAWnBagFrwWwBbcFuAW/BcAFxwXIBc8F0AXX +BVkF2AXZBd8F5wKqBe4F9gX3Bf4F/wYGBgcGDgYPBhYGFwYeBh8GJgVZBicGKAYqBisGLATGBi0GLgYx +BjIGNwY4Bj0GPgZDBkQGSQZKBk8GVwZYBmEGYgZkBmYGZwZsBnEGcgZ2BncGfAaDBoQGjAaNBo8GkQaS +BpcGmAadBrgGxwbIBs8G2AbZBtwG4Qb2BvcG+gcABxIHGQcaBx0HIgcjByYHLgcvBzIHNQc+B0QHRQdM +B1UHWwdcB2EHYgdqB24Hcwd0B3kHegd9B38HgAeFB4YHiweMB5EHkgeXB5sHnAehB6IHpwesB60HsQey +B7cHuAe9B74HwwfEB8kHygfPB9AH1AfVB9oH2wfgB+cH6AfwB/EH8wf0CHgIgAiECIUIiAiRCJIIkwiW +CJ4InwijCKQIpQioCLYItwi4BMYExwi6CMMGKwYsBMYIxAjFADgIyAjKCU4J0wpYClkKWgpbClwKXQpe +Cl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8 +Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLBMUKjAqNCo4KjwqQCpEKkgqTCpQKlQqWCpcKmAqZ +CpoKmwqcCp0KngqfCqAKoQqiCqMKpAqlCqYKpwqoCqkKqgqrCqwKrQquCq8KsAqxCrIKswq0CrUKtgq3 +CrgKuQq6CrsKvAq9Cr4KvwrACsEKwgrDCsQKxQrGCscKyArJCsoKywrMCs0KzgrPCtAK0QrSCtMK1ArV +CtYK1wraCt0LnAxbDFwMXQxeDF8MYAxhDGIMYwxkDGUMZgxnDGgMaQxqDGsMbAxtDG4MbwxwDHEMcgxz +DHQMdQx2DHcMeAx5DHoMewx8DH0Mfgx/DIAMgQyCDIMMhAyFDIYMhwyIDIkMigyLDIwMjQyODI8MkAyR +DJIMkwyUDJUMlgyXDJgMmQyaDJsMnAydDJ4MnwygDKEMogyjDKQMpQymDKcMqAypDKoMqwysDK0Mrgyv +DLAMsQyyDLMMtAy1DLYMtwy4DLkMugy7DLwMvQy+DL8MwAzBDMIMwwzEDMUMxgzHDMgMyQzKDMsMzAzN +AiwMzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6Qzq +DOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoBBwz7DPwM/Qz+DP8NAA0BDQINAw0EDQUGVA0G +DQcNCA0JDQoNCw0MDQ0NDg0PDRANEQ0SDRMNFA0XDRoNHVUkbnVsbN8QEgANAA4ADwAQABEAEgATABQA +FQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMFZOU1Jv +b3RWJGNsYXNzXU5TT2JqZWN0c0tleXNfEA9OU0NsYXNzZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlP +aWRzVmFsdWVzXU5TQ29ubmVjdGlvbnNbTlNOYW1lc0tleXNbTlNGcmFtZXdvcmtdTlNDbGFzc2VzS2V5 +c1pOU09pZHNLZXlzXU5TTmFtZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlDb25uZWN0b3JzXU5TRm9u +dE1hbmFnZXJfEBBOU1Zpc2libGVXaW5kb3dzXxAPTlNPYmplY3RzVmFsdWVzXxAXTlNBY2Nlc3NpYmls +aXR5T2lkc0tleXNZTlNOZXh0T2lkXE5TT2lkc1ZhbHVlc4ACgQNBgQHdgQJ/gQNAgAmBAfyABoECfoEC +gIEB/YEDPoAAgAeBAfuBAz8SAASVMIECgdIADgAyADMANFtOU0NsYXNzTmFtZYAFgAPSAA4ANgA3ADhZ +TlMuc3RyaW5ngARdTlNBcHBsaWNhdGlvbtIAOgA7ADwAPVgkY2xhc3Nlc1okY2xhc3NuYW1lowA9AD4A +P18QD05TTXV0YWJsZVN0cmluZ1hOU1N0cmluZ1hOU09iamVjdNIAOgA7AEEAQqIAQgA/Xk5TQ3VzdG9t +T2JqZWN0XxAQSUJDb2NvYUZyYW1ld29ya9IADgBFAEYAR1pOUy5vYmplY3RzgAig0gA6ADsASQBKowBK +AEsAP1xOU011dGFibGVTZXRVTlNTZXTSAA4ARQBNAE6AH68QOgBPAFAAUQBSAFMAVABVAFYAVwBYAFkA +WgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcA +eAB5AHoAewB8AH0AfgB/AIAAgQCCAIMAhACFAIYAhwCIgAqAI4A2gDuAQYBLgFGAU4BtgHGAdYB6gH+A +gICGgIuAkICVgJeAmYCegKOA84D0gPqA/IEBBIEBBoEBCIEBCoEBb4EBcYEBc4EBdYEBd4EBf4EBgIEB +goEBhIEBjIEBjoEBuIEBuoEBvIEBvoEBv4EBwYEBw4EBxIEBxoEByIEByoEBzIEBzoEB0IEB0oEB1IEB +1tQADgCKAIsAjACNAI4AHwCQXU5TRGVzdGluYXRpb25YTlNTb3VyY2VXTlNMYWJlbIAigAuAAoAh1AAO +AJIAkwCUAJUAlgCXAJhXTlNUaXRsZVZOU05hbWVbTlNNZW51SXRlbXOAIIAMgA+ADVRNZW510gAOAEUA +TQCcgB+iAJ0AnoAOgBfaAA4AkgCgAKEAogCjAKQApQCmAKcAqACXAKoAqwCXAKsArgCvALAAjl8QEU5T +S2V5RXF1aXZNb2RNYXNrXU5TSXNTZXBhcmF0b3JaTlNLZXlFcXVpdlxOU0lzRGlzYWJsZWRdTlNNbmVt +b25pY0xvY1lOU09uSW1hZ2VcTlNNaXhlZEltYWdlVk5TTWVudYAWgA8SABAAAAmADwkSf////4AQgBSA +C1DTAA4AMgC0ALUAtgC3Xk5TUmVzb3VyY2VOYW1lgBOAEYASV05TSW1hZ2VfEA9OU01lbnVDaGVja21h +cmvSADoAOwC7ALyiALwAP18QEE5TQ3VzdG9tUmVzb3VyY2XTAA4AMgC0ALUAtgDAgBOAEYAVXxAQTlNN +ZW51TWl4ZWRTdGF0ZdIAOgA7AMMAxKIAxAA/Wk5TTWVudUl0ZW3aAA4AxgCSAKAAogCkAKUApgCnAMcA +qADJAMoAqgCXAK4ArwCwAI4Az1lOU1N1Ym1lbnVYTlNBY3Rpb26AFoAagBiAD4AQgBSAC4AZXEFwcGxp +Y2F0aW9uc15zdWJtZW51QWN0aW9uOtMADgCSAJQAlQDKANWAIIAYgBvSAA4ARQBNANiAH6IA2QDagByA +HdoADgCSAKAAoQCiAKMApAClAKYApwCoAJcAqgCrAJcAqwCuAK8AsADJgBaADwmADwmAEIAUgBrYAA4A +kgCgAKIApAClAKYApwCoAOYAqgCXAK4ArwCwAMmAFoAegA+AEIAUgBpqAEMAdQBzAHQAbwBtAGkAegBl +ICbSADoAOwDtAO6jAO4A7wA/Xk5TTXV0YWJsZUFycmF5V05TQXJyYXnSADoAOwDxAKeiAKcAP1hkb2Nr +TWVuddIAOgA7APQA9aMA9QD2AD9fEBROU05pYk91dGxldENvbm5lY3Rvcl5OU05pYkNvbm5lY3RvctQA +DgCKAIsAjAD4APkA+gD7gDWAMoAkgDTXAP0ADgD+AP8BAAEBAQIBAwEEAQUBBgEHAKsBA18QD05TTmV4 +dFJlc3BvbmRlcldOU0ZyYW1lVk5TQ2VsbFhOU3ZGbGFnc1lOU0VuYWJsZWRbTlNTdXBlcnZpZXeAJYAx +gCaAJxEBLQmAJdUA/QAOAQsBAAEMACsBDgEPARABEVpOU1N1YnZpZXdzW05TRnJhbWVTaXplgACBATOB +AfIRAQCBAfNfEBd7ezM3MiwgMjc5fSwgezEwMCwgMzJ9fd0BFAAOARUBFgEXARgBGQEaARsBHAEdAR4B +HwEgASEBIgEjASQBJQEmAScBKAD6ASoBKwEsW05TQ2VsbEZsYWdzXxATTlNBbHRlcm5hdGVDb250ZW50 +c18QEk5TUGVyaW9kaWNJbnRlcnZhbF5OU0J1dHRvbkZsYWdzMl8QEE5TQWx0ZXJuYXRlSW1hZ2VfEA9O +U0tleUVxdWl2YWxlbnRaTlNDb250ZW50c1lOU1N1cHBvcnRdTlNDb250cm9sVmlld18QD05TUGVyaW9k +aWNEZWxheVxOU0NlbGxGbGFnczJdTlNCdXR0b25GbGFncxIEAf4AgDCALhAZEAGALIAvgCiAKYAkEMgS +CDgAABP/////hoJA/1hBZGQgSXRlbdQADgEvAJMBMAExATIBMwE0Vk5TU2l6ZVhOU2ZGbGFnc4ArI0Aq +AAAAAAAAgCoRBBRcTHVjaWRhR3JhbmRl0gA6ADsBNwE4ogE4AD9WTlNGb2501AAOAS8AkwEwATEBMgE7 +ATyAK4AtEBBZSGVsdmV0aWNh0gAOADYANwCygATSAA4ANgA3ALKABNIAOgA7AUMBRKQBRAFFAP8AP1xO +U0J1dHRvbkNlbGxcTlNBY3Rpb25DZWxs0gA6ADsBRwFIpQFIAUkBSgFLAD9YTlNCdXR0b25ZTlNDb250 +cm9sVk5TVmlld1tOU1Jlc3BvbmRlctIADgAyADMBToAFgDNdWDExQ29udHJvbGxlcl8QD2FwcHNfdGFi +bGVfbmV3OtIAOgA7AVIBU6MBUwD2AD9fEBVOU05pYkNvbnRyb2xDb25uZWN0b3LUAA4AigCLAIwA+AAf +AVcBWIA1gAKAN4A61wAOAJIAogCkAKUApgCnAKgBWwCXAK4ArwCwAV+AFoA5gA+AEIAUgDjUAA4AkgCT +AJQAlQFiAWMBZIAggKiAwYCqWUFib3V0IFgxMV8QHW9yZGVyRnJvbnRTdGFuZGFyZEFib3V0UGFuZWw6 +1AAOAIoAiwCMAPgA+QFqAWuANYAygDyAQNgADgCSAKAAogCkAKUApgCnAKgBbgCqAW8ArgCvALABcoAW +gD6AP4AQgBSAPdQADgCSAJMAlACVAXUBdgF3gCCA3YDpgN5VQ2xvc2VRd11jbG9zZV93aW5kb3c61AAO +AIoAiwCMAI0BfQD5AX+AIoBCgDKAStcA/QAOAP4A/wEAAQEBAgGBAQQBgwGEARAAqwGBgEOAMYBEgEUJ +gEPWAP0ADgD+AQsBAAECAYgBDgGKAYsBEAGIgQEUgQEzgQEygQEWgQEUXxAWe3sxOCwgMTMwfSwgezQw +MiwgMTh9fd0BFAAOARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEAlwEjAZEBkgCXAZQBKAF9ASoBlwGY +gDCADxACgEeAD4BGgCmAQhAAEkg8Uf9fECBFbmFibGUga2V5IGVxdWl2YWxlbnRzIHVuZGVyIFgxMdIA +DgGbAZwBnVtOU0ltYWdlTmFtZYBJgEhYTlNTd2l0Y2jSADoAOwGgAaGiAaEAP18QE05TQnV0dG9uSW1h +Z2VTb3VyY2VfEBBlbmFibGVfa2V5ZXF1aXZz1AAOAIoAiwCMAPgA+QGmAaeANYAygEyAUNcA/QAOAP4A +/wEAAQEBAgGBAQQBqwGsARAAqwGBgEOAMYBNgE4JgENfEBZ7ezE4LCAxNzl9LCB7NDAyLCAxOH193QEU +AA4BFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQCXASMBkQGSAJcBtQEoAaYBKgGXAZiAMIAPgEeAD4BP +gCmATF8QHUZvbGxvdyBzeXN0ZW0ga2V5Ym9hcmQgbGF5b3V0XnByZWZzX2NoYW5nZWQ61AAOAIoAiwCM +AI0AjgD5Ab6AIoALgDKAUllkb2NrX21lbnXUAA4AigCLAIwAjQHCAPkBxIAigFSAMoBs1wD9AA4A/gD/ +AQABAQECAcYBxwHIAckBEACrAcaAVYBrgFaAVwmAVdUA/QAOAP4BCwEAACsBDgHPAdABEIAAgQEzgQFR +gQE8XxAWe3s3NCwgMjM1fSwgezEyOCwgMjZ9fd8QEwEUAdMB1AEVARYADgEXARgBGQEbAMQBHAHVAdYB +1wEdAR4ApwEfAdgAqwEkAdoB2wHcASQB3QHeASgB4AHCAeIAqwCrAeUB5gHnAehfEBpOU01lbnVJdGVt +UmVzcGVjdEFsaWdubWVudF8QD05TQXJyb3dQb3NpdGlvbl8QD05TUHJlZmVycmVkRWRnZV8QEk5TVXNl +c0l0ZW1Gcm9tTWVudV1OU0FsdGVyc1N0YXRlE/////+EQf5ACYBZEEuAaoBYgFqAKYBbgFQQAwkJEQGQ +EQQAgFwSBoJA/9QADgEvAJMBMAExATIBMwE8gCuAKtIADgA2ADcAsoAE0gAOADYANwCygATcAfEADgCS +AKAAogCkAKUApgCnAMcB8gHzAckAqAH2AKoAlwCuAK8AsAHnAfsB/AEkWE5TVGFyZ2V0VU5TVGFnV05T +U3RhdGWAV4AWgF2AD4AQgBSAXIBeE///////////0wAOAJIAlACVAf8CAIAggF+AYFxGcm9tIERpc3Bs +YXlfEBFfcG9wVXBJdGVtQWN0aW9uOtIADgA2ADcCBYAEWk90aGVyVmlld3PSAA4ARQBNAgiAH6QB4AIK +AgsCDIBbgGGAZIBn2wHxAA4AkgCgAKIApAClAKYApwDHAfIByQCoAhAAqgCXAK4ArwCwAecCFQIWgFeA +FoBigA+AEIAUgFyAYxAIWjI1NiBDb2xvcnPbAfEADgCSAKAAogCkAKUApgCnAMcB8gHJAKgCGwCqAJcA +rgCvALAB5wIgAiGAV4AWgGWAD4AQgBSAXIBmEA9ZVGhvdXNhbmRz2wHxAA4AkgCgAKIApAClAKYApwDH +AfIByQCoAiYAqgCXAK4ArwCwAecCKwIsgFeAFoBogA+AEIAUgFyAaRAYWE1pbGxpb25z0gA6ADsCLwIw +pgIwAjEBRAFFAP8AP18QEU5TUG9wVXBCdXR0b25DZWxsXk5TTWVudUl0ZW1DZWxs0gA6ADsCMwI0pgI0 +AUgBSQFKAUsAP11OU1BvcFVwQnV0dG9uVWRlcHRo1AAOAIoAiwCMAPgAHwI5AjqANYACgG6AcNkADgCS +AKAAogCkAKUApgCnAfIAqAI9AKoAlwCuAK8AsAFfAkKAFoBvgA+AEIAUgDgQKlhTaG93IEFsbF8QFnVu +aGlkZUFsbEFwcGxpY2F0aW9uczrUAA4AigCLAIwAjQJHAPkCSYAigHKAMoB02gAOAJIAoAChAKIAowCk +AKUApgCnAKgAlwCqAKsAlwCrAK4ArwCwAlKAFoAPCYAPCYAQgBSAc9MADgCSAJQAlQDKAlaAIIAYgMRe +YXBwc19zZXBhcmF0b3LUAA4AigCLAIwA+AD5AlsBp4A1gDKAdoBQ1wD9AA4A/gD/AQABAQECAYEBBAJg +AmEBEACrAYGAQ4AxgHeAeAmAQ18QFXt7MTgsIDY5fSwgezQwMiwgMTh9fd0BFAAOARUBFgEXARgBGQEa +ARsBHAEdAR4BHwEgASEAlwEjAZEBkgCXAmoBKAJbASoBlwGYgDCAD4BHgA+AeYApgHZfEB5DbGljay10 +aHJvdWdoIEluYWN0aXZlIFdpbmRvd3PUAA4AigCLAIwA+AD5AnECcoA1gDKAe4B+2AAOAJIAoACiAKQA +pQCmAKcAqAJ1AnYCdwCuAK8AsAFygBaAfBIAEAEIgH2AEIAUgD1fEBVDeWNsZSBUaHJvdWdoIFdpbmRv +d3NRYFxuZXh0X3dpbmRvdzrUAA4AigCLAIwA+AD5AcIBp4A1gDKAVIBQ1AAOAIoAiwCMAPgA+QKGAaeA +NYAygIGAUNcA/QAOAP4A/wEAAQEBAgKJAQQCiwKMARAAqwKJgIKAMYCDgIQJgILVAP0ADgD+AQsBAAAr +AQ4CkgKTARCAAIEBM4EBZYEBVF8QFnt7MTgsIDE2Nn0sIHs0MDIsIDE4fX3dARQADgEVARYBFwEYARkB +GgEbARwBHQEeAR8BIAEhAJcBIwGRAZIAlwKaASgChgEqAZcBmIAwgA+AR4APgIWAKYCBXxAmQWxsb3cg +Y29ubmVjdGlvbnMgZnJvbSBuZXR3b3JrIGNsaWVudHPUAA4AigCLAIwA+AD5AqEBp4A1gDKAh4BQ1wD9 +AA4A/gD/AQABAQECAYEBBAKmAqcBEACrAYGAQ4AxgIiAiQmAQ18QFnt7MTgsIDI0M30sIHs0MDIsIDE4 +fX3dARQADgEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhAJcBIwGRAZIAlwKwASgCoQEqAZcBmIAwgA+A +R4APgIqAKYCHXxAaRW11bGF0ZSB0aHJlZSBidXR0b24gbW91c2XUAA4AigCLAIwAjQK2APkCuIAigIyA +MoCP2AAOAJIAoACiAKQApQCmAKcAqAK7ArwCvQCuAK8AsAFfgBaAjRIAGAAAgI6AEIAUgDhfEBJUb2dn +bGUgRnVsbCBTY3JlZW5RYV8QFnRvZ2dsZV9mdWxsc2NyZWVuX2l0ZW3UAA4AigCLAIwA+AD5AscCyIA1 +gDKAkYCU2AAOAJIAoACiAKQApQCmAKcAqALLAswCzQCuAK8AsAFygBaAkhIAEgEKgJOAEIAUgD1fEB1S +ZXZlcnNlIEN5Y2xlIFRocm91Z2ggV2luZG93c1F+XxAQcHJldmlvdXNfd2luZG93OtQADgCKAIsAjACN +AVcA+QLYgCKAN4AygJZeeDExX2Fib3V0X2l0ZW3UAA4AigCLAIwAjQDJAPkC3oAigBqAMoCYXmRvY2tf +YXBwc19tZW510wAOAIsAjAD4AuIC44A1gJqAndgADgCSAKAAogCkAKUApgCnAKgC5gCqAr0ArgCvALAC +6oAWgJyAjoAQgBSAm9MADgCSAJQAlQLtAu6AIIDIgMpaU2VsZWN0IEFsbFpzZWxlY3RBbGw60wAOAIsA +jAD4AvMC9IA1gJ+AotgADgCSAKAAogCkAKUApgCnAKgC9wCqAvgArgCvALAC6oAWgKCAoYAQgBSAm1RD +b3B5UWNVY29weTrUAA4AigCLAIwAjQMBAB8DA4AigKSAAoDy1AAOAJIAkwCUAJUDBgMHAwiAIIClgPGA +plhNYWluTWVuddIADgBFAE0DDIAfpQMNAw4DDwMQAxGAp4DCgMeA2oDq2gAOAMYAkgCgAKIApAClAKYA +pwDHAKgBXwFiAKoAlwCuAK8AsAMBAxqAFoA4gKiAD4AQgBSApICpU1gxMdIADgBFAE0DHoAfrAFXAyAD +IQMiAyMCtgMlAyYDJwI5AykDKoA3gKuAroCvgLaAjIC3gLiAu4BugL2AvtgADgCSAKAAogCkAKUApgCn +AKgDLQCqAy4ArgCvALABX4AWgKyArYAQgBSAOF5QcmVmZXJlbmNlcy4uLlEs2gAOAJIAoAChAKIAowCk +AKUApgCnAKgAlwCqAKsAlwCrAK4ArwCwAV+AFoAPCYAPCYAQgBSAONoADgDGAJIAoACiAKQApQCmAKcA +xwCoAz8DQACqAJcArgCvALABXwNFgBaAsoCwgA+AEIAUgDiAsVhTZXJ2aWNlc9QADgCSAJMAlACVA0kD +SgNLgCCAs4C1gLTSAA4ANgA3A0aABNIADgBFAE0DUIAfoF8QD19OU1NlcnZpY2VzTWVuddoADgCSAKAA +oQCiAKMApAClAKYApwCoAJcAqgCrAJcAqwCuAK8AsAFfgBaADwmADwmAEIAUgDjaAA4AkgCgAKEAogCj +AKQApQCmAKcAqACXAKoAqwCXAKsArgCvALABX4AWgA8JgA8JgBCAFIA42QAOAJIAoACiAKQApQCmAKcB +8gCoA2YAqgNnAK4ArwCwAV8CQoAWgLmAuoAQgBSAOFhIaWRlIFgxMVFo2AAOAJIAoACiAKQApQCmAKcA +qANvAKoAlwCuAK8AsAFfgBaAvIAPgBCAFIA4W0hpZGUgT3RoZXJz2gAOAJIAoAChAKIAowCkAKUApgCn +AKgAlwCqAKsAlwCrAK4ArwCwAV+AFoAPCYAPCYAQgBSAONgADgCSAKAAogCkAKUApgCnAKgDgACqA4EA +rgCvALABX4AWgL+AwIAQgBSAOFhRdWl0IFgxMVFxXF9OU0FwcGxlTWVuddoADgDGAJIAoACiAKQApQCm +AKcAxwCoAlIAygCqAJcArgCvALADAQOQgBaAc4AYgA+AEIAUgKSAw9IADgBFAE0Dk4AfogJHA5WAcoDF +2AAOAJIAoACiAKQApQCmAKcAqAOYAKoAlwCuAK8AsAJSgBaAxoAPgBCAFIBzXEN1c3RvbWl6ZS4uLtoA +DgDGAJIAoACiAKQApQCmAKcAxwCoAuoC7QCqAJcArgCvALADAQOmgBaAm4DIgA+AEIAUgKSAyVRFZGl0 +0gAOAEUATQOqgB+oA6sDrAOtA64C8wOwA7EC4oDLgM6A0YDSgJ+A1YDYgJrYAA4AkgCgAKIApAClAKYA +pwCoA7UAqgO2AK4ArwCwAuqAFoDMgM2AEIAUgJtUVW5kb1F62AAOAJIAoACiAKQApQCmAKcAqAO+AKoD +vwCuAK8AsALqgBaAz4DQgBCAFICbVFJlZG9RWtoADgCSAKAAoQCiAKMApAClAKYApwCoAJcAqgCrAJcA +qwCuAK8AsALqgBaADwmADwmAEIAUgJvYAA4AkgCgAKIApAClAKYApwCoA9AAqgPRAK4ArwCwAuqAFoDT +gNSAEIAUgJtTQ3V0UXjYAA4AkgCgAKIApAClAKYApwCoA9kAqgPaAK4ArwCwAuqAFoDWgNeAEIAUgJtV +UGFzdGVRdtgADgCSAKAAogCkAKUApgCnAKgD4gCqAJcArgCvALAC6oAWgNmAD4AQgBSAm1ZEZWxldGXa +AA4AxgCSAKAAogCkAKUApgCnAMcAqAFyA+sAqgCXAK4ArwCwAwED8IAWgD2A24APgBCAFICkgNxWV2lu +ZG930gAOADYANwPxgATSAA4ARQBNA/aAH6kD9wP4AnECxwP7AWoD/QP+A/+A34DigHuAkYDkgDyA5YDm +gOjYAA4AkgCgAKIApAClAKYApwCoBAIAqgQDAK4ArwCwAXKAFoDggOGAEIAUgD1YTWluaW1pemVRbdgA +DgCSAKAAogCkAKUApgCnAKgECwCqAJcArgCvALABcoAWgOOAD4AQgBSAPVRab29t2gAOAJIAoAChAKIA +owCkAKUApgCnAKgAlwCqAKsAlwCrAK4ArwCwAXKAFoAPCYAPCYAQgBSAPdoADgCSAKAAoQCiAKMApACl +AKYApwCoAJcAqgCrAJcAqwCuAK8AsAFygBaADwmADwmAEIAUgD3YAA4AkgCgAKIApAClAKYApwCoBCUA +qgCXAK4ArwCwAXKAFoDngA+AEIAUgD1fEBJCcmluZyBBbGwgdG8gRnJvbnTaAA4AkgCgAKEAogCjAKQA +pQCmAKcAqACXAKoAqwCXAKsArgCvALABcoAWgA8JgA8JgBCAFIA9Xl9OU1dpbmRvd3NNZW512gAOAMYA +kgCgAKIApAClAKYApwDHAKgENwQ4AKoAlwCuAK8AsAMBBD2AFoDtgOuAD4AQgBSApIDsVEhlbHDTAA4A +kgCUAJUEOARCgCCA64Du0gAOAEUATQRFgB+hBEaA79gADgCSAKAAogCkAKUApgCnAKgESQCqAJcArgCv +ALAEN4AWgPCAD4AQgBSA7VhYMTEgSGVscFtfTlNNYWluTWVudVRtZW511AAOAIoAiwCMAPgA+QF9AaeA +NYAygEKAUNQADgCKAIsAjACNBFgA+QRagCKA9YAygPnXAP0ADgD+AP8BAAEBAQIBxgEEBF4EXwEQAKsB +xoBVgDGA9oD3CYBVXxAWe3sxOCwgMTgyfSwgezQwOSwgMjN9fd0BFAAOARUBFgEXARgBGQEaARsBHAEd +AR4BHwEgASEAlwEjAZEBkgCXBGgBKARYASoBlwGYgDCAD4BHgA+A+IApgPVfEBBGdWxsIHNjcmVlbiBt +b2RlXxARZW5hYmxlX2Z1bGxzY3JlZW7UAA4AigCLAIwA+AD5BFgEcYA1gDKA9YD7XxAaZW5hYmxlX2Z1 +bGxzY3JlZW5fY2hhbmdlZDrUAA4AigCLAIwA+AD5BHYEd4A1gDKA/YEBA9cA/QAOAP4A/wEAAQEBAgED +AQQEewR8AQcAqwEDgCWAMYD+gP8JgCVfEBd7ezM3MiwgMjE1fSwgezEwMCwgMzJ9fd0BFAAOARUBFgEX +ARgBGQEaARsBHAEdAR4BHwEgASEEggEjASQBJQSEBIUBKAR2ASoBKwEsgDCBAQGALIEBAoEBAIApgP1W +UmVtb3Zl0gAOADYANwCygATSAA4ANgA3ALKABF8QEmFwcHNfdGFibGVfZGVsZXRlOtMADgCLAIwA+AOr +BJGANYDLgQEFVXVuZG861AAOAIoAiwCMAPgA+QMgBJeANYAygKuBAQdbcHJlZnNfc2hvdzrUAA4AigCL +AIwA+AD5ArYEnYA1gDKAjIEBCV8QEnRvZ2dsZV9mdWxsc2NyZWVuOtQADgCKAIsAjACNBKEA+QSjgCKB +AQuAMoEBbt8QDwSlAA4EpgSnBKgEqQSqBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8 +BL0BkQHiBL4Ev1xOU1dpbmRvd1ZpZXdfEBZOU1dpbmRvd0NvbnRlbnRNYXhTaXplXE5TU2NyZWVuUmVj +dF8QE05TRnJhbWVBdXRvc2F2ZU5hbWVdTlNXaW5kb3dUaXRsZVlOU1dURmxhZ3NdTlNXaW5kb3dDbGFz +c18QFk5TV2luZG93Q29udGVudE1pblNpemVcTlNXaW5kb3dSZWN0WU5TTWF4U2l6ZV8QD05TV2luZG93 +QmFja2luZ18QEU5TV2luZG93U3R5bGVNYXNrWU5TTWluU2l6ZVtOU1ZpZXdDbGFzc4EBEoEBbYEBEIEB +aYEBbIEBDRJQeAAAgQEOgQERgQEMgQFrgQFqgQEPXxAYe3szMTksIDI5NH0sIHs0ODEsIDM0NX19XxAP +WDExIFByZWZlcmVuY2VzV05TUGFuZWzSAA4ANgA3BMWABFRWaWV3XxAaezMuNDAyODJlKzM4LCAzLjQw +MjgyZSszOH1aezIxMywgMTA3fdUA/QAOAQsBAAEMACsBDgTLARAEzIAAgQEzgQETgQFo0gAOAEUATQTP +gB+hAYiBARTcAP0ADgTSBNMA/gE4AQsBAATUAQIE1QTWBLME2ATZAZcE2gEoBNwBEACrBLMAqwTgXk5T +VGFiVmlld0l0ZW1zWU5TVHZGbGFnc18QEU5TRHJhd3NCYWNrZ3JvdW5kXxAWTlNBbGxvd1RydW5jYXRl +ZExhYmVsc18QFU5TU2VsZWN0ZWRUYWJWaWV3SXRlbYEBEoEBZ4EBNYEBNIApgQEVCYEBEgmBATbSAA4A +RQBNBOOAH6EBgYBD0gAOAEUATQTngB+oAqEE6QTqAX0E7AGmAlsE74CHgQEXgQEmgEKBASqATIB2gQEu +1wD9AA4A/gD/AQABAQECAYEE8gTzBPQBEACrAYGAQ4EBJYEBGIEBGQmAQ18QFXt7MzYsIDkzfSwgezM4 +NSwgMzF9fdgBFAAOBPkBGgEbARwBHgT6ASAE+wT8BP0E/gTpBQAFAV8QEU5TQmFja2dyb3VuZENvbG9y +W05TVGV4dENvbG9ygQEkgQEcgQEagQEbgQEXEgBAAACBASFfEGZXaGVuIGVuYWJsZWQsIG1lbnUgYmFy IGtleSBlcXVpdmFsZW50cyBtYXkgaW50ZXJmZXJlIHdpdGggWDExIGFwcGxpY2F0aW9ucyB0aGF0IHVz -ZSB0aGUgTWV0YSBtb2RpZmllci7XAMEADgDCAMMAxADFAMYAxwK6A2QDZQDLAMwAx4AagJOAsICxCYAa -XxAWe3szNiwgMTgyfSwgezM4NSwgMjl9fdgA1gAOAsEA3ADdAN4A4ALCAOICwwLEA2wCxgNNAsgCyYCS -gIqAsoCJgK+Aj18QV0hvbGQgT3B0aW9uIGFuZCBDb21tYW5kIHdoaWxlIGNsaWNraW5nIHRvIGFjdGl2 -YXRlIHRoZSBtaWRkbGUgYW5kIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCtcAwQAOAMIAwwDEAMUAxgDHAMgD -dAN1AMsAzADHgBqAJYC0gLUJgBpfEBZ7ezE4LCAxMDR9LCB7NDAyLCAxOH193QDWAA4A1wDYANkA2gDb -ANwA3QDeAN8A4ADhAOIA4wCXAOUA5gDnAJcDfgDqA04A7ADtAO6AJIAOgCGADoC2gB6As18QIEVuYWJs -ZSBrZXkgZXF1aXZhbGVudHMgdW5kZXIgWDEx1wDBAA4AwgDDAMQAxQDGAMcCugOFA4YAywDMAMeAGoCT -gLiAuQmAGl8QFnt7MzYsIDEzM30sIHszODUsIDE0fX3YANYADgLBANwA3QDeAOACwgDiAsMCxAONAsYD -TwLIAsmAkoCKgLqAiYC3gI9fED5BbGxvd3MgaW5wdXQgbWVudSBjaGFuZ2VzIHRvIG92ZXJ3cml0ZSB0 -aGUgY3VycmVudCBYMTEga2V5bWFwLlVJbnB1dNIAOgA7A5QDlaIDlQA/XU5TVGFiVmlld0l0ZW3WAA4D -PQEMAz4C0QCIAz8DmAF5AYACxAOcgL2Av4BDgIKAioDA0gAOADYANwOfgARRMlZPdXRwdXTVAA4BDAM+ -AtEAiAM/AZUBgALEA6aAvYBJgIKAioDU0gAOAEUATQOpgD6lA6oBkQOsA60DroDDgEiAx4DLgM/XAMEA -DgDCAMMAxADFAMYBlQDIA7IDswDLAMwBlYBJgCWAxIDFCYBJ3QDWAA4A1wDYANkA2gDbANwA3QDeAN8A -4ADhAOIA4wCXAOUA5gDnAJcDuwDqA6oA7ADtAO6AJIAOgCGADoDGgB6Aw18QGEF1dGhlbnRpY2F0ZSBj -b25uZWN0aW9uc9cAwQAOAMIAwwDEAMUAxgGVAroDwgPDAMsAzAGVgEmAk4DIgMkJgElfEBZ7ezM2LCAx -Njl9LCB7Mzg1LCA0Mn192ADWAA4CwQDcAN0A3gDgAsIA4gLDAsQDygLGA6wCyALJgJKAioDKgImAx4CP -XxCqTGF1bmNoaW5nIFgxMSB3aWxsIGNyZWF0ZSBYYXV0aG9yaXR5IGFjY2Vzcy1jb250cm9sIGtleXMu -IElmIHRoZSBzeXN0ZW0ncyBJUCBhZGRyZXNzIGNoYW5nZXMsIHRoZXNlIGtleXMgYmVjb21lIGludmFs -aWQgd2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy7XAMEADgDC -AMMAxADFAMYBlQK6A9ID0wDLAMwBlYBJgJOAzIDNCYBJXxAVe3szNiwgOTJ9LCB7Mzg1LCA0Mn192ADW -AA4CwQDcAN0A3gDgAsIA4gLDAsQD2gLGA60CyALJgJKAioDOgImAy4CPXxCZSWYgZW5hYmxlZCwgQXV0 -aGVudGljYXRlIGNvbm5lY3Rpb25zIG11c3QgYWxzbyBiZSBlbmFibGVkIHRvIGVuc3VyZSBzeXN0ZW0g -c2VjdXJpdHkuIFdoZW4gZGlzYWJsZWQsIGNvbm5lY3Rpb25zIGZyb20gcmVtb3RlIGFwcGxpY2F0aW9u -cyBhcmUgbm90IGFsbG93ZWQu1wDBAA4AwgDDAMQAxQDGAZUCugPiA+MAywDMAZWASYCTgNCA0QmASV8Q -FXt7MTcsIDIwfSwgezQwNCwgMTR9fdgA1gAOAsEA3ADdAN4A4ALCAOICwwLEA+oCxgOuAsgCyYCSgIqA -0oCJgM+Aj18QNFRoZXNlIG9wdGlvbnMgdGFrZSBlZmZlY3Qgd2hlbiBYMTEgaXMgbmV4dCBsYXVuY2hl -ZC5YU2VjdXJpdHnSADoAOwPxAz6kAz4BDAENAD9aezQ3OCwgMzE2fV8QFXt7MCwgMH0sIHsxNDQwLCA4 -Nzh9fVp7MjEzLCAxMjl9WXgxMV9wcmVmc9IAOgA7A/cD+KID+AA/XxAQTlNXaW5kb3dUZW1wbGF0ZVtw -cmVmc19wYW5lbNMADgCHAIgAiQP8A/2AF4DegOHYAA4AjQCOAI8AkACRAJIAkwCUBAAAlgQBAJgAmQCa -AJuAFYDfgOCAD4ATgAxTQ3V0UXhUY3V0OtQADgC7AIcAiACJAL0BkQC/gBeAJoBIgCjUAA4AuwCHAIgA -iQC9BBABr4AXgCaA5IBP2AAOAI0AjgCPAJAAkQCSAJMAlAQUAJYAlwCYAJkAmgJEgBWA5YAOgA+AE4Bu -XEN1c3RvbWl6ZS4uLtQADgC7AIcAiAEiBBwAvQQegDCA54AmgOrXAA4AjQCPAJAAkQCSAJMAlAQhAJcA -mACZAJoEJYAVgOmADoAPgBOA6NQADgCNAPIAnQCeBCgEKQQqgD+BAbuBAcmBAb1ZQWJvdXQgWDExXngx -MV9hYm91dF9pdGVt1AAOALsAhwCIAIkAvQQwBDGAF4AmgOyA7tgADgCNAI4AjwCQAJEAkgCTAJQENACW -AJcAmACZAJoCMIAVgO2ADoAPgBOAal8QEkJyaW5nIEFsbCB0byBGcm9udF8QD2JyaW5nX3RvX2Zyb250 -OtQADgC7AIcAiACJAL0EPgQ/gBeAJoDwgPPYAA4AjQCOAI8AkACRAJIAkwCUBEIAlgRDAJgAmQCaAjCA -FYDxgPKAD4ATgGpcQ2xvc2UgV2luZG93UXddY2xvc2Vfd2luZG93OtQADgC7AIcAiAEiBEwAvQROgDCA -9YAmgPfYAA4AjQCOAI8AkACRAJIAkwCUBFEEUgEaAJgAmQCaBCWAFYD2EgAYAACALIAPgBOA6F8QElRv -Z2dsZSBGdWxsIFNjcmVlbl8QFnRvZ2dsZV9mdWxsc2NyZWVuX2l0ZW3UAA4AuwCHAIgBIgK2AL0EXYAw -gJyAJoD5XxARZW5hYmxlX2Z1bGxzY3JlZW7UAA4AuwCHAIgAiQC9BGIEY4AXgCaA+4D92AAOAI0AjgCP -AJAAkQCSAJMAlARmAJYAlwCYAJkAmgIwgBWA/IAOgA+AE4BqW1pvb20gV2luZG93XHpvb21fd2luZG93 -OtMADgCHAIgAiQRvBHCAF4D/gQEC2AAOAI0AjgCPAJAAkQCSAJMAlARzAJYEdACYAJkAmgCbgBWBAQCB -AQGAD4ATgAxUUmVkb1FaVXJlZG861AAOALsAhwCIAIkAHwR+BH+AF4ACgQEEgQEH2AAOAI0AjgCPAJAA -kQCSAJMAlASCAJYEgwCYAJkAmgQlgBWBAQWBAQaAD4ATgOhYUXVpdCBYMTFRcVp0ZXJtaW5hdGU60wAO -AIcAiACJBIwEjYAXgQEJgQEM2AAOAI0AjgCPAJAAkQCSAJMAlASQAJYEkQCYAJkAmgCbgBWBAQqBAQuA -D4ATgAxUVW5kb1F6VXVuZG861AAOALsAhwCIAIkAHwSbBJyAF4ACgQEOgQEQ2AAOAI0AjgCPAJAAkQCS -AJMAlASfAJYAlwCYAJkAmgQlgBWBAQ+ADoAPgBOA6FtIaWRlIE90aGVyc18QFmhpZGVPdGhlckFwcGxp -Y2F0aW9uczrUAA4AuwCHAIgAiQC9BKkEqoAXgCaBARKBARXYAA4AjQCOAI8AkACRAJIAkwCUBK0AlgCX -AJgAmQCaBLGAFYEBFIAOgA+AE4EBE9MADgCNAJ0AngS0BLWAP4EB3IEB3lhYMTEgSGVscFl4MTFfaGVs -cDrUAA4AuwCHAIgAiQC9A04Av4AXgCaAs4Ao1AAOALsAhwCIASIDTgC9BMGAMICzgCaBARhfEBBlbmFi -bGVfa2V5ZXF1aXZz1AAOALsAhwCIAIkAvQTGBMeAF4AmgQEagQEj1wDBAA4AwgDDAMQAxQDGBMkAyATL -BMwEzQDMBMmBARuAJYEBHIEBHREBLQmBARvVAMEADgDCAM8AxAArANEE0wTUAMuAAIClgQG3gQGoXxAX -e3szNzIsIDIzMH0sIHsxMDAsIDMyfX3dANYADgDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjBNgA5QHG -BNkE2gTbAOoExgDsBN4E34AkgQEhgQEfgQEigQEegB6BARoSCDgAABP/////hoJA/1lEdXBsaWNhdGXU -AA4A8QDyAPMA9AD1BOMB2YAggQEgWUhlbHZldGljYdIADgA2ADcAooAE0gAOADYANwCigARfEBVhcHBz -X3RhYmxlX2R1cGxpY2F0ZTrUAA4AuwCHAIgBIgFJAL0E7oAwgDmAJoEBJV5kb2NrX2FwcHNfbWVuddQA -DgC7AIcAiACJAL0E8wT0gBeAJoEBJ4EBLdcAwQAOAMIAwwDEAMUAxgTJAMgE+AT5BM0AzATJgQEbgCWB -ASiBASkJgQEbXxAXe3szNzIsIDI2Mn0sIHsxMDAsIDMyfX3dANYADgDXANgA2QDaANsA3ADdAN4A3wDg -AOEA4gDjBP8A5QHGBNkFAQUCAOoE8wDsBN4E34AkgQErgQEfgQEsgQEqgB6BASdYQWRkIEl0ZW3SAA4A -NgA3AKKABNIADgA2ADcAooAEXxAPYXBwc190YWJsZV9uZXc61AAOALsAhwCIAIkAHwQcBQ+AF4ACgOeB -AS9fEB1vcmRlckZyb250U3RhbmRhcmRBYm91dFBhbmVsOtQADgC7AIcAiAEiASwAvQUVgDCAMoAmgQEx -WWRvY2tfbWVuddQADgC7AIcAiACJAL0FGgUbgBeAJoEBM4EBNtgADgCNAI4AjwCQAJEAkgCTAJQFHgCW -BR8AmACZAJoCMIAVgQE0gQE1gA+AE4BqW05leHQgV2luZG93YfcDXG5leHRfd2luZG93OtQADgC7AIcA -iACJAL0FKQUqgBeAJoEBOIEBPdcAwQAOAMIAwwDEAMUAxgTJAMgFLgUvBTAAzATJgQEbgCWBATmBAToR -AS8JgQEbXxAVe3szODgsIDEyfSwgezg0LCAzMn193QDWAA4A1wDYANkA2gDbANwA3QDeAN8A4ADhBTUA -4wCXAOUBxgTZBTkFOgDqBSkA7ATeBN8T/////4QB/gCAJIAOgQEfgQE8gQE7gB6BAThURG9uZdIADgA2 -ADcAooAEXxAQYXBwc190YWJsZV9kb25lOtQADgC7AIcAiACJAL0DqgC/gBeAJoDDgCjUAA4AuwCHAIgB -IgOqAL0FSoAwgMOAJoEBQFtlbmFibGVfYXV0aNQADgC7AIcAiAEiBU4AvQVQgDCBAUKAJoEBad8QEwDB -BVIADgKcBVMCwQVUBVUFVgVXBVgAxAKRAMUFWQVaAMYFWwVcBV0A7QVeBV8FYAVhAMwFYwVkAcYFZQDL -BWYAzAVoAeoFXQVqBWtfEB9OU0RyYWdnaW5nU291cmNlTWFza0Zvck5vbkxvY2FsXE5TSGVhZGVyVmll -d18QEk5TQWxsb3dzVHlwZVNlbGVjdFxOU0Nvcm5lclZpZXdfEBdOU0ludGVyY2VsbFNwYWNpbmdXaWR0 -aF8QGU5TQ29sdW1uQXV0b3Jlc2l6aW5nU3R5bGVfEBhOU0ludGVyY2VsbFNwYWNpbmdIZWlnaHRbTlNH -cmlkQ29sb3JfEBxOU0RyYWdnaW5nU291cmNlTWFza0ZvckxvY2FsXk5TVGFibGVDb2x1bW5zW05TUm93 -SGVpZ2h0gQFDgQFoElJAgACBAUWBAVYJgQFJI0AIAAAAAAAAI0AAAAAAAAAAgQFECYEBZYEBQ4EBTSNA -MQAAAAAAANoAwQAOAMIFbQDPAMQFbgVvAMYFcAVxBXIFcwV0BXUFdgVOBXgFcQVOWU5TY3ZGbGFnc1lO -U0RvY1ZpZXdZTlNCR0NvbG9yXU5TTmV4dEtleVZpZXeBAUqBAayBAasQBIEBqhEJAIEBQoEBY4EBSoEB -Qlp7MzMzLCAxOTd91gDBAA4AxAKRAMYFfQV+BX8AywWABX4FTltOU1RhYmxlVmlld4EBRoEBSIEBR4EB -RoEBQtoAwQAOAMIFbQDPAMQFbgVvAMYFcAVxBXIFhgV0BYcFdgVgBXgFcQVggQFKgQGsgQG0gQGzgQFF -gQFjgQFKgQFFWXszMzMsIDE3fdIAOgA7BY4Fj6QFjwEMAQ0AP18QEU5TVGFibGVIZWFkZXJWaWV31QDB -AA4AwgDEAMYFcQWSBZMAywVxgQFKgQFMgQFLgQFK3QDBBZYADgDCBZcFmADPBZkAxADGBZoFcAWbBMkF -nQWeBZ8FoAV+BaIFowWkBMkFpgVdBV1bTlNIU2Nyb2xsZXJYTlNzRmxhZ3NfEBBOU0hlYWRlckNsaXBW -aWV3XE5TU2Nyb2xsQW10c1tOU1ZTY3JvbGxlcl1OU0NvbnRlbnRWaWV3gQEbgQGxgQG2gQG1EDKBAUaB -AalPEBBBIAAAQSAAAEGYAABBmAAAEQEzgQEbgQGtgQFDgQFDXxAUe3szMzQsIDB9LCB7MTYsIDE3fX3S -ADoAOwWrBaykBawBDAENAD9dX05TQ29ybmVyVmlld9IADgBFAE0Fr4A+owWwBbEFsoEBToEBWIEBXNoF -tAAOBbUFtgW3BbgFuQW6BbsFfQDMBb0FvgW/BcABzwXBBcIAzAVOXk5TSXNSZXNpemVhYmxlXE5TSGVh -ZGVyQ2VsbFdOU1dpZHRoWk5TRGF0YUNlbGxeTlNSZXNpemluZ01hc2taTlNNaW5XaWR0aFpOU01heFdp -ZHRoXE5TSXNFZGl0YWJsZQmBAVeBAU8jQFPAAAAAAACBAVUjQEQAAAAAAAAjQI9AAAAAAAAJgQFC1wDW -AA4CwQDcAN0A4ALCBcYFxwXIBckCxgDtBcsSBIH+AIEBVIEBUYEBUICJgQFSVE5hbWXTAA4C0gLdAtUB -zwXPgI5LMC4zMzMzMzI5OQDVAA4C0QLSAtMC1ALVAuQC1wXTAtmAjoCRgQFTgItfEA9oZWFkZXJUZXh0 -Q29sb3LSADoAOwXXBdilBdgC7QEHAMMAP18QEU5TVGFibGVIZWFkZXJDZWxs1wDWAA4CwQDdAN4A4ALC -BdoCwwVhAOoFTgHTAskSFDH+QICSgQFWgB6BAUKAj9MADgLSAt0C1QHPBeKAjkIxANIAOgA7BeQF5aIF -5QA/XU5TVGFibGVDb2x1bW7aBbQADgW1BbYFtwW4BbkFugW7BX0AzAW9BekF6gXrAc8F7AXCAMwFTgmB -AVeBAVkjQGg3ZGAAAACBAVsjQE9dkWAAAAAJgQFC1wDWAA4CwQDcAN0A4ALCBcYFxwXIBfICxgDtBcuB -AVSBAVGBAVqAiYEBUldDb21tYW5k1wDWAA4CwQDdAN4A4ALCBdoCwwVhAOoFTgHTAsmAkoEBVoAegQFC -gI/aBbQADgW1BbYFtwW4BbkFugW7BX0AzAW9Bf8GAAYBAc8GAgXCAMwFTgmBAVeBAV0jQEmAAAAAAACB -AWEjQCQAAAAAAAAJgQFC1wDWAA4CwQDcAN0A4ALCAOIFxwYHBggCxgDtBcuBAVSBAV+BAV6AiYEBUlhT -aG9ydGN1dNUADgLRAtIC0wLUAtUFYQLXBg8C2YCOgQFWgQFggItbaGVhZGVyQ29sb3LYANYADgLBAN0A -3gDgAp0CwgXaAsMFeAYVBU4B0wDMAsmAkoEBY4EBYoEBQgmAj9QADgDxAPIA8wD0BhsA9gHZgCAjQCgA -AAAAAACAH9UADgLRAtIC0wLUAtUC1gLXBiAC2YCOgI2BAWSAi18QFmNvbnRyb2xCYWNrZ3JvdW5kQ29s -b3LVAA4C0QLSAtMC1ALVBiUC1wYmAtmAjoEBZ4EBZoCLWWdyaWRDb2xvctMADgLSAt0C1QHPBiuAjkQw -LjUA0gA6ADsGLQV9pQV9AQsBDAENAD9aYXBwc190YWJsZdQADgC7AIcAiACJAB8GMgYzgBeAAoEBa4EB -btkADgCNAI4AjwCQAJEAkgCTAeAAlAY2AJYGNwCYAJkAmgQlBjuAFYEBbIEBbYAPgBOA6BAqWEhpZGUg -WDExUWhVaGlkZTrUAA4AuwCHAIgAiQAfBkIGQ4AXgAKBAXCBAXLZAA4AjQCOAI8AkACRAJIAkwHgAJQG -RgCWAJcAmACZAJoEJQY7gBWBAXGADoAPgBOA6FhTaG93IEFsbF8QFnVuaGlkZUFsbEFwcGxpY2F0aW9u -czrTAA4AhwCIAIkGTwZQgBeBAXSBAXfYAA4AjQCOAI8AkACRAJIAkwCUBlMAlgZUAJgAmQCaAJuAFYEB -dYEBdoAPgBOADFVQYXN0ZVF2VnBhc3RlOtQADgC7AIcAiACJAL0GXgZfgBeAJoEBeYEBf9cAwQAOAMIA -wwDEAMUAxgTJAMgGYwZkBM0AzATJgQEbgCWBAXqBAXsJgQEbXxAXe3szNzIsIDE5OH0sIHsxMDAsIDMy -fX3dANYADgDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjBmoA5QHGBNkGbAZtAOoGXgDsBN4E34AkgQF9 -gQEfgQF+gQF8gB6BAXlWUmVtb3Zl0gAOADYANwCigATSAA4ANgA3AKKABF8QEmFwcHNfdGFibGVfZGVs -ZXRlOtQADgC7AIcAiAEiAL4AvQZ6gDCAGYAmgQGBW3N5bmNfa2V5bWFw1AAOALsAhwCIAIkAvQZ/BoCA -F4AmgQGDgQGG2AAOAI0AjgCPAJAAkQCSAJMAlAaDAJYGhACYAJkAmgQlgBWBAYSBAYWAD4ATgOheUHJl -ZmVyZW5jZXMuLi5RLFtwcmVmc19zaG93OtQADgC7AIcAiACJAL0ETAaPgBeAJoD1gQGIXxASdG9nZ2xl -X2Z1bGxzY3JlZW461AAOALsAhwCIAIkAvQK2BpWAF4AmgJyBAYpfEBplbmFibGVfZnVsbHNjcmVlbl9j -aGFuZ2VkOtQADgC7AIcAiAEiATgAvQabgDCANYAmgQGMXxAVZG9ja193aW5kb3dfc2VwYXJhdG9y1AAO -ALsAhwCIAIkAvQJMAL+AF4AmgHGAKNQADgC7AIcAiACJAL0GpQamgBeAJoEBj4EBktgADgCNAI4AjwCQ -AJEAkgCTAJQGqQCWBqoAmACZAJoCMIAVgQGQgQGRgA+AE4BqXxAPUHJldmlvdXMgV2luZG93YfcCXxAQ -cHJldmlvdXNfd2luZG93OtQADgC7AIcAiACJAL0GtAa1gBeAJoEBlIEBl9gADgCNAI4AjwCQAJEAkgCT -AJQGuACWBrkAmACZAJoCMIAVgQGVgQGWgA+AE4BqXxAPTWluaW1pemUgV2luZG93UW1fEBBtaW5pbWl6 -ZV93aW5kb3c61AAOALsAhwCIAIkAvQbDBsSAF4AmgQGZgQGf1wDBAA4AwgDDAMQAxQDGBMkAyAbIBskF -MADMBMmBARuAJYEBmoEBmwmBARtfEBV7ezMwNCwgMTJ9LCB7ODQsIDMyfX3dANYADgDXANgA2QDaANsA -3ADdAN4A3wDgAOEA4gDjBs8A5QHGBNkG0QbSAOoGwwDsBN4E34AkgQGdgQEfgQGegQGcgB6BAZlWQ2Fu -Y2Vs0gAOADYANwCigATSAA4ANgA3AKKABF8QEmFwcHNfdGFibGVfY2FuY2VsOtQADgC7AIcAiAEiAXYA -vQbfgDCAQoAmgQGhW3VzZV9zeXNiZWVw0wAOAIcAiACJBuMG5IAXgQGjgQGm2AAOAI0AjgCPAJAAkQCS -AJMAlAbnAJYG6ACYAJkAmgCbgBWBAaSBAaWAD4ATgAxUQ29weVFjVWNvcHk60gAOAEUG8AbxgQHsrxB9 -BsMEyQG6AZECRAH6BBwGtAMVAyYBeQC+Bv4EfgNNAZUFKQcDBZ0HBQcGBBABOQOuASwDZQK3Ac0BdgWy -BJsC9QZeAjACewQ+A04DdQF8A/wHGgHUBxwHHQYyA8MHIAJpBMYGyQNPBk8E8wK0BGIGfwcqAwUHLAIl -AUkGQgcwArwCTAC9AYAFcQRMBbEE+QQwA7MBOAVOBbADOQNVAIoCOQdCBaYBWgdFBKkEjAH4BuMHSgKy -BWADOwK1AlMD4wYBAqkFwAOGB1UBtAOsA60BFQK2A9MAxwZkBqUHXwSxA6oEJQdjBMwF6wFZBRoB+QGY -BS8AmwDKA0wEb4EBmYEBG4BTgEiAboBjgOeBAZSAnoCigEOAGYEBuYEBBICvgEmBATiBAb+BAbGBAcaB -AcqA5IA2gM+AMoCxgKCAV4BCgQFcgQEOgJaBAXmAaoCAgPCAs4C1gEWA3oEBuoBYgQHbgQHHgQFrgMmB -AdeAeYEBGoEBm4C3gQF0gQEngJSA+4EBg4EBzoCagQHggGmAOYEBcIEBvoCHgHGAJoCCgQFKgPWBAViB -ASmA7IDFgDWBAUKBAU6AqICtgAuAbYEB4oEBrYA8gQHYgQESgQEJgF2BAaOBAdOAhYEBRYDBgJiAc4DR -gQFhgL6BAVWAuYEBz4BRgMeAy4AqgJyAzYAagQF7gQGPgQHIgQETgMOA6IEBwoEBHYEBW4A7gQEzgGCA -S4EBOoAMgByAq4D/0gAOAEUATQdxgD6mBSkExgZeBXEGwwTzgQE4gQEagQF5gQFKgQGZgQEn0gAOAEUA -TQd6gD6lBV0FpgWdBX4FY4EBQ4EBrYEBsYEBRoEBSdIADgBFAE0HgoA+oQVOgQFCXxAVe3sxLCAxN30s -IHszMzMsIDE5N3190gA6ADsHhgeHpAeHAQwBDQA/Wk5TQ2xpcFZpZXfYAMEB3wAOAMIAxAFHAMYHiQVx -BXEHjAeNAMsHjgVxB5BZTlNQZXJjZW50gQFKgQFKgQGwgQGugQGvgQFKIz/v1mqAAAAAXxAWe3szMzQs -IDE3fSwgezE1LCAxOTd9fVxfZG9TY3JvbGxlcjrSADoAOweUB5WlB5UBCwEMAQ0AP1pOU1Njcm9sbGVy -2QDBAd8ADgDCBZcAxAFHAMYHiQVxBXEHjAeaAcYAyweOBXEHnYEBSoEBSoEBsIEBsoEBr4EBSiM/788X -wAAAAF8QFXt7MSwgMjE0fSwgezMzMywgMTV9fdIADgBFAE0HoYA+oQVggQFFXxATe3sxLCAwfSwgezMz -MywgMTd9fV8QFnt7MjAsIDYwfSwgezM1MCwgMjMwfX3SADoAOwemB6ekB6cBDAENAD9cTlNTY3JvbGxW -aWV3XxAUe3sxLCAxfSwgezQ4NiwgMzEwfX3SAA4ARQBNB6uAPqICOQQQgG2A5NoADgFGAI0AjgCPAJAA -kQCSAJMBRwCUBCUEKACWAJcAmACZAJoHGge2gBWA6IEBu4AOgA+AE4EBuoEBvNQADgCNAPIAnQCeB7kH -uge7gD+BAdGBAd+BAdJTWDEx0gAOAEUATQe/gD6sBBwGfwcwBwMHBQRMBx0GMgSbBkIHXwR+gOeBAYOB -Ab6BAb+BAcaA9YEBx4EBa4EBDoEBcIEByIEBBNoADgCNAI4BOwCPATwAkACRAJIAkwCUAJcAlgDMAJcA -zACYAJkAmgQlgBWADgmADgmAD4ATgOjaAA4BRgCNAI4AjwCQAJEAkgCTAUcAlAdjB9gAlgCXAJgAmQCa -BCUH3YAVgQHCgQHAgA6AD4ATgOiBAcFYU2VydmljZXPUAA4AjQDyAJ0AngfhB+IH44A/gQHDgQHFgQHE -0gAOADYANwfegATSAA4ARQBNB+iAPqBfEA9fTlNTZXJ2aWNlc01lbnXaAA4AjQCOATsAjwE8AJAAkQCS -AJMAlACXAJYAzACXAMwAmACZAJoEJYAVgA4JgA4JgA+AE4Do2gAOAI0AjgE7AI8BPACQAJEAkgCTAJQA -lwCWAMwAlwDMAJgAmQCaBCWAFYAOCYAOCYAPgBOA6NoADgCNAI4BOwCPATwAkACRAJIAkwCUAJcAlgDM -AJcAzACYAJkAmgQlgBWADgmADgmAD4ATgOhcX05TQXBwbGVNZW512gAOAUYAjQCOAI8AkACRAJIAkwFH -AJQCRAFKAJYAlwCYAJkAmgcaCA6AFYBugDeADoAPgBOBAbqBAcvSAA4ANgA3CBGABFZXaW5kb3fSAA4A -RQBNCBSAPqkGtAQ+BGIHKgUaBqUHVQQwAiWBAZSA8ID7gQHOgQEzgQGPgQHPgOyAadoADgCNAI4BOwCP -ATwAkACRAJIAkwCUAJcAlgDMAJcAzACYAJkAmgIwgBWADgmADgmAD4ATgGraAA4AjQCOATsAjwE8AJAA -kQCSAJMAlACXAJYAzACXAMwAmACZAJoCMIAVgA4JgA4JgA+AE4BqXl9OU1dpbmRvd3NNZW51WE1haW5N -ZW510gAOAEUATQg0gD6lBv4HBgdKB0UHHIEBuYEByoEB04EB2IEB29oADgFGAI0AjgCPAJAAkQCSAJMB -RwCUAJsAnwCWAJcAmACZAJoHGghCgBWADIEB1IAOgA+AE4EBuoEB1VRFZGl00gAOAEUATQhGgD6oBIwE -bwcgA/wG4wZPAIoBFYEBCYD/gQHXgN6BAaOBAXSAC4Aq2gAOAI0AjgE7AI8BPACQAJEAkgCTAJQAlwCW -AMwAlwDMAJgAmQCaAJuAFYAOCYAOCYAPgBOADNoADgFGAI0AjgCPAJAAkQCSAJMBRwCUAjAIWwCWAJcA -mACZAJoHGghggBWAaoEB2YAOgA+AE4EBuoEB2toADgFGAI0AjgCPAJAAkQCSAJMBRwCUBLEEtACWAJcA -mACZAJoHGghpgBWBAROBAdyADoAPgBOBAbqBAd1USGVscNIADgBFAE0IbYA+oQSpgQESW19OU01haW5N -ZW510gAOADIAMwhygAWBAeHfEA8CbQAOAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoEyQJ8CHYIdwh4 -CHkCgQKCCHsIfAh9AOYIfgh/CICBARuA24EB5oEB6IEB64EB5IB8gQHngQHjgQHqEAuBAemBAeVfEBh7 -ezI3OSwgMjcwfSwgezQ4NiwgMzEwfX1fEBRYMTEgQXBwbGljYXRpb24gTWVuddIADgA2ADcCjYAEWHgx -MV9hcHBz0gA6ADsIhwFvogFvAD/SAA4ARQbwCIqBAeyvEH0EyQdCAbQBlQcGAdQEJQIwArYCtwKpAMcH -GgQlAMcDOwTJBCUFcQQlBxoCRAEsAZUAHwNNAXkB1AF5BU4EJQK0BMkHRQJpAjAAxwNOAXYAmwAfAboH -GgQlBCUDrACbAB8EyQbDAMcAmwTJAXkCMAQlAjACtQAfAjABOQQlBCUCsgDHAB8CewTJBCUFTgTzAjAD -qgEsBXEFTgGAA0wAmwJEAB8FcQFJBxoEsQCbAdQAmwcaAXkFcQGAAXkCTAOuBbIBgAWwA08CMAF5AZUB -lQCbAXkDrQM5Bl4CMAQlBxwBlQb+BwMExgWxAUkCMAHUAZEFKQdKAL4AxwCbgQEbgQHigFGASYEByoBY -gOiAaoCcgKCAvoAagQG6gOiAGoDBgQEbgOiBAUqA6IEBuoBugDKASYACgK+AQ4BYgEOBAUKA6ICUgQEb -gQHYgHmAaoAagLOAQoAMgAKAU4EBuoDogOiAx4AMgAKBARuBAZmAGoAMgQEbgEOAaoDogGqAmIACgGqA -NoDogOiAhYAagAKAgIEBG4DogQFCgQEngGqAw4AygQFKgQFCgIKAq4AMgG6AAoEBSoA5gQG6gQETgAyA -WIAMgQG6gEOBAUqAgoBDgHGAz4EBXICCgQFOgLeAaoBDgEmASYAMgEOAy4CogQF5gGqA6IEB24BJgQG5 -gQG/gQEagQFYgDmAaoBYgEiBATiBAdOAGYAagAzSAA4ARQbwCQqBAeyvEH4GwwTJAboBkQJEAfoEHAa0 -AxUDJgAfAXkBlQb+BH4FKQWdAL4HAwNNBwYHBQQQATkDrgEsA2UCtwHNBbIBdgSbBl4C9QIwAnsEPgNO -A3UBfAP8BxoB1AccBMYHHQYyAmkHIAbJBPMDTwZPA8MCtARiBn8HKgMFAiUHLAFJBkIHMAK8AkwAvQGA -BXEETAT5BbEEMAE4A7MFTgWwB0IDOQCKAjkFpgNVAVoHRQSpBIwB+AbjB0oFYAKyAzsCtQYBAlMD4wKp -BcADhgdVA6wBtAOtARUCtgZkAMcD0wSxB18GpQOqBCUBWQTMB2MF6wUaAZgB+QUvAJsAygNMBG+BAZmB -ARuAU4BIgG6AY4DngQGUgJ6AooACgEOASYEBuYEBBIEBOIEBsYAZgQG/gK+BAcqBAcaA5IA2gM+AMoCx -gKCAV4EBXIBCgQEOgQF5gJaAaoCAgPCAs4C1gEWA3oEBuoBYgQHbgQEagQHHgQFrgHmBAdeBAZuBASeA -t4EBdIDJgJSA+4EBg4EBzoCagGmBAeCAOYEBcIEBvoCHgHGAJoCCgQFKgPWBASmBAViA7IA1gMWBAUKB -AU6BAeKAqIALgG2BAa2ArYA8gQHYgQESgQEJgF2BAaOBAdOBAUWAhYDBgJiBAWGAc4DRgL6BAVWAuYEB -z4DHgFGAy4AqgJyBAXuAGoDNgQETgQHIgQGPgMOA6IA7gQEdgQHCgQFbgQEzgEuAYIEBOoAMgByAq4D/ -0gAOAEUG8AmLgQHsrxB+CYwJjQmOCY8JkAmRCZIJkwmUCZUJlgmXCZgJmQmaCZsJnAmdCZ4JnwmgCaEJ -ogmjCaQJpQmmCacJqAmpCaoJqwmsCa0JrgmvCbAJsQmyCbMJtAe5CbYJtwm4CbkJugm7CbwJvQm+Cb8J -wAnBCcIJwwnECcUJxgnHCcgJyQnKCcsJzAnNARAJzwnQCdEJ0gnTCdQJ1QnWCdcJ2AnZCdoJ2wncCd0J -3gnfCeAJ4QniCeMJ5AnlCeYJ5wnoCekJ6gnrCewJ7QnuCe8J8AnxCfIJ8wn0CfUJ9gn3CfgJ+Qn6CfsJ -/An9Cf4J/woACgEKAgoDCgQKBQoGCgcKCAoJgQHwgQHxgQHygQHzgQH0gQH1gQH2gQH3gQH4gQH5gQH6 -gQH7gQH8gQH9gQH+gQH/gQIAgQIBgQICgQIDgQIEgQIFgQIGgQIHgQIIgQIJgQIKgQILgQIMgQINgQIO -gQIPgQIQgQIRgQISgQITgQIUgQIVgQIWgQIXgQIYgQHRgQIZgQIagQIbgQIcgQIdgQIegQIfgQIggQIh -gQIigQIjgQIkgQIlgQImgQIngQIogQIpgQIqgQIrgQIsgQItgQIugQIvgQIwgCeBAjGBAjKBAjOBAjSB -AjWBAjaBAjeBAjiBAjmBAjqBAjuBAjyBAj2BAj6BAj+BAkCBAkGBAkKBAkOBAkSBAkWBAkaBAkeBAkiB -AkmBAkqBAkuBAkyBAk2BAk6BAk+BAlCBAlGBAlKBAlOBAlSBAlWBAlaBAleBAliBAlmBAlqBAluBAlyB -Al2BAl6BAl+BAmCBAmGBAmKBAmOBAmSBAmWBAmaBAmeBAmiBAmmBAmqBAmtfEBRQdXNoIEJ1dHRvbiAo -Q2FuY2VsKV5Db250ZW50IFZpZXctMV8QIVBvcCBVcCBCdXR0b24gQ2VsbCAoRnJvbSBEaXNwbGF5KV8Q -MkNoZWNrIEJveCAoQWxsb3cgY29ubmVjdGlvbnMgZnJvbSBuZXR3b3JrIGNsaWVudHMpXxATTWVudSAo -QXBwbGljYXRpb25zKV8QFE1lbnUgSXRlbSAoTWlsbGlvbnMpXxAVTWVudSBJdGVtIChBYm91dCBYMTEp -XxAbTWVudSBJdGVtIChNaW5pbWl6ZSBXaW5kb3cpXxAeQnV0dG9uIENlbGwgKEZ1bGwgc2NyZWVuIG1v -ZGUpXxB2VGV4dCBGaWVsZCBDZWxsIChFbmFibGVzIHRoZSBYMTEgcm9vdCB3aW5kb3cuIFVzZSB0aGUg -Q29tbWFuZC1PcHRpb24tQSBrZXlzdHJva2UgdG8gZW50ZXIgYW5kIGxlYXZlIGZ1bGwgc2NyZWVuIG1v -ZGUuKVxGaWxlJ3MgT3duZXJWVmlldy0yVlZpZXctMV8QD01lbnUgSXRlbSAoWDExKV8QFE1lbnUgSXRl -bSAoUXVpdCBYMTEpXxASUHVzaCBCdXR0b24gKERvbmUpXxATSG9yaXpvbnRhbCBTY3JvbGxlcl8QKUNo -ZWNrIEJveCAoRm9sbG93IHN5c3RlbSBrZXlib2FyZCBsYXlvdXQpXxAUTWVudSBJdGVtIChTZXJ2aWNl -cylfEGVTdGF0aWMgVGV4dCAoSG9sZCBPcHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8g -YWN0aXZhdGUgdGhlIG1pZGRsZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KKV8QGE1lbnUgSXRlbSAo -QXBwbGljYXRpb25zKVtTZXBhcmF0b3ItMV8QGE1lbnUgSXRlbSAoQ3VzdG9taXplLi4uKV8QGk1lbnUg -SXRlbSAoQXBwbGljYXRpb25zKS0xXxBCU3RhdGljIFRleHQgKFRoZXNlIG9wdGlvbnMgdGFrZSBlZmZl -Y3Qgd2hlbiBYMTEgaXMgbmV4dCBsYXVuY2hlZC4pWERvY2tNZW51XxBpVGV4dCBGaWVsZCBDZWxsIChI -b2xkIE9wdGlvbiBhbmQgQ29tbWFuZCB3aGlsZSBjbGlja2luZyB0byBhY3RpdmF0ZSB0aGUgbWlkZGxl -IGFuZCByaWdodCBtb3VzZSBidXR0b25zLgopXxByU3RhdGljIFRleHQgKEVuYWJsZXMgdGhlIFgxMSBy -b290IHdpbmRvdy4gVXNlIHRoZSBDb21tYW5kLU9wdGlvbi1BIGtleXN0cm9rZSB0byBlbnRlciBhbmQg -bGVhdmUgZnVsbCBzY3JlZW4gbW9kZS4pXxAYTWVudSBJdGVtIChGcm9tIERpc3BsYXkpXxAXVGFibGUg -Q29sdW1uIChTaG9ydGN1dClfECNDaGVjayBCb3ggKFVzZSBzeXN0ZW0gYWxlcnQgZWZmZWN0KV8QF01l -bnUgSXRlbSAoSGlkZSBPdGhlcnMpXxAUUHVzaCBCdXR0b24gKFJlbW92ZSlfEBpUZXh0IEZpZWxkIENl -bGwgKENvbG9yczoKKV1NZW51IChXaW5kb3cpXENvbnRlbnQgVmlld18QGE1lbnUgSXRlbSAoQ2xvc2Ug -V2luZG93KV8QLENoZWNrIEJveCAoRW5hYmxlIGtleSBlcXVpdmFsZW50cyB1bmRlciBYMTEpXxAuQnV0 -dG9uIENlbGwgKEVuYWJsZSBrZXkgZXF1aXZhbGVudHMgdW5kZXIgWDExKV8QJUJ1dHRvbiBDZWxsIChV -c2Ugc3lzdGVtIGFsZXJ0IGVmZmVjdClfEA9NZW51IEl0ZW0gKEN1dClfEBFNZW51IChPdGhlclZpZXdz -KV8QEE1lbnUgSXRlbSAoSGVscClfEBdQdXNoIEJ1dHRvbiAoRHVwbGljYXRlKVtTZXBhcmF0b3ItMl8Q -FE1lbnUgSXRlbSAoSGlkZSBYMTEpWlByZWZzUGFuZWxbU2VwYXJhdG9yLTlfEBRCdXR0b24gQ2VsbCAo -Q2FuY2VsKV8QFlB1c2ggQnV0dG9uIChBZGQgSXRlbSlfEExTdGF0aWMgVGV4dCAoQWxsb3dzIGlucHV0 -IG1lbnUgY2hhbmdlcyB0byBvdmVyd3JpdGUgdGhlIGN1cnJlbnQgWDExIGtleW1hcC4pXxARTWVudSBJ -dGVtIChQYXN0ZSlfELxUZXh0IEZpZWxkIENlbGwgKExhdW5jaGluZyBYMTEgd2lsbCBjcmVhdGUgWGF1 -dGhvcml0eSBhY2Nlc3MtY29udHJvbCBrZXlzLiBJZiB0aGUgc3lzdGVtJ3MgSVAgYWRkcmVzcyBjaGFu -Z2VzLCB0aGVzZSBrZXlzIGJlY29tZSBpbnZhbGlkIHdoaWNoIG1heSBwcmV2ZW50IFgxMSBhcHBsaWNh -dGlvbnMgZnJvbSBsYXVuY2hpbmcuKV8QFlN0YXRpYyBUZXh0IChDb2xvcnM6CilfEBdNZW51IEl0ZW0g -KFpvb20gV2luZG93KV8QGk1lbnUgSXRlbSAoUHJlZmVyZW5jZXMuLi4pW1NlcGFyYXRvci02XxBGVGV4 -dCBGaWVsZCBDZWxsIChUaGlzIG9wdGlvbiB0YWtlcyBlZmZlY3Qgd2hlbiBYMTEgaXMgbGF1bmNoZWQg -YWdhaW4uKVtTZXBhcmF0b3ItN1tBcHBsaWNhdGlvbl8QFU1lbnUgKEFwcGxpY2F0aW9ucyktMV8QFE1l -bnUgSXRlbSAoU2hvdyBBbGwpW1NlcGFyYXRvci0zXxB5VGV4dCBGaWVsZCBDZWxsIChYMTEgYmVlcHMg -d2lsbCB1c2UgdGhlIHN0YW5kYXJkIHN5c3RlbSBhbGVydCwgYXMgZGVmaW5lZCBpbiB0aGUgU291bmQg -RWZmZWN0cyBzeXN0ZW0gcHJlZmVyZW5jZXMgcGFuZWwuKV8QJkNoZWNrIEJveCAoRW11bGF0ZSB0aHJl -ZSBidXR0b24gbW91c2UpXxAmVG9wIFRhYiBWaWV3IChJbnB1dCwgT3V0cHV0LCBTZWN1cml0eSlbU2Ny -b2xsIFZpZXdfEB5NZW51IEl0ZW0gKFRvZ2dsZSBGdWxsIFNjcmVlbilfEBZCdXR0b24gQ2VsbCAoQWRk -IEl0ZW0pXxAWVGFibGUgQ29sdW1uIChDb21tYW5kKV8QHk1lbnUgSXRlbSAoQnJpbmcgQWxsIHRvIEZy -b250KVlTZXBhcmF0b3JfECZCdXR0b24gQ2VsbCAoQXV0aGVudGljYXRlIGNvbm5lY3Rpb25zKV8QJFRh -YmxlIFZpZXcgKE5hbWUsIENvbW1hbmQsIFNob3J0Y3V0KV8QE1RhYmxlIENvbHVtbiAoTmFtZSlcRWRp -dFByb2dyYW1zXxAVVGFiIFZpZXcgSXRlbSAoSW5wdXQpXxASTWVudSBJdGVtIChEZWxldGUpW1NlcGFy -YXRvci01XxARVmVydGljYWwgU2Nyb2xsZXJfEHhUZXh0IEZpZWxkIENlbGwgKFdoZW4gZW5hYmxlZCwg -bWVudSBiYXIga2V5IGVxdWl2YWxlbnRzIG1heSBpbnRlcmZlcmUgd2l0aCBYMTEgYXBwbGljYXRpb25z -IHRoYXQgdXNlIHRoZSBNZXRhIG1vZGlmaWVyLilvEBYATQBlAG4AdQAgAEkAdABlAG0AIAAoAEMAdQBz -AHQAbwBtAGkAegBlICYAKV8QEk1lbnUgSXRlbSAoV2luZG93KV8QFE1lbnUgSXRlbSAoWDExIEhlbHAp -XxAQTWVudSBJdGVtIChVbmRvKV8QFk1lbnUgSXRlbSAoMjU2IENvbG9ycylfEBBNZW51IEl0ZW0gKENv -cHkpXxAQTWVudSBJdGVtIChFZGl0KV8QEVRhYmxlIEhlYWRlciBWaWV3XxB1U3RhdGljIFRleHQgKFgx -MSBiZWVwcyB3aWxsIHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIGFsZXJ0LCBhcyBkZWZpbmVkIGluIHRo -ZSBTb3VuZCBFZmZlY3RzIHN5c3RlbSBwcmVmZXJlbmNlcyBwYW5lbC4pXxAYVGFiIFZpZXcgSXRlbSAo -U2VjdXJpdHkpXxBCU3RhdGljIFRleHQgKFRoaXMgb3B0aW9uIHRha2VzIGVmZmVjdCB3aGVuIFgxMSBp -cyBsYXVuY2hlZCBhZ2Fpbi4pXxAPVGV4dCBGaWVsZCBDZWxsXxAoQnV0dG9uIENlbGwgKEVtdWxhdGUg -dGhyZWUgYnV0dG9uIG1vdXNlKV8QRlRleHQgRmllbGQgQ2VsbCAoVGhlc2Ugb3B0aW9ucyB0YWtlIGVm -ZmVjdCB3aGVuIFgxMSBpcyBuZXh0IGxhdW5jaGVkLilfEBZUYWIgVmlldyBJdGVtIChPdXRwdXQpXxAR -VGV4dCBGaWVsZCBDZWxsLTJfEFBUZXh0IEZpZWxkIENlbGwgKEFsbG93cyBpbnB1dCBtZW51IGNoYW5n -ZXMgdG8gb3ZlcndyaXRlIHRoZSBjdXJyZW50IFgxMSBrZXltYXAuKVtTZXBhcmF0b3ItOF8QuFN0YXRp -YyBUZXh0IChMYXVuY2hpbmcgWDExIHdpbGwgY3JlYXRlIFhhdXRob3JpdHkgYWNjZXNzLWNvbnRyb2wg -a2V5cy4gSWYgdGhlIHN5c3RlbSdzIElQIGFkZHJlc3MgY2hhbmdlcywgdGhlc2Uga2V5cyBiZWNvbWUg -aW52YWxpZCB3aGljaCBtYXkgcHJldmVudCBYMTEgYXBwbGljYXRpb25zIGZyb20gbGF1bmNoaW5nLilf -EBtQb3B1cCBCdXR0b24gKEZyb20gRGlzcGxheSlfEKdTdGF0aWMgVGV4dCAoSWYgZW5hYmxlZCwgQXV0 -aGVudGljYXRlIGNvbm5lY3Rpb25zIG11c3QgYWxzbyBiZSBlbmFibGVkIHRvIGVuc3VyZSBzeXN0ZW0g -c2VjdXJpdHkuIFdoZW4gZGlzYWJsZWQsIGNvbm5lY3Rpb25zIGZyb20gcmVtb3RlIGFwcGxpY2F0aW9u -cyBhcmUgbm90IGFsbG93ZWQuKV8QFk1lbnUgSXRlbSAoU2VsZWN0IEFsbClfEBxDaGVjayBCb3ggKEZ1 -bGwgc2NyZWVuIG1vZGUpXxAUQnV0dG9uIENlbGwgKFJlbW92ZSlfEKtUZXh0IEZpZWxkIENlbGwgKElm -IGVuYWJsZWQsIEF1dGhlbnRpY2F0ZSBjb25uZWN0aW9ucyBtdXN0IGFsc28gYmUgZW5hYmxlZCB0byBl -bnN1cmUgc3lzdGVtIHNlY3VyaXR5LiBXaGVuIGRpc2FibGVkLCBjb25uZWN0aW9ucyBmcm9tIHJlbW90 -ZSBhcHBsaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLilbTWVudSAoSGVscClbU2VwYXJhdG9yLTRfEBtN -ZW51IEl0ZW0gKFByZXZpb3VzIFdpbmRvdylfECRDaGVjayBCb3ggKEF1dGhlbnRpY2F0ZSBjb25uZWN0 -aW9ucylaTWVudSAoWDExKVxTZXBhcmF0b3ItMTBfEBdCdXR0b24gQ2VsbCAoRHVwbGljYXRlKV8QD01l -bnUgKFNlcnZpY2VzKV8QEVRleHQgRmllbGQgQ2VsbC0xXxAXTWVudSBJdGVtIChOZXh0IFdpbmRvdylf -EDRCdXR0b24gQ2VsbCAoQWxsb3cgY29ubmVjdGlvbnMgZnJvbSBuZXR3b3JrIGNsaWVudHMpXxAVTWVu -dSBJdGVtIChUaG91c2FuZHMpXxASQnV0dG9uIENlbGwgKERvbmUpW01lbnUgKEVkaXQpXxArQnV0dG9u -IENlbGwgKEZvbGxvdyBzeXN0ZW0ga2V5Ym9hcmQgbGF5b3V0KV8QdFN0YXRpYyBUZXh0IChXaGVuIGVu -YWJsZWQsIG1lbnUgYmFyIGtleSBlcXVpdmFsZW50cyBtYXkgaW50ZXJmZXJlIHdpdGggWDExIGFwcGxp -Y2F0aW9ucyB0aGF0IHVzZSB0aGUgTWV0YSBtb2RpZmllci4pXxAQTWVudSBJdGVtIChSZWRvKdIADgBF -BvAKh4EB7KDSAA4ARQbwCoqBAeyg0gAOAEUG8AqNgQHsrxC1BsMAbgTJAboBkQJEAfoAhAQcAFYGtAMV -AyYAHwBpAXkAvgb+BH4DTQGVBSkHAwWdBwUHBgQQAFIAVQB4AH4BOQCAA64BLANlArcBzQBTAXYFsgSb -AGsC9QZeAjAAegBQAnsEPgNOA3UBfABnAH0D/ACBAE8HGgHUBxwAYwB7AHEHHQYyA8MHIAJpBMYGyQNP -Bk8E8wBcAGwAUQBeArQEYgBZAGUGfwcqAwUHLAIlAIMBSQZCAG8HMAK8AkwAVABiAHcAvQGABXEETAWx -BPkEMAOzATgFTgWwAFgDOQNVAIoCOQdCBaYAZABbAVoAagBtB0UAcgCCBKkEjAB0AfgAdgB5BuMHSgKy -BWADOwK1AHACUwPjBgECqQXAA4YHVQCFAGYBtAOsA60BFQK2A9MAxwZkAGAAYQBzBqUHXwSxA6oAVwB/ -BCUHYwTMBesBWQBaBRoAXwBoAfkBmAB8BS8AdQCbAMoDTARvAF2BAZmBASSBARuAU4BIgG6AY4EBoIDn -gE6BAZSAnoCigAKBAQ2AQ4AZgQG5gQEEgK+ASYEBOIEBv4EBsYEBxoEByoDkgC6AR4EBb4EBiYA2gQGN -gM+AMoCxgKCAV4AxgEKBAVyBAQ6BARaAloEBeYBqgQF4gBiAgIDwgLOAtYBFgQEDgQGHgN6BAY6ACoEB -uoBYgQHbgPSBAYCBATCBAceBAWuAyYEB14B5gQEagQGbgLeBAXSBASeAeIEBF4ApgOKAlID7gGyA+oEB -g4EBzoCagQHggGmBAZiAOYEBcIEBJoEBvoCHgHGAQYDvgQFqgCaAgoEBSoD1gQFYgQEpgOyAxYA1gQFC -gQFOgGiAqICtgAuAbYEB4oEBrYD4gHaAPIEBEYEBGYEB2IEBMoEBk4EBEoEBCYEBPoBdgQFBgQFzgQGj -gQHTgIWBAUWAwYCYgQEugHOA0YEBYYC+gQFVgLmBAc+BAaKA/oBRgMeAy4AqgJyAzYAagQF7gOaA64EB -N4EBj4EByIEBE4DDgFCBAYuA6IEBwoEBHYEBW4A7gHCBATOA44EBCIBggEuBAYKBATqBAT+ADIAcgKuA -/4Dd0gAOAEUG8AtFgQHsrxC1C0YLRwtIC0kLSgtLC0wLTQtOC08LUAtRC1ILUwtUC1ULVgtXC1gLWQta -C1sLXAtdC14LXwtgC2ELYgtjC2QLZQtmC2cLaAtpC2oLawtsC20LbgtvC3ALcQtyC3MLdAt1C3YLdwt4 -C3kLegt7C3wLfQt+C38LgAuBC4ILgwuEC4ULhguHC4gLiQuKC4sLjAuNC44LjwuQC5ELkguTC5QLlQuW -C5cLmAuZC5oLmwucC50LngufC6ALoQuiC6MLpAulC6YLpwuoC6kLqgurC6wLrQuuC68LsAuxC7ILswu0 -C7ULtgu3C7gLuQu6C7sLvAu9C74LvwvAC8ELwgvDC8QLxQvGC8cLyAvJC8oLywvMC80LzgvPC9AL0QvS -C9ML1AvVC9YL1wvYC9kL2gvbC9wL3QveC98L4AvhC+IL4wvkC+UL5gvnC+gL6QvqC+sL7AvtC+4L7wvw -C/EL8gvzC/QL9Qv2C/cL+Av5C/qBAnCBAnGBAnKBAnOBAnSBAnWBAnaBAneBAniBAnmBAnqBAnuBAnyB -An2BAn6BAn+BAoCBAoGBAoKBAoOBAoSBAoWBAoaBAoeBAoiBAomBAoqBAouBAoyBAo2BAo6BAo+BApCB -ApGBApKBApOBApSBApWBApaBApeBApiBApmBApqBApuBApyBAp2BAp6BAp+BAqCBAqGBAqKBAqOBAqSB -AqWBAqaBAqeBAqiBAqmBAqqBAquBAqyBAq2BAq6BAq+BArCBArGBArKBArOBArSBArWBAraBAreBAriB -ArmBArqBAruBAryBAr2BAr6BAr+BAsCBAsGBAsKBAsOBAsSBAsWBAsaBAseBAsiBAsmBAsqBAsuBAsyB -As2BAs6BAs+BAtCBAtGBAtKBAtOBAtSBAtWBAtaBAteBAtiBAtmBAtqBAtuBAtyBAt2BAt6BAt+BAuCB -AuGBAuKBAuOBAuSBAuWBAuaBAueBAuiBAumBAuqBAuuBAuyBAu2BAu6BAu+BAvCBAvGBAvKBAvOBAvSB -AvWBAvaBAveBAviBAvmBAvqBAvuBAvyBAv2BAv6BAv+BAwCBAwGBAwKBAwOBAwSBAwWBAwaBAweBAwiB -AwmBAwqBAwuBAwyBAw2BAw6BAw+BAxCBAxGBAxKBAxOBAxSBAxWBAxaBAxeBAxiBAxmBAxqBAxuBAxyB -Ax2BAx6BAx+BAyCBAyGBAyKBAyOBAyQRASsRAhIRAR4SAAGIHhEBdxEBDhEBfREBhhA6EQIWEBcSAAGI -vRIAAYi/EQJDEQEHEQFeEQFyEDgQiBEBbREBYhEBIxCDEgADDmcQkBEBDREBMREBrREBhBEBrxECIxEC -DhEBihEBexEBpxIAAYgNEQIfEQGAEQGqEQFzEQIXEJERAYwSAAGIIREBJREBixD1EMsRAXASAAGIEBIA -AYgTEQGwEQIkEKARAhwQwxAdEQF8EQGjEQIlEQGIEQGsEQIhEIYSAAGIGBCcEPQRASQSAAGHyxEBcRCr -EQE2EQGSEQGJELMRAZERAYEQzBEBERDOEIEQXBIAAYgiE//////////9ENARATURAg8QlhEBNxCPEgAB -iBQRAWsRAY0QzREBrhDEEQFcEQEnEQIgEQEqEgABh9YQBRIAAYgWEQIMEQEoEQEpEQEEEQFdEgABiAwQ -pBEBEBEBHRIAAYfHEQIiEQGFEQIUEQGmEQEwEBMRAhsQyhEBpRCeEQGPEQGzELAQnRCjEQF0EgAElQcR -AWERAYIRAbESAAGICxIAAYgbEQI/EQFgEQI+EgABiBERAhgQtRCyEQF+EQF4EQF5EKwRAh0SAAGIGREB -XxIAAYfFEQFBEM8RAS4RAhoQlREBpBEBdhEBjhECExA5EIISAAGHxBECPRECFREBhxECGREBNBC0EQF/ -EgABiBcRAT4SAAGHwxEBgxCpEgABiBIRAWwQrRCv0gAOAEUATQyvgD6g0gAOAEUG8AyygQHsoNIADgBF -BvAMtYEB7KDSADoAOwy3DLiiDLgAP15OU0lCT2JqZWN0RGF0YQAIABkAIgAnADEAOgA/AEQAUgBUAGYG -vAbCBw0HFAcbBykHOwdXB2UHcQd9B4sHlgekB8AHzgfhB/MIDQgXCCQIJggpCCwILwgyCDQINwg5CDwI -PwhCCEUIRwhJCEwITwhUCFcIYAhsCG4IcAh5CIMIhQiTCJwIpQiwCLcIyQjSCNsI5AjpCPgJCwkUCR8J -IQkiCSsJMgk/CUUJTglQCcEJwwnFCccJyQnLCc0JzwnRCdMJ1QnXCdkJ2wndCd8J4QnjCeUJ5wnpCesJ -7QnvCfEJ9An3CfoJ/QoACgMKBgoJCgwKDwoSChUKGAobCh4KIQokCicKKgotCjAKMwo2CjkKPAo/CkIK -RQpICksKTgpbCmQKbApuCnAKcgqTCpsKrwq6CsgK0grfCuYK6ArqCu8K8Qr2CvgK+gr8CwkLFQsXCxoL -HQskCyULMgtBC0MLRQtHC08LYQtqC28LgguPC5ELkwuVC6gLsQu2C8ELyQvSC9kL8QwADBEMHwwhDCMM -JQwnDEQMVgxeDGUMbgx4DIQMhgyIDIoMjAyPDJAMkgynDLIMtAy2DLgMugzTDQgNFA0qDT8NTg1hDXMN -fg2IDZYNqA21DcMNyA3KDcwNzg3QDdIN1A3WDdgN2g3cDd4N4w4DDhQOGw4iDisOLQ42DjgOOw5IDlEO -Vg5dDmYOcg50DnYOfw6IDo0Oow6sDrUOwg7PDtgO4w7sDvYO/Q8JDxIPFA8WDyQPMw9AD0IPRA9GD2cP -aQ9rD20Pbw9xD3MPfg+AD4sPnA+eD6APog+kD60Ptg+9D9QP5Q/nD+kP6w/tD/4QABACEAQQBhALEBQQ -FhAbEB0QHxBIEFYQYxBlEGcQaBBqEGsQbRBvEHEQmhCkEK0QrxCxELMQtRC3ELkQuxC9EMoQ2RDmEOgQ -6hDsEPUQ9xD8EP4RABEpESsRLREuETARMREzETURNxFYEVoRXBFeEWARYhFkEXkRghGJEZgRoBGpEa4R -txHIEcoRzBHOEdAR7RHvEfER8xH1EfYR+BIREhMSFRIXEhkSGxIzEmgSahJsEm4ScBJyEnQSdhKQEqES -oxKlEqcSqRLGEsgSyhLMEs4SzxLREuYS6BLqEuwS7hMHEzwTPhNAE0ITRBNGE0gTShNzE34TjxORE5MT -lROXE6oTuxO9E78TwRPDE+AT4hPkE+YT6BPpE+sUBBRTFHAUghSUFKkUtxTAFMEUwxTFFMcUyRTLFM0U -zxTRFNMU1RTWFNcU2hTdFN8U5BT1FPcU+RT7FQQVBhUPFREVQhVLFVEVWRVbFV0VXxVhFWMVZRVnFWkV -chV/FYEVgxWFFZIVphWvFbEVvBXFFccV0BXSFdQV1hXYFgUWBxYJFgsWDRYPFhEWExYVFhcWIhZPFlEW -UxZVFlcWWRZbFl0WXxZhFmsWmBaaFpwWnhagFqIWpBamFqgWqhazFrwWyRbdFuwW9RcCFxAXIRcjFyUX -JxcpF1IXVBdWF1cXWRdaF1wXXhdgF3EXcxd2F3kXfBePF6AXohekF6YXqBfRF9MX1RfWF9gX2RfbF90X -3xfsF+4X8BfzGAIYExgVGBcYGRgbGDgYOhg8GD4YQBhBGEMYXBiRGJMYlRiXGJkYmxidGJ8YvBjJGNoY -3BjeGOAY4hjoGPkY+xj9GP8ZARlAGU0ZZhlzGYkZlxmhGa8ZyBnVGd8Z8RoFGg8aGxodGh8aIRojGiUa -JxosGi4aMBoyGjQaNho4GlMaZRptGnYaeBp9GpoapRq6GsYayBrKGswazhrXGtka3BreGw8bHhsoGzwb -VRttG28bcRtzG3Ubdxt5G3obfBt9G38biBuKG40bjxuYG5obqRurG60brxuxG7MbtRu3G9Qb1hvYG9ob -3BvdG98b9xwYHCwcOBw6HDwcPhxAHEIcRxxJHLMcxBzGHM8c0RzUHOkc8Rz+HQodGB0aHRwdHh0gHSId -KR02HUMdSx1NHVkdYh1nHXwdfh2AHYIdhB2XHaQdph2pHbIdux3NHdYd4R3tHgoeDB4OHhAeEh4THhUe -LR5OHlAeUh5UHlYeWB5aHmMegB6CHoQehh6IHokeix6kHsUexx7JHssezR7PHtEfCB8lHycfKR8rHy0f -Lh8wH0kffh+AH4IfhB+GH4gfih+MH58fvB++H8Afwh/EH8Ufxx/gIAEgAyAFIAcgCSALIA0gdCCNIJYg -nSC1IL4gwCDHIMkgyyDNIOYg8yD9IP8hASEDIQUhByEJIRIhFCEWIR8hISEuITAhMiE0ITYhOCE6IVch -WSFbIV0hXyFgIWIheiGbIZ0hnyGhIaMhpSGnIhAiLSIvIjEiMyI1IjYiOCJRInIidCJ2IngieiJ8In4i -2CL1Ivci+SL7Iv0i/iMAIxkjTiNQI1IjVCNWI1gjWiNcI38jnCOeI6AjoiOkI6UjpyPAI+Ej4yPlI+cj -6SPrI+0kLiQ0JD0kQiRQJGkkayRtJG8kcSRzJHUkfiSAJIIkiSSeJKAkoiSkJKYkqCSxJLMkviTAJMIk -xCTGJMgk5STnJOkk6yTtJO4k8CUlJSclKSUrJS0lLyUxJTMlTiVrJW0lbyVxJXMldCV2JY8lsCWyJbQl -tiW4JbolvCZpJoYmiCaKJowmjiaPJpEmqSbKJswmzibQJtIm1CbWJ3InjyeRJ5MnlSeXJ5gnmieyJ9Mn -1SfXJ9kn2yfdJ98oFigfKCgoMSg8KFQoXyhpKHIodyiKKJYooyilKKcoqSjKKMwozijQKNIo1CjWKNoo -3CjhKPIo9Cj2KPgo+ikLKQ0pDykRKRMpNCk2KTgpOik8KT4pQClNKV4pYCliKWQpZimDKYUphymJKYsp -jSmPKaApoimlKagpqym1KcQp1SnXKdkp2yndKf4qACoCKgQqBioIKgoqHyoxKkIqRCpGKkgqSiprKm0q -bypxKnMqdSp3KoQqhiqUKqUqpyqpKqsqrSrOKtAq0irXKtkq2yrdKt8q9CsNKx4rICsiKyQrJis6K0sr -TStPK1ErUyt0K3YreCt6K3wrfiuAK4wrmSumK6grqiutK84r0CvTK9Yr2CvaK9wr4SvjK+kr+iv8K/4s -ASwELCUsJywqLC0sLywxLDMsPCw+LEksVixYLFssXix/LIEshCyHLIksiyyNLJIslCyaLKssrSyvLLIs -tSzWLNgs2yzdLN8s4SzjLO8tCC0ZLRstHS0gLSMtRC1GLUktSy1NLU8tUi1fLWEtZC1nLXAtei2LLY0t -jy2RLZMtpC2mLagtqi2tLcAt0S3TLdUt2C3bLfgt+y39LgAuAy4GLgcuCi4fLiEuIy4mLikuQy54Lnou -fS6ALoMuhi6ILosukC6ZLqMutC62Lrkuwy7MLs4u1y7ZLvEvAi8ELwYvCC8LLxovKy8tLy8vMi81L1Iv -VS9XL1ovXS9eL2Evey+wL7IvtS+4L7svvi/AL8MvzC/VL9cv4C/iL/QwBTAHMAkwCzAOMC4wPzBBMEMw -RTBIMFIwYzBlMGcwajBtMI4wkDCTMJYwmDCaMJwwqDCrMLgwyTDLMM0w0DDTMPAw8zD1MPgw+zD+MP8x -AjEaMU8xWDFaMVwxXzFiMWUxZzFqMW8xeDF6MY0xnjGgMaIxpDGmMbcxuTG7Mb0xwDHMMd0x3zHiMeQx -5zI2MlgyZTJ6MocyoTK9Mtgy5DMDMxIzHjMhMyQzKTMsMy8zMDMzMzwzRTNIM0kzTDNPM1IzWzOEM44z -mDOiM7AzszO2M7kzuzO+M8EzxDPHM8ozzTPYM/Ez/TQANAM0BjQJNAw0NTQ4NDs0PjRBNEQ0RzRKNE00 -VzRgNGk0fTSSNJU0mDSbNJ400zTfNOg0+zUINRQ1IjUlNSg1KzUuNTA1MzU2NUk1TDVPNVI1VTVYNW81 -eDWBNY81mDWaNaE1pDWnNao10zXiNe819zYCNhE2HDYnNjQ2NTY4Njs2RDZHNlA2WTZaNl02ejZ/NoI2 -hTaINoo2jTaSNp82oTatNsI2xDbGNsk2yzbdNuY28TcFNyI3JzcpNyw3LjcxNzM3QDdCN0U3TjdTN2E3 -ijeLN443kTeaN503pjenN6o3xzfKN8030DfSN9U33Tf6N/w3/zgBOAQ4BjgvODA4Mzg2OD84QjhLOEw4 -TzhsOG84cjh1OHc4ejiDOJg4mjidOKA4ojiuOM840TjUONc42jjbON047jjwOPk4+zkQORI5FDkXORk5 -MjlHOUk5TDlPOVE5WzloOWo5bzl4OYM5jjmfOaE5ozmmOak5zjnQOdM51jnYOdo53DneOec56TnvOgA6 -AjoEOgc6CjovOjE6NDo2Ojg6Ojo8OkU6XjprOm06cDpzOpQ6ljqZOpw6njqgOqI6qDqqOrE6wjrEOsY6 -yTrMOuk67DruOvE69Dr1Ovg7EjtHO0k7TDtPO1I7VTtXO1o7YTtqO2w7dTt3O4w7nTufO6E7ozumO7I7 -wzvFO8c7yjvNO+478DvzO/Y7+Dv6O/w8CzwNPBk8KjwsPC48MDwzPEg8WTxbPF08XzxiPH88kDySPJQ8 -ljyZPLE8wjzEPMY8yDzKPNs83TzfPOI85T0GPQg9Cz0OPRA9Ej0UPSY9KT08PU09Tz1RPVQ9Vz14PXo9 -fT2APYI9hD2GPZg9mj2tPb49wD3CPcU9yD3lPeg96j3tPfA98T30Pgw+QT5DPkY+ST5MPk8+UT5UPls+ -ZD5mPm8+cT6GPpc+mT6bPp0+oD6sPrk+uz6+PsE+4j7kPuc+6j7sPu4+8D71Pvc+/T8GPwlABkAJQAxA -DkAQQBJAFEAWQBlAG0AdQB9AIUAkQCdAKUArQC5AMUA0QDdAOkA8QD5AQEBCQERARkBIQEpATUBQQFJA -VUBXQFlAW0BdQF9AYUBjQGZAaEBrQG5AcUBzQHZAeEB7QH5AgECDQIZAiECKQI1AkECSQJVAl0CZQJxA -n0ChQKNApUCnQKpArECvQLJAtEC2QLhAu0C+QMBAwkDEQMZAyUDMQM5A0UDUQNdA2UDcQN9A4UDkQOZA -6EDqQOxA70DxQPRA9kD5QPtA/UD/QQFBA0EFQQdBCkENQRBBE0EVQRdBGkEdQSBBIkElQSdBKUEsQS5B -MEEyQTRBPUE/QUxBT0FSQVVBWEFbQV5BZ0FpQXRBd0F6QX1BgEGDQYxBjkGRQZRBrEG1Qb5ByUHqQfRB -90H6Qf1CAEIDQgZCD0IoQjVCPkJJQlRCeUJ8Qn9CgkKFQohCi0KUQqxCtUK3QrpCvULTQuxC9UL+QwtD -IkMrQy1DMkM0QzZDX0NhQ2NDZkNoQ2pDbENvQ3JDg0OFQ4hDi0OOQ5JDm0OdQ7ZDuEO7Q75DwUPEQ8ZD -yUPMQ89D0kPVQ9hEAUQDRAVEBkQIRAlEC0QNRA9EOEQ6RD1EQERCRERERkRIREtEVERlRGdEakRtRHBE -eUR7RIREhkSHRJlEwkTERMZEx0TJRMpEzETORNBE+UT7RP1E/kUARQFFA0UFRQdFMEUyRTRFNUU3RThF -OkU8RT5FS0V0RXZFeEV6RXxFfkWARYNFhkWPRZFFmEWhRaNFtkW5RbtFvUXARcNFxkXJRctFzUX2RfhF -+kX7Rf1F/kYARgJGBEYtRi9GMUYyRjRGNUY3RjlGO0ZKRlNGXEZeRmlGbEZvRnJGdUZ4RqFGo0alRqhG -qkasRq5GsUa0RrlGwkbERtVG2EbaRt1G30biRuVG50bpRxJHFEcWRxdHGUcaRxxHHkcgR0lHS0dNR1BH -UkdUR1ZHWUdcR4VHh0eKR41Hj0eRR5NHlkeZR55Hp0epR6xHr0e7R8RHxkfJSAhIC0gNSBBIE0gWSBlI -G0geSCFIJEgmSClILEhHSF5IZ0hpSHJIe0iASIlIjEmJSYxJj0mRSZNJlkmYSZpJnEmeSaBJokmkSadJ -qUmrSa1JsEmySbVJt0m6SbxJvknAScJJxEnGSchJyknNSc9J0UnUSddJ2UnbSd1J30nhSeNJ5UnnSepJ -7EnuSfBJ8kn0SfdJ+kn8Sf5KAUoDSgVKB0oJSgtKDUoPShFKE0oVShdKGUobSh1KIEoiSiVKKEoqSixK -LkoxSjRKNko4SjpKPEo+SkFKQ0pGSklKS0pNSk9KUkpUSldKWUpbSl1KX0piSmRKZ0ppSmtKbUpvSnFK -c0p1SndKeUp8Sn5KgEqDSoVKiEqLSo5KkUqTSpVKl0qZSpxKn0qhSqNKpUquSrFLsEuzS7ZLuEu6S7xL -vkvAS8NLxUvHS8lLy0vNS9BL00vWS9lL20veS+BL40vmS+hL6kvsS+5L8EvyS/RL90v5S/xL/0wBTANM -BUwHTAlMC0wNTA9MEkwUTBdMGkwdTCBMIkwlTChMK0wtTDBMMkw0TDZMOUw8TD5MQExDTEVMSExLTE1M -T0xRTFNMVkxYTFtMXkxgTGJMZExnTGpMbUxvTHFMc0x2THhMekx9TIBMg0yFTIhMi0yOTJBMkkyUTJdM -mUybTJ1MoEyiTKVMp0ypTKtMrUyvTLJMtEy2TLlMvEy/TMFMw0zFTMhMy0zOTNFM00zVTNhM2kzcTN5M -4EzpTOxN603uTfFN9E33TfpN/U4ATgNOBk4JTgxOD04SThVOGE4bTh5OIU4kTidOKk4tTjBOM042TjlO -PE4/TkJORU5ITktOTk5RTlROV05aTl1OYE5jTmZOaU5sTm9Ock51TnhOe05+ToFOhE6HTopOjU6QTpNO -lk6ZTpxOn06iTqVOqE6rTq5OsU6zTrZOuU68Tr9Owk7FTshOy07OTtFO1E7XTtpO3U7gTuNO5k7pTuxO -707yTvVO+E77Tv5PAU8ETwdPCk8NTxBPE08WTxlPHE8fTyJPJU8oTytPLk8xTzRPN086Tz1PQE9DT0ZP -SU9MT09PUk9VT1hPW09eT2FPZE97T4pPrk/jT/lQEFAoUEZQZ1DgUO1Q9FD7UQ1RJFE5UU9Re1GSUfpS -FVIhUjxSWVKeUqdTE1OIU6NTvVPjU/1UFFQxVD9UTFRnVJZUx1TvVQFVFVUoVUJVTlVlVXBVfFWTVaxV -+1YPVs5W51cBVx5XKldzV39Xi1ejV7pXxlhCWGtYlFigWMFY2ljzWRRZHllHWW5ZhFmRWalZvlnKWd5a -WVqIWp1atFrHWuBa81sGWxpbklutW/JcBFwvXHhckVylXPhdBF2/Xd1eh16gXr9e1l+EX5BfnF+6X+Ff -7F/5YBNgJWA5YFNgimCiYLdgw2DxYWhhe2GEYYdhiGGRYZRhlWGeYaFjDmMRYxRjF2MZYxtjHWMfYyJj -JGMmYyljK2MtYy9jMmM0YzZjOWM8Yz5jQGNDY0ZjSWNMY09jUWNTY1VjWGNbY11jYGNiY2RjZmNoY2pj -bGNuY3FjdGN3Y3ljfGN+Y4Fjg2OFY4djiWOLY41jkGOTY5VjmGOaY51jn2OiY6Rjp2OqY61jsGOyY7Vj -t2O6Y71jv2PCY8Vjx2PKY8xjzmPQY9Jj1GPWY9lj3GPeY+Fj42PmY+hj62PuY/Fj82P1Y/dj+WP8Y/5k -AGQDZAVkCGQLZA1kD2QRZBRkF2QZZBtkHWQfZCFkJGQnZClkK2QtZDBkM2Q2ZDlkPGQ/ZEJkRWRHZEpk -TWRQZFNkVWRYZFpkXGRfZGFkY2RmZGhka2RtZHBkc2R1ZHdkeWR7ZH1kf2SBZINkhmSIZIpkjWSQZJNk -lmSYZJpknWSfZKJkpWSoZKpkrGSvZLFktGS2ZLhku2S+ZMFkw2TFZMdkyWTLZNRk12ZEZkdmSmZNZlBm -U2ZWZllmXGZfZmJmZWZoZmtmbmZxZnRmd2Z6Zn1mgGaDZoZmiWaMZo9mkmaVZphmm2aeZqFmpGanZqpm -rWawZrNmtma5Zrxmv2bCZsVmyGbLZs5m0WbUZtdm2mbdZuBm42bmZulm7GbvZvJm9Wb4Zvtm/mcBZwRn -B2cKZw1nEGcTZxZnGWccZx9nImclZyhnK2cuZzFnNGc3ZzpnPWdAZ0NnRmdJZ0xnT2dSZ1VnWGdbZ15n -YWdkZ2dnamdtZ3Bnc2d2Z3lnfGd/Z4JnhWeIZ4tnjmeRZ5Rnl2eaZ51noGejZ6ZnqWesZ69nsme1Z7hn -u2e+Z8FnxGfHZ8pnzWfQZ9Nn1mfZZ9xn32fiZ+Vn6GfrZ+5n8Wf0Z/dn+mf9aABoA2gGaAloDGgPaBJo -FWgYaBtoHmghaCRoJ2gqaC1oMGgzaDZoOWg8aD9oQmhFaEhoS2hOaFFoVGhXaFpoXWhgaGNoZmhpaGxo -cWh0aHdoemh9aH9ogmiEaIlojmiRaJRol2iaaJxonmihaKRop2ipaK5osGizaLZouWi8aL9owmjFaMho -y2jOaNNo1mjZaNxo32jiaORo52jsaO9o8mj0aPZo+Wj+aQNpBmkJaQtpDmkQaRJpFWkYaRtpHmkhaSRp -JmkraS1pL2kyaTdpOmk8aT9pQmlFaUdpSmlNaU9pUmlUaVZpWGldaWZpaGlraW5pcGlzaXVpeml9aYBp -gmmFaYdpimmNaZBpk2mYaZppn2miaaVpqGmraa5ps2m1abhpu2nAacNpxmnJacxpz2nRadRp1mnZadtp -3mnhaeNp5Wnnaepp72nyafVp+Gn9agJqBWoIagtqEGoTahVqF2oaah1qIGoiaiVqKmotajJqNWo3ajpq -PWo/akJqRWpIaktqTWpPalRqV2paal1qYGpjamVqaGptanBqdWp4anpqf2qCaoRqhmqPapFqkmqbap5q -n2qoaqtqrGq1aroAAAAAAAACAgAAAAAAAAy5AAAAAAAAAAAAAAAAAABqyQ +ZSB0aGUgTWV0YSBtb2RpZmllci7UAA4BLwCTATABMQUFATMFB4ArI0AmAAAAAAAAgCoRDBzVAA4FCQUK +BQsFDAUNBQ4FDwUQBRFXTlNDb2xvclxOU0NvbG9yU3BhY2VbTlNDb2xvck5hbWVdTlNDYXRhbG9nTmFt +ZYEBIIEBHxAGgQEegQEdVlN5c3RlbVxjb250cm9sQ29sb3LTAA4FCgUVBQ0B4gUXV05TV2hpdGWBASBL +MC42NjY2NjY2OQDSADoAOwUZBQmiBQkAP9UADgUJBQoFCwUMBQ0FHAUPBR0FEYEBIIEBI4EBIoEBHV8Q +EGNvbnRyb2xUZXh0Q29sb3LTAA4FCgUVBQ0B4gUigQEgQjAA0gA6ADsFJAUlpAUlAUUA/wA/XxAPTlNU +ZXh0RmllbGRDZWxs0gA6ADsFJwUopQUoAUkBSgFLAD9bTlNUZXh0RmllbGTXAP0ADgD+AP8BAAEBAQIB +gQTyBSwFLQEQAKsBgYBDgQElgQEngQEoCYBDXxAWe3szNiwgMjA4fSwgezM4NSwgMjl9fdgBFAAOBPkB +GgEbARwBHgT6ASAE+wT8BTQE/gTqBQAFAYEBJIEBHIEBKYEBG4EBJoEBIV8QV0hvbGQgT3B0aW9uIGFu +ZCBDb21tYW5kIHdoaWxlIGNsaWNraW5nIHRvIGFjdGl2YXRlIHRoZSBtaWRkbGUgYW5kIHJpZ2h0IG1v +dXNlIGJ1dHRvbnMuCtcA/QAOAP4A/wEAAQEBAgGBBPIFPAU9ARAAqwGBgEOBASWBASuBASwJgENfEBZ7 +ezM2LCAxNTl9LCB7Mzg1LCAxNH192AEUAA4E+QEaARsBHAEeBPoBIAT7BPwFRAT+BOwFAAUBgQEkgQEc +gQEtgQEbgQEqgQEhXxA+QWxsb3dzIGlucHV0IG1lbnUgY2hhbmdlcyB0byBvdmVyd3JpdGUgdGhlIGN1 +cnJlbnQgWDExIGtleW1hcC7XAP0ADgD+AP8BAAEBAQIBgQTyBUwFTQEQAKsBgYBDgQElgQEvgQEwCYBD +XxAVe3szMywgMzJ9LCB7Mzg1LCAzMX192AEUAA4E+QEaARsBHAEeBPoBIAT7BPwFVAT+BO8FAAUBgQEk +gQEcgQExgQEbgQEugQEhXxCFV2hlbiBlbmFibGVkLCBjbGlja2luZyBvbiBhbiBpbmFjdGl2ZSB3aW5k +b3cgd2lsbCBjYXVzZSB0aGF0IG1vdXNlIGNsaWNrIHRvIHBhc3MgdGhyb3VnaCB0byB0aGF0IHdpbmRv +dyBpbiBhZGRpdGlvbiB0byBhY3RpdmF0aW5nIGl0Ll8QFnt7MTAsIDMzfSwgezQzOCwgMjc5fX3SADoA +OwVbAUqjAUoBSwA/XxAWe3sxMCwgMTB9LCB7NDU4LCAzMjV9fdIADgBFAE0FX4AfowTgBWEFYoEBNoEB +OoEBU9YADgVkAUoFZQUJAIwFZgVnAYEBiAT8BWtcTlNJZGVudGlmaWVyWU5TVGFiVmlld4EBOYEBN4BD +gQEUgQEcgQE40gAOADYANwVugARRMVVJbnB1dNIAOgA7BXEFcqIFcgA/XU5TVGFiVmlld0l0ZW3WAA4F +ZAFKBWUFCQCMBWYFdQHGAYgE/AV5gQE5gQE7gFWBARSBARyBAVLSAA4ANgA3BXyABFEy0gAOAEUATQV/ +gB+nBYAFgQHCBYMFhARYBYaBAT2BAUGAVIEBRYEBSYD1gQFN1wD9AA4A/gD/AQABAQECAcYBBAWKBYsB +EACrAcaAVYAxgQE+gQE/CYBVXxAWe3sxOCwgMTE2fSwgezQwMiwgMTh9fd0BFAAOARUBFgEXARgBGQEa +ARsBHAEdAR4BHwEgASEAlwEjAZEBkgCXBZQBKAWAASoBlwGYgDCAD4BHgA+BAUCAKYEBPV8QF1VzZSBz +eXN0ZW0gYWxlcnQgZWZmZWN01wD9AA4A/gD/AQABAQECAcYE8gWbBZwBEACrAcaAVYEBJYEBQoEBQwmA +VV8QFXt7MzYsIDgyfSwgezM4NSwgMjh9fdgBFAAOBPkBGgEbARwBHgT6ASAE+wT8BaME/gWBBQAFAYEB +JIEBHIEBRIEBG4EBQYEBIV8QZ1gxMSBiZWVwcyB3aWxsIHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIGFs +ZXJ0LCBhcyBkZWZpbmVkIGluIHRoZSBTb3VuZCBFZmZlY3RzIHN5c3RlbSBwcmVmZXJlbmNlcyBwYW5l +bC7XAP0ADgD+AP8BAAEBAQIBxgTyBasFrAEQAKsBxoBVgQElgQFGgQFHCYBVXxAVe3sxNywgMjM4fSwg +ezU1LCAyMH192AEUAA4E+QEaARsBHAEeBPoBIAT7BPwFswEoBYMFAAUBgQEkgQEcgQFIgCmBAUWBASFY +Q29sb3JzOgrXAP0ADgD+AP8BAAEBAQIBxgTyBbsFvAEQAKsBxoBVgQElgQFKgQFLCYBVXxAWe3szNiwg +MjE2fSwgezM5MiwgMTR9fdgBFAAOBPkBGgEbARwBHgT6ASAE+wT8BcME/gWEBQAFAYEBJIEBHIEBTIEB +G4EBSYEBIV8QNFRoaXMgb3B0aW9uIHRha2VzIGVmZmVjdCB3aGVuIFgxMSBpcyBsYXVuY2hlZCBhZ2Fp +bi7XAP0ADgD+AP8BAAEBAQIBxgTyBcsFzAEQAKsBxoBVgQElgQFOgQFPCYBVXxAWe3szNiwgMTQ1fSwg +ezM4NSwgMzF9fdgBFAAOBPkBGgEbARwBHgT6ASAE+wT8BdME/gWGBQAFAYEBJIEBHIEBUIEBG4EBTYEB +IV8QZEVuYWJsZXMgdGhlIFgxMSByb290IHdpbmRvdy4gVXNlIHRoZSBDb21tYW5kLU9wdGlvbi1BIGtl +eXN0cm9rZSB0byBlbnRlciBhbmQgbGVhdmUgZnVsbCBzY3JlZW4gbW9kZS5WT3V0cHV01QAOAUoFZQUJ +AIwFZgKJAYgE/AXegQE5gIKBARSBARyBAWbSAA4ARQBNBeGAH6UF4gKGBeQF5QXmgQFVgIGBAVmBAV2B +AWHXAP0ADgD+AP8BAAEBAQICiQEEBeoF6wEQAKsCiYCCgDGBAVaBAVcJgILdARQADgEVARYBFwEYARkB +GgEbARwBHQEeAR8BIAEhAJcBIwGRAZIAlwXzASgF4gEqAZcBmIAwgA+AR4APgQFYgCmBAVVfEBhBdXRo +ZW50aWNhdGUgY29ubmVjdGlvbnPXAP0ADgD+AP8BAAEBAQICiQTyBfoF+wEQAKsCiYCCgQElgQFagQFb +CYCCXxAWe3szNiwgMTk1fSwgezM4NSwgNDJ9fdgBFAAOBPkBGgEbARwBHgT6ASAE+wT8BgIE/gXkBQAF +AYEBJIEBHIEBXIEBG4EBWYEBIV8QqkxhdW5jaGluZyBYMTEgd2lsbCBjcmVhdGUgWGF1dGhvcml0eSBh +Y2Nlc3MtY29udHJvbCBrZXlzLiBJZiB0aGUgc3lzdGVtJ3MgSVAgYWRkcmVzcyBjaGFuZ2VzLCB0aGVz +ZSBrZXlzIGJlY29tZSBpbnZhbGlkIHdoaWNoIG1heSBwcmV2ZW50IFgxMSBhcHBsaWNhdGlvbnMgZnJv +bSBsYXVuY2hpbmcu1wD9AA4A/gD/AQABAQECAokE8gYKBgsBEACrAomAgoEBJYEBXoEBXwmAgl8QFnt7 +MzYsIDExOH0sIHszODUsIDQyfX3YARQADgT5ARoBGwEcAR4E+gEgBPsE/AYSBP4F5QUABQGBASSBARyB +AWCBARuBAV2BASFfEJlJZiBlbmFibGVkLCBBdXRoZW50aWNhdGUgY29ubmVjdGlvbnMgbXVzdCBhbHNv +IGJlIGVuYWJsZWQgdG8gZW5zdXJlIHN5c3RlbSBzZWN1cml0eS4gV2hlbiBkaXNhYmxlZCwgY29ubmVj +dGlvbnMgZnJvbSByZW1vdGUgYXBwbGljYXRpb25zIGFyZSBub3QgYWxsb3dlZC7XAP0ADgD+AP8BAAEB +AQICiQTyBhoGGwEQAKsCiYCCgQElgQFigQFjCYCCXxAVe3syMCwgMTd9LCB7NDA0LCAxNH192AEUAA4E ++QEaARsBHAEeBPoBIAT7BPwGIgT+BeYFAAUBgQEkgQEcgQFkgQEbgQFhgQEhXxA0VGhlc2Ugb3B0aW9u +cyB0YWtlIGVmZmVjdCB3aGVuIFgxMSBpcyBuZXh0IGxhdW5jaGVkLlhTZWN1cml0edIAOgA7BikFZaQF +ZQFKAUsAP1p7NDgxLCAzNDV9XxAVe3swLCAwfSwgezE0NDAsIDg3OH19WnsyMTMsIDEyOX1ZeDExX3By +ZWZz0gA6ADsGLwYwogYwAD9fEBBOU1dpbmRvd1RlbXBsYXRlW3ByZWZzX3BhbmVs1AAOAIoAiwCMAPgA ++QDaBjaANYAygB2BAXBfEBBhcHBzX3RhYmxlX3Nob3c61AAOAIoAiwCMAI0A+QAfBjyAIoAygAKBAXJY +ZGVsZWdhdGXUAA4AigCLAIwAjQXiAPkGQoAigQFVgDKBAXRbZW5hYmxlX2F1dGjUAA4AigCLAIwA+AAf +AycGSIA1gAKAu4EBdl8QFmhpZGVPdGhlckFwcGxpY2F0aW9uczrUAA4AigCLAIwA+AD5Bk0GToA1gDKB +AXiBAX7XAP0ADgD+AP8BAAEBAQIBAwEEBlIGUwZUAKsBA4AlgDGBAXmBAXoRAS8JgCVfEBV7ezM1Miwg +MTJ9LCB7ODQsIDMyfX3dARQADgEVARYBFwEYARkBGgEbARwBHQEeAR8GWQEhBlsBIwEkASUGXQZeASgG +TQEqASsBLBP/////hAH+AIAwgQF8gCyBAX2BAXuAKYEBeFZDYW5jZWzSAA4ANgA3ALKABNIADgA2ADcA +soAEXxASYXBwc190YWJsZV9jYW5jZWw61AAOAIoAiwCMAPgA+QOVBjaANYAygMWBAXDUAA4AigCLAIwA ++AD5A/cGcIA1gDKA34EBgV8QEG1pbmltaXplX3dpbmRvdzrTAA4AiwCMAPgDrgZ1gDWA0oEBg1RjdXQ6 +1AAOAIoAiwCMAPgA+QZ6BnuANYAygQGFgQGL1wD9AA4A/gD/AQABAQECAQMBBAZ/BoABBwCrAQOAJYAx +gQGGgQGHCYAlXxAXe3szNzIsIDI0N30sIHsxMDAsIDMyfX3dARQADgEVARYBFwEYARkBGgEbARwBHQEe +AR8BIAEhBoYBIwEkASUGiAaJASgGegEqASsBLIAwgQGJgCyBAYqBAYiAKYEBhVlEdXBsaWNhdGXSAA4A +NgA3ALKABNIADgA2ADcAsoAEXxAVYXBwc190YWJsZV9kdXBsaWNhdGU61AAOAIoAiwCMAI0FgAD5BpaA +IoEBPYAygQGNW3VzZV9zeXNiZWVw1AAOAIoAiwCMAI0GmgD5BpyAIoEBj4AygQG33xATAP0GngAOBNMG +nwT5BqAGoQaiBqMGpAEAAQwBAQalBqYBAganBqgGqQGXBqoGqwasBq0AqwavBrABJAaxARAGsgCrBrQB +/AapBrYGt18QH05TRHJhZ2dpbmdTb3VyY2VNYXNrRm9yTm9uTG9jYWxcTlNIZWFkZXJWaWV3XxASTlNB +bGxvd3NUeXBlU2VsZWN0XE5TQ29ybmVyVmlld18QF05TSW50ZXJjZWxsU3BhY2luZ1dpZHRoXxAZTlND +b2x1bW5BdXRvcmVzaXppbmdTdHlsZV8QGE5TSW50ZXJjZWxsU3BhY2luZ0hlaWdodFtOU0dyaWRDb2xv +cl8QHE5TRHJhZ2dpbmdTb3VyY2VNYXNrRm9yTG9jYWxeTlNUYWJsZUNvbHVtbnNbTlNSb3dIZWlnaHSB +AZCBAbYSUkCAAIEBkoEBpAmBAZYjQAgAAAAAAAAjQAAAAAAAAACBAZEJgQGzgQGQgQGaI0AxAAAAAAAA +2gD9AA4A/ga5AQsBAAa6BrsBAga8Br0Gvga/BsAGwQbCBpoGxAa9BppZTlNjdkZsYWdzWU5TRG9jVmll +d1lOU0JHQ29sb3JdTlNOZXh0S2V5Vmlld4EBl4EB4YEB4BAEgQHfEQkAgQGPgQGxgQGXgQGPWnszMzMs +IDE5N33WAP0ADgEAAQwBAgbJBsoGywEQBswGygaaW05TVGFibGVWaWV3gQGTgQGVgQGUgQGTgQGP2gD9 +AA4A/ga5AQsBAAa6BrsBAga8Br0GvgbSBsAG0wbCBqwGxAa9BqyBAZeBAeGBAemBAeiBAZKBAbGBAZeB +AZJZezMzMywgMTd90gA6ADsG2gbbpAbbAUoBSwA/XxARTlNUYWJsZUhlYWRlclZpZXfVAP0ADgD+AQAB +Aga9Bt4G3wEQBr2BAZeBAZmBAZiBAZfeAP0G4gAOAP4G4wahBuQBCwblAQABAgbmBrwG5wEDBukG6gbr +BuwGrwbKBu8G8AbxAQMG8wapBqlbTlNIU2Nyb2xsZXJYTlNzRmxhZ3NfEBBOU0hlYWRlckNsaXBWaWV3 +XE5TU2Nyb2xsQW10c1tOU1ZTY3JvbGxlcl1OU0NvbnRlbnRWaWV3gCWBAeaBAeuBAeoQMoEBloEBk4EB +3k8QEEEgAABBIAAAQZgAAEGYAAARATOAJYEB4oEBkIEBkF8QFHt7MzM0LCAwfSwgezE2LCAxN3190gA6 +ADsG+Ab5pAb5AUoBSwA/XV9OU0Nvcm5lclZpZXfSAA4ARQBNBvyAH6MG/Qb+Bv+BAZuBAaaBAaraBwEA +DgcCBwMHBAcFBwYHBwcIBskAqwcKBwsHDAcNAeIHDgcPAKsGml5OU0lzUmVzaXplYWJsZVxOU0hlYWRl +ckNlbGxXTlNXaWR0aFpOU0RhdGFDZWxsXk5TUmVzaXppbmdNYXNrWk5TTWluV2lkdGhaTlNNYXhXaWR0 +aFxOU0lzRWRpdGFibGUJgQGlgQGcI0BbwAAAAAAAgQGiI0BEAAAAAAAAI0CPQAAAAAAACYEBj9cBFAAO +BPkBGgEbAR4E+gcTBxQHFQcWBP4BlwcYEgSB/gCBAaGBAZ6BAZ2BARuBAZ9UTmFtZdMADgUKBRUFDQHi +BxyBASBLMC4zMzMzMzI5OQDVAA4FCQUKBQsFDAUNBRwFDwcgBRGBASCBASOBAaCBAR1fEA9oZWFkZXJU +ZXh0Q29sb3LSADoAOwckByWlByUFJQFFAP8AP18QEU5TVGFibGVIZWFkZXJDZWxs2AEUAA4E+QEaARsB +HAEeBPoHJwT7Bq0HKgEoBpoB5gUBEhQx/kCBASSBAaSBAaOAKYEBj4EBIVlUZXh0IENlbGzTAA4FCgUV +BQ0B4gcxgQEgQjEA0gA6ADsHMwc0ogc0AD9dTlNUYWJsZUNvbHVtbtoHAQAOBwIHAwcEBwUHBgcHBwgG +yQCrBwoHOAc5BzoB4gc7Bw8AqwaaCYEBpYEBpyNAYJdkYAAAAIEBqSNAT12RYAAAAAmBAY/XARQADgT5 +ARoBGwEeBPoHEwcUBxUHQQT+AZcHGIEBoYEBnoEBqIEBG4EBn1dDb21tYW5k2AEUAA4E+QEaARsBHAEe +BPoHJwT7Bq0HKgEoBpoB5gUBgQEkgQGkgQGjgCmBAY+BASHaBwEADgcCBwMHBAcFBwYHBwcIBskAqwcK +B08HUAdRAeIHUgcPAKsGmgmBAaWBAasjQFQAAAAAAACBAa8jQCQAAAAAAAAJgQGP1wEUAA4E+QEaARsB +HgT6ASAHFAdXB1gE/gGXBxiBAaGBAa2BAayBARuBAZ9YU2hvcnRjdXTVAA4FCQUKBQsFDAUNBq0FDwdf +BRGBASCBAaSBAa6BAR1baGVhZGVyQ29sb3LZARQADgT5ARoBGwEcAR4E1AT6BycE+wbEByoHZgaaAeYA +qwUBgQEkgQGxgQGjgQGwgQGPCYEBIdQADgEvAJMBMAExB2wBMwE8gCsjQCgAAAAAAACAKtUADgUJBQoF +CwUMBQ0FDgUPB3EFEYEBIIEBH4EBsoEBHV8QFmNvbnRyb2xCYWNrZ3JvdW5kQ29sb3LVAA4FCQUKBQsF +DAUNB3YFDwd3BRGBASCBAbWBAbSBAR1ZZ3JpZENvbG9y0wAOBQoFFQUNAeIHfIEBIEQwLjUA0gA6ADsH +fgbJpQbJAUkBSgFLAD9aYXBwc190YWJsZdQADgCKAIsAjAD4AB8DJgeEgDWAAoC4gQG5VWhpZGU61AAO +AIoAiwCMAPgA+QP4B4qANYAygOKBAbtcem9vbV93aW5kb3c61AAOAIoAiwCMAPgA+QP+B5CANYAygOaB +Ab1fEA9icmluZ190b19mcm9udDrUAA4AigCLAIwA+AD5BeIBp4A1gDKBAVWAUNMADgCLAIwA+AOxB5qA +NYDYgQHAV2RlbGV0ZTrUAA4AigCLAIwAjQGmAPkHoIAigEyAMoEBwltzeW5jX2tleW1hcNQADgCKAIsA +jAD4APkFgAGngDWAMoEBPYBQ1AAOAIoAiwCMAPgA+QRGB6uANYAygO+BAcVZeDExX2hlbHA60wAOAIsA +jAD4A7AHsIA1gNWBAcdWcGFzdGU61AAOAIoAiwCMAI0CWwD5B7aAIoB2gDKBAcldY2xpY2tfdGhyb3Vn +aNQADgCKAIsAjACNA/8A+Qe8gCKA6IAygQHLXxAQd2luZG93X3NlcGFyYXRvctQADgCKAIsAjAD4APkD +KgfCgDWAMoC+gQHNVXF1aXQ61AAOAIoAiwCMAI0CoQD5B8iAIoCHgDKBAc9cZmFrZV9idXR0b25z1AAO +AIoAiwCMAI0AnQD5B86AIoAOgDKBAdFfEBVkb2NrX3dpbmRvd19zZXBhcmF0b3LTAA4AiwCMAPgDrAfT +gDWAzoEB01VyZWRvOtQADgCKAIsAjACNAoYA+QfZgCKAgYAygQHVWmVuYWJsZV90Y3DUAA4AigCLAIwA ++AD5B94H34A1gDKBAdeBAdzXAP0ADgD+AP8BAAEBAQIBAwEEB+MH5AZUAKsBA4AlgDGBAdiBAdkJgCVf +EBV7ezI2OCwgMTJ9LCB7ODQsIDMyfX3dARQADgEVARYBFwEYARkBGgEbARwBHQEeAR8GWQEhAJcBIwEk +ASUH7AftASgH3gEqASsBLIAwgA+ALIEB24EB2oApgQHXVERvbmXSAA4ANgA3ALKABF8QEGFwcHNfdGFi +bGVfZG9uZTrSAA4ARQf1B/aBAfqvEIEDIAOsAecG/wXmAscCWwa9APkF+wUtAgsCDATvAYED/QMmAyoD +lQGmAawF6wR8Bk0A2QTsAxEFnACdAmEFYQaABv0CcQGIBeIGrAEGB94CpwMQBeUFgAHCA/cAngK2A60C +4gWBAMkFiwHGBgsDPwJHA/sGegOrA/4DDwMhANoDJwTqBzoAjgYbCDsCoQTgBYQHUQb+AuoCOQShAlIE +RgFyA/gDAQbzAeABAwOuAPoFTQWGBWIBhAFXBukBXwfkBeQDJQKGAgoE6QW8CFwFPQOxBcwDIgF9BF8E +swHJBlMC8wT0Aw0HDQR2BDcFgwMjBFgGmgMOA7AFrAP/AowBagMpAomAq4DOgFyBAaqBAWGAkYB2gQGX +gDKBAVuBASiAZIBngQEugEOA5YC4gL6AxYBMgE6BAVeA/4EBeIAcgQEqgOqBAUOADoB4gQE6gQGHgQGb +gHuBARSBAVWBAZKAJ4EB14CJgNqBAV2BAT2AVIDfgBeAjIDRgJqBAUGAGoEBP4BVgQFfgLKAcoDkgQGF +gMuA5oDHgK6AHYC7gQEmgQGpgAuBAWOBAeyAh4EBNoEBSYEBr4EBpoCbgG6BAQuAc4DvgD2A4oCkgQHi +gFuAJYDSgCSBATCBAU2BAVOARYA3gQHmgDiBAdmBAVmAt4CBgGGBAReBAUuBAfiBASyA2IEBT4CvgEKA +94EBEoBXgQF6gJ+BARmAp4EBooD9gO2BAUWAtoD1gQGPgMKA1YEBR4DogISAPIC9gILSAA4ARQBNCHqA +H6UGqQbzBukGygavgQGQgQHigQHmgQGTgQGW0gAOAEUATQiCgB+hBpqBAY9fEBV7ezEsIDE3fSwgezMz +MywgMTk3fX3SADoAOwiGCIekCIcBSgFLAD9aTlNDbGlwVmlld9gA/QHxAA4A/gEAAMcBAgiJBr0GvQiM +CI0BEAiOBr0IkFlOU1BlcmNlbnSBAZeBAZeBAeWBAeOBAeSBAZcjP+/WamAAAABfEBZ7ezMzNCwgMTd9 +LCB7MTUsIDE5N319XF9kb1Njcm9sbGVyOtIAOgA7CJQIlaUIlQFJAUoBSwA/Wk5TU2Nyb2xsZXLZAP0B +8QAOAP4G4wEAAMcBAgiJBr0GvQiMCJoBJAEQCI4GvQidgQGXgQGXgQHlgQHngQHkgQGXIz/mCGTAAAAA +XxAVe3sxLCAyMTR9LCB7MzMzLCAxNX190gAOAEUATQihgB+hBqyBAZJfEBN7ezEsIDB9LCB7MzMzLCAx +N319XxAWe3syMCwgNzd9LCB7MzUwLCAyMzB9fdIAOgA7CKYIp6QIpwFKAUsAP1xOU1Njcm9sbFZpZXff +EA8EpQAOBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIBAwS0CKsIrAitCK4EuQS6CLAIsQiyAZEIswi0 +CLWAJYEBbYEB8IEB9IEB94EB7oEBDoEB8YEB7YEB9hALgQH1gQHvXxAYe3syNzksIDI1M30sIHs0ODYs +IDMyN319XxAUWDExIEFwcGxpY2F0aW9uIE1lbnXSAA4ANgA3BMWABNIADgBFAE0IvIAfpgfeBnoEdga9 +Bk0A+oEB14EBhYD9gQGXgQF4gCRaezQ4NiwgMzI3fVh4MTFfYXBwc9IADgAyADMIx4AFgQH50gA6ADsI +yQDvogDvAD/SAA4ARQf1CMyBAfqvEIEBXwLqAckGmgKJAXIBgQEDAB8F5ATqAecB5wGBBOABcgFfAV8C +UgGBAaYF4gR2AQMAyQGBAwEFgQCOAlsBiAZ6BpoBcgSzAokGvQD6AQMCoQMBAokBxgHGAXIAjgFfAuoC +6gHGAJ4FgAVhBeUDIgJSAXIBAwLqAXIDAQFfAMkBXwGBBv4AHwXmAB8BgQGIAcYG/waaAw8BXwAfAw4E +NwMQAXIAHwa9AecIOwLqAQME7wHGAYgBfQFfBr0DDQfeAokBXwKJAecBgQWEAB8E7ALqBYYBXwGBBFgE +oQHCBk0C6gTpAwEG/QEDAxEBxgFfAcYGvQMBAuoFgwFyAoYBcgFfBWKAOICbgFeBAY+AgoA9gEOAJYAC +gQFZgQEmgFyAXIBDgQE2gD2AOIA4gHOAQ4BMgQFVgP2AJYAagEOApIEBQYALgHaBARSBAYWBAY+APYEB +EoCCgQGXgCSAJYCHgKSAgoBVgFWAPYALgDiAm4CbgFWAF4EBPYEBOoEBXYCvgHOAPYAlgJuAPYCkgDiA +GoA4gEOBAaaAAoEBYYACgEOBARSAVYEBqoEBj4DHgDiAAoDCgO2A2oA9gAKBAZeAXIEB7ICbgCWBAS6A +VYEBFIBCgDiBAZeAp4EB14CCgDiAgoBcgEOBAUmAAoEBKoCbgQFNgDiAQ4D1gQELgFSBAXiAm4EBF4Ck +gQGbgCWA6oBVgDiAVYEBl4CkgJuBAUWAPYCBgD2AOIEBU9IADgBFB/UJUIEB+q8QggMgA6wG/wHnBeYC +xwa9AlsA+QX7BS0CCwIMBO8BgQP9AyYDKgOVBHwBpgGsBesGTQDZBOwDEQWcAJ0FYQaAAmEG/QGIAnEF +4gasAQYH3gKnAxAF5QWAAJ4D9wHCArYAHwOtAuIFgQDJBYsBxgYLAz8CRwZ6A/sDqwP+Aw8DIQDaAycE +6gCOBzoGGwg7AqEE4AWEB1EG/gLqAjkEoQJSBEYBcgP4AwEG8wEDAeADrgD6BWIFhgVNBukBVwfkAV8B +hAXkAyUChgIKBOkFvAhcBcwDsQU9AyIBfQRfBLMByQZTAvMHDQMNBPQEdgQ3BYMDIwRYBpoDDgOwBawD +/wKMAWoDKQKJgKuAzoEBqoBcgQFhgJGBAZeAdoAygQFbgQEogGSAZ4EBLoBDgOWAuIC+gMWA/4BMgE6B +AVeBAXiAHIEBKoDqgQFDgA6BATqBAYeAeIEBm4EBFIB7gQFVgQGSgCeBAdeAiYDagQFdgQE9gBeA34BU +gIyAAoDRgJqBAUGAGoEBP4BVgQFfgLKAcoEBhYDkgMuA5oDHgK6AHYC7gQEmgAuBAamBAWOBAeyAh4EB +NoEBSYEBr4EBpoCbgG6BAQuAc4DvgD2A4oCkgQHigCWAW4DSgCSBAVOBAU2BATCBAeaAN4EB2YA4gEWB +AVmAt4CBgGGBAReBAUuBAfiBAU+A2IEBLICvgEKA94EBEoBXgQF6gJ+BAaKAp4EBGYD9gO2BAUWAtoD1 +gQGPgMKA1YEBR4DogISAPIC9gILSAA4ARQf1CdWBAfqvEIIJ1gnXCdgJ2QnaCdsJ3AndAU4J3wngCeEJ +4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8K +AAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0K +HgofCiAKIQoiCiMKJAolCiYKJwMGCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsK +PAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKV4EB/oEB +/4ECAIECAYECAoECA4ECBIECBYAzgQIGgQIHgQIIgQIJgQIKgQILgQIMgQINgQIOgQIPgQIQgQIRgQIS +gQITgQIUgQIVgQIWgQIXgQIYgQIZgQIagQIbgQIcgQIdgQIegQIfgQIggQIhgQIigQIjgQIkgQIlgQIm +gQIngQIogQIpgQIqgQIrgQIsgQItgQIugQIvgQIwgQIxgQIygQIzgQI0gQI1gQI2gQI3gQI4gQI5gQI6 +gQI7gQI8gQI9gQI+gQI/gQJAgQJBgQJCgQJDgQJEgQJFgQJGgQJHgQJIgQJJgQJKgQJLgQJMgQJNgQJO +gKWBAk+BAlCBAlGBAlKBAlOBAlSBAlWBAlaBAleBAliBAlmBAlqBAluBAlyBAl2BAl6BAl+BAmCBAmGB +AmKBAmOBAmSBAmWBAmaBAmeBAmiBAmmBAmqBAmuBAmyBAm2BAm6BAm+BAnCBAnGBAnKBAnOBAnSBAnWB +AnaBAneBAniBAnmBAnqBAnuBAnyBAn1fEBpNZW51IEl0ZW0gKFByZWZlcmVuY2VzLi4uKV8QEE1lbnUg +SXRlbSAoUmVkbylfEBdUYWJsZSBDb2x1bW4gKFNob3J0Y3V0KV8QEU1lbnUgKE90aGVyVmlld3MpXxBC +U3RhdGljIFRleHQgKFRoZXNlIG9wdGlvbnMgdGFrZSBlZmZlY3Qgd2hlbiBYMTEgaXMgbmV4dCBsYXVu +Y2hlZC4pXxApTWVudSBJdGVtIChSZXZlcnNlIEN5Y2xlIFRocm91Z2ggV2luZG93cylbU2Nyb2xsIFZp +ZXdfECpDaGVjayBCb3ggKENsaWNrLXRocm91Z2ggSW5hY3RpdmUgV2luZG93cylfELxUZXh0IEZpZWxk +IENlbGwgKExhdW5jaGluZyBYMTEgd2lsbCBjcmVhdGUgWGF1dGhvcml0eSBhY2Nlc3MtY29udHJvbCBr +ZXlzLiBJZiB0aGUgc3lzdGVtJ3MgSVAgYWRkcmVzcyBjaGFuZ2VzLCB0aGVzZSBrZXlzIGJlY29tZSBp +bnZhbGlkIHdoaWNoIG1heSBwcmV2ZW50IFgxMSBhcHBsaWNhdGlvbnMgZnJvbSBsYXVuY2hpbmcuKV8Q +aVRleHQgRmllbGQgQ2VsbCAoSG9sZCBPcHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8g +YWN0aXZhdGUgdGhlIG1pZGRsZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KKV8QFU1lbnUgSXRlbSAo +VGhvdXNhbmRzKV8QFE1lbnUgSXRlbSAoTWlsbGlvbnMpXxCTU3RhdGljIFRleHQgKFdoZW4gZW5hYmxl +ZCwgY2xpY2tpbmcgb24gYW4gaW5hY3RpdmUgd2luZG93IHdpbGwgY2F1c2UgdGhhdCBtb3VzZSBjbGlj +ayB0byBwYXNzIHRocm91Z2ggdG8gdGhhdCB3aW5kb3cgaW4gYWRkaXRpb24gdG8gYWN0aXZhdGluZyBp +dC4pVlZpZXctMVtTZXBhcmF0b3ItMV8QFE1lbnUgSXRlbSAoSGlkZSBYMTEpXxAUTWVudSBJdGVtIChR +dWl0IFgxMSlfEBhNZW51IEl0ZW0gKEN1c3RvbWl6ZS4uLilfEBRCdXR0b24gQ2VsbCAoUmVtb3ZlKV8Q +KUNoZWNrIEJveCAoRm9sbG93IHN5c3RlbSBrZXlib2FyZCBsYXlvdXQpXxArQnV0dG9uIENlbGwgKEZv +bGxvdyBzeXN0ZW0ga2V5Ym9hcmQgbGF5b3V0KV8QJkJ1dHRvbiBDZWxsIChBdXRoZW50aWNhdGUgY29u +bmVjdGlvbnMpXxAUUHVzaCBCdXR0b24gKENhbmNlbClcU2VwYXJhdG9yLTEwXxBMU3RhdGljIFRleHQg +KEFsbG93cyBpbnB1dCBtZW51IGNoYW5nZXMgdG8gb3ZlcndyaXRlIHRoZSBjdXJyZW50IFgxMSBrZXlt +YXAuKV8QEE1lbnUgSXRlbSAoSGVscClfEHlUZXh0IEZpZWxkIENlbGwgKFgxMSBiZWVwcyB3aWxsIHVz +ZSB0aGUgc3RhbmRhcmQgc3lzdGVtIGFsZXJ0LCBhcyBkZWZpbmVkIGluIHRoZSBTb3VuZCBFZmZlY3Rz +IHN5c3RlbSBwcmVmZXJlbmNlcyBwYW5lbC4pWVNlcGFyYXRvcl8QFlRhYiBWaWV3IEl0ZW0gKE91dHB1 +dClfEBdCdXR0b24gQ2VsbCAoRHVwbGljYXRlKV8QLEJ1dHRvbiBDZWxsIChDbGljay10aHJvdWdoIElu +YWN0aXZlIFdpbmRvd3MpXxATVGFibGUgQ29sdW1uIChOYW1lKV8QJlRvcCBUYWIgVmlldyAoSW5wdXQs +IE91dHB1dCwgU2VjdXJpdHkpXxAhTWVudSBJdGVtIChDeWNsZSBUaHJvdWdoIFdpbmRvd3MpXxAkQ2hl +Y2sgQm94IChBdXRoZW50aWNhdGUgY29ubmVjdGlvbnMpXxARVGFibGUgSGVhZGVyIFZpZXdfEBZCdXR0 +b24gQ2VsbCAoQWRkIEl0ZW0pXxASUHVzaCBCdXR0b24gKERvbmUpXxAoQnV0dG9uIENlbGwgKEVtdWxh +dGUgdGhyZWUgYnV0dG9uIG1vdXNlKV8QEk1lbnUgSXRlbSAoV2luZG93KV8Qp1N0YXRpYyBUZXh0IChJ +ZiBlbmFibGVkLCBBdXRoZW50aWNhdGUgY29ubmVjdGlvbnMgbXVzdCBhbHNvIGJlIGVuYWJsZWQgdG8g +ZW5zdXJlIHN5c3RlbSBzZWN1cml0eS4gV2hlbiBkaXNhYmxlZCwgY29ubmVjdGlvbnMgZnJvbSByZW1v +dGUgYXBwbGljYXRpb25zIGFyZSBub3QgYWxsb3dlZC4pXxAjQ2hlY2sgQm94IChVc2Ugc3lzdGVtIGFs +ZXJ0IGVmZmVjdClfEBpNZW51IEl0ZW0gKEFwcGxpY2F0aW9ucyktMV8QFE1lbnUgSXRlbSAoTWluaW1p +emUpXxAbUG9wdXAgQnV0dG9uIChGcm9tIERpc3BsYXkpXxAeTWVudSBJdGVtIChUb2dnbGUgRnVsbCBT +Y3JlZW4pXEZpbGUncyBPd25lcltTZXBhcmF0b3ItNF8QFk1lbnUgSXRlbSAoU2VsZWN0IEFsbClfEHVT +dGF0aWMgVGV4dCAoWDExIGJlZXBzIHdpbGwgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gYWxlcnQsIGFz +IGRlZmluZWQgaW4gdGhlIFNvdW5kIEVmZmVjdHMgc3lzdGVtIHByZWZlcmVuY2VzIHBhbmVsLilfEBVN +ZW51IChBcHBsaWNhdGlvbnMpLTFfECVCdXR0b24gQ2VsbCAoVXNlIHN5c3RlbSBhbGVydCBlZmZlY3Qp +XxCrVGV4dCBGaWVsZCBDZWxsIChJZiBlbmFibGVkLCBBdXRoZW50aWNhdGUgY29ubmVjdGlvbnMgbXVz +dCBhbHNvIGJlIGVuYWJsZWQgdG8gZW5zdXJlIHN5c3RlbSBzZWN1cml0eS4gV2hlbiBkaXNhYmxlZCwg +Y29ubmVjdGlvbnMgZnJvbSByZW1vdGUgYXBwbGljYXRpb25zIGFyZSBub3QgYWxsb3dlZC4pXxAPTWVu +dSAoU2VydmljZXMpW1NlcGFyYXRvci05XxAXUHVzaCBCdXR0b24gKER1cGxpY2F0ZSlbU2VwYXJhdG9y +LTJfEBBNZW51IEl0ZW0gKFVuZG8pXxAeTWVudSBJdGVtIChCcmluZyBBbGwgdG8gRnJvbnQpXxAQTWVu +dSBJdGVtIChFZGl0KVtTZXBhcmF0b3ItNW8QFgBNAGUAbgB1ACAASQB0AGUAbQAgACgAQwB1AHMAdABv +AG0AaQB6AGUgJgApXxAXTWVudSBJdGVtIChIaWRlIE90aGVycylfEGVTdGF0aWMgVGV4dCAoSG9sZCBP +cHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8gYWN0aXZhdGUgdGhlIG1pZGRsZSBhbmQg +cmlnaHQgbW91c2UgYnV0dG9ucy4KKVhEb2NrTWVudV8QHVRleHQgRmllbGQgQ2VsbCAoVGV4dCBDZWxs +KS0yXxBGVGV4dCBGaWVsZCBDZWxsIChUaGVzZSBvcHRpb25zIHRha2UgZWZmZWN0IHdoZW4gWDExIGlz +IG5leHQgbGF1bmNoZWQuKVxFZGl0UHJvZ3JhbXNfECZDaGVjayBCb3ggKEVtdWxhdGUgdGhyZWUgYnV0 +dG9uIG1vdXNlKV8QFVRhYiBWaWV3IEl0ZW0gKElucHV0KV8QQlN0YXRpYyBUZXh0IChUaGlzIG9wdGlv +biB0YWtlcyBlZmZlY3Qgd2hlbiBYMTEgaXMgbGF1bmNoZWQgYWdhaW4uKV8QG1RleHQgRmllbGQgQ2Vs +bCAoVGV4dCBDZWxsKV8QFlRhYmxlIENvbHVtbiAoQ29tbWFuZClbTWVudSAoRWRpdClfEBRNZW51IEl0 +ZW0gKFNob3cgQWxsKVpQcmVmc1BhbmVsXxATTWVudSAoQXBwbGljYXRpb25zKV8QFE1lbnUgSXRlbSAo +WDExIEhlbHApXU1lbnUgKFdpbmRvdylfEBBNZW51IEl0ZW0gKFpvb20pXxARVmVydGljYWwgU2Nyb2xs +ZXJeQ29udGVudCBWaWV3LTFfEBhNZW51IEl0ZW0gKEZyb20gRGlzcGxheSlfEA9NZW51IEl0ZW0gKEN1 +dClfEBZQdXNoIEJ1dHRvbiAoQWRkIEl0ZW0pXxAYVGFiIFZpZXcgSXRlbSAoU2VjdXJpdHkpXxByU3Rh +dGljIFRleHQgKEVuYWJsZXMgdGhlIFgxMSByb290IHdpbmRvdy4gVXNlIHRoZSBDb21tYW5kLU9wdGlv +bi1BIGtleXN0cm9rZSB0byBlbnRlciBhbmQgbGVhdmUgZnVsbCBzY3JlZW4gbW9kZS4pXxCXVGV4dCBG +aWVsZCBDZWxsIChXaGVuIGVuYWJsZWQsIGNsaWNraW5nIG9uIGFuIGluYWN0aXZlIHdpbmRvdyB3aWxs +IGNhdXNlIHRoYXQgbW91c2UgY2xpY2sgdG8gcGFzcyB0aHJvdWdoIHRvIHRoYXQgd2luZG93IGluIGFk +ZGl0aW9uIHRvIGFjdGl2YXRpbmcgaXQuKV8QE0hvcml6b250YWwgU2Nyb2xsZXJfEBVNZW51IEl0ZW0g +KEFib3V0IFgxMSlfEBJCdXR0b24gQ2VsbCAoRG9uZSlaTWVudSAoWDExKV8QLkJ1dHRvbiBDZWxsIChF +bmFibGUga2V5IGVxdWl2YWxlbnRzIHVuZGVyIFgxMSlfELhTdGF0aWMgVGV4dCAoTGF1bmNoaW5nIFgx +MSB3aWxsIGNyZWF0ZSBYYXV0aG9yaXR5IGFjY2Vzcy1jb250cm9sIGtleXMuIElmIHRoZSBzeXN0ZW0n +cyBJUCBhZGRyZXNzIGNoYW5nZXMsIHRoZXNlIGtleXMgYmVjb21lIGludmFsaWQgd2hpY2ggbWF5IHBy +ZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4pW1NlcGFyYXRvci02XxAyQ2hlY2sg +Qm94IChBbGxvdyBjb25uZWN0aW9ucyBmcm9tIG5ldHdvcmsgY2xpZW50cylfEBZNZW51IEl0ZW0gKDI1 +NiBDb2xvcnMpXxB0U3RhdGljIFRleHQgKFdoZW4gZW5hYmxlZCwgbWVudSBiYXIga2V5IGVxdWl2YWxl +bnRzIG1heSBpbnRlcmZlcmUgd2l0aCBYMTEgYXBwbGljYXRpb25zIHRoYXQgdXNlIHRoZSBNZXRhIG1v +ZGlmaWVyLilfEEZUZXh0IEZpZWxkIENlbGwgKFRoaXMgb3B0aW9uIHRha2VzIGVmZmVjdCB3aGVuIFgx +MSBpcyBsYXVuY2hlZCBhZ2Fpbi4pW0FwcGxpY2F0aW9uXxB2VGV4dCBGaWVsZCBDZWxsIChFbmFibGVz +IHRoZSBYMTEgcm9vdCB3aW5kb3cuIFVzZSB0aGUgQ29tbWFuZC1PcHRpb24tQSBrZXlzdHJva2UgdG8g +ZW50ZXIgYW5kIGxlYXZlIGZ1bGwgc2NyZWVuIG1vZGUuKV8QEk1lbnUgSXRlbSAoRGVsZXRlKV8QUFRl +eHQgRmllbGQgQ2VsbCAoQWxsb3dzIGlucHV0IG1lbnUgY2hhbmdlcyB0byBvdmVyd3JpdGUgdGhlIGN1 +cnJlbnQgWDExIGtleW1hcC4pXxAUTWVudSBJdGVtIChTZXJ2aWNlcylfECxDaGVjayBCb3ggKEVuYWJs +ZSBrZXkgZXF1aXZhbGVudHMgdW5kZXIgWDExKV8QHkJ1dHRvbiBDZWxsIChGdWxsIHNjcmVlbiBtb2Rl +KVxDb250ZW50IFZpZXdfECFQb3AgVXAgQnV0dG9uIENlbGwgKEZyb20gRGlzcGxheSlfEBRCdXR0b24g +Q2VsbCAoQ2FuY2VsKV8QEE1lbnUgSXRlbSAoQ29weSlfEB1UZXh0IEZpZWxkIENlbGwgKFRleHQgQ2Vs +bCktMV8QD01lbnUgSXRlbSAoWDExKV8QeFRleHQgRmllbGQgQ2VsbCAoV2hlbiBlbmFibGVkLCBtZW51 +IGJhciBrZXkgZXF1aXZhbGVudHMgbWF5IGludGVyZmVyZSB3aXRoIFgxMSBhcHBsaWNhdGlvbnMgdGhh +dCB1c2UgdGhlIE1ldGEgbW9kaWZpZXIuKV8QFFB1c2ggQnV0dG9uIChSZW1vdmUpW01lbnUgKEhlbHAp +XxAWU3RhdGljIFRleHQgKENvbG9yczoKKVtTZXBhcmF0b3ItN18QHENoZWNrIEJveCAoRnVsbCBzY3Jl +ZW4gbW9kZSlfECRUYWJsZSBWaWV3IChOYW1lLCBDb21tYW5kLCBTaG9ydGN1dClfEBhNZW51IEl0ZW0g +KEFwcGxpY2F0aW9ucylfEBFNZW51IEl0ZW0gKFBhc3RlKV8QGlRleHQgRmllbGQgQ2VsbCAoQ29sb3Jz +OgopW1NlcGFyYXRvci0zXxA0QnV0dG9uIENlbGwgKEFsbG93IGNvbm5lY3Rpb25zIGZyb20gbmV0d29y +ayBjbGllbnRzKV8QEU1lbnUgSXRlbSAoQ2xvc2UpW1NlcGFyYXRvci04VlZpZXctMtIADgBFB/UK2YEB ++qDSAA4ARQf1CtyBAfqg0gAOAEUH9QrfgQH6rxC8AyADrAHnBv8F5gLHAHICWwa9APkAagCHBfsFLQIL +AgwE7wGBA/0DJgMqA5UBpgGsBesEfABZAFwAXQBgAGkGTQDZBOwDEQWcAJ0AUwBwAHYCYQVhBoAAXwb9 +AnEBiAXiAGcAWAasAF4BBgBkB94CpwCBAH8AhACFAxAF5QWAAcID9wCeArYAVQBtAB8AdAOtAuIFgQDJ +BYsATwBXAcYGCwBmAz8CRwP7BnoDqwB8A/4DDwMhANoDJwTqBzoAjgYbAFoIOwKhAFsE4ACCBYQHUQb+ +AuoCOQShAFIAVgJSAGwAYwB4BEYBcgBUA/gAeQMBBvMAhgHgAQMDrgD6BU0FhgViAYQBVwbpAV8H5AXk +AyUAYgBuAHoAfgCDAoYAcwIKAIgAYQB9BOkFvAhcBT0DsQXMAFADIgBxAX0EXwCABLMByQB3BlMAdQLz +BPQDDQcNAGUEdgQ3BYMDIwBoAG8AawRYAFEGmgMOA7AFrAP/AowBagMpAHsCiYCrgM6AXIEBqoEBYYCR +gQF/gHaBAZeAMoEBBoEB1IEBW4EBKIBkgGeBAS6AQ4DlgLiAvoDFgEyAToEBV4D/gHWAgICGgJWBAQSB +AXiAHIEBKoDqgQFDgA6AQYEBdYEBjIB4gQE6gQGHgJCBAZuAe4EBFIEBVYD6gHGBAZKAi4AngKOBAdeA +iYEByIEBxIEBzoEB0IDagQFdgQE9gFSA34AXgIyAUYEBb4ACgQGCgNGAmoEBQYAagQE/gAqAbYBVgQFf +gPSAsoBygOSBAYWAy4EBv4DmgMeAroAdgLuBASaBAamAC4EBY4B6gQHsgIeAf4EBNoEByoEBSYEBr4EB +poCbgG6BAQuAO4BTgHOBAQqAnoEBuIDvgD2AS4DigQG6gKSBAeKBAdKAW4AlgNKAJIEBMIEBTYEBU4BF +gDeBAeaAOIEB2YEBWYC3gJmBAXGBAbyBAcOBAcyAgYEBgIBhgQHWgJeBAcGBAReBAUuBAfiBASyA2IEB +T4AjgK+BAXeAQoD3gQHGgQESgFeBAY6BAXqBAYSAn4EBGYCngQGigPOA/YDtgQFFgLaA/IEBc4EBCID1 +gDaBAY+AwoDVgQFHgOiAhIA8gL2BAb6AgtIADgBFB/ULnoEB+q8QvAufC6ALoQuiC6MLpAulC6YLpwuo +C6kLqgurC6wLrQuuC68LsAuxC7ILswu0C7ULtgu3C7gLuQu6C7sLvAu9C74LvwvAC8ELwgvDC8QLxQvG +C8cLyAvJC8oLywvMC80LzgvPC9AL0QvSC9ML1AvVC9YL1wvYC9kL2gvbC9wL3QveC98L4AvhC+IL4wvk +C+UL5gvnC+gL6QvqC+sL7AvtC+4L7wvwC/EL8gvzC/QL9Qv2C/cL+Av5C/oL+wv8C/0L/gv/DAAMAQwC +DAMMBAwFDAYMBwwIDAkMCgwLDAwMDQwODA8MEAwRDBIMEwwUDBUMFgwXDBgMGQwaDBsMHAwdDB4MHwwg +DCEMIgwjDCQMJQwmDCcMKAwpDCoMKwwsDC0MLgwvDDAMMQwyDDMMNAw1DDYMNww4DDkMOgw7DDwMPQw+ +DD8MQAxBDEIMQwxEDEUMRgxHDEgMSQxKDEsMTAxNDE4MTwxQDFEMUgxTDFQMVQxWDFcMWAxZDFqBAoKB +AoOBAoSBAoWBAoaBAoeBAoiBAomBAoqBAouBAoyBAo2BAo6BAo+BApCBApGBApKBApOBApSBApWBApaB +ApeBApiBApmBApqBApuBApyBAp2BAp6BAp+BAqCBAqGBAqKBAqOBAqSBAqWBAqaBAqeBAqiBAqmBAqqB +AquBAqyBAq2BAq6BAq+BArCBArGBArKBArOBArSBArWBAraBAreBAriBArmBArqBAruBAryBAr2BAr6B +Ar+BAsCBAsGBAsKBAsOBAsSBAsWBAsaBAseBAsiBAsmBAsqBAsuBAsyBAs2BAs6BAs+BAtCBAtGBAtKB +AtOBAtSBAtWBAtaBAteBAtiBAtmBAtqBAtuBAtyBAt2BAt6BAt+BAuCBAuGBAuKBAuOBAuSBAuWBAuaB +AueBAuiBAumBAuqBAuuBAuyBAu2BAu6BAu+BAvCBAvGBAvKBAvOBAvSBAvWBAvaBAveBAviBAvmBAvqB +AvuBAvyBAv2BAv6BAv+BAwCBAwGBAwKBAwOBAwSBAwWBAwaBAweBAwiBAwmBAwqBAwuBAwyBAw2BAw6B +Aw+BAxCBAxGBAxKBAxOBAxSBAxWBAxaBAxeBAxiBAxmBAxqBAxuBAxyBAx2BAx6BAx+BAyCBAyGBAyKB +AyOBAySBAyWBAyaBAyeBAyiBAymBAyqBAyuBAyyBAy2BAy6BAy+BAzCBAzGBAzKBAzOBAzSBAzWBAzaB +AzeBAziBAzmBAzqBAzuBAzyBAz0QgRCtEQF8EQIXEQF7EQIaEQE0EgAElQgRAScQxBEBPhEBhBIAAYgY +EgABiA0RAX8RAX0SAASVChEBXxECGBCGEIgRATERAXISAAGIEhIAAYgWEgABh8USAASVDBEBkREBihEB +QRC0EQErEQIVEQFxEQGjEgABiBQRAgwRAYkRAQcRAYYSAASVCREBYBIAAYfEEQIcEQEpEQIZEQFcEQF2 +EQIjEQEREgAElQcRAiUSAAGH1hIABJUuEQEjEgABiAsSAASVLBEBphEBhxECExATEQF5EQFzEQF+EBcR +Ag4RAiARAawRAhYSAASVLxCvEJwQrBEBdBECDxIAAYgTEQGqEQGvEQFeEgABiBkRAiIQghEBEBBcEQEk +EJ4QwxAFEKMQjxECFBCREQFtEQI9EQGnEgABiBsRAhsRAR0RAWsRAY4RAV0SAASVKxEBghECPxEBKhCp +EJYQ9BDNEQGFEQEOEQGSELURAa4RAaURAYsQzBDOEB0SAAGHxxCyEQGAEQEeEKARATYSAASVCxECHxEB +YRIAAYgQEDoSAAMOZxA5EgABh8MRAXgRAiEQsxEBrRDPEQGNEgAElS0RAXcQyhEBsxEBLhECEhEBiBEB +bBIAAYgiE//////////9EgABiBEQpBIAAYi/EQE3EIMRATURAXASAAGIvRCwEPUSAAGIHhIAAYfLEQEw +EJ0SAAGIDBA4EQI+EQGMEQElEQGkEQGBEJARAYMRAiQRAh0RAbERASgRAQ0QqxIAAYghEgAElSoSAAGI +FxDLEJURAY8RAWLSAA4ARQBNDRaAH6DSAA4ARQf1DRmBAfqg0gAOAEUH9Q0cgQH6oNIAOgA7DR4NH6IN +HwA/Xk5TSUJPYmplY3REYXRhAAgAGQAiACcAMQA6AD8ARABSAFQAZgbuBvQHPwdGB00HWwdtB4kHlwej +B68HvQfIB9YH8ggACBMIJQg/CEkIVghYCFsIXghhCGQIZghpCGsIbghxCHQIdwh5CHsIfgiBCIYIiQiS +CJ4IoAiiCKsItQi3CMUIzgjXCOII6Qj7CQQJDQkWCRsJKgk9CUYJUQlTCVQJXQlkCXEJdwmACYIJ+Qn7 +Cf0J/woBCgMKBQoHCgkKCwoNCg8KEQoTChUKFwoZChsKHQofCiEKIwolCicKKQorCi0KMAozCjYKOQo8 +Cj8KQgpFCkgKSwpOClEKVApXCloKXQpgCmMKZgppCmwKbwpyCnUKeAp7Cn4KgQqECocKigqNCp4KrAq1 +Cr0KvwrBCsMKxQrWCt4K5QrxCvMK9Qr3CvkK/gsHCwkLDgsQCxILOwtPC10LaAt1C4MLjQuaC6ELowul +C6oLqwutC64Lswu1C7cLuQu6C8cL1gvYC9oL3AvkC/YL/wwEDBcMJAwmDCgMKgw9DEYMSwxWDH8MiQyS +DJQMlgyYDJoMnAyeDKAMogyvDL4MywzNDM8M0QzaDNwM4QzjDOUNDg0QDRINEw0VDRYNGA0aDRwNPQ0/ +DUENQw1FDUcNSQ1eDWcNbg19DYUNjg2TDZwNpQ2sDcMN0g3jDeUN5w3pDesOCA4aDiIOKQ4yDjwOSA5K +DkwOTg5QDlMOVA5WDmsOdg6CDoQOhw6KDo0OkA6qDt8O6w8BDxYPJQ84D0oPVQ9fD20Pfw+MD5oPnw+h +D6MPpQ+nD6kPqw+tD68PsQ+zD7gPwQ/KD9sP4g/rD+0P9g/4D/sQCBAREBYQHRAuEDAQMhA0ED4QRxBJ +EFIQVBBdEGYQcxCAEIkQlBCdEKcQrhC6EMMQxRDHENUQ5xDwEPcRDxEgESIRJBEmESgRRRFHEUkRSxFN +EU8RURFiEWQRZhFoEWoRdBGUEaURpxGpEasRrRHOEdAR0hHUEdYR2BHaEesR7RHvEfER8xH5EfsSCRIa +EhwSHhIgEiISPxJBEkMSRRJHEkgSShJjEmYSaRJsEm8SchKLEsASwhLEEsYSyBLKEswSzhLQEtIS1xL6 +EwMTDxMRExMTHBMlEyoTQBNTE2QTZhNoE2oTbBOJE4sTjROPE5ETkhOUE60T4hPkE+YT6BPqE+wT7hPw +FBAUHxQwFDIUNBQ2FDgUQhRTFFUUVxRZFFsUeBR6FHwUfhSAFIEUgxSYFJoUnRSgFKMUvBULFSgVOhVM +FWEVbxV4FXkVexV9FX8VgRWDFYUVhxWJFYsVjBWNFZAVkxWVFZoVqxWtFa8VuBW6FcMVxRX2Ff8WBRYN +Fg8WERYTFhUWFxYZFhsWHRYmFjMWNRY3FjkWRhZaFmMWZRZwFnkWexaEFoYWiBaKFowWuRa7Fr0WvxbB +FsMWxRbHFskWyxbWFwMXBRcHFwkXCxcNFw8XERcTFxUXHxdMF04XUBdSF1QXVhdYF1oXXBdeF2cXcBd9 +F5EXoBepF7YXxBfKF9sX3RffF+EX4xgIGAoYDBgOGBAYEhgUGBYYHxg4GEkYSxhNGE8YURh6GHwYfhh/ +GIEYghiEGIYYiBiVGJcYmRibGKoYuxi9GL8YwRjDGOAY4hjkGOYY6BjpGOsZAxk4GToZPBk+GUAZQhlE +GUYZZxl4GXoZfBl+GYAZoRmjGaUZqhmsGa4ZsBmyGcoZzBnZGeoZ7BnuGfAZ8hoDGgUaBxoJGgsaKBoq +GiwaLhowGjEaMxpIGkoaTRpQGlMabBqhGqMapRqnGqkaqxqtGq8a2BrpGusa7RrvGvEbDhsQGxIbFBsW +GxcbGRsyG2cbaRtrG20bbxtxG3MbdRuSG6MbpRunG6kbqxvMG84b0BvVG9cb2RvbG90b8hv0HA0cHhwg +HCIcJBwmHEccSRxLHFAcUhxUHFYcWBx4HHocjRyeHKAcohykHKYctRzGHMgcyhzMHM4c3RzqHOwc7hzw +HREdEx0VHRcdGR0bHR0dKh0sHS4dMB07HUYdUx1VHVcdWR16HXwdfh2AHYIdhB2GHYsdjR2THaQdph2o +HaodrB29Hb8dwR3DHcUdzh3XHdkd5B3mHegd6h3sHe4eFx4ZHhseHR4fHiEeIx4lHiceKx40HjYeTx5R +HlMeVR5XHlkeWx5dHl8eYR5jHmUeZx6IHooejB6OHpAekh6UHqMepR7OHtAe0h7THtUe1h7YHtoe3B8F +HwcfCR8LHw0fDx8RHxMfFR8eHy8fMR8zHzUfNx9AH0IfSx9NH04fYB+JH4sfjR+OH5AfkR+TH5Uflx/A +H8IfxB/FH8cfyB/KH8wfzh/zH/Uf9x/5H/sf/R//IAggCiArIC0gLyAxIDMgNSA3IEMgbCBuIHAgcSBz +IHQgdiB4IHogmyCdIJ8goSCjIKUgpyCwILIgvyDoIOog7CDuIPAg8iD0IPYg+CEBIQMhCCEKIQwhLSEv +ITEhMyE1ITchOSFGIW8hcSFzIXUhdyF5IXshfSF/IYQhjSGPIaAhoiGkIaYhqCGqIawhriGwIdEh0yHV +Idch2SHbId0h4iHkIgUiByIJIgsiDSIPIhEiFiIYIkEiQyJFIkYiSCJJIksiTSJPInAiciJ0InYieCJ6 +InwigCKCIqMipSKnIqkiqyKtIq8itSK3Itgi2iLcIt4i4CLiIuQi6yMUIxYjGCMaIxwjHiMgIyIjJCMr +IzQjNiM/I0EjVCNWI1gjWiNcI14jYCNiI2QjZiOHI4kjiyONI48jkSOTI5wjniO/I8EjwyPFI8cjySPL +I9Aj+SP7I/0j/iQAJAEkAyQFJAckMCQyJDQkNSQ3JDgkOiQ8JD4kXyRhJGMkZSRnJGkkaySAJKkkqySt +JK4ksCSxJLMktSS3JMYk7yTxJPMk9ST3JPkk+yT9JP8lBCURJRMlFSUXJSAlIiUlJSclSCVKJUwlTiVQ +JVIlVCVdJWklbiV/JYElgyWFJYclmCWaJZwlniWgJb0lvyXBJcMlxSXGJcgl4SYWJhgmGiYcJh4mICYi +JiQmNyZLJlwmXiZgJmImZCaBJpImlCaWJpgmmya4JromvCa+JsAmwSbDJt0nEicUJxcnGSccJx8nIScj +JyonMyc1Jz4nQCdVJ2InZCdmJ2knbyeAJ4InhCeGJ4knlSemJ6gnqiesJ68nxCfVJ9cn2ifcJ98oHigr +KEQoUShnKHUofyiNKKYosyi9KM8o4yjtKPko/Cj/KQIpBSkIKQspECkTKRYpGSkcKR8pIik9KU8pVylg +KWIpZymEKY8ppCmmKakprCmvKbgpuim9KcAp8SoAKgoqHio3Kk8qUipVKlgqWypdKmAqYSpkKmUqaCpx +KnMqdip4KoEqgyqUKpYqmSqcKp4qoSqjKqUqqCrFKscqyirNKtAq0SrTKusrDCsgKywrLysyKzUrOCs7 +K0ArQyusK70rvyvIK8orzSviK+or9ywDLBEsFCwXLBksHCwfLCYsMyxALEgsSyxXLGAsZSx6LH0sgCyD +LIYsmSymLKksrCy1LL4s0CzZLOQs8C0NLQ8tEi0VLRgtGS0bLTQtVS1YLVstXi1hLWQtZy3BLd4t4C3j +LeYt6S3qLewuBS4mLikuLC4vLjIuNS44Lnkuli6YLpsuni6hLqIupC68Lt0u4C7jLuYu6S7sLu8vdy+Q +L5kvoC+5L8IvxC/LL84v0S/UL+0v+jAEMAcwCjAMMA8wEjAVMB4wIDAiMCgwMTA2MEQwXTBgMGMwZTBo +MGswbjB3MHkwezCEMIYwlTCYMJswnTCgMKMwpTCoMMUwxzDJMMwwzzDQMNIw6zEgMSIxJDEmMSgxKzEt +MTAxSjFnMWkxbDFvMXIxczF1MY0xrjGxMbQxtzG6Mb0xwDIqMkcySTJMMk8yUjJTMlUybTKOMpEylDKX +MpkynDKfMqgyxTLHMsoyzTLQMtEy0zLsMw0zEDMTMxYzGTMcMx8zVjNzM3UzeDN7M34zfzOBM5ozuzO+ +M8EzxDPHM8ozzTQ0NDs0UDRTNFU0WDRbNF40ZzRpNHQ0dzR5NHw0fzSCNJ80oTSjNKY0qTSqNKw04TTj +NOU05zTpNOw07jTxNQw1KTUrNS41MTU0NTU1NzVQNXE1dDV3NXo1fTWANYM2MDZNNk82UjZVNlg2WTZb +NnQ2lTaYNps2njahNqQ2pzdDN2A3YjdlN2g3azdsN243hjenN6o3rTewN7M3tje5N/A3+TgCOAs4Fjgu +ODk4QzhMOFE4ZDhwOIE4gziFOIc4ijidOK44sDiyOLQ4tzjAONE40zjWONg42zjnOPg4+jj8OP45ATka +OSs5LTkvOTI5NTlSOVQ5VjlZOVw5XzlgOWI5ejmvObg5ujm9Ob85wjnFOcc5yjnROdo53DnlOec5/DoN +Og86EToTOhY6JzopOis6LTowOkM6UDpSOlQ6VzpcOm06bzpxOnQ6dzqUOpY6mDqbOp46nzqhOrs68Dry +OvU69zr6Ov06/zsCOww7FTsXOyA7Ijs6O0s7TTtQO1I7VTthO3I7dDt3O3k7fDvLO+07+jwPPBw8NjxS +PG08eTyYPKc8szy2PLk8vjzBPMQ8xTzIPNE82jzdPN484TzkPOc88D0ZPSM9LT03PUU9SD1LPU49UD1T +PVY9WT1cPV89Yj1tPYY9kj2VPZg9mz2ePaE9yj3NPdA90z3WPdk93D3fPeI97D31Pf4+Ej4nPio+LT4w +PjM+bD54PoE+lD6hPq0+uz69PsA+wz7GPsg+yz7OPtE+5D7nPuk+7D7vPvI/CT8SPxs/KT8yPzQ/Oz8+ +P0E/RD9tP3w/iT+RP5w/qz+2P8E/zj/PP9I/1T/eP+E/6j/zP/Q/90AUQBlAHEAfQCJAJUAoQC1AOkA9 +QElAXkBhQGRAZ0BqQHxAhUCQQKRAxUDKQM1A0EDTQNVA2EDbQOVA8kD1QPhBAUEGQRRBPUE+QUFBREFN +QVBBWUFaQV1BekF9QYBBg0GGQYlBkUGyQbVBuEG7Qb1BwEHDQexB7UHwQfNB/EH/QghCCUIMQilCLEIv +QjJCNUI4QkFCVkJZQlxCX0JiQm5Ck0KWQplCnEKfQqJCo0KmQrdCuULCQsRC2ULcQt9C4kLlQv5DE0MW +QxlDHEMfQylDNkM5Qz5DR0NSQ11DbkNwQ3JDdEN3Q31DjkOQQ5JDlEOXQ6RDtUO3Q7lDu0O+Q9BD4UPj +Q+VD6EPqQ/dD+UP7Q/5EBkQXRBlEG0QdRCBELEQ9RD9EQUREREZEV0RZRFtEXURgRGpEd0R5RHtEfkSF +RJZEmESaRJxEn0StRL5EwETCRMREx0TaROtE7UTvRPFE9ET6RQtFDUUPRRFFFEUhRTJFNEU2RThFO0VT +RWBFYkVkRWdFbUV+RYBFgkWERYdFkkWjRaVFp0WqRa1FykXMRc5F0UXURdVF10XvRiRGJkYoRipGLUYw +RjJGNUY6RkNGRUZYRmFGZEdpR2tHbUdvR3JHdUd3R3lHfEd+R4FHhEeGR4hHi0eNR49HkUeTR5VHl0eZ +R5xHnkehR6NHpkeoR6tHrUevR7JHtUe4R7pHvUfAR8NHxUfIR8pHzEfPR9JH1EfWR9hH2kfcR95H4Ufj +R+ZH6EfrR+1H70fxR/RH9kf4R/pH/Ef+SABIA0gGSAhIC0gOSBBIE0gWSBlIHEgeSCBII0glSCdIKUgr +SC1IMEgySDRINkg4SDtIPkhBSENIRUhISEpITUhQSFJIVEhWSFlIXEhfSGJIZEhnSGlIa0htSHBIckh1 +SHdIekh8SH9IgUiDSIZIiEiKSI1Ij0iRSJRIlkiYSJpInEieSKdIqUi0SLdIuki9SMBIw0jMSM5I0UjU +SOxI9Uj+SQlJKkk0STdJOkk9SUBJQ0lGSU9JaEl1SX5JiUmUSblJvEm/ScJJxUnISctJ1EnsSfVJ90n6 +Sf1KE0osSjVKPkpLSopKjEqPSpJKlUqYSptKnkqhSqRKp0qpSqxKr0rKSuFK6krsSvVK90sESwdLCksM +Sw9LEksUSx9LKEsxSzNLNks/S0RLTUtQTFVMV0xZTFtMXkxgTGJMZExmTGhMa0xuTHBMckx0THdMeUx7 +TH1Mf0yBTINMhkyITIpMjEyOTJBMk0yVTJdMmkydTKBMokylTKdMqkysTK5MsEyyTLRMtky4TLpMvEy+ +TMBMwkzETMZMyUzMTM9M0UzTTNVM10zZTNtM3UzfTOFM40zlTOhM6kztTO9M8Uz0TPZM+Uz8TP5NAE0C +TQRNBk0ITQpNDE0PTRFNFE0WTRhNG00dTSBNIk0kTSdNKU0sTS5NME0yTTRNNk05TTtNPk1ATUNNRU1H +TUlNTE1OTVFNU01WTVhNW01dTV9NYU1jTWVNaE1qTWxNb01xTXNNdU13TXpNg02GTo1Oj06RTpROlk6Z +TptOnk6gTqJOpU6oTqpOrE6vTrFOs061TrdOuU67Tr1Ov07CTsVOx07KTsxOz07RTtRO107ZTtxO307h +TuRO507pTuxO7k7wTvNO9k74TvpO/E7+TwBPAk8ETwdPCU8MTw5PEU8TTxVPGE8aTxxPHk8gTyJPJE8m +TylPK08uTzFPNE82TzlPPE8/T0JPRE9GT0lPS09NT09PUU9TT1ZPWE9aT1xPXk9hT2RPZ09qT2xPb09x +T3NPdk94T3pPfE9/T4JPhU+IT4pPjU+PT5FPk0+WT5hPm0+dT6BPok+lT6dPqU+sT65PsE+zT7VPt0+6 +T7xPvk/AT8JPxE/NT9BQ11DaUN1Q4FDjUOZQ6VDsUO9Q8VD0UPdQ+lD9UQBRA1EGUQlRDFEPURJRFVEY +URtRHlEhUSRRJ1EqUS1RMFEzUTZROVE8UT9RQlFFUUhRS1FOUVFRVFFXUVpRXVFgUWNRZlFpUWxRb1Fy +UXVReFF7UX5RgVGEUYdRilGNUZBRk1GWUZlRnFGfUaJRpVGoUatRrlGxUbRRt1G6Ub1RwFHDUcZRyVHM +Uc5R0VHUUddR2lHdUeBR41HmUelR7FHvUfJR9VH4UftR/lIBUgRSB1IKUg1SEFITUhZSGVIcUh9SIlIl +UihSK1IuUjFSNFI3UjpSPVJAUkNSRlJJUkxST1JSUlVSWFJbUnhSi1KlUrlS/lMqUzZTY1QiVI5UplS9 +VVNVWlVmVX1VlFWvVcZV8lYgVklWYFZtVrxWz1dLV1VXbleIV7dXzVf2WBpYQVhVWG5Yg1iuWMNZbVmT +WbBZx1nlWgZaE1ofWjhasFrIWvBbnluwW7xb1lviW/VcFlwpXDVcZFx+XOZc710PXVhdZV2OXaZd614J +XiJeLl5FXlBeZl59Xotenl6yXsFe3F7uXwdfIl+XYDFgR2BfYHRgf2CwYWthd2GsYcViPGKFYpFjCmMf +Y3JjiWO4Y9lj5mQKZCFkNGRUZGZk4WT4ZQRlHWUpZUhlb2WKZZ5lu2XHZf5mEmYeZiVmLmYxZjJmO2Y+ +Zj9mSGZLZ8ZnyGfKZ8xnz2fSZ9Rn12fZZ9xn3mfhZ+Rn52fqZ+xn7mfxZ/Nn9Wf3Z/ln+2f9Z/9oAmgE +aAZoCGgKaAxoD2gSaBRoF2gZaBxoHmggaCNoJmgoaCtoLmgwaDNoNWg4aDtoPWg/aEJoRGhGaEhoS2hN +aFBoU2hWaFloW2heaGFoY2hlaGdoaWhraG5ocGhzaHVod2h6aHxof2iBaINohWiIaIpojGiOaJBok2iV +aJhommicaJ5ooGiiaKVoqGiqaK1or2iyaLRotmi5aLxov2jCaMVox2jJaMxozmjQaNJo1WjXaNpo3Gje +aOBo4mjlaOdo6mjtaO9o8WjzaPVo+Gj7aP5pAGkCaQVpB2kKaQ1pD2kRaRRpF2kaaR1pH2kiaSRpJ2kp +aSxpL2kyaTVpOGk6aT1pP2lBaURpRmlIaUtpTmlQaVNpVmlZaVtpXmlgaWNpZWlnaWlpbGluaXBpc2l2 +aXhpeml9aX9pgWmEaYZpiGmKaYxpj2mRaZppnWsYaxtrHmshayRrJ2sqay1rMGszazZrOWs8az9rQmtF +a0hrS2tOa1FrVGtXa1prXWtga2NrZmtpa2xrb2tya3VreGt7a35rgWuEa4drimuNa5Brk2uWa5lrnGuf +a6JrpWuoa6trrmuxa7Rrt2u6a71rwGvDa8ZryWvMa89r0mvVa9hr22vea+Fr5Gvna+pr7Wvwa/Nr9mv5 +a/xr/2wCbAVsCGwLbA5sEWwUbBdsGmwdbCBsI2wmbClsLGwvbDJsNWw4bDtsPmxBbERsR2xKbE1sUGxT +bFZsWWxcbF9sYmxlbGhsa2xubHFsdGx3bHpsfWyAbINshmyJbIxsj2ySbJVsmGybbJ5soWykbKdsqmyt +bLBss2y2bLlsvGy/bMJsxWzIbMtszmzRbNRs12zabN1s4GzjbOZs6WzsbO9s8mz1bPhs+2z+bQFtBG0H +bQptDW0QbRNtFm0ZbRxtH20ibSVtKG0rbS5tMW00bTdtOm09bUBtQ21GbUltTG1ObVBtU21WbVltXG1f +bWRtZ21pbWxtb210bXltfG1/bYRth22KbYxtjm2RbZRtmW2ebaNtqG2rba5tsW2zbbZtuW28bb9txG3H +bcptzW3QbdVt2G3dbeBt423mbelt7G3vbfJt9236bf9uBG4HbgxuEW4UbhduGm4cbh9uIm4lbiduKm4t +bjBuM244bjpuPG4+bkFuRG5JbkxuT25SblduWm5cbl9uYW5kbmZuaG5qbmxubm5xbnNudm55bnxugW6E +boduim6NbpBulW6Ybptunm6gbqJupG6mbqlurG6vbrFutG63brpuvG6+bsBuxW7HbspuzW7PbtJu127a +bt1u4m7kbulu627wbvNu9m74bvtu/W8AbwVvCG8Kbw1vEG8TbxZvGW8ebydvLG8ubzNvNm84bztvPm9D +b0VvR29Mb1FvVG9Wb1tvXW9gb2NvZm9pb2xvbm9xb3Rvd296b31vgG+Cb4dvjG+Rb5NvlW+Yb5tvpG+m +b6dvsG+zb7RvvW/Ab8Fvym/PAAAAAAAAAgIAAAAAAAANIAAAAAAAAAAAAAAAAAAAb94 diff --git a/hw/xquartz/bundle/English.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/English.lproj/main.nib/keyedobjects.nib index 194f4df7fdb98fef6f7ddc27edea49aab5e51e80..430610292bd903db47a1bf8b9f351b8395f48c25 100644 GIT binary patch literal 35390 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 literal 33883 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 Lo`3xR{IdT8eg3A2 From 8a244c2bc04a4184535e42d1f2f8c9e3e55678b4 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Mon, 11 Feb 2008 12:09:41 -0800 Subject: [PATCH 023/112] XQuartz: Fixed layout of Applications->Customize menu Now resizing it won't produce weir overlaps of the widgets. Thanks to Pelle Johansson for his help showing me how to do this. (cherry picked from commit ef3498e92d13c82633fdbe8120396bfbe1e7489a) --- .../English.lproj/main.nib/designable.nib | 1751 ++++++----------- .../English.lproj/main.nib/keyedobjects.nib | Bin 35390 -> 35529 bytes 2 files changed, 570 insertions(+), 1181 deletions(-) diff --git a/hw/xquartz/bundle/English.lproj/main.nib/designable.nib b/hw/xquartz/bundle/English.lproj/main.nib/designable.nib index 08b381039..b5cfcf682 100644 --- a/hw/xquartz/bundle/English.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/English.lproj/main.nib/designable.nib @@ -1,18 +1,19 @@ - + 1050 - 9C31 - 629 - 949.26 - 352.00 + 9B18 + 639 + 949 + 343.00 YES + YES - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin YES @@ -22,41 +23,41 @@ - FirstResponder + FirstResponder NSApplication - MainMenu + MainMenu YES - X11 - + X11 + 1048576 2147483647 - NSImage + NSImage NSMenuCheckmark - - + + NSImage NSMenuMixedState submenuAction: - + X11 YES About X11 - + 2147483647 - + @@ -65,27 +66,27 @@ 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + Services - + 1048576 2147483647 - + submenuAction: @@ -101,32 +102,32 @@ YES YES - - + + 1048576 2147483647 - + Toggle Full Screen - a + a 1572864 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -135,38 +136,38 @@ 1048576 2147483647 - + 42 Hide Others - + 1048576 2147483647 - + Show All - + 1048576 2147483647 - + 42 YES YES - - + + 1048576 2147483647 - + @@ -175,7 +176,7 @@ 1048576 2147483647 - + _NSAppleMenu @@ -183,51 +184,51 @@ - Applications - + Applications + 1048576 2147483647 - + submenuAction: - + Applications YES YES YES - - + + 1048576 2147483647 - + Customize... - + 1048576 2147483647 - + - Edit - + Edit + 1048576 2147483647 - + submenuAction: - + Edit YES @@ -237,7 +238,7 @@ 1048576 2147483647 - + @@ -246,18 +247,18 @@ 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -266,7 +267,7 @@ 1048576 2147483647 - + @@ -275,7 +276,7 @@ 1048576 2147483647 - + @@ -284,25 +285,25 @@ 1048576 2147483647 - + Delete - + 1048576 2147483647 - + Select All - + a 1048576 2147483647 - + @@ -310,11 +311,11 @@ Window - + 1048576 2147483647 - + submenuAction: @@ -329,16 +330,16 @@ 1048576 2147483647 - + Zoom - + 1048576 2147483647 - + @@ -347,7 +348,7 @@ 1048840 2147483647 - + @@ -356,18 +357,18 @@ 1179914 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -376,38 +377,38 @@ 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + Bring All to Front - + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + _NSWindowsMenu @@ -415,25 +416,25 @@ - Help - + Help + 1048576 2147483647 - + submenuAction: - + Help YES X11 Help - + 1048576 2147483647 - + @@ -442,15 +443,15 @@ _NSMainMenu - X11Controller + X11Controller 3 2 - {{319, 294}, {481, 345}} + {{479, 459}, {481, 345}} 1350041600 X11 Preferences - NSPanel + NSPanel View @@ -464,193 +465,6 @@ 256 - - YES - - - 256 - - YES - - - 256 - {{18, 243}, {402, 18}} - - YES - - 67239424 - 0 - Emulate three button mouse - - LucidaGrande - 1.300000e+01 - 1044 - - - 1211912703 - 2 - - NSSwitch - - - - 200 - 25 - - - - - 256 - {{36, 93}, {385, 31}} - - YES - - 67239424 - 4194304 - When enabled, menu bar key equivalents may interfere with X11 applications that use the Meta modifier. - - - 1.100000e+01 - 3100 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2OQA - - - - 6 - - controlTextColor - - 3 - MAA - - - - - - - 256 - {{36, 208}, {385, 29}} - - YES - - 67239424 - 4194304 - SG9sZCBPcHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8gYWN0aXZhdGUgdGhlIG1pZGRs -ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA - - - - - - - - - 256 - {{18, 130}, {402, 18}} - - YES - - 67239424 - 0 - Enable key equivalents under X11 - - - 1211912703 - 2 - - - - 200 - 25 - - - - - 256 - {{36, 159}, {385, 14}} - - YES - - 67239424 - 4194304 - Allows input menu changes to overwrite the current X11 keymap. - - - - - - - - - 256 - {{18, 179}, {402, 18}} - - YES - - 67239424 - 0 - Follow system keyboard layout - - - 1211912703 - 2 - - - - 200 - 25 - - - - - 256 - {{18, 69}, {402, 18}} - - YES - - 67239424 - 0 - Click-through Inactive Windows - - - 1211912703 - 2 - - - - 200 - 25 - - - - - 256 - {{33, 32}, {385, 31}} - - YES - - 67239424 - 4194304 - When enabled, clicking on an inactive window will cause that mouse click to pass through to that window in addition to activating it. - - - - - - - - {{10, 33}, {438, 279}} - - - {{10, 10}, {458, 325}} @@ -659,7 +473,190 @@ ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA 1 - + + + 256 + + YES + + + 256 + {{18, 243}, {402, 18}} + + YES + + 67239424 + 0 + Emulate three button mouse + + LucidaGrande + 1.300000e+01 + 1044 + + + 1211912703 + 2 + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 93}, {385, 31}} + + YES + + 67239424 + 4194304 + When enabled, menu bar key equivalents may interfere with X11 applications that use the Meta modifier. + + LucidaGrande + 1.100000e+01 + 3100 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 208}, {385, 29}} + + YES + + 67239424 + 4194304 + SG9sZCBPcHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8gYWN0aXZhdGUgdGhlIG1pZGRs +ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA + + + + + + + + + 256 + {{18, 130}, {402, 18}} + + YES + + 67239424 + 0 + Enable key equivalents under X11 + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{36, 159}, {385, 14}} + + YES + + 67239424 + 4194304 + Allows input menu changes to overwrite the current X11 keymap. + + + + + + + + + 256 + {{18, 179}, {402, 18}} + + YES + + 67239424 + 0 + Follow system keyboard layout + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{18, 69}, {402, 18}} + + YES + + 67239424 + 0 + Click-through Inactive Windows + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 256 + {{33, 32}, {385, 31}} + + YES + + 67239424 + 4194304 + When enabled, clicking on an inactive window will cause that mouse click to pass through to that window in addition to activating it. + + + + + + + + {{10, 33}, {438, 279}} + + Input @@ -688,8 +685,8 @@ ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA 1211912703 2 - - + + 200 25 @@ -724,7 +721,7 @@ ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA 109199615 1 - + LucidaGrande 1.300000e+01 16 @@ -739,12 +736,12 @@ ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA From Display - + 1048576 2147483647 1 - + _popUpItemAction: -1 @@ -760,11 +757,11 @@ ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA 256 Colors - + 1048576 2147483647 - + _popUpItemAction: 8 @@ -772,11 +769,11 @@ ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA Thousands - + 1048576 2147483647 - + _popUpItemAction: 15 @@ -784,11 +781,11 @@ ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA Millions - + 1048576 2147483647 - + _popUpItemAction: 24 @@ -848,8 +845,8 @@ ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA 1211912703 2 - - + + 200 25 @@ -898,8 +895,8 @@ ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA 1211912703 2 - - + + 200 25 @@ -919,8 +916,8 @@ ZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KA 1211912703 2 - - + + 200 25 @@ -988,11 +985,15 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 0 YES YES + + YES + + {481, 345} - {{0, 0}, {1440, 878}} + {{0, 0}, {1920, 1178}} {213, 129} {3.40282e+38, 3.40282e+38} x11_prefs @@ -1000,51 +1001,24 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 11 2 - {{279, 253}, {486, 327}} + {{537, 554}, {454, 311}} 1350041600 X11 Application Menu - + NSPanel View - {3.40282e+38, 3.40282e+38} - {213, 107} + {10000, 10000} + {320, 240} - + 256 YES - - - 303 - {{268, 12}, {84, 32}} - - YES - - -2080244224 - 137887744 - Done - - - -2038284033 - 1 - - Helvetica - 1.300000e+01 - 16 - - - - - - 200 - 25 - - - 301 - {{372, 247}, {100, 32}} + 265 + {{340, 231}, {100, 32}} YES @@ -1055,7 +1029,11 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 -2038284033 1 - + + Helvetica + 1.300000e+01 + 16 + @@ -1068,8 +1046,8 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - 301 - {{372, 215}, {100, 32}} + 265 + {{340, 199}, {100, 32}} YES @@ -1093,7 +1071,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - 307 + 274 YES @@ -1104,26 +1082,26 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 256 - {333, 197} + {301, 198} YES 256 - {333, 17} + {301, 17} 256 - {{334, 0}, {16, 17}} + {{302, 0}, {16, 17}} YES - 1.110000e+02 + 9.900000e+01 4.000000e+01 1.000000e+03 @@ -1137,7 +1115,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 6 - + System headerTextColor @@ -1145,7 +1123,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 338820672 1024 - Text Cell + Text Cell @@ -1160,7 +1138,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - 1.327310e+02 + 1.217310e+02 6.273100e+01 1.000000e+03 @@ -1174,7 +1152,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 338820672 1024 - + Text Cell @@ -1186,7 +1164,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - 8.000000e+01 + 7.100000e+01 1.000000e+01 1.000000e+03 @@ -1196,7 +1174,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 6 - + System headerColor @@ -1205,9 +1183,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 338820672 1024 - + Text Cell - + LucidaGrande 1.200000e+01 16 @@ -1215,7 +1193,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES 6 - + System controlBackgroundColor @@ -1232,7 +1210,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 6 - + System gridColor 3 @@ -1247,7 +1225,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES - {{1, 17}, {333, 197}} + {{1, 17}, {301, 198}} @@ -1257,20 +1235,20 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 256 - {{334, 17}, {15, 197}} + {{302, 17}, {15, 198}} - _doScroller: + _doScroller: 9.949238e-01 256 - {{1, 214}, {333, 15}} + {{1, 215}, {301, 15}} 1 - + _doScroller: 6.885246e-01 @@ -1280,7 +1258,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES - {{1, 0}, {333, 17}} + {{1, 0}, {301, 17}} @@ -1289,7 +1267,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - {{20, 77}, {350, 230}} + {{20, 60}, {318, 231}} 50 @@ -1300,10 +1278,35 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 QSAAAEEgAABBmAAAQZgAAA + + + 265 + {{340, 263}, {100, 32}} + + YES + + -2080244224 + 137887744 + Add Item + + + -2038284033 + 1 + + + + + + + + 200 + 25 + + - 303 - {{352, 12}, {84, 32}} + 257 + {{356, 12}, {84, 32}} YES @@ -1325,24 +1328,22 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 25 - + - 301 - {{372, 279}, {100, 32}} + 257 + {{272, 12}, {84, 32}} YES - - 67239424 + + -2080244224 137887744 - Add Item + Done - + -2038284033 1 - - - + @@ -1351,11 +1352,11 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - {486, 327} + {454, 311} + - {{0, 0}, {1440, 878}} - {213, 129} - {3.40282e+38, 3.40282e+38} + {{0, 0}, {1920, 1178}} + {320, 262} x11_apps @@ -1366,51 +1367,51 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES YES - - + + 1048576 2147483647 - + - - + Applications + 1048576 2147483647 - + submenuAction: - + Applications YES YES YES - - + + 1048576 2147483647 - + Q3VzdG9taXpl4oCmA - + 1048576 2147483647 - + - + @@ -1554,7 +1555,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - apps_table_show: + apps_table_show: @@ -1650,7 +1651,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - prefs_changed: + prefs_changed: @@ -1658,7 +1659,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + prefs_changed: @@ -1666,7 +1667,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + prefs_changed: @@ -1674,7 +1675,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + prefs_changed: @@ -1682,7 +1683,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + prefs_changed: @@ -1690,7 +1691,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + prefs_changed: @@ -1698,7 +1699,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + prefs_changed: @@ -1786,7 +1787,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + apps_table_show: @@ -1842,7 +1843,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + prefs_changed: @@ -1922,7 +1923,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + MainMenu 19 @@ -2209,7 +2210,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 196 - + X11Controller 244 @@ -2935,18 +2936,21 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 270.editorWindowContentRectSynchronizationRect 272.IBPluginDependency 272.ImportedFromIB2 + 285.IBEditorWindowLastContentRect 285.IBPluginDependency 285.IBViewEditorWindowController.showingBoundsRectangles 285.IBViewEditorWindowController.showingLayoutRectangles 285.IBWindowTemplateEditedContentRect 285.ImportedFromIB2 285.editorWindowContentRectSynchronizationRect + 285.lastResizeAction 285.windowTemplate.hasMaxSize 285.windowTemplate.hasMinSize 285.windowTemplate.maxSize 285.windowTemplate.minSize 286.IBPluginDependency 286.ImportedFromIB2 + 29.IBEditorWindowLastContentRect 29.IBPluginDependency 29.ImportedFromIB2 29.editorWindowContentRectSynchronizationRect @@ -3087,231 +3091,246 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{202, 626}, {154, 153}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{271, 666}, {301, 153}} - + com.apple.InterfaceBuilder.CocoaPlugin {{184, 290}, {481, 345}} {{184, 290}, {481, 345}} - {3.40282e+38, 3.40282e+38} - {213, 107} - + {3.40282e+38, 3.40282e+38} + {213, 107} + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{100, 746}, {155, 33}} - + com.apple.InterfaceBuilder.CocoaPlugin - + {{537, 554}, {454, 311}} + com.apple.InterfaceBuilder.CocoaPlugin - {{433, 406}, {486, 327}} + {{537, 554}, {454, 311}} - + {{433, 406}, {486, 327}} + + YES + + YES + IBResizeActionFinalFrame + IBResizeActionInitialFrame + + + YES + {{537, 554}, {454, 311}} + {{537, 576}, {471, 289}} + + + + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin - - - - - + {{0, 1114}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin {{67, 819}, {336, 20}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{79, 616}, {218, 203}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin @@ -3341,29 +3360,17 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES - - - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - + FirstResponder - IBUserSource - + IBUserSource + + + + + NSFormatter + + IBUserSource + @@ -3394,24 +3401,24 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES - id - - - - - - - - - - - - - - - - - + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id @@ -3439,24 +3446,24 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES - NSMenuItem + NSMenuItem NSTableView - NSButton + NSButton NSPopUpButton - NSMenu - - - - - - - + NSMenu + NSMenu + NSMenuItem + NSButton + NSButton + NSButton + NSButton + NSButton NSPanel - - - - - + NSButton + NSMenuItem + NSButton + NSMenuItem + NSMenuItem @@ -3464,628 +3471,10 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - - NSFormatter - - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - - - - - - 0 3 - - YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA -AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEDQgALAAwAMQA1ADkAQABD -AEQASABMAIkAkQCZAJoAnwCyALMAuAC5ALoAvQDBAMIAxQDQANEA0gDWANsA5ADrAOwA8ADyAPMA9wD8 -AQoBEgETAS0BLgE1ATYBOQE9AT4BQAFCAUYBTAFPAVABUQFUAVkBYAFlAWYBZwFsAXMBeAF5AXoBewGA -AYcBjQGOAZkBmgGeAZ8BogGjAagBrwGwAbgBuQG6Ab8BwAHFAcwB0QHSAekB7AHuAfAB/QIBAgICAwIG -Ag0CFwICAhgCIgICAiMCLQICAi4CMgI1AjYCOwJDAkQCRQJKAlMCVwJYAl0CZAJlAm0CbgJzAnsCfAJ9 -An4CgwKIAo8ClAKVAp0CngKjAqoCqwKzArQCuQLBAsICwwLEAskC0QLSAtMC1ALZAtoC3wLgAuQC6wLv -AvAC8QL1AvwC/QL+Av8DBAMJAwoDEgMbANEDHAMrAzIDMwM0Az0DRgDRA0cDTANOA1EDUgNbA2QDawNs -A20DdAN1A34DhQOGA4cDiADRA5EDlgOdA54DpwDRA6gDswO6A7sDvAPDA8QDxQPOA9UD1gPXA94D3wPg -A+cD6APxANED8gP0BAAEBwQIBAkEEAQRBBoEIwQqBCsENAQ1BD4A0QQ/BEMERwROBE8EUARRBFYEWwRi -BGMEawRsBG0EcgRzBHgEfwSABIgEiQSLBI0EjgSSBJMEmASZBJ4EnwSkBMAEwQTCBMMExgTHBMgEzQTR -BOEE5QTwBPcE+AUCBQMFCAUSBRMFFAUYBRoFHwUgBSMFJgUpBTAFMQU4BTkFQAVBBUgFSQVQBVEFWAVZ -BVoFXAVdBWMFbAVvBXAFcwV6BX0FhwWOBY8FlwWYBZ8FoAWnBagFrwWwBbcFuAW/BcAFxwXIBc8F0AXX -BVkF2AXZBd8F5wKqBe4F9gX3Bf4F/wYGBgcGDgYPBhYGFwYeBh8GJgVZBicGKAYqBisGLATGBi0GLgYx -BjIGNwY4Bj0GPgZDBkQGSQZKBk8GVwZYBmEGYgZkBmYGZwZsBnEGcgZ2BncGfAaDBoQGjAaNBo8GkQaS -BpcGmAadBrgGxwbIBs8G2AbZBtwG4Qb2BvcG+gcABxIHGQcaBx0HIgcjByYHLgcvBzIHNQc+B0QHRQdM -B1UHWwdcB2EHYgdqB24Hcwd0B3kHegd9B38HgAeFB4YHiweMB5EHkgeXB5sHnAehB6IHpwesB60HsQey -B7cHuAe9B74HwwfEB8kHygfPB9AH1AfVB9oH2wfgB+cH6AfwB/EH8wf0CHgIgAiECIUIiAiRCJIIkwiW -CJ4InwijCKQIpQioCLYItwi4BMYExwi6CMMGKwYsBMYIxAjFADgIyAjKCU4J0wpYClkKWgpbClwKXQpe -Cl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8 -Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLBMUKjAqNCo4KjwqQCpEKkgqTCpQKlQqWCpcKmAqZ -CpoKmwqcCp0KngqfCqAKoQqiCqMKpAqlCqYKpwqoCqkKqgqrCqwKrQquCq8KsAqxCrIKswq0CrUKtgq3 -CrgKuQq6CrsKvAq9Cr4KvwrACsEKwgrDCsQKxQrGCscKyArJCsoKywrMCs0KzgrPCtAK0QrSCtMK1ArV -CtYK1wraCt0LnAxbDFwMXQxeDF8MYAxhDGIMYwxkDGUMZgxnDGgMaQxqDGsMbAxtDG4MbwxwDHEMcgxz -DHQMdQx2DHcMeAx5DHoMewx8DH0Mfgx/DIAMgQyCDIMMhAyFDIYMhwyIDIkMigyLDIwMjQyODI8MkAyR -DJIMkwyUDJUMlgyXDJgMmQyaDJsMnAydDJ4MnwygDKEMogyjDKQMpQymDKcMqAypDKoMqwysDK0Mrgyv -DLAMsQyyDLMMtAy1DLYMtwy4DLkMugy7DLwMvQy+DL8MwAzBDMIMwwzEDMUMxgzHDMgMyQzKDMsMzAzN -AiwMzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6Qzq -DOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoBBwz7DPwM/Qz+DP8NAA0BDQINAw0EDQUGVA0G -DQcNCA0JDQoNCw0MDQ0NDg0PDRANEQ0SDRMNFA0XDRoNHVUkbnVsbN8QEgANAA4ADwAQABEAEgATABQA -FQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMFZOU1Jv -b3RWJGNsYXNzXU5TT2JqZWN0c0tleXNfEA9OU0NsYXNzZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlP -aWRzVmFsdWVzXU5TQ29ubmVjdGlvbnNbTlNOYW1lc0tleXNbTlNGcmFtZXdvcmtdTlNDbGFzc2VzS2V5 -c1pOU09pZHNLZXlzXU5TTmFtZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlDb25uZWN0b3JzXU5TRm9u -dE1hbmFnZXJfEBBOU1Zpc2libGVXaW5kb3dzXxAPTlNPYmplY3RzVmFsdWVzXxAXTlNBY2Nlc3NpYmls -aXR5T2lkc0tleXNZTlNOZXh0T2lkXE5TT2lkc1ZhbHVlc4ACgQNBgQHdgQJ/gQNAgAmBAfyABoECfoEC -gIEB/YEDPoAAgAeBAfuBAz8SAASVMIECgdIADgAyADMANFtOU0NsYXNzTmFtZYAFgAPSAA4ANgA3ADhZ -TlMuc3RyaW5ngARdTlNBcHBsaWNhdGlvbtIAOgA7ADwAPVgkY2xhc3Nlc1okY2xhc3NuYW1lowA9AD4A -P18QD05TTXV0YWJsZVN0cmluZ1hOU1N0cmluZ1hOU09iamVjdNIAOgA7AEEAQqIAQgA/Xk5TQ3VzdG9t -T2JqZWN0XxAQSUJDb2NvYUZyYW1ld29ya9IADgBFAEYAR1pOUy5vYmplY3RzgAig0gA6ADsASQBKowBK -AEsAP1xOU011dGFibGVTZXRVTlNTZXTSAA4ARQBNAE6AH68QOgBPAFAAUQBSAFMAVABVAFYAVwBYAFkA -WgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcA -eAB5AHoAewB8AH0AfgB/AIAAgQCCAIMAhACFAIYAhwCIgAqAI4A2gDuAQYBLgFGAU4BtgHGAdYB6gH+A -gICGgIuAkICVgJeAmYCegKOA84D0gPqA/IEBBIEBBoEBCIEBCoEBb4EBcYEBc4EBdYEBd4EBf4EBgIEB -goEBhIEBjIEBjoEBuIEBuoEBvIEBvoEBv4EBwYEBw4EBxIEBxoEByIEByoEBzIEBzoEB0IEB0oEB1IEB -1tQADgCKAIsAjACNAI4AHwCQXU5TRGVzdGluYXRpb25YTlNTb3VyY2VXTlNMYWJlbIAigAuAAoAh1AAO -AJIAkwCUAJUAlgCXAJhXTlNUaXRsZVZOU05hbWVbTlNNZW51SXRlbXOAIIAMgA+ADVRNZW510gAOAEUA -TQCcgB+iAJ0AnoAOgBfaAA4AkgCgAKEAogCjAKQApQCmAKcAqACXAKoAqwCXAKsArgCvALAAjl8QEU5T -S2V5RXF1aXZNb2RNYXNrXU5TSXNTZXBhcmF0b3JaTlNLZXlFcXVpdlxOU0lzRGlzYWJsZWRdTlNNbmVt -b25pY0xvY1lOU09uSW1hZ2VcTlNNaXhlZEltYWdlVk5TTWVudYAWgA8SABAAAAmADwkSf////4AQgBSA -C1DTAA4AMgC0ALUAtgC3Xk5TUmVzb3VyY2VOYW1lgBOAEYASV05TSW1hZ2VfEA9OU01lbnVDaGVja21h -cmvSADoAOwC7ALyiALwAP18QEE5TQ3VzdG9tUmVzb3VyY2XTAA4AMgC0ALUAtgDAgBOAEYAVXxAQTlNN -ZW51TWl4ZWRTdGF0ZdIAOgA7AMMAxKIAxAA/Wk5TTWVudUl0ZW3aAA4AxgCSAKAAogCkAKUApgCnAMcA -qADJAMoAqgCXAK4ArwCwAI4Az1lOU1N1Ym1lbnVYTlNBY3Rpb26AFoAagBiAD4AQgBSAC4AZXEFwcGxp -Y2F0aW9uc15zdWJtZW51QWN0aW9uOtMADgCSAJQAlQDKANWAIIAYgBvSAA4ARQBNANiAH6IA2QDagByA -HdoADgCSAKAAoQCiAKMApAClAKYApwCoAJcAqgCrAJcAqwCuAK8AsADJgBaADwmADwmAEIAUgBrYAA4A -kgCgAKIApAClAKYApwCoAOYAqgCXAK4ArwCwAMmAFoAegA+AEIAUgBpqAEMAdQBzAHQAbwBtAGkAegBl -ICbSADoAOwDtAO6jAO4A7wA/Xk5TTXV0YWJsZUFycmF5V05TQXJyYXnSADoAOwDxAKeiAKcAP1hkb2Nr -TWVuddIAOgA7APQA9aMA9QD2AD9fEBROU05pYk91dGxldENvbm5lY3Rvcl5OU05pYkNvbm5lY3RvctQA -DgCKAIsAjAD4APkA+gD7gDWAMoAkgDTXAP0ADgD+AP8BAAEBAQIBAwEEAQUBBgEHAKsBA18QD05TTmV4 -dFJlc3BvbmRlcldOU0ZyYW1lVk5TQ2VsbFhOU3ZGbGFnc1lOU0VuYWJsZWRbTlNTdXBlcnZpZXeAJYAx -gCaAJxEBLQmAJdUA/QAOAQsBAAEMACsBDgEPARABEVpOU1N1YnZpZXdzW05TRnJhbWVTaXplgACBATOB -AfIRAQCBAfNfEBd7ezM3MiwgMjc5fSwgezEwMCwgMzJ9fd0BFAAOARUBFgEXARgBGQEaARsBHAEdAR4B -HwEgASEBIgEjASQBJQEmAScBKAD6ASoBKwEsW05TQ2VsbEZsYWdzXxATTlNBbHRlcm5hdGVDb250ZW50 -c18QEk5TUGVyaW9kaWNJbnRlcnZhbF5OU0J1dHRvbkZsYWdzMl8QEE5TQWx0ZXJuYXRlSW1hZ2VfEA9O -U0tleUVxdWl2YWxlbnRaTlNDb250ZW50c1lOU1N1cHBvcnRdTlNDb250cm9sVmlld18QD05TUGVyaW9k -aWNEZWxheVxOU0NlbGxGbGFnczJdTlNCdXR0b25GbGFncxIEAf4AgDCALhAZEAGALIAvgCiAKYAkEMgS -CDgAABP/////hoJA/1hBZGQgSXRlbdQADgEvAJMBMAExATIBMwE0Vk5TU2l6ZVhOU2ZGbGFnc4ArI0Aq -AAAAAAAAgCoRBBRcTHVjaWRhR3JhbmRl0gA6ADsBNwE4ogE4AD9WTlNGb2501AAOAS8AkwEwATEBMgE7 -ATyAK4AtEBBZSGVsdmV0aWNh0gAOADYANwCygATSAA4ANgA3ALKABNIAOgA7AUMBRKQBRAFFAP8AP1xO -U0J1dHRvbkNlbGxcTlNBY3Rpb25DZWxs0gA6ADsBRwFIpQFIAUkBSgFLAD9YTlNCdXR0b25ZTlNDb250 -cm9sVk5TVmlld1tOU1Jlc3BvbmRlctIADgAyADMBToAFgDNdWDExQ29udHJvbGxlcl8QD2FwcHNfdGFi -bGVfbmV3OtIAOgA7AVIBU6MBUwD2AD9fEBVOU05pYkNvbnRyb2xDb25uZWN0b3LUAA4AigCLAIwA+AAf -AVcBWIA1gAKAN4A61wAOAJIAogCkAKUApgCnAKgBWwCXAK4ArwCwAV+AFoA5gA+AEIAUgDjUAA4AkgCT -AJQAlQFiAWMBZIAggKiAwYCqWUFib3V0IFgxMV8QHW9yZGVyRnJvbnRTdGFuZGFyZEFib3V0UGFuZWw6 -1AAOAIoAiwCMAPgA+QFqAWuANYAygDyAQNgADgCSAKAAogCkAKUApgCnAKgBbgCqAW8ArgCvALABcoAW -gD6AP4AQgBSAPdQADgCSAJMAlACVAXUBdgF3gCCA3YDpgN5VQ2xvc2VRd11jbG9zZV93aW5kb3c61AAO -AIoAiwCMAI0BfQD5AX+AIoBCgDKAStcA/QAOAP4A/wEAAQEBAgGBAQQBgwGEARAAqwGBgEOAMYBEgEUJ -gEPWAP0ADgD+AQsBAAECAYgBDgGKAYsBEAGIgQEUgQEzgQEygQEWgQEUXxAWe3sxOCwgMTMwfSwgezQw -MiwgMTh9fd0BFAAOARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEAlwEjAZEBkgCXAZQBKAF9ASoBlwGY -gDCADxACgEeAD4BGgCmAQhAAEkg8Uf9fECBFbmFibGUga2V5IGVxdWl2YWxlbnRzIHVuZGVyIFgxMdIA -DgGbAZwBnVtOU0ltYWdlTmFtZYBJgEhYTlNTd2l0Y2jSADoAOwGgAaGiAaEAP18QE05TQnV0dG9uSW1h -Z2VTb3VyY2VfEBBlbmFibGVfa2V5ZXF1aXZz1AAOAIoAiwCMAPgA+QGmAaeANYAygEyAUNcA/QAOAP4A -/wEAAQEBAgGBAQQBqwGsARAAqwGBgEOAMYBNgE4JgENfEBZ7ezE4LCAxNzl9LCB7NDAyLCAxOH193QEU -AA4BFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQCXASMBkQGSAJcBtQEoAaYBKgGXAZiAMIAPgEeAD4BP -gCmATF8QHUZvbGxvdyBzeXN0ZW0ga2V5Ym9hcmQgbGF5b3V0XnByZWZzX2NoYW5nZWQ61AAOAIoAiwCM -AI0AjgD5Ab6AIoALgDKAUllkb2NrX21lbnXUAA4AigCLAIwAjQHCAPkBxIAigFSAMoBs1wD9AA4A/gD/ -AQABAQECAcYBxwHIAckBEACrAcaAVYBrgFaAVwmAVdUA/QAOAP4BCwEAACsBDgHPAdABEIAAgQEzgQFR -gQE8XxAWe3s3NCwgMjM1fSwgezEyOCwgMjZ9fd8QEwEUAdMB1AEVARYADgEXARgBGQEbAMQBHAHVAdYB -1wEdAR4ApwEfAdgAqwEkAdoB2wHcASQB3QHeASgB4AHCAeIAqwCrAeUB5gHnAehfEBpOU01lbnVJdGVt -UmVzcGVjdEFsaWdubWVudF8QD05TQXJyb3dQb3NpdGlvbl8QD05TUHJlZmVycmVkRWRnZV8QEk5TVXNl -c0l0ZW1Gcm9tTWVudV1OU0FsdGVyc1N0YXRlE/////+EQf5ACYBZEEuAaoBYgFqAKYBbgFQQAwkJEQGQ -EQQAgFwSBoJA/9QADgEvAJMBMAExATIBMwE8gCuAKtIADgA2ADcAsoAE0gAOADYANwCygATcAfEADgCS -AKAAogCkAKUApgCnAMcB8gHzAckAqAH2AKoAlwCuAK8AsAHnAfsB/AEkWE5TVGFyZ2V0VU5TVGFnV05T -U3RhdGWAV4AWgF2AD4AQgBSAXIBeE///////////0wAOAJIAlACVAf8CAIAggF+AYFxGcm9tIERpc3Bs -YXlfEBFfcG9wVXBJdGVtQWN0aW9uOtIADgA2ADcCBYAEWk90aGVyVmlld3PSAA4ARQBNAgiAH6QB4AIK -AgsCDIBbgGGAZIBn2wHxAA4AkgCgAKIApAClAKYApwDHAfIByQCoAhAAqgCXAK4ArwCwAecCFQIWgFeA -FoBigA+AEIAUgFyAYxAIWjI1NiBDb2xvcnPbAfEADgCSAKAAogCkAKUApgCnAMcB8gHJAKgCGwCqAJcA -rgCvALAB5wIgAiGAV4AWgGWAD4AQgBSAXIBmEA9ZVGhvdXNhbmRz2wHxAA4AkgCgAKIApAClAKYApwDH -AfIByQCoAiYAqgCXAK4ArwCwAecCKwIsgFeAFoBogA+AEIAUgFyAaRAYWE1pbGxpb25z0gA6ADsCLwIw -pgIwAjEBRAFFAP8AP18QEU5TUG9wVXBCdXR0b25DZWxsXk5TTWVudUl0ZW1DZWxs0gA6ADsCMwI0pgI0 -AUgBSQFKAUsAP11OU1BvcFVwQnV0dG9uVWRlcHRo1AAOAIoAiwCMAPgAHwI5AjqANYACgG6AcNkADgCS -AKAAogCkAKUApgCnAfIAqAI9AKoAlwCuAK8AsAFfAkKAFoBvgA+AEIAUgDgQKlhTaG93IEFsbF8QFnVu -aGlkZUFsbEFwcGxpY2F0aW9uczrUAA4AigCLAIwAjQJHAPkCSYAigHKAMoB02gAOAJIAoAChAKIAowCk -AKUApgCnAKgAlwCqAKsAlwCrAK4ArwCwAlKAFoAPCYAPCYAQgBSAc9MADgCSAJQAlQDKAlaAIIAYgMRe -YXBwc19zZXBhcmF0b3LUAA4AigCLAIwA+AD5AlsBp4A1gDKAdoBQ1wD9AA4A/gD/AQABAQECAYEBBAJg -AmEBEACrAYGAQ4AxgHeAeAmAQ18QFXt7MTgsIDY5fSwgezQwMiwgMTh9fd0BFAAOARUBFgEXARgBGQEa -ARsBHAEdAR4BHwEgASEAlwEjAZEBkgCXAmoBKAJbASoBlwGYgDCAD4BHgA+AeYApgHZfEB5DbGljay10 -aHJvdWdoIEluYWN0aXZlIFdpbmRvd3PUAA4AigCLAIwA+AD5AnECcoA1gDKAe4B+2AAOAJIAoACiAKQA -pQCmAKcAqAJ1AnYCdwCuAK8AsAFygBaAfBIAEAEIgH2AEIAUgD1fEBVDeWNsZSBUaHJvdWdoIFdpbmRv -d3NRYFxuZXh0X3dpbmRvdzrUAA4AigCLAIwA+AD5AcIBp4A1gDKAVIBQ1AAOAIoAiwCMAPgA+QKGAaeA -NYAygIGAUNcA/QAOAP4A/wEAAQEBAgKJAQQCiwKMARAAqwKJgIKAMYCDgIQJgILVAP0ADgD+AQsBAAAr -AQ4CkgKTARCAAIEBM4EBZYEBVF8QFnt7MTgsIDE2Nn0sIHs0MDIsIDE4fX3dARQADgEVARYBFwEYARkB -GgEbARwBHQEeAR8BIAEhAJcBIwGRAZIAlwKaASgChgEqAZcBmIAwgA+AR4APgIWAKYCBXxAmQWxsb3cg -Y29ubmVjdGlvbnMgZnJvbSBuZXR3b3JrIGNsaWVudHPUAA4AigCLAIwA+AD5AqEBp4A1gDKAh4BQ1wD9 -AA4A/gD/AQABAQECAYEBBAKmAqcBEACrAYGAQ4AxgIiAiQmAQ18QFnt7MTgsIDI0M30sIHs0MDIsIDE4 -fX3dARQADgEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhAJcBIwGRAZIAlwKwASgCoQEqAZcBmIAwgA+A -R4APgIqAKYCHXxAaRW11bGF0ZSB0aHJlZSBidXR0b24gbW91c2XUAA4AigCLAIwAjQK2APkCuIAigIyA -MoCP2AAOAJIAoACiAKQApQCmAKcAqAK7ArwCvQCuAK8AsAFfgBaAjRIAGAAAgI6AEIAUgDhfEBJUb2dn -bGUgRnVsbCBTY3JlZW5RYV8QFnRvZ2dsZV9mdWxsc2NyZWVuX2l0ZW3UAA4AigCLAIwA+AD5AscCyIA1 -gDKAkYCU2AAOAJIAoACiAKQApQCmAKcAqALLAswCzQCuAK8AsAFygBaAkhIAEgEKgJOAEIAUgD1fEB1S -ZXZlcnNlIEN5Y2xlIFRocm91Z2ggV2luZG93c1F+XxAQcHJldmlvdXNfd2luZG93OtQADgCKAIsAjACN -AVcA+QLYgCKAN4AygJZeeDExX2Fib3V0X2l0ZW3UAA4AigCLAIwAjQDJAPkC3oAigBqAMoCYXmRvY2tf -YXBwc19tZW510wAOAIsAjAD4AuIC44A1gJqAndgADgCSAKAAogCkAKUApgCnAKgC5gCqAr0ArgCvALAC -6oAWgJyAjoAQgBSAm9MADgCSAJQAlQLtAu6AIIDIgMpaU2VsZWN0IEFsbFpzZWxlY3RBbGw60wAOAIsA -jAD4AvMC9IA1gJ+AotgADgCSAKAAogCkAKUApgCnAKgC9wCqAvgArgCvALAC6oAWgKCAoYAQgBSAm1RD -b3B5UWNVY29weTrUAA4AigCLAIwAjQMBAB8DA4AigKSAAoDy1AAOAJIAkwCUAJUDBgMHAwiAIIClgPGA -plhNYWluTWVuddIADgBFAE0DDIAfpQMNAw4DDwMQAxGAp4DCgMeA2oDq2gAOAMYAkgCgAKIApAClAKYA -pwDHAKgBXwFiAKoAlwCuAK8AsAMBAxqAFoA4gKiAD4AQgBSApICpU1gxMdIADgBFAE0DHoAfrAFXAyAD -IQMiAyMCtgMlAyYDJwI5AykDKoA3gKuAroCvgLaAjIC3gLiAu4BugL2AvtgADgCSAKAAogCkAKUApgCn -AKgDLQCqAy4ArgCvALABX4AWgKyArYAQgBSAOF5QcmVmZXJlbmNlcy4uLlEs2gAOAJIAoAChAKIAowCk -AKUApgCnAKgAlwCqAKsAlwCrAK4ArwCwAV+AFoAPCYAPCYAQgBSAONoADgDGAJIAoACiAKQApQCmAKcA -xwCoAz8DQACqAJcArgCvALABXwNFgBaAsoCwgA+AEIAUgDiAsVhTZXJ2aWNlc9QADgCSAJMAlACVA0kD -SgNLgCCAs4C1gLTSAA4ANgA3A0aABNIADgBFAE0DUIAfoF8QD19OU1NlcnZpY2VzTWVuddoADgCSAKAA -oQCiAKMApAClAKYApwCoAJcAqgCrAJcAqwCuAK8AsAFfgBaADwmADwmAEIAUgDjaAA4AkgCgAKEAogCj -AKQApQCmAKcAqACXAKoAqwCXAKsArgCvALABX4AWgA8JgA8JgBCAFIA42QAOAJIAoACiAKQApQCmAKcB -8gCoA2YAqgNnAK4ArwCwAV8CQoAWgLmAuoAQgBSAOFhIaWRlIFgxMVFo2AAOAJIAoACiAKQApQCmAKcA -qANvAKoAlwCuAK8AsAFfgBaAvIAPgBCAFIA4W0hpZGUgT3RoZXJz2gAOAJIAoAChAKIAowCkAKUApgCn -AKgAlwCqAKsAlwCrAK4ArwCwAV+AFoAPCYAPCYAQgBSAONgADgCSAKAAogCkAKUApgCnAKgDgACqA4EA -rgCvALABX4AWgL+AwIAQgBSAOFhRdWl0IFgxMVFxXF9OU0FwcGxlTWVuddoADgDGAJIAoACiAKQApQCm -AKcAxwCoAlIAygCqAJcArgCvALADAQOQgBaAc4AYgA+AEIAUgKSAw9IADgBFAE0Dk4AfogJHA5WAcoDF -2AAOAJIAoACiAKQApQCmAKcAqAOYAKoAlwCuAK8AsAJSgBaAxoAPgBCAFIBzXEN1c3RvbWl6ZS4uLtoA -DgDGAJIAoACiAKQApQCmAKcAxwCoAuoC7QCqAJcArgCvALADAQOmgBaAm4DIgA+AEIAUgKSAyVRFZGl0 -0gAOAEUATQOqgB+oA6sDrAOtA64C8wOwA7EC4oDLgM6A0YDSgJ+A1YDYgJrYAA4AkgCgAKIApAClAKYA -pwCoA7UAqgO2AK4ArwCwAuqAFoDMgM2AEIAUgJtUVW5kb1F62AAOAJIAoACiAKQApQCmAKcAqAO+AKoD -vwCuAK8AsALqgBaAz4DQgBCAFICbVFJlZG9RWtoADgCSAKAAoQCiAKMApAClAKYApwCoAJcAqgCrAJcA -qwCuAK8AsALqgBaADwmADwmAEIAUgJvYAA4AkgCgAKIApAClAKYApwCoA9AAqgPRAK4ArwCwAuqAFoDT -gNSAEIAUgJtTQ3V0UXjYAA4AkgCgAKIApAClAKYApwCoA9kAqgPaAK4ArwCwAuqAFoDWgNeAEIAUgJtV -UGFzdGVRdtgADgCSAKAAogCkAKUApgCnAKgD4gCqAJcArgCvALAC6oAWgNmAD4AQgBSAm1ZEZWxldGXa -AA4AxgCSAKAAogCkAKUApgCnAMcAqAFyA+sAqgCXAK4ArwCwAwED8IAWgD2A24APgBCAFICkgNxWV2lu -ZG930gAOADYANwPxgATSAA4ARQBNA/aAH6kD9wP4AnECxwP7AWoD/QP+A/+A34DigHuAkYDkgDyA5YDm -gOjYAA4AkgCgAKIApAClAKYApwCoBAIAqgQDAK4ArwCwAXKAFoDggOGAEIAUgD1YTWluaW1pemVRbdgA -DgCSAKAAogCkAKUApgCnAKgECwCqAJcArgCvALABcoAWgOOAD4AQgBSAPVRab29t2gAOAJIAoAChAKIA -owCkAKUApgCnAKgAlwCqAKsAlwCrAK4ArwCwAXKAFoAPCYAPCYAQgBSAPdoADgCSAKAAoQCiAKMApACl -AKYApwCoAJcAqgCrAJcAqwCuAK8AsAFygBaADwmADwmAEIAUgD3YAA4AkgCgAKIApAClAKYApwCoBCUA -qgCXAK4ArwCwAXKAFoDngA+AEIAUgD1fEBJCcmluZyBBbGwgdG8gRnJvbnTaAA4AkgCgAKEAogCjAKQA -pQCmAKcAqACXAKoAqwCXAKsArgCvALABcoAWgA8JgA8JgBCAFIA9Xl9OU1dpbmRvd3NNZW512gAOAMYA -kgCgAKIApAClAKYApwDHAKgENwQ4AKoAlwCuAK8AsAMBBD2AFoDtgOuAD4AQgBSApIDsVEhlbHDTAA4A -kgCUAJUEOARCgCCA64Du0gAOAEUATQRFgB+hBEaA79gADgCSAKAAogCkAKUApgCnAKgESQCqAJcArgCv -ALAEN4AWgPCAD4AQgBSA7VhYMTEgSGVscFtfTlNNYWluTWVudVRtZW511AAOAIoAiwCMAPgA+QF9AaeA -NYAygEKAUNQADgCKAIsAjACNBFgA+QRagCKA9YAygPnXAP0ADgD+AP8BAAEBAQIBxgEEBF4EXwEQAKsB -xoBVgDGA9oD3CYBVXxAWe3sxOCwgMTgyfSwgezQwOSwgMjN9fd0BFAAOARUBFgEXARgBGQEaARsBHAEd -AR4BHwEgASEAlwEjAZEBkgCXBGgBKARYASoBlwGYgDCAD4BHgA+A+IApgPVfEBBGdWxsIHNjcmVlbiBt -b2RlXxARZW5hYmxlX2Z1bGxzY3JlZW7UAA4AigCLAIwA+AD5BFgEcYA1gDKA9YD7XxAaZW5hYmxlX2Z1 -bGxzY3JlZW5fY2hhbmdlZDrUAA4AigCLAIwA+AD5BHYEd4A1gDKA/YEBA9cA/QAOAP4A/wEAAQEBAgED -AQQEewR8AQcAqwEDgCWAMYD+gP8JgCVfEBd7ezM3MiwgMjE1fSwgezEwMCwgMzJ9fd0BFAAOARUBFgEX -ARgBGQEaARsBHAEdAR4BHwEgASEEggEjASQBJQSEBIUBKAR2ASoBKwEsgDCBAQGALIEBAoEBAIApgP1W -UmVtb3Zl0gAOADYANwCygATSAA4ANgA3ALKABF8QEmFwcHNfdGFibGVfZGVsZXRlOtMADgCLAIwA+AOr -BJGANYDLgQEFVXVuZG861AAOAIoAiwCMAPgA+QMgBJeANYAygKuBAQdbcHJlZnNfc2hvdzrUAA4AigCL -AIwA+AD5ArYEnYA1gDKAjIEBCV8QEnRvZ2dsZV9mdWxsc2NyZWVuOtQADgCKAIsAjACNBKEA+QSjgCKB -AQuAMoEBbt8QDwSlAA4EpgSnBKgEqQSqBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8 -BL0BkQHiBL4Ev1xOU1dpbmRvd1ZpZXdfEBZOU1dpbmRvd0NvbnRlbnRNYXhTaXplXE5TU2NyZWVuUmVj -dF8QE05TRnJhbWVBdXRvc2F2ZU5hbWVdTlNXaW5kb3dUaXRsZVlOU1dURmxhZ3NdTlNXaW5kb3dDbGFz -c18QFk5TV2luZG93Q29udGVudE1pblNpemVcTlNXaW5kb3dSZWN0WU5TTWF4U2l6ZV8QD05TV2luZG93 -QmFja2luZ18QEU5TV2luZG93U3R5bGVNYXNrWU5TTWluU2l6ZVtOU1ZpZXdDbGFzc4EBEoEBbYEBEIEB -aYEBbIEBDRJQeAAAgQEOgQERgQEMgQFrgQFqgQEPXxAYe3szMTksIDI5NH0sIHs0ODEsIDM0NX19XxAP -WDExIFByZWZlcmVuY2VzV05TUGFuZWzSAA4ANgA3BMWABFRWaWV3XxAaezMuNDAyODJlKzM4LCAzLjQw -MjgyZSszOH1aezIxMywgMTA3fdUA/QAOAQsBAAEMACsBDgTLARAEzIAAgQEzgQETgQFo0gAOAEUATQTP -gB+hAYiBARTcAP0ADgTSBNMA/gE4AQsBAATUAQIE1QTWBLME2ATZAZcE2gEoBNwBEACrBLMAqwTgXk5T -VGFiVmlld0l0ZW1zWU5TVHZGbGFnc18QEU5TRHJhd3NCYWNrZ3JvdW5kXxAWTlNBbGxvd1RydW5jYXRl -ZExhYmVsc18QFU5TU2VsZWN0ZWRUYWJWaWV3SXRlbYEBEoEBZ4EBNYEBNIApgQEVCYEBEgmBATbSAA4A -RQBNBOOAH6EBgYBD0gAOAEUATQTngB+oAqEE6QTqAX0E7AGmAlsE74CHgQEXgQEmgEKBASqATIB2gQEu -1wD9AA4A/gD/AQABAQECAYEE8gTzBPQBEACrAYGAQ4EBJYEBGIEBGQmAQ18QFXt7MzYsIDkzfSwgezM4 -NSwgMzF9fdgBFAAOBPkBGgEbARwBHgT6ASAE+wT8BP0E/gTpBQAFAV8QEU5TQmFja2dyb3VuZENvbG9y -W05TVGV4dENvbG9ygQEkgQEcgQEagQEbgQEXEgBAAACBASFfEGZXaGVuIGVuYWJsZWQsIG1lbnUgYmFy -IGtleSBlcXVpdmFsZW50cyBtYXkgaW50ZXJmZXJlIHdpdGggWDExIGFwcGxpY2F0aW9ucyB0aGF0IHVz -ZSB0aGUgTWV0YSBtb2RpZmllci7UAA4BLwCTATABMQUFATMFB4ArI0AmAAAAAAAAgCoRDBzVAA4FCQUK -BQsFDAUNBQ4FDwUQBRFXTlNDb2xvclxOU0NvbG9yU3BhY2VbTlNDb2xvck5hbWVdTlNDYXRhbG9nTmFt -ZYEBIIEBHxAGgQEegQEdVlN5c3RlbVxjb250cm9sQ29sb3LTAA4FCgUVBQ0B4gUXV05TV2hpdGWBASBL -MC42NjY2NjY2OQDSADoAOwUZBQmiBQkAP9UADgUJBQoFCwUMBQ0FHAUPBR0FEYEBIIEBI4EBIoEBHV8Q -EGNvbnRyb2xUZXh0Q29sb3LTAA4FCgUVBQ0B4gUigQEgQjAA0gA6ADsFJAUlpAUlAUUA/wA/XxAPTlNU -ZXh0RmllbGRDZWxs0gA6ADsFJwUopQUoAUkBSgFLAD9bTlNUZXh0RmllbGTXAP0ADgD+AP8BAAEBAQIB -gQTyBSwFLQEQAKsBgYBDgQElgQEngQEoCYBDXxAWe3szNiwgMjA4fSwgezM4NSwgMjl9fdgBFAAOBPkB -GgEbARwBHgT6ASAE+wT8BTQE/gTqBQAFAYEBJIEBHIEBKYEBG4EBJoEBIV8QV0hvbGQgT3B0aW9uIGFu -ZCBDb21tYW5kIHdoaWxlIGNsaWNraW5nIHRvIGFjdGl2YXRlIHRoZSBtaWRkbGUgYW5kIHJpZ2h0IG1v -dXNlIGJ1dHRvbnMuCtcA/QAOAP4A/wEAAQEBAgGBBPIFPAU9ARAAqwGBgEOBASWBASuBASwJgENfEBZ7 -ezM2LCAxNTl9LCB7Mzg1LCAxNH192AEUAA4E+QEaARsBHAEeBPoBIAT7BPwFRAT+BOwFAAUBgQEkgQEc -gQEtgQEbgQEqgQEhXxA+QWxsb3dzIGlucHV0IG1lbnUgY2hhbmdlcyB0byBvdmVyd3JpdGUgdGhlIGN1 -cnJlbnQgWDExIGtleW1hcC7XAP0ADgD+AP8BAAEBAQIBgQTyBUwFTQEQAKsBgYBDgQElgQEvgQEwCYBD -XxAVe3szMywgMzJ9LCB7Mzg1LCAzMX192AEUAA4E+QEaARsBHAEeBPoBIAT7BPwFVAT+BO8FAAUBgQEk -gQEcgQExgQEbgQEugQEhXxCFV2hlbiBlbmFibGVkLCBjbGlja2luZyBvbiBhbiBpbmFjdGl2ZSB3aW5k -b3cgd2lsbCBjYXVzZSB0aGF0IG1vdXNlIGNsaWNrIHRvIHBhc3MgdGhyb3VnaCB0byB0aGF0IHdpbmRv -dyBpbiBhZGRpdGlvbiB0byBhY3RpdmF0aW5nIGl0Ll8QFnt7MTAsIDMzfSwgezQzOCwgMjc5fX3SADoA -OwVbAUqjAUoBSwA/XxAWe3sxMCwgMTB9LCB7NDU4LCAzMjV9fdIADgBFAE0FX4AfowTgBWEFYoEBNoEB -OoEBU9YADgVkAUoFZQUJAIwFZgVnAYEBiAT8BWtcTlNJZGVudGlmaWVyWU5TVGFiVmlld4EBOYEBN4BD -gQEUgQEcgQE40gAOADYANwVugARRMVVJbnB1dNIAOgA7BXEFcqIFcgA/XU5TVGFiVmlld0l0ZW3WAA4F -ZAFKBWUFCQCMBWYFdQHGAYgE/AV5gQE5gQE7gFWBARSBARyBAVLSAA4ANgA3BXyABFEy0gAOAEUATQV/ -gB+nBYAFgQHCBYMFhARYBYaBAT2BAUGAVIEBRYEBSYD1gQFN1wD9AA4A/gD/AQABAQECAcYBBAWKBYsB -EACrAcaAVYAxgQE+gQE/CYBVXxAWe3sxOCwgMTE2fSwgezQwMiwgMTh9fd0BFAAOARUBFgEXARgBGQEa -ARsBHAEdAR4BHwEgASEAlwEjAZEBkgCXBZQBKAWAASoBlwGYgDCAD4BHgA+BAUCAKYEBPV8QF1VzZSBz -eXN0ZW0gYWxlcnQgZWZmZWN01wD9AA4A/gD/AQABAQECAcYE8gWbBZwBEACrAcaAVYEBJYEBQoEBQwmA -VV8QFXt7MzYsIDgyfSwgezM4NSwgMjh9fdgBFAAOBPkBGgEbARwBHgT6ASAE+wT8BaME/gWBBQAFAYEB -JIEBHIEBRIEBG4EBQYEBIV8QZ1gxMSBiZWVwcyB3aWxsIHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIGFs -ZXJ0LCBhcyBkZWZpbmVkIGluIHRoZSBTb3VuZCBFZmZlY3RzIHN5c3RlbSBwcmVmZXJlbmNlcyBwYW5l -bC7XAP0ADgD+AP8BAAEBAQIBxgTyBasFrAEQAKsBxoBVgQElgQFGgQFHCYBVXxAVe3sxNywgMjM4fSwg -ezU1LCAyMH192AEUAA4E+QEaARsBHAEeBPoBIAT7BPwFswEoBYMFAAUBgQEkgQEcgQFIgCmBAUWBASFY -Q29sb3JzOgrXAP0ADgD+AP8BAAEBAQIBxgTyBbsFvAEQAKsBxoBVgQElgQFKgQFLCYBVXxAWe3szNiwg -MjE2fSwgezM5MiwgMTR9fdgBFAAOBPkBGgEbARwBHgT6ASAE+wT8BcME/gWEBQAFAYEBJIEBHIEBTIEB -G4EBSYEBIV8QNFRoaXMgb3B0aW9uIHRha2VzIGVmZmVjdCB3aGVuIFgxMSBpcyBsYXVuY2hlZCBhZ2Fp -bi7XAP0ADgD+AP8BAAEBAQIBxgTyBcsFzAEQAKsBxoBVgQElgQFOgQFPCYBVXxAWe3szNiwgMTQ1fSwg -ezM4NSwgMzF9fdgBFAAOBPkBGgEbARwBHgT6ASAE+wT8BdME/gWGBQAFAYEBJIEBHIEBUIEBG4EBTYEB -IV8QZEVuYWJsZXMgdGhlIFgxMSByb290IHdpbmRvdy4gVXNlIHRoZSBDb21tYW5kLU9wdGlvbi1BIGtl -eXN0cm9rZSB0byBlbnRlciBhbmQgbGVhdmUgZnVsbCBzY3JlZW4gbW9kZS5WT3V0cHV01QAOAUoFZQUJ -AIwFZgKJAYgE/AXegQE5gIKBARSBARyBAWbSAA4ARQBNBeGAH6UF4gKGBeQF5QXmgQFVgIGBAVmBAV2B -AWHXAP0ADgD+AP8BAAEBAQICiQEEBeoF6wEQAKsCiYCCgDGBAVaBAVcJgILdARQADgEVARYBFwEYARkB -GgEbARwBHQEeAR8BIAEhAJcBIwGRAZIAlwXzASgF4gEqAZcBmIAwgA+AR4APgQFYgCmBAVVfEBhBdXRo -ZW50aWNhdGUgY29ubmVjdGlvbnPXAP0ADgD+AP8BAAEBAQICiQTyBfoF+wEQAKsCiYCCgQElgQFagQFb -CYCCXxAWe3szNiwgMTk1fSwgezM4NSwgNDJ9fdgBFAAOBPkBGgEbARwBHgT6ASAE+wT8BgIE/gXkBQAF -AYEBJIEBHIEBXIEBG4EBWYEBIV8QqkxhdW5jaGluZyBYMTEgd2lsbCBjcmVhdGUgWGF1dGhvcml0eSBh -Y2Nlc3MtY29udHJvbCBrZXlzLiBJZiB0aGUgc3lzdGVtJ3MgSVAgYWRkcmVzcyBjaGFuZ2VzLCB0aGVz -ZSBrZXlzIGJlY29tZSBpbnZhbGlkIHdoaWNoIG1heSBwcmV2ZW50IFgxMSBhcHBsaWNhdGlvbnMgZnJv -bSBsYXVuY2hpbmcu1wD9AA4A/gD/AQABAQECAokE8gYKBgsBEACrAomAgoEBJYEBXoEBXwmAgl8QFnt7 -MzYsIDExOH0sIHszODUsIDQyfX3YARQADgT5ARoBGwEcAR4E+gEgBPsE/AYSBP4F5QUABQGBASSBARyB -AWCBARuBAV2BASFfEJlJZiBlbmFibGVkLCBBdXRoZW50aWNhdGUgY29ubmVjdGlvbnMgbXVzdCBhbHNv -IGJlIGVuYWJsZWQgdG8gZW5zdXJlIHN5c3RlbSBzZWN1cml0eS4gV2hlbiBkaXNhYmxlZCwgY29ubmVj -dGlvbnMgZnJvbSByZW1vdGUgYXBwbGljYXRpb25zIGFyZSBub3QgYWxsb3dlZC7XAP0ADgD+AP8BAAEB -AQICiQTyBhoGGwEQAKsCiYCCgQElgQFigQFjCYCCXxAVe3syMCwgMTd9LCB7NDA0LCAxNH192AEUAA4E -+QEaARsBHAEeBPoBIAT7BPwGIgT+BeYFAAUBgQEkgQEcgQFkgQEbgQFhgQEhXxA0VGhlc2Ugb3B0aW9u -cyB0YWtlIGVmZmVjdCB3aGVuIFgxMSBpcyBuZXh0IGxhdW5jaGVkLlhTZWN1cml0edIAOgA7BikFZaQF -ZQFKAUsAP1p7NDgxLCAzNDV9XxAVe3swLCAwfSwgezE0NDAsIDg3OH19WnsyMTMsIDEyOX1ZeDExX3By -ZWZz0gA6ADsGLwYwogYwAD9fEBBOU1dpbmRvd1RlbXBsYXRlW3ByZWZzX3BhbmVs1AAOAIoAiwCMAPgA -+QDaBjaANYAygB2BAXBfEBBhcHBzX3RhYmxlX3Nob3c61AAOAIoAiwCMAI0A+QAfBjyAIoAygAKBAXJY -ZGVsZWdhdGXUAA4AigCLAIwAjQXiAPkGQoAigQFVgDKBAXRbZW5hYmxlX2F1dGjUAA4AigCLAIwA+AAf -AycGSIA1gAKAu4EBdl8QFmhpZGVPdGhlckFwcGxpY2F0aW9uczrUAA4AigCLAIwA+AD5Bk0GToA1gDKB -AXiBAX7XAP0ADgD+AP8BAAEBAQIBAwEEBlIGUwZUAKsBA4AlgDGBAXmBAXoRAS8JgCVfEBV7ezM1Miwg -MTJ9LCB7ODQsIDMyfX3dARQADgEVARYBFwEYARkBGgEbARwBHQEeAR8GWQEhBlsBIwEkASUGXQZeASgG -TQEqASsBLBP/////hAH+AIAwgQF8gCyBAX2BAXuAKYEBeFZDYW5jZWzSAA4ANgA3ALKABNIADgA2ADcA -soAEXxASYXBwc190YWJsZV9jYW5jZWw61AAOAIoAiwCMAPgA+QOVBjaANYAygMWBAXDUAA4AigCLAIwA -+AD5A/cGcIA1gDKA34EBgV8QEG1pbmltaXplX3dpbmRvdzrTAA4AiwCMAPgDrgZ1gDWA0oEBg1RjdXQ6 -1AAOAIoAiwCMAPgA+QZ6BnuANYAygQGFgQGL1wD9AA4A/gD/AQABAQECAQMBBAZ/BoABBwCrAQOAJYAx -gQGGgQGHCYAlXxAXe3szNzIsIDI0N30sIHsxMDAsIDMyfX3dARQADgEVARYBFwEYARkBGgEbARwBHQEe -AR8BIAEhBoYBIwEkASUGiAaJASgGegEqASsBLIAwgQGJgCyBAYqBAYiAKYEBhVlEdXBsaWNhdGXSAA4A -NgA3ALKABNIADgA2ADcAsoAEXxAVYXBwc190YWJsZV9kdXBsaWNhdGU61AAOAIoAiwCMAI0FgAD5BpaA -IoEBPYAygQGNW3VzZV9zeXNiZWVw1AAOAIoAiwCMAI0GmgD5BpyAIoEBj4AygQG33xATAP0GngAOBNMG -nwT5BqAGoQaiBqMGpAEAAQwBAQalBqYBAganBqgGqQGXBqoGqwasBq0AqwavBrABJAaxARAGsgCrBrQB -/AapBrYGt18QH05TRHJhZ2dpbmdTb3VyY2VNYXNrRm9yTm9uTG9jYWxcTlNIZWFkZXJWaWV3XxASTlNB -bGxvd3NUeXBlU2VsZWN0XE5TQ29ybmVyVmlld18QF05TSW50ZXJjZWxsU3BhY2luZ1dpZHRoXxAZTlND -b2x1bW5BdXRvcmVzaXppbmdTdHlsZV8QGE5TSW50ZXJjZWxsU3BhY2luZ0hlaWdodFtOU0dyaWRDb2xv -cl8QHE5TRHJhZ2dpbmdTb3VyY2VNYXNrRm9yTG9jYWxeTlNUYWJsZUNvbHVtbnNbTlNSb3dIZWlnaHSB -AZCBAbYSUkCAAIEBkoEBpAmBAZYjQAgAAAAAAAAjQAAAAAAAAACBAZEJgQGzgQGQgQGaI0AxAAAAAAAA -2gD9AA4A/ga5AQsBAAa6BrsBAga8Br0Gvga/BsAGwQbCBpoGxAa9BppZTlNjdkZsYWdzWU5TRG9jVmll -d1lOU0JHQ29sb3JdTlNOZXh0S2V5Vmlld4EBl4EB4YEB4BAEgQHfEQkAgQGPgQGxgQGXgQGPWnszMzMs -IDE5N33WAP0ADgEAAQwBAgbJBsoGywEQBswGygaaW05TVGFibGVWaWV3gQGTgQGVgQGUgQGTgQGP2gD9 -AA4A/ga5AQsBAAa6BrsBAga8Br0GvgbSBsAG0wbCBqwGxAa9BqyBAZeBAeGBAemBAeiBAZKBAbGBAZeB -AZJZezMzMywgMTd90gA6ADsG2gbbpAbbAUoBSwA/XxARTlNUYWJsZUhlYWRlclZpZXfVAP0ADgD+AQAB -Aga9Bt4G3wEQBr2BAZeBAZmBAZiBAZfeAP0G4gAOAP4G4wahBuQBCwblAQABAgbmBrwG5wEDBukG6gbr -BuwGrwbKBu8G8AbxAQMG8wapBqlbTlNIU2Nyb2xsZXJYTlNzRmxhZ3NfEBBOU0hlYWRlckNsaXBWaWV3 -XE5TU2Nyb2xsQW10c1tOU1ZTY3JvbGxlcl1OU0NvbnRlbnRWaWV3gCWBAeaBAeuBAeoQMoEBloEBk4EB -3k8QEEEgAABBIAAAQZgAAEGYAAARATOAJYEB4oEBkIEBkF8QFHt7MzM0LCAwfSwgezE2LCAxN3190gA6 -ADsG+Ab5pAb5AUoBSwA/XV9OU0Nvcm5lclZpZXfSAA4ARQBNBvyAH6MG/Qb+Bv+BAZuBAaaBAaraBwEA -DgcCBwMHBAcFBwYHBwcIBskAqwcKBwsHDAcNAeIHDgcPAKsGml5OU0lzUmVzaXplYWJsZVxOU0hlYWRl -ckNlbGxXTlNXaWR0aFpOU0RhdGFDZWxsXk5TUmVzaXppbmdNYXNrWk5TTWluV2lkdGhaTlNNYXhXaWR0 -aFxOU0lzRWRpdGFibGUJgQGlgQGcI0BbwAAAAAAAgQGiI0BEAAAAAAAAI0CPQAAAAAAACYEBj9cBFAAO -BPkBGgEbAR4E+gcTBxQHFQcWBP4BlwcYEgSB/gCBAaGBAZ6BAZ2BARuBAZ9UTmFtZdMADgUKBRUFDQHi -BxyBASBLMC4zMzMzMzI5OQDVAA4FCQUKBQsFDAUNBRwFDwcgBRGBASCBASOBAaCBAR1fEA9oZWFkZXJU -ZXh0Q29sb3LSADoAOwckByWlByUFJQFFAP8AP18QEU5TVGFibGVIZWFkZXJDZWxs2AEUAA4E+QEaARsB -HAEeBPoHJwT7Bq0HKgEoBpoB5gUBEhQx/kCBASSBAaSBAaOAKYEBj4EBIVlUZXh0IENlbGzTAA4FCgUV -BQ0B4gcxgQEgQjEA0gA6ADsHMwc0ogc0AD9dTlNUYWJsZUNvbHVtbtoHAQAOBwIHAwcEBwUHBgcHBwgG -yQCrBwoHOAc5BzoB4gc7Bw8AqwaaCYEBpYEBpyNAYJdkYAAAAIEBqSNAT12RYAAAAAmBAY/XARQADgT5 -ARoBGwEeBPoHEwcUBxUHQQT+AZcHGIEBoYEBnoEBqIEBG4EBn1dDb21tYW5k2AEUAA4E+QEaARsBHAEe -BPoHJwT7Bq0HKgEoBpoB5gUBgQEkgQGkgQGjgCmBAY+BASHaBwEADgcCBwMHBAcFBwYHBwcIBskAqwcK -B08HUAdRAeIHUgcPAKsGmgmBAaWBAasjQFQAAAAAAACBAa8jQCQAAAAAAAAJgQGP1wEUAA4E+QEaARsB -HgT6ASAHFAdXB1gE/gGXBxiBAaGBAa2BAayBARuBAZ9YU2hvcnRjdXTVAA4FCQUKBQsFDAUNBq0FDwdf -BRGBASCBAaSBAa6BAR1baGVhZGVyQ29sb3LZARQADgT5ARoBGwEcAR4E1AT6BycE+wbEByoHZgaaAeYA -qwUBgQEkgQGxgQGjgQGwgQGPCYEBIdQADgEvAJMBMAExB2wBMwE8gCsjQCgAAAAAAACAKtUADgUJBQoF -CwUMBQ0FDgUPB3EFEYEBIIEBH4EBsoEBHV8QFmNvbnRyb2xCYWNrZ3JvdW5kQ29sb3LVAA4FCQUKBQsF -DAUNB3YFDwd3BRGBASCBAbWBAbSBAR1ZZ3JpZENvbG9y0wAOBQoFFQUNAeIHfIEBIEQwLjUA0gA6ADsH -fgbJpQbJAUkBSgFLAD9aYXBwc190YWJsZdQADgCKAIsAjAD4AB8DJgeEgDWAAoC4gQG5VWhpZGU61AAO -AIoAiwCMAPgA+QP4B4qANYAygOKBAbtcem9vbV93aW5kb3c61AAOAIoAiwCMAPgA+QP+B5CANYAygOaB -Ab1fEA9icmluZ190b19mcm9udDrUAA4AigCLAIwA+AD5BeIBp4A1gDKBAVWAUNMADgCLAIwA+AOxB5qA -NYDYgQHAV2RlbGV0ZTrUAA4AigCLAIwAjQGmAPkHoIAigEyAMoEBwltzeW5jX2tleW1hcNQADgCKAIsA -jAD4APkFgAGngDWAMoEBPYBQ1AAOAIoAiwCMAPgA+QRGB6uANYAygO+BAcVZeDExX2hlbHA60wAOAIsA -jAD4A7AHsIA1gNWBAcdWcGFzdGU61AAOAIoAiwCMAI0CWwD5B7aAIoB2gDKBAcldY2xpY2tfdGhyb3Vn -aNQADgCKAIsAjACNA/8A+Qe8gCKA6IAygQHLXxAQd2luZG93X3NlcGFyYXRvctQADgCKAIsAjAD4APkD -KgfCgDWAMoC+gQHNVXF1aXQ61AAOAIoAiwCMAI0CoQD5B8iAIoCHgDKBAc9cZmFrZV9idXR0b25z1AAO -AIoAiwCMAI0AnQD5B86AIoAOgDKBAdFfEBVkb2NrX3dpbmRvd19zZXBhcmF0b3LTAA4AiwCMAPgDrAfT -gDWAzoEB01VyZWRvOtQADgCKAIsAjACNAoYA+QfZgCKAgYAygQHVWmVuYWJsZV90Y3DUAA4AigCLAIwA -+AD5B94H34A1gDKBAdeBAdzXAP0ADgD+AP8BAAEBAQIBAwEEB+MH5AZUAKsBA4AlgDGBAdiBAdkJgCVf -EBV7ezI2OCwgMTJ9LCB7ODQsIDMyfX3dARQADgEVARYBFwEYARkBGgEbARwBHQEeAR8GWQEhAJcBIwEk -ASUH7AftASgH3gEqASsBLIAwgA+ALIEB24EB2oApgQHXVERvbmXSAA4ANgA3ALKABF8QEGFwcHNfdGFi -bGVfZG9uZTrSAA4ARQf1B/aBAfqvEIEDIAOsAecG/wXmAscCWwa9APkF+wUtAgsCDATvAYED/QMmAyoD -lQGmAawF6wR8Bk0A2QTsAxEFnACdAmEFYQaABv0CcQGIBeIGrAEGB94CpwMQBeUFgAHCA/cAngK2A60C -4gWBAMkFiwHGBgsDPwJHA/sGegOrA/4DDwMhANoDJwTqBzoAjgYbCDsCoQTgBYQHUQb+AuoCOQShAlIE -RgFyA/gDAQbzAeABAwOuAPoFTQWGBWIBhAFXBukBXwfkBeQDJQKGAgoE6QW8CFwFPQOxBcwDIgF9BF8E -swHJBlMC8wT0Aw0HDQR2BDcFgwMjBFgGmgMOA7AFrAP/AowBagMpAomAq4DOgFyBAaqBAWGAkYB2gQGX -gDKBAVuBASiAZIBngQEugEOA5YC4gL6AxYBMgE6BAVeA/4EBeIAcgQEqgOqBAUOADoB4gQE6gQGHgQGb -gHuBARSBAVWBAZKAJ4EB14CJgNqBAV2BAT2AVIDfgBeAjIDRgJqBAUGAGoEBP4BVgQFfgLKAcoDkgQGF -gMuA5oDHgK6AHYC7gQEmgQGpgAuBAWOBAeyAh4EBNoEBSYEBr4EBpoCbgG6BAQuAc4DvgD2A4oCkgQHi -gFuAJYDSgCSBATCBAU2BAVOARYA3gQHmgDiBAdmBAVmAt4CBgGGBAReBAUuBAfiBASyA2IEBT4CvgEKA -94EBEoBXgQF6gJ+BARmAp4EBooD9gO2BAUWAtoD1gQGPgMKA1YEBR4DogISAPIC9gILSAA4ARQBNCHqA -H6UGqQbzBukGygavgQGQgQHigQHmgQGTgQGW0gAOAEUATQiCgB+hBpqBAY9fEBV7ezEsIDE3fSwgezMz -MywgMTk3fX3SADoAOwiGCIekCIcBSgFLAD9aTlNDbGlwVmlld9gA/QHxAA4A/gEAAMcBAgiJBr0GvQiM -CI0BEAiOBr0IkFlOU1BlcmNlbnSBAZeBAZeBAeWBAeOBAeSBAZcjP+/WamAAAABfEBZ7ezMzNCwgMTd9 -LCB7MTUsIDE5N319XF9kb1Njcm9sbGVyOtIAOgA7CJQIlaUIlQFJAUoBSwA/Wk5TU2Nyb2xsZXLZAP0B -8QAOAP4G4wEAAMcBAgiJBr0GvQiMCJoBJAEQCI4GvQidgQGXgQGXgQHlgQHngQHkgQGXIz/mCGTAAAAA -XxAVe3sxLCAyMTR9LCB7MzMzLCAxNX190gAOAEUATQihgB+hBqyBAZJfEBN7ezEsIDB9LCB7MzMzLCAx -N319XxAWe3syMCwgNzd9LCB7MzUwLCAyMzB9fdIAOgA7CKYIp6QIpwFKAUsAP1xOU1Njcm9sbFZpZXff -EA8EpQAOBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIBAwS0CKsIrAitCK4EuQS6CLAIsQiyAZEIswi0 -CLWAJYEBbYEB8IEB9IEB94EB7oEBDoEB8YEB7YEB9hALgQH1gQHvXxAYe3syNzksIDI1M30sIHs0ODYs -IDMyN319XxAUWDExIEFwcGxpY2F0aW9uIE1lbnXSAA4ANgA3BMWABNIADgBFAE0IvIAfpgfeBnoEdga9 -Bk0A+oEB14EBhYD9gQGXgQF4gCRaezQ4NiwgMzI3fVh4MTFfYXBwc9IADgAyADMIx4AFgQH50gA6ADsI -yQDvogDvAD/SAA4ARQf1CMyBAfqvEIEBXwLqAckGmgKJAXIBgQEDAB8F5ATqAecB5wGBBOABcgFfAV8C -UgGBAaYF4gR2AQMAyQGBAwEFgQCOAlsBiAZ6BpoBcgSzAokGvQD6AQMCoQMBAokBxgHGAXIAjgFfAuoC -6gHGAJ4FgAVhBeUDIgJSAXIBAwLqAXIDAQFfAMkBXwGBBv4AHwXmAB8BgQGIAcYG/waaAw8BXwAfAw4E -NwMQAXIAHwa9AecIOwLqAQME7wHGAYgBfQFfBr0DDQfeAokBXwKJAecBgQWEAB8E7ALqBYYBXwGBBFgE -oQHCBk0C6gTpAwEG/QEDAxEBxgFfAcYGvQMBAuoFgwFyAoYBcgFfBWKAOICbgFeBAY+AgoA9gEOAJYAC -gQFZgQEmgFyAXIBDgQE2gD2AOIA4gHOAQ4BMgQFVgP2AJYAagEOApIEBQYALgHaBARSBAYWBAY+APYEB -EoCCgQGXgCSAJYCHgKSAgoBVgFWAPYALgDiAm4CbgFWAF4EBPYEBOoEBXYCvgHOAPYAlgJuAPYCkgDiA -GoA4gEOBAaaAAoEBYYACgEOBARSAVYEBqoEBj4DHgDiAAoDCgO2A2oA9gAKBAZeAXIEB7ICbgCWBAS6A -VYEBFIBCgDiBAZeAp4EB14CCgDiAgoBcgEOBAUmAAoEBKoCbgQFNgDiAQ4D1gQELgFSBAXiAm4EBF4Ck -gQGbgCWA6oBVgDiAVYEBl4CkgJuBAUWAPYCBgD2AOIEBU9IADgBFB/UJUIEB+q8QggMgA6wG/wHnBeYC -xwa9AlsA+QX7BS0CCwIMBO8BgQP9AyYDKgOVBHwBpgGsBesGTQDZBOwDEQWcAJ0FYQaAAmEG/QGIAnEF -4gasAQYH3gKnAxAF5QWAAJ4D9wHCArYAHwOtAuIFgQDJBYsBxgYLAz8CRwZ6A/sDqwP+Aw8DIQDaAycE -6gCOBzoGGwg7AqEE4AWEB1EG/gLqAjkEoQJSBEYBcgP4AwEG8wEDAeADrgD6BWIFhgVNBukBVwfkAV8B -hAXkAyUChgIKBOkFvAhcBcwDsQU9AyIBfQRfBLMByQZTAvMHDQMNBPQEdgQ3BYMDIwRYBpoDDgOwBawD -/wKMAWoDKQKJgKuAzoEBqoBcgQFhgJGBAZeAdoAygQFbgQEogGSAZ4EBLoBDgOWAuIC+gMWA/4BMgE6B -AVeBAXiAHIEBKoDqgQFDgA6BATqBAYeAeIEBm4EBFIB7gQFVgQGSgCeBAdeAiYDagQFdgQE9gBeA34BU -gIyAAoDRgJqBAUGAGoEBP4BVgQFfgLKAcoEBhYDkgMuA5oDHgK6AHYC7gQEmgAuBAamBAWOBAeyAh4EB -NoEBSYEBr4EBpoCbgG6BAQuAc4DvgD2A4oCkgQHigCWAW4DSgCSBAVOBAU2BATCBAeaAN4EB2YA4gEWB -AVmAt4CBgGGBAReBAUuBAfiBAU+A2IEBLICvgEKA94EBEoBXgQF6gJ+BAaKAp4EBGYD9gO2BAUWAtoD1 -gQGPgMKA1YEBR4DogISAPIC9gILSAA4ARQf1CdWBAfqvEIIJ1gnXCdgJ2QnaCdsJ3AndAU4J3wngCeEJ -4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8K -AAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0K -HgofCiAKIQoiCiMKJAolCiYKJwMGCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsK -PAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKV4EB/oEB -/4ECAIECAYECAoECA4ECBIECBYAzgQIGgQIHgQIIgQIJgQIKgQILgQIMgQINgQIOgQIPgQIQgQIRgQIS -gQITgQIUgQIVgQIWgQIXgQIYgQIZgQIagQIbgQIcgQIdgQIegQIfgQIggQIhgQIigQIjgQIkgQIlgQIm -gQIngQIogQIpgQIqgQIrgQIsgQItgQIugQIvgQIwgQIxgQIygQIzgQI0gQI1gQI2gQI3gQI4gQI5gQI6 -gQI7gQI8gQI9gQI+gQI/gQJAgQJBgQJCgQJDgQJEgQJFgQJGgQJHgQJIgQJJgQJKgQJLgQJMgQJNgQJO -gKWBAk+BAlCBAlGBAlKBAlOBAlSBAlWBAlaBAleBAliBAlmBAlqBAluBAlyBAl2BAl6BAl+BAmCBAmGB -AmKBAmOBAmSBAmWBAmaBAmeBAmiBAmmBAmqBAmuBAmyBAm2BAm6BAm+BAnCBAnGBAnKBAnOBAnSBAnWB -AnaBAneBAniBAnmBAnqBAnuBAnyBAn1fEBpNZW51IEl0ZW0gKFByZWZlcmVuY2VzLi4uKV8QEE1lbnUg -SXRlbSAoUmVkbylfEBdUYWJsZSBDb2x1bW4gKFNob3J0Y3V0KV8QEU1lbnUgKE90aGVyVmlld3MpXxBC -U3RhdGljIFRleHQgKFRoZXNlIG9wdGlvbnMgdGFrZSBlZmZlY3Qgd2hlbiBYMTEgaXMgbmV4dCBsYXVu -Y2hlZC4pXxApTWVudSBJdGVtIChSZXZlcnNlIEN5Y2xlIFRocm91Z2ggV2luZG93cylbU2Nyb2xsIFZp -ZXdfECpDaGVjayBCb3ggKENsaWNrLXRocm91Z2ggSW5hY3RpdmUgV2luZG93cylfELxUZXh0IEZpZWxk -IENlbGwgKExhdW5jaGluZyBYMTEgd2lsbCBjcmVhdGUgWGF1dGhvcml0eSBhY2Nlc3MtY29udHJvbCBr -ZXlzLiBJZiB0aGUgc3lzdGVtJ3MgSVAgYWRkcmVzcyBjaGFuZ2VzLCB0aGVzZSBrZXlzIGJlY29tZSBp -bnZhbGlkIHdoaWNoIG1heSBwcmV2ZW50IFgxMSBhcHBsaWNhdGlvbnMgZnJvbSBsYXVuY2hpbmcuKV8Q -aVRleHQgRmllbGQgQ2VsbCAoSG9sZCBPcHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8g -YWN0aXZhdGUgdGhlIG1pZGRsZSBhbmQgcmlnaHQgbW91c2UgYnV0dG9ucy4KKV8QFU1lbnUgSXRlbSAo -VGhvdXNhbmRzKV8QFE1lbnUgSXRlbSAoTWlsbGlvbnMpXxCTU3RhdGljIFRleHQgKFdoZW4gZW5hYmxl -ZCwgY2xpY2tpbmcgb24gYW4gaW5hY3RpdmUgd2luZG93IHdpbGwgY2F1c2UgdGhhdCBtb3VzZSBjbGlj -ayB0byBwYXNzIHRocm91Z2ggdG8gdGhhdCB3aW5kb3cgaW4gYWRkaXRpb24gdG8gYWN0aXZhdGluZyBp -dC4pVlZpZXctMVtTZXBhcmF0b3ItMV8QFE1lbnUgSXRlbSAoSGlkZSBYMTEpXxAUTWVudSBJdGVtIChR -dWl0IFgxMSlfEBhNZW51IEl0ZW0gKEN1c3RvbWl6ZS4uLilfEBRCdXR0b24gQ2VsbCAoUmVtb3ZlKV8Q -KUNoZWNrIEJveCAoRm9sbG93IHN5c3RlbSBrZXlib2FyZCBsYXlvdXQpXxArQnV0dG9uIENlbGwgKEZv -bGxvdyBzeXN0ZW0ga2V5Ym9hcmQgbGF5b3V0KV8QJkJ1dHRvbiBDZWxsIChBdXRoZW50aWNhdGUgY29u -bmVjdGlvbnMpXxAUUHVzaCBCdXR0b24gKENhbmNlbClcU2VwYXJhdG9yLTEwXxBMU3RhdGljIFRleHQg -KEFsbG93cyBpbnB1dCBtZW51IGNoYW5nZXMgdG8gb3ZlcndyaXRlIHRoZSBjdXJyZW50IFgxMSBrZXlt -YXAuKV8QEE1lbnUgSXRlbSAoSGVscClfEHlUZXh0IEZpZWxkIENlbGwgKFgxMSBiZWVwcyB3aWxsIHVz -ZSB0aGUgc3RhbmRhcmQgc3lzdGVtIGFsZXJ0LCBhcyBkZWZpbmVkIGluIHRoZSBTb3VuZCBFZmZlY3Rz -IHN5c3RlbSBwcmVmZXJlbmNlcyBwYW5lbC4pWVNlcGFyYXRvcl8QFlRhYiBWaWV3IEl0ZW0gKE91dHB1 -dClfEBdCdXR0b24gQ2VsbCAoRHVwbGljYXRlKV8QLEJ1dHRvbiBDZWxsIChDbGljay10aHJvdWdoIElu -YWN0aXZlIFdpbmRvd3MpXxATVGFibGUgQ29sdW1uIChOYW1lKV8QJlRvcCBUYWIgVmlldyAoSW5wdXQs -IE91dHB1dCwgU2VjdXJpdHkpXxAhTWVudSBJdGVtIChDeWNsZSBUaHJvdWdoIFdpbmRvd3MpXxAkQ2hl -Y2sgQm94IChBdXRoZW50aWNhdGUgY29ubmVjdGlvbnMpXxARVGFibGUgSGVhZGVyIFZpZXdfEBZCdXR0 -b24gQ2VsbCAoQWRkIEl0ZW0pXxASUHVzaCBCdXR0b24gKERvbmUpXxAoQnV0dG9uIENlbGwgKEVtdWxh -dGUgdGhyZWUgYnV0dG9uIG1vdXNlKV8QEk1lbnUgSXRlbSAoV2luZG93KV8Qp1N0YXRpYyBUZXh0IChJ -ZiBlbmFibGVkLCBBdXRoZW50aWNhdGUgY29ubmVjdGlvbnMgbXVzdCBhbHNvIGJlIGVuYWJsZWQgdG8g -ZW5zdXJlIHN5c3RlbSBzZWN1cml0eS4gV2hlbiBkaXNhYmxlZCwgY29ubmVjdGlvbnMgZnJvbSByZW1v -dGUgYXBwbGljYXRpb25zIGFyZSBub3QgYWxsb3dlZC4pXxAjQ2hlY2sgQm94IChVc2Ugc3lzdGVtIGFs -ZXJ0IGVmZmVjdClfEBpNZW51IEl0ZW0gKEFwcGxpY2F0aW9ucyktMV8QFE1lbnUgSXRlbSAoTWluaW1p -emUpXxAbUG9wdXAgQnV0dG9uIChGcm9tIERpc3BsYXkpXxAeTWVudSBJdGVtIChUb2dnbGUgRnVsbCBT -Y3JlZW4pXEZpbGUncyBPd25lcltTZXBhcmF0b3ItNF8QFk1lbnUgSXRlbSAoU2VsZWN0IEFsbClfEHVT -dGF0aWMgVGV4dCAoWDExIGJlZXBzIHdpbGwgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gYWxlcnQsIGFz -IGRlZmluZWQgaW4gdGhlIFNvdW5kIEVmZmVjdHMgc3lzdGVtIHByZWZlcmVuY2VzIHBhbmVsLilfEBVN -ZW51IChBcHBsaWNhdGlvbnMpLTFfECVCdXR0b24gQ2VsbCAoVXNlIHN5c3RlbSBhbGVydCBlZmZlY3Qp -XxCrVGV4dCBGaWVsZCBDZWxsIChJZiBlbmFibGVkLCBBdXRoZW50aWNhdGUgY29ubmVjdGlvbnMgbXVz -dCBhbHNvIGJlIGVuYWJsZWQgdG8gZW5zdXJlIHN5c3RlbSBzZWN1cml0eS4gV2hlbiBkaXNhYmxlZCwg -Y29ubmVjdGlvbnMgZnJvbSByZW1vdGUgYXBwbGljYXRpb25zIGFyZSBub3QgYWxsb3dlZC4pXxAPTWVu -dSAoU2VydmljZXMpW1NlcGFyYXRvci05XxAXUHVzaCBCdXR0b24gKER1cGxpY2F0ZSlbU2VwYXJhdG9y -LTJfEBBNZW51IEl0ZW0gKFVuZG8pXxAeTWVudSBJdGVtIChCcmluZyBBbGwgdG8gRnJvbnQpXxAQTWVu -dSBJdGVtIChFZGl0KVtTZXBhcmF0b3ItNW8QFgBNAGUAbgB1ACAASQB0AGUAbQAgACgAQwB1AHMAdABv -AG0AaQB6AGUgJgApXxAXTWVudSBJdGVtIChIaWRlIE90aGVycylfEGVTdGF0aWMgVGV4dCAoSG9sZCBP -cHRpb24gYW5kIENvbW1hbmQgd2hpbGUgY2xpY2tpbmcgdG8gYWN0aXZhdGUgdGhlIG1pZGRsZSBhbmQg -cmlnaHQgbW91c2UgYnV0dG9ucy4KKVhEb2NrTWVudV8QHVRleHQgRmllbGQgQ2VsbCAoVGV4dCBDZWxs -KS0yXxBGVGV4dCBGaWVsZCBDZWxsIChUaGVzZSBvcHRpb25zIHRha2UgZWZmZWN0IHdoZW4gWDExIGlz -IG5leHQgbGF1bmNoZWQuKVxFZGl0UHJvZ3JhbXNfECZDaGVjayBCb3ggKEVtdWxhdGUgdGhyZWUgYnV0 -dG9uIG1vdXNlKV8QFVRhYiBWaWV3IEl0ZW0gKElucHV0KV8QQlN0YXRpYyBUZXh0IChUaGlzIG9wdGlv -biB0YWtlcyBlZmZlY3Qgd2hlbiBYMTEgaXMgbGF1bmNoZWQgYWdhaW4uKV8QG1RleHQgRmllbGQgQ2Vs -bCAoVGV4dCBDZWxsKV8QFlRhYmxlIENvbHVtbiAoQ29tbWFuZClbTWVudSAoRWRpdClfEBRNZW51IEl0 -ZW0gKFNob3cgQWxsKVpQcmVmc1BhbmVsXxATTWVudSAoQXBwbGljYXRpb25zKV8QFE1lbnUgSXRlbSAo -WDExIEhlbHApXU1lbnUgKFdpbmRvdylfEBBNZW51IEl0ZW0gKFpvb20pXxARVmVydGljYWwgU2Nyb2xs -ZXJeQ29udGVudCBWaWV3LTFfEBhNZW51IEl0ZW0gKEZyb20gRGlzcGxheSlfEA9NZW51IEl0ZW0gKEN1 -dClfEBZQdXNoIEJ1dHRvbiAoQWRkIEl0ZW0pXxAYVGFiIFZpZXcgSXRlbSAoU2VjdXJpdHkpXxByU3Rh -dGljIFRleHQgKEVuYWJsZXMgdGhlIFgxMSByb290IHdpbmRvdy4gVXNlIHRoZSBDb21tYW5kLU9wdGlv -bi1BIGtleXN0cm9rZSB0byBlbnRlciBhbmQgbGVhdmUgZnVsbCBzY3JlZW4gbW9kZS4pXxCXVGV4dCBG -aWVsZCBDZWxsIChXaGVuIGVuYWJsZWQsIGNsaWNraW5nIG9uIGFuIGluYWN0aXZlIHdpbmRvdyB3aWxs -IGNhdXNlIHRoYXQgbW91c2UgY2xpY2sgdG8gcGFzcyB0aHJvdWdoIHRvIHRoYXQgd2luZG93IGluIGFk -ZGl0aW9uIHRvIGFjdGl2YXRpbmcgaXQuKV8QE0hvcml6b250YWwgU2Nyb2xsZXJfEBVNZW51IEl0ZW0g -KEFib3V0IFgxMSlfEBJCdXR0b24gQ2VsbCAoRG9uZSlaTWVudSAoWDExKV8QLkJ1dHRvbiBDZWxsIChF -bmFibGUga2V5IGVxdWl2YWxlbnRzIHVuZGVyIFgxMSlfELhTdGF0aWMgVGV4dCAoTGF1bmNoaW5nIFgx -MSB3aWxsIGNyZWF0ZSBYYXV0aG9yaXR5IGFjY2Vzcy1jb250cm9sIGtleXMuIElmIHRoZSBzeXN0ZW0n -cyBJUCBhZGRyZXNzIGNoYW5nZXMsIHRoZXNlIGtleXMgYmVjb21lIGludmFsaWQgd2hpY2ggbWF5IHBy -ZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4pW1NlcGFyYXRvci02XxAyQ2hlY2sg -Qm94IChBbGxvdyBjb25uZWN0aW9ucyBmcm9tIG5ldHdvcmsgY2xpZW50cylfEBZNZW51IEl0ZW0gKDI1 -NiBDb2xvcnMpXxB0U3RhdGljIFRleHQgKFdoZW4gZW5hYmxlZCwgbWVudSBiYXIga2V5IGVxdWl2YWxl -bnRzIG1heSBpbnRlcmZlcmUgd2l0aCBYMTEgYXBwbGljYXRpb25zIHRoYXQgdXNlIHRoZSBNZXRhIG1v -ZGlmaWVyLilfEEZUZXh0IEZpZWxkIENlbGwgKFRoaXMgb3B0aW9uIHRha2VzIGVmZmVjdCB3aGVuIFgx -MSBpcyBsYXVuY2hlZCBhZ2Fpbi4pW0FwcGxpY2F0aW9uXxB2VGV4dCBGaWVsZCBDZWxsIChFbmFibGVz -IHRoZSBYMTEgcm9vdCB3aW5kb3cuIFVzZSB0aGUgQ29tbWFuZC1PcHRpb24tQSBrZXlzdHJva2UgdG8g -ZW50ZXIgYW5kIGxlYXZlIGZ1bGwgc2NyZWVuIG1vZGUuKV8QEk1lbnUgSXRlbSAoRGVsZXRlKV8QUFRl -eHQgRmllbGQgQ2VsbCAoQWxsb3dzIGlucHV0IG1lbnUgY2hhbmdlcyB0byBvdmVyd3JpdGUgdGhlIGN1 -cnJlbnQgWDExIGtleW1hcC4pXxAUTWVudSBJdGVtIChTZXJ2aWNlcylfECxDaGVjayBCb3ggKEVuYWJs -ZSBrZXkgZXF1aXZhbGVudHMgdW5kZXIgWDExKV8QHkJ1dHRvbiBDZWxsIChGdWxsIHNjcmVlbiBtb2Rl -KVxDb250ZW50IFZpZXdfECFQb3AgVXAgQnV0dG9uIENlbGwgKEZyb20gRGlzcGxheSlfEBRCdXR0b24g -Q2VsbCAoQ2FuY2VsKV8QEE1lbnUgSXRlbSAoQ29weSlfEB1UZXh0IEZpZWxkIENlbGwgKFRleHQgQ2Vs -bCktMV8QD01lbnUgSXRlbSAoWDExKV8QeFRleHQgRmllbGQgQ2VsbCAoV2hlbiBlbmFibGVkLCBtZW51 -IGJhciBrZXkgZXF1aXZhbGVudHMgbWF5IGludGVyZmVyZSB3aXRoIFgxMSBhcHBsaWNhdGlvbnMgdGhh -dCB1c2UgdGhlIE1ldGEgbW9kaWZpZXIuKV8QFFB1c2ggQnV0dG9uIChSZW1vdmUpW01lbnUgKEhlbHAp -XxAWU3RhdGljIFRleHQgKENvbG9yczoKKVtTZXBhcmF0b3ItN18QHENoZWNrIEJveCAoRnVsbCBzY3Jl -ZW4gbW9kZSlfECRUYWJsZSBWaWV3IChOYW1lLCBDb21tYW5kLCBTaG9ydGN1dClfEBhNZW51IEl0ZW0g -KEFwcGxpY2F0aW9ucylfEBFNZW51IEl0ZW0gKFBhc3RlKV8QGlRleHQgRmllbGQgQ2VsbCAoQ29sb3Jz -OgopW1NlcGFyYXRvci0zXxA0QnV0dG9uIENlbGwgKEFsbG93IGNvbm5lY3Rpb25zIGZyb20gbmV0d29y -ayBjbGllbnRzKV8QEU1lbnUgSXRlbSAoQ2xvc2UpW1NlcGFyYXRvci04VlZpZXctMtIADgBFB/UK2YEB -+qDSAA4ARQf1CtyBAfqg0gAOAEUH9QrfgQH6rxC8AyADrAHnBv8F5gLHAHICWwa9APkAagCHBfsFLQIL -AgwE7wGBA/0DJgMqA5UBpgGsBesEfABZAFwAXQBgAGkGTQDZBOwDEQWcAJ0AUwBwAHYCYQVhBoAAXwb9 -AnEBiAXiAGcAWAasAF4BBgBkB94CpwCBAH8AhACFAxAF5QWAAcID9wCeArYAVQBtAB8AdAOtAuIFgQDJ -BYsATwBXAcYGCwBmAz8CRwP7BnoDqwB8A/4DDwMhANoDJwTqBzoAjgYbAFoIOwKhAFsE4ACCBYQHUQb+ -AuoCOQShAFIAVgJSAGwAYwB4BEYBcgBUA/gAeQMBBvMAhgHgAQMDrgD6BU0FhgViAYQBVwbpAV8H5AXk -AyUAYgBuAHoAfgCDAoYAcwIKAIgAYQB9BOkFvAhcBT0DsQXMAFADIgBxAX0EXwCABLMByQB3BlMAdQLz -BPQDDQcNAGUEdgQ3BYMDIwBoAG8AawRYAFEGmgMOA7AFrAP/AowBagMpAHsCiYCrgM6AXIEBqoEBYYCR -gQF/gHaBAZeAMoEBBoEB1IEBW4EBKIBkgGeBAS6AQ4DlgLiAvoDFgEyAToEBV4D/gHWAgICGgJWBAQSB -AXiAHIEBKoDqgQFDgA6AQYEBdYEBjIB4gQE6gQGHgJCBAZuAe4EBFIEBVYD6gHGBAZKAi4AngKOBAdeA -iYEByIEBxIEBzoEB0IDagQFdgQE9gFSA34AXgIyAUYEBb4ACgQGCgNGAmoEBQYAagQE/gAqAbYBVgQFf -gPSAsoBygOSBAYWAy4EBv4DmgMeAroAdgLuBASaBAamAC4EBY4B6gQHsgIeAf4EBNoEByoEBSYEBr4EB -poCbgG6BAQuAO4BTgHOBAQqAnoEBuIDvgD2AS4DigQG6gKSBAeKBAdKAW4AlgNKAJIEBMIEBTYEBU4BF -gDeBAeaAOIEB2YEBWYC3gJmBAXGBAbyBAcOBAcyAgYEBgIBhgQHWgJeBAcGBAReBAUuBAfiBASyA2IEB -T4AjgK+BAXeAQoD3gQHGgQESgFeBAY6BAXqBAYSAn4EBGYCngQGigPOA/YDtgQFFgLaA/IEBc4EBCID1 -gDaBAY+AwoDVgQFHgOiAhIA8gL2BAb6AgtIADgBFB/ULnoEB+q8QvAufC6ALoQuiC6MLpAulC6YLpwuo -C6kLqgurC6wLrQuuC68LsAuxC7ILswu0C7ULtgu3C7gLuQu6C7sLvAu9C74LvwvAC8ELwgvDC8QLxQvG -C8cLyAvJC8oLywvMC80LzgvPC9AL0QvSC9ML1AvVC9YL1wvYC9kL2gvbC9wL3QveC98L4AvhC+IL4wvk -C+UL5gvnC+gL6QvqC+sL7AvtC+4L7wvwC/EL8gvzC/QL9Qv2C/cL+Av5C/oL+wv8C/0L/gv/DAAMAQwC -DAMMBAwFDAYMBwwIDAkMCgwLDAwMDQwODA8MEAwRDBIMEwwUDBUMFgwXDBgMGQwaDBsMHAwdDB4MHwwg -DCEMIgwjDCQMJQwmDCcMKAwpDCoMKwwsDC0MLgwvDDAMMQwyDDMMNAw1DDYMNww4DDkMOgw7DDwMPQw+ -DD8MQAxBDEIMQwxEDEUMRgxHDEgMSQxKDEsMTAxNDE4MTwxQDFEMUgxTDFQMVQxWDFcMWAxZDFqBAoKB -AoOBAoSBAoWBAoaBAoeBAoiBAomBAoqBAouBAoyBAo2BAo6BAo+BApCBApGBApKBApOBApSBApWBApaB -ApeBApiBApmBApqBApuBApyBAp2BAp6BAp+BAqCBAqGBAqKBAqOBAqSBAqWBAqaBAqeBAqiBAqmBAqqB -AquBAqyBAq2BAq6BAq+BArCBArGBArKBArOBArSBArWBAraBAreBAriBArmBArqBAruBAryBAr2BAr6B -Ar+BAsCBAsGBAsKBAsOBAsSBAsWBAsaBAseBAsiBAsmBAsqBAsuBAsyBAs2BAs6BAs+BAtCBAtGBAtKB -AtOBAtSBAtWBAtaBAteBAtiBAtmBAtqBAtuBAtyBAt2BAt6BAt+BAuCBAuGBAuKBAuOBAuSBAuWBAuaB -AueBAuiBAumBAuqBAuuBAuyBAu2BAu6BAu+BAvCBAvGBAvKBAvOBAvSBAvWBAvaBAveBAviBAvmBAvqB -AvuBAvyBAv2BAv6BAv+BAwCBAwGBAwKBAwOBAwSBAwWBAwaBAweBAwiBAwmBAwqBAwuBAwyBAw2BAw6B -Aw+BAxCBAxGBAxKBAxOBAxSBAxWBAxaBAxeBAxiBAxmBAxqBAxuBAxyBAx2BAx6BAx+BAyCBAyGBAyKB -AyOBAySBAyWBAyaBAyeBAyiBAymBAyqBAyuBAyyBAy2BAy6BAy+BAzCBAzGBAzKBAzOBAzSBAzWBAzaB -AzeBAziBAzmBAzqBAzuBAzyBAz0QgRCtEQF8EQIXEQF7EQIaEQE0EgAElQgRAScQxBEBPhEBhBIAAYgY -EgABiA0RAX8RAX0SAASVChEBXxECGBCGEIgRATERAXISAAGIEhIAAYgWEgABh8USAASVDBEBkREBihEB -QRC0EQErEQIVEQFxEQGjEgABiBQRAgwRAYkRAQcRAYYSAASVCREBYBIAAYfEEQIcEQEpEQIZEQFcEQF2 -EQIjEQEREgAElQcRAiUSAAGH1hIABJUuEQEjEgABiAsSAASVLBEBphEBhxECExATEQF5EQFzEQF+EBcR -Ag4RAiARAawRAhYSAASVLxCvEJwQrBEBdBECDxIAAYgTEQGqEQGvEQFeEgABiBkRAiIQghEBEBBcEQEk -EJ4QwxAFEKMQjxECFBCREQFtEQI9EQGnEgABiBsRAhsRAR0RAWsRAY4RAV0SAASVKxEBghECPxEBKhCp -EJYQ9BDNEQGFEQEOEQGSELURAa4RAaURAYsQzBDOEB0SAAGHxxCyEQGAEQEeEKARATYSAASVCxECHxEB -YRIAAYgQEDoSAAMOZxA5EgABh8MRAXgRAiEQsxEBrRDPEQGNEgAElS0RAXcQyhEBsxEBLhECEhEBiBEB -bBIAAYgiE//////////9EgABiBEQpBIAAYi/EQE3EIMRATURAXASAAGIvRCwEPUSAAGIHhIAAYfLEQEw -EJ0SAAGIDBA4EQI+EQGMEQElEQGkEQGBEJARAYMRAiQRAh0RAbERASgRAQ0QqxIAAYghEgAElSoSAAGI -FxDLEJURAY8RAWLSAA4ARQBNDRaAH6DSAA4ARQf1DRmBAfqg0gAOAEUH9Q0cgQH6oNIAOgA7DR4NH6IN -HwA/Xk5TSUJPYmplY3REYXRhAAgAGQAiACcAMQA6AD8ARABSAFQAZgbuBvQHPwdGB00HWwdtB4kHlwej -B68HvQfIB9YH8ggACBMIJQg/CEkIVghYCFsIXghhCGQIZghpCGsIbghxCHQIdwh5CHsIfgiBCIYIiQiS -CJ4IoAiiCKsItQi3CMUIzgjXCOII6Qj7CQQJDQkWCRsJKgk9CUYJUQlTCVQJXQlkCXEJdwmACYIJ+Qn7 -Cf0J/woBCgMKBQoHCgkKCwoNCg8KEQoTChUKFwoZChsKHQofCiEKIwolCicKKQorCi0KMAozCjYKOQo8 -Cj8KQgpFCkgKSwpOClEKVApXCloKXQpgCmMKZgppCmwKbwpyCnUKeAp7Cn4KgQqECocKigqNCp4KrAq1 -Cr0KvwrBCsMKxQrWCt4K5QrxCvMK9Qr3CvkK/gsHCwkLDgsQCxILOwtPC10LaAt1C4MLjQuaC6ELowul -C6oLqwutC64Lswu1C7cLuQu6C8cL1gvYC9oL3AvkC/YL/wwEDBcMJAwmDCgMKgw9DEYMSwxWDH8MiQyS -DJQMlgyYDJoMnAyeDKAMogyvDL4MywzNDM8M0QzaDNwM4QzjDOUNDg0QDRINEw0VDRYNGA0aDRwNPQ0/ -DUENQw1FDUcNSQ1eDWcNbg19DYUNjg2TDZwNpQ2sDcMN0g3jDeUN5w3pDesOCA4aDiIOKQ4yDjwOSA5K -DkwOTg5QDlMOVA5WDmsOdg6CDoQOhw6KDo0OkA6qDt8O6w8BDxYPJQ84D0oPVQ9fD20Pfw+MD5oPnw+h -D6MPpQ+nD6kPqw+tD68PsQ+zD7gPwQ/KD9sP4g/rD+0P9g/4D/sQCBAREBYQHRAuEDAQMhA0ED4QRxBJ -EFIQVBBdEGYQcxCAEIkQlBCdEKcQrhC6EMMQxRDHENUQ5xDwEPcRDxEgESIRJBEmESgRRRFHEUkRSxFN -EU8RURFiEWQRZhFoEWoRdBGUEaURpxGpEasRrRHOEdAR0hHUEdYR2BHaEesR7RHvEfER8xH5EfsSCRIa -EhwSHhIgEiISPxJBEkMSRRJHEkgSShJjEmYSaRJsEm8SchKLEsASwhLEEsYSyBLKEswSzhLQEtIS1xL6 -EwMTDxMRExMTHBMlEyoTQBNTE2QTZhNoE2oTbBOJE4sTjROPE5ETkhOUE60T4hPkE+YT6BPqE+wT7hPw -FBAUHxQwFDIUNBQ2FDgUQhRTFFUUVxRZFFsUeBR6FHwUfhSAFIEUgxSYFJoUnRSgFKMUvBULFSgVOhVM -FWEVbxV4FXkVexV9FX8VgRWDFYUVhxWJFYsVjBWNFZAVkxWVFZoVqxWtFa8VuBW6FcMVxRX2Ff8WBRYN -Fg8WERYTFhUWFxYZFhsWHRYmFjMWNRY3FjkWRhZaFmMWZRZwFnkWexaEFoYWiBaKFowWuRa7Fr0WvxbB -FsMWxRbHFskWyxbWFwMXBRcHFwkXCxcNFw8XERcTFxUXHxdMF04XUBdSF1QXVhdYF1oXXBdeF2cXcBd9 -F5EXoBepF7YXxBfKF9sX3RffF+EX4xgIGAoYDBgOGBAYEhgUGBYYHxg4GEkYSxhNGE8YURh6GHwYfhh/ -GIEYghiEGIYYiBiVGJcYmRibGKoYuxi9GL8YwRjDGOAY4hjkGOYY6BjpGOsZAxk4GToZPBk+GUAZQhlE -GUYZZxl4GXoZfBl+GYAZoRmjGaUZqhmsGa4ZsBmyGcoZzBnZGeoZ7BnuGfAZ8hoDGgUaBxoJGgsaKBoq -GiwaLhowGjEaMxpIGkoaTRpQGlMabBqhGqMapRqnGqkaqxqtGq8a2BrpGusa7RrvGvEbDhsQGxIbFBsW -GxcbGRsyG2cbaRtrG20bbxtxG3MbdRuSG6MbpRunG6kbqxvMG84b0BvVG9cb2RvbG90b8hv0HA0cHhwg -HCIcJBwmHEccSRxLHFAcUhxUHFYcWBx4HHocjRyeHKAcohykHKYctRzGHMgcyhzMHM4c3RzqHOwc7hzw -HREdEx0VHRcdGR0bHR0dKh0sHS4dMB07HUYdUx1VHVcdWR16HXwdfh2AHYIdhB2GHYsdjR2THaQdph2o -HaodrB29Hb8dwR3DHcUdzh3XHdkd5B3mHegd6h3sHe4eFx4ZHhseHR4fHiEeIx4lHiceKx40HjYeTx5R -HlMeVR5XHlkeWx5dHl8eYR5jHmUeZx6IHooejB6OHpAekh6UHqMepR7OHtAe0h7THtUe1h7YHtoe3B8F -HwcfCR8LHw0fDx8RHxMfFR8eHy8fMR8zHzUfNx9AH0IfSx9NH04fYB+JH4sfjR+OH5AfkR+TH5Uflx/A -H8IfxB/FH8cfyB/KH8wfzh/zH/Uf9x/5H/sf/R//IAggCiArIC0gLyAxIDMgNSA3IEMgbCBuIHAgcSBz -IHQgdiB4IHogmyCdIJ8goSCjIKUgpyCwILIgvyDoIOog7CDuIPAg8iD0IPYg+CEBIQMhCCEKIQwhLSEv -ITEhMyE1ITchOSFGIW8hcSFzIXUhdyF5IXshfSF/IYQhjSGPIaAhoiGkIaYhqCGqIawhriGwIdEh0yHV -Idch2SHbId0h4iHkIgUiByIJIgsiDSIPIhEiFiIYIkEiQyJFIkYiSCJJIksiTSJPInAiciJ0InYieCJ6 -InwigCKCIqMipSKnIqkiqyKtIq8itSK3Itgi2iLcIt4i4CLiIuQi6yMUIxYjGCMaIxwjHiMgIyIjJCMr -IzQjNiM/I0EjVCNWI1gjWiNcI14jYCNiI2QjZiOHI4kjiyONI48jkSOTI5wjniO/I8EjwyPFI8cjySPL -I9Aj+SP7I/0j/iQAJAEkAyQFJAckMCQyJDQkNSQ3JDgkOiQ8JD4kXyRhJGMkZSRnJGkkaySAJKkkqySt -JK4ksCSxJLMktSS3JMYk7yTxJPMk9ST3JPkk+yT9JP8lBCURJRMlFSUXJSAlIiUlJSclSCVKJUwlTiVQ -JVIlVCVdJWklbiV/JYElgyWFJYclmCWaJZwlniWgJb0lvyXBJcMlxSXGJcgl4SYWJhgmGiYcJh4mICYi -JiQmNyZLJlwmXiZgJmImZCaBJpImlCaWJpgmmya4JromvCa+JsAmwSbDJt0nEicUJxcnGSccJx8nIScj -JyonMyc1Jz4nQCdVJ2InZCdmJ2knbyeAJ4InhCeGJ4knlSemJ6gnqiesJ68nxCfVJ9cn2ifcJ98oHigr -KEQoUShnKHUofyiNKKYosyi9KM8o4yjtKPko/Cj/KQIpBSkIKQspECkTKRYpGSkcKR8pIik9KU8pVylg -KWIpZymEKY8ppCmmKakprCmvKbgpuim9KcAp8SoAKgoqHio3Kk8qUipVKlgqWypdKmAqYSpkKmUqaCpx -KnMqdip4KoEqgyqUKpYqmSqcKp4qoSqjKqUqqCrFKscqyirNKtAq0SrTKusrDCsgKywrLysyKzUrOCs7 -K0ArQyusK70rvyvIK8orzSviK+or9ywDLBEsFCwXLBksHCwfLCYsMyxALEgsSyxXLGAsZSx6LH0sgCyD -LIYsmSymLKksrCy1LL4s0CzZLOQs8C0NLQ8tEi0VLRgtGS0bLTQtVS1YLVstXi1hLWQtZy3BLd4t4C3j -LeYt6S3qLewuBS4mLikuLC4vLjIuNS44Lnkuli6YLpsuni6hLqIupC68Lt0u4C7jLuYu6S7sLu8vdy+Q -L5kvoC+5L8IvxC/LL84v0S/UL+0v+jAEMAcwCjAMMA8wEjAVMB4wIDAiMCgwMTA2MEQwXTBgMGMwZTBo -MGswbjB3MHkwezCEMIYwlTCYMJswnTCgMKMwpTCoMMUwxzDJMMwwzzDQMNIw6zEgMSIxJDEmMSgxKzEt -MTAxSjFnMWkxbDFvMXIxczF1MY0xrjGxMbQxtzG6Mb0xwDIqMkcySTJMMk8yUjJTMlUybTKOMpEylDKX -MpkynDKfMqgyxTLHMsoyzTLQMtEy0zLsMw0zEDMTMxYzGTMcMx8zVjNzM3UzeDN7M34zfzOBM5ozuzO+ -M8EzxDPHM8ozzTQ0NDs0UDRTNFU0WDRbNF40ZzRpNHQ0dzR5NHw0fzSCNJ80oTSjNKY0qTSqNKw04TTj -NOU05zTpNOw07jTxNQw1KTUrNS41MTU0NTU1NzVQNXE1dDV3NXo1fTWANYM2MDZNNk82UjZVNlg2WTZb -NnQ2lTaYNps2njahNqQ2pzdDN2A3YjdlN2g3azdsN243hjenN6o3rTewN7M3tje5N/A3+TgCOAs4Fjgu -ODk4QzhMOFE4ZDhwOIE4gziFOIc4ijidOK44sDiyOLQ4tzjAONE40zjWONg42zjnOPg4+jj8OP45ATka -OSs5LTkvOTI5NTlSOVQ5VjlZOVw5XzlgOWI5ejmvObg5ujm9Ob85wjnFOcc5yjnROdo53DnlOec5/DoN -Og86EToTOhY6JzopOis6LTowOkM6UDpSOlQ6VzpcOm06bzpxOnQ6dzqUOpY6mDqbOp46nzqhOrs68Dry -OvU69zr6Ov06/zsCOww7FTsXOyA7Ijs6O0s7TTtQO1I7VTthO3I7dDt3O3k7fDvLO+07+jwPPBw8NjxS -PG08eTyYPKc8szy2PLk8vjzBPMQ8xTzIPNE82jzdPN484TzkPOc88D0ZPSM9LT03PUU9SD1LPU49UD1T -PVY9WT1cPV89Yj1tPYY9kj2VPZg9mz2ePaE9yj3NPdA90z3WPdk93D3fPeI97D31Pf4+Ej4nPio+LT4w -PjM+bD54PoE+lD6hPq0+uz69PsA+wz7GPsg+yz7OPtE+5D7nPuk+7D7vPvI/CT8SPxs/KT8yPzQ/Oz8+ -P0E/RD9tP3w/iT+RP5w/qz+2P8E/zj/PP9I/1T/eP+E/6j/zP/Q/90AUQBlAHEAfQCJAJUAoQC1AOkA9 -QElAXkBhQGRAZ0BqQHxAhUCQQKRAxUDKQM1A0EDTQNVA2EDbQOVA8kD1QPhBAUEGQRRBPUE+QUFBREFN -QVBBWUFaQV1BekF9QYBBg0GGQYlBkUGyQbVBuEG7Qb1BwEHDQexB7UHwQfNB/EH/QghCCUIMQilCLEIv -QjJCNUI4QkFCVkJZQlxCX0JiQm5Ck0KWQplCnEKfQqJCo0KmQrdCuULCQsRC2ULcQt9C4kLlQv5DE0MW -QxlDHEMfQylDNkM5Qz5DR0NSQ11DbkNwQ3JDdEN3Q31DjkOQQ5JDlEOXQ6RDtUO3Q7lDu0O+Q9BD4UPj -Q+VD6EPqQ/dD+UP7Q/5EBkQXRBlEG0QdRCBELEQ9RD9EQUREREZEV0RZRFtEXURgRGpEd0R5RHtEfkSF -RJZEmESaRJxEn0StRL5EwETCRMREx0TaROtE7UTvRPFE9ET6RQtFDUUPRRFFFEUhRTJFNEU2RThFO0VT -RWBFYkVkRWdFbUV+RYBFgkWERYdFkkWjRaVFp0WqRa1FykXMRc5F0UXURdVF10XvRiRGJkYoRipGLUYw -RjJGNUY6RkNGRUZYRmFGZEdpR2tHbUdvR3JHdUd3R3lHfEd+R4FHhEeGR4hHi0eNR49HkUeTR5VHl0eZ -R5xHnkehR6NHpkeoR6tHrUevR7JHtUe4R7pHvUfAR8NHxUfIR8pHzEfPR9JH1EfWR9hH2kfcR95H4Ufj -R+ZH6EfrR+1H70fxR/RH9kf4R/pH/Ef+SABIA0gGSAhIC0gOSBBIE0gWSBlIHEgeSCBII0glSCdIKUgr -SC1IMEgySDRINkg4SDtIPkhBSENIRUhISEpITUhQSFJIVEhWSFlIXEhfSGJIZEhnSGlIa0htSHBIckh1 -SHdIekh8SH9IgUiDSIZIiEiKSI1Ij0iRSJRIlkiYSJpInEieSKdIqUi0SLdIuki9SMBIw0jMSM5I0UjU -SOxI9Uj+SQlJKkk0STdJOkk9SUBJQ0lGSU9JaEl1SX5JiUmUSblJvEm/ScJJxUnISctJ1EnsSfVJ90n6 -Sf1KE0osSjVKPkpLSopKjEqPSpJKlUqYSptKnkqhSqRKp0qpSqxKr0rKSuFK6krsSvVK90sESwdLCksM -Sw9LEksUSx9LKEsxSzNLNks/S0RLTUtQTFVMV0xZTFtMXkxgTGJMZExmTGhMa0xuTHBMckx0THdMeUx7 -TH1Mf0yBTINMhkyITIpMjEyOTJBMk0yVTJdMmkydTKBMokylTKdMqkysTK5MsEyyTLRMtky4TLpMvEy+ -TMBMwkzETMZMyUzMTM9M0UzTTNVM10zZTNtM3UzfTOFM40zlTOhM6kztTO9M8Uz0TPZM+Uz8TP5NAE0C -TQRNBk0ITQpNDE0PTRFNFE0WTRhNG00dTSBNIk0kTSdNKU0sTS5NME0yTTRNNk05TTtNPk1ATUNNRU1H -TUlNTE1OTVFNU01WTVhNW01dTV9NYU1jTWVNaE1qTWxNb01xTXNNdU13TXpNg02GTo1Oj06RTpROlk6Z -TptOnk6gTqJOpU6oTqpOrE6vTrFOs061TrdOuU67Tr1Ov07CTsVOx07KTsxOz07RTtRO107ZTtxO307h -TuRO507pTuxO7k7wTvNO9k74TvpO/E7+TwBPAk8ETwdPCU8MTw5PEU8TTxVPGE8aTxxPHk8gTyJPJE8m -TylPK08uTzFPNE82TzlPPE8/T0JPRE9GT0lPS09NT09PUU9TT1ZPWE9aT1xPXk9hT2RPZ09qT2xPb09x -T3NPdk94T3pPfE9/T4JPhU+IT4pPjU+PT5FPk0+WT5hPm0+dT6BPok+lT6dPqU+sT65PsE+zT7VPt0+6 -T7xPvk/AT8JPxE/NT9BQ11DaUN1Q4FDjUOZQ6VDsUO9Q8VD0UPdQ+lD9UQBRA1EGUQlRDFEPURJRFVEY -URtRHlEhUSRRJ1EqUS1RMFEzUTZROVE8UT9RQlFFUUhRS1FOUVFRVFFXUVpRXVFgUWNRZlFpUWxRb1Fy -UXVReFF7UX5RgVGEUYdRilGNUZBRk1GWUZlRnFGfUaJRpVGoUatRrlGxUbRRt1G6Ub1RwFHDUcZRyVHM -Uc5R0VHUUddR2lHdUeBR41HmUelR7FHvUfJR9VH4UftR/lIBUgRSB1IKUg1SEFITUhZSGVIcUh9SIlIl -UihSK1IuUjFSNFI3UjpSPVJAUkNSRlJJUkxST1JSUlVSWFJbUnhSi1KlUrlS/lMqUzZTY1QiVI5UplS9 -VVNVWlVmVX1VlFWvVcZV8lYgVklWYFZtVrxWz1dLV1VXbleIV7dXzVf2WBpYQVhVWG5Yg1iuWMNZbVmT -WbBZx1nlWgZaE1ofWjhasFrIWvBbnluwW7xb1lviW/VcFlwpXDVcZFx+XOZc710PXVhdZV2OXaZd614J -XiJeLl5FXlBeZl59Xotenl6yXsFe3F7uXwdfIl+XYDFgR2BfYHRgf2CwYWthd2GsYcViPGKFYpFjCmMf -Y3JjiWO4Y9lj5mQKZCFkNGRUZGZk4WT4ZQRlHWUpZUhlb2WKZZ5lu2XHZf5mEmYeZiVmLmYxZjJmO2Y+ -Zj9mSGZLZ8ZnyGfKZ8xnz2fSZ9Rn12fZZ9xn3mfhZ+Rn52fqZ+xn7mfxZ/Nn9Wf3Z/ln+2f9Z/9oAmgE -aAZoCGgKaAxoD2gSaBRoF2gZaBxoHmggaCNoJmgoaCtoLmgwaDNoNWg4aDtoPWg/aEJoRGhGaEhoS2hN -aFBoU2hWaFloW2heaGFoY2hlaGdoaWhraG5ocGhzaHVod2h6aHxof2iBaINohWiIaIpojGiOaJBok2iV -aJhommicaJ5ooGiiaKVoqGiqaK1or2iyaLRotmi5aLxov2jCaMVox2jJaMxozmjQaNJo1WjXaNpo3Gje -aOBo4mjlaOdo6mjtaO9o8WjzaPVo+Gj7aP5pAGkCaQVpB2kKaQ1pD2kRaRRpF2kaaR1pH2kiaSRpJ2kp -aSxpL2kyaTVpOGk6aT1pP2lBaURpRmlIaUtpTmlQaVNpVmlZaVtpXmlgaWNpZWlnaWlpbGluaXBpc2l2 -aXhpeml9aX9pgWmEaYZpiGmKaYxpj2mRaZppnWsYaxtrHmshayRrJ2sqay1rMGszazZrOWs8az9rQmtF -a0hrS2tOa1FrVGtXa1prXWtga2NrZmtpa2xrb2tya3VreGt7a35rgWuEa4drimuNa5Brk2uWa5lrnGuf -a6JrpWuoa6trrmuxa7Rrt2u6a71rwGvDa8ZryWvMa89r0mvVa9hr22vea+Fr5Gvna+pr7Wvwa/Nr9mv5 -a/xr/2wCbAVsCGwLbA5sEWwUbBdsGmwdbCBsI2wmbClsLGwvbDJsNWw4bDtsPmxBbERsR2xKbE1sUGxT -bFZsWWxcbF9sYmxlbGhsa2xubHFsdGx3bHpsfWyAbINshmyJbIxsj2ySbJVsmGybbJ5soWykbKdsqmyt -bLBss2y2bLlsvGy/bMJsxWzIbMtszmzRbNRs12zabN1s4GzjbOZs6WzsbO9s8mz1bPhs+2z+bQFtBG0H -bQptDW0QbRNtFm0ZbRxtH20ibSVtKG0rbS5tMW00bTdtOm09bUBtQ21GbUltTG1ObVBtU21WbVltXG1f -bWRtZ21pbWxtb210bXltfG1/bYRth22KbYxtjm2RbZRtmW2ebaNtqG2rba5tsW2zbbZtuW28bb9txG3H -bcptzW3QbdVt2G3dbeBt423mbelt7G3vbfJt9236bf9uBG4HbgxuEW4UbhduGm4cbh9uIm4lbiduKm4t -bjBuM244bjpuPG4+bkFuRG5JbkxuT25SblduWm5cbl9uYW5kbmZuaG5qbmxubm5xbnNudm55bnxugW6E -boduim6NbpBulW6Ybptunm6gbqJupG6mbqlurG6vbrFutG63brpuvG6+bsBuxW7HbspuzW7PbtJu127a -bt1u4m7kbulu627wbvNu9m74bvtu/W8AbwVvCG8Kbw1vEG8TbxZvGW8ebydvLG8ubzNvNm84bztvPm9D -b0VvR29Mb1FvVG9Wb1tvXW9gb2NvZm9pb2xvbm9xb3Rvd296b31vgG+Cb4dvjG+Rb5NvlW+Yb5tvpG+m -b6dvsG+zb7RvvW/Ab8Fvym/PAAAAAAAAAgIAAAAAAAANIAAAAAAAAAAAAAAAAAAAb94 - diff --git a/hw/xquartz/bundle/English.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/English.lproj/main.nib/keyedobjects.nib index 430610292bd903db47a1bf8b9f351b8395f48c25..5223c9a95ecc5ed438a02c3f6aff0a65e6f8360f 100644 GIT binary patch literal 35529 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 z z@Uua36|Q#vH{&f#4cLXwT*KApu!NtsONsqFN<7!6tU5|tmB-<&F}oa7J&pc0G@^6N z1jf}&<0kw9-l@8pwW!L~Jb1FRxnFrT14+6T|4l#e%cC{EmeS82P#D}hx2`gC6JkD%UWP(Q8V)1_brVe*%-iTT( z|7K2wc?Rra)?6dEZ(#|)VV7ct`Q)I`I$W~XZTv1XD33 z9XnF1a^qor40bW=n}_ugmhk&{U4>$Fecjq9e%k9{=154dALCDgQ>_>8<@BzxrlJYvI&+JhRnBOr$_626uJej&Wl-Ew5+2v?-SJ%lkW=E~V z>2Av!u$(!={LoBfEdC6C9wbuHqw18G6m_L+`p3;_>l`2RJJ`i+yha|sz!E-amn0>8 zqy~zp?bXA^j(3Ot`_M8ywq$&N{~nZ~|C$5b$U zaHGGW(SHzxwP-Q0j4Bp348Mj&MXmfA&?Kx8mu_NBU;!J+MzPWOYplm7@b~z~Ygj`Q zz-&C*j zp3QBhViP`zPwB9z=rLu2y0%PEN%0NW6kCigv60OabQ-U~C+Gxi8K}rDH8NC?RqN%I zDODAYMt_~h>-0}GI~3eWe!xLhrl-I>V4N~}s*TR_nFkD^=F2Pld_j*Rj~4JL&XLbt zC0BduWwX;g$>DM;-d}Z{vJ0S*qo5bk%KcX|xazucx@)gpQh>6i8+%g-YtG;wTCv8` z;<)}3YkH$gY*aIA&f*pLd&-*S1ID%NV{SBG=K4mT-|TStJmxAnSX`A_U!%9#82IGs zM#{+ov*JwD1R^hap;NDp*DKe1{BmnXIJ~mi?V;VcJd@>`>vH0DR`DqnQQd@p!sirD zL`|PwT$E?FbXGmzl7Ccy>`-)xjc#Vd&v*s?F`xkHEUFsNr>MZ|X+XC;#ow$33o2}Z zAuIj>TglAY$jnkbl#$b$!vl&K7v-51SH;p*q1Dp4OH=cHzqo5tuB4^artIt; z>)AU3sZ%v}Q7+dv&;al#HG8dCr;r#ATLY5Wakva$#)v>f-vnZvtP?!PPQU~4-#8jy zDW?gmpq}vH()DZuI}u+c5d4dQE4Fnk?ebv|#@^XF;SKKu=TQ^PZV6wpHS8<}CQ(H< z%Qy?q#Ipjytjh$#u|D-hAfHr0BUzNrkny2JFrS@=%kX#{M<6?vGR#4P$abe+u5T_# zL)Gj;_CXqnB~U}4_Bw$zc5w@3G)_z)A0Wn4KGNf+HP)OY{qs53R}?Eb)j-eTVdyV#w<0TCEQM-)w9Bps1)_)xjtGbwaT zt%esGL#~ls@-<1EQZS$W442`KR1)Hb)yNJ0x>j<6P6tvNTUw_y=Cj9Hnq`V3FoD42 z>j}_z>DGELD_0f*0AT;pK$_#DFminufN~G zg>+d2((-yvc;X0 zJ?6h6vNTb`wO2)!%j5FFE-tY}WIIriEg`U&ifmy;ubLV&jjD!7YRE^s6dscJaLXY% zB)A_Ig85uGT!srNqdJdKHq`dOM!Gc
3}8SP5o&DWdJKHvh^H*`k35qOh2qhmwj z)CC0vWqARM(iXa|V zyEtnLuX|Ho_aU$s<@GIkTzTR0y+cf`wZWP2d5L%#G(J(DWsN{Rr%TJyyC~ zjD@;5ZVP5HNA-8s$YurcK=Tw7kfeMGO%b)~Z9X@Jo2qj3b^-@oueUqF1+FPnvy>7z zP*o}wgPd+BMIe>c+a;+!@Fl2AS_{ZM++4Mv!2}MyUO)3%M#U|lOTJ7U6@f#VvtHaH z?jf2ZoloGx3hFxdmt75tt5PSs8d`dU`_XAIpL+zC;Vo2j%k7dB&;=9ZsY*n=1wRD$ zbE`ozw-%QXIGpl*5v4rft8g2*joc>M=LiBHB(S1lki+Q?aap*>ap@**3-<)KmD|Q` zC$N%07l9rE?ftyPA6eXW?W5M+S#HoWN1G3X6rV)LX$IZWk`yiW0dV z+-`0U_bNQV?dA4y

OKl?WxPw1)}L*Q5fWo#pG9D%h2_QOd8jwdkVU-YA>EQRDG zlW#yf_X+oD3+>Gm3tXjRt|QPHuu00g ztFTzg>i$hyN843^yc`(s^*mUZ5$eHmt2Gfg3+D#?RzihF(ek%~L7Hfq0CvGdjB)!L zOe8!Fe`uLVZnY)_XW>c$8$yI|V)?B#&LH?*lYvVg(`0J0G}%a}X%CNU^4N0(`Uspv z;8a{g;51x8U=x8U*ID42B5*+yz(S}lgP*`gg@2Xh!`wBVvT4_=)fHUObW{1R)|yP< zlt8Vaa*d~K0s>(wf6;i5|7U4fNQ zIlQmp1>Rr+P>E(tOI2>QrV3|a4}myj0?2T6vlUn?n(F4YqN&5Bk8@Mlh3s*ZtEtzx zH6BfaW+I`ATti?2b`v;@z}W=OCGcJX=lzR(QgA9QeDYjx#7*FW=B`kiFo(c<6h3)| z^>KN8a@pkn4|`kC!X$NbbYFnK9=l}fP0yE5XOrFk}R+4ER?F#R9YIoDf*+yZV< z3pw0s&7)Kk3?XoS$fPYOr*{56Yl`Xs9 zV;@JcV66%#bNe)Zs%}~>fm?=ASF5D}+^@L^=4&p~ac-q_eR@oa1dB9RKp6T+a~1u` z10M2-XLyzZtH8sk56|%$u$1R{Ew2N+d4bpSB5wez_;6l=RlE_b|^(X^HlJxUWtu%6 zWwqVrb*cykyOeMPY86sd1c*ykJE2GDhI%Hetq{14z)ws=dtyM~4gz1(5%^46PpyhO zNb9No1_W-`QRLZ2O8FPkdRo*MM^xw=A5VcOd^^;KPXJ5#L_Ud6=FNNxpUS6cE~4A{ zOg>3-vC?X*Za!1g*HcX)DV0`R@7t6-2tBhWPw|(^Q|WU8pC#~H0>6=10>3uu0G;c} z1b(2r*gA50hawA&M09CV?d3-rPj2}+XhI}Qj<8`B~w*Izi^$1Lb)#eMFl9GZ_+sEZ>pj=U*TOOCI zSG}J~#_(XJ!09I0?We_XBY~$0{E@)3QZa$gC>%UKSdw~~0Z{%f1AzWDLK8(c68N1W zD%uek^a_$lFy`jj@L=mw@8auuH=heu@eTY$-pl*o1m4d#f>oM}V<{wXC|yo6m4W63OED!B z-9i`NNUN={!|$Mv)Kf3Y+6$b^8RT>a3k`BiQ9dd#L+ZBC7Ig&fCGf?xo)xbu%Ync> zX+8S}m(Bup@#qNL`gsT}=_z!cpUO|;r}KBBOJFyDmx(1;0D-#++(qC^cm;tkms6}x z2v~-np`dU&(4XS2T|pb%4L?W4-4OT+1>S_$DVnJnccX-v`TO{JoA`MxIGfg@Nm5iePrQ-9*9d%-Zp*jgb(ORmGp!y<@lw3Dw?&2b@XPr} z*7J`9Q|CcFbmMtk&9C9t!U_C3bskkVzn<1}totp>Xae`A^&C9r!8-u>2kt(qayQ7> zHx$N>2qfnI%Yj}q#v9Z69REE30-V6_45jt0w4P-_k$5kyXSym9*O3J93_p#3h2I@Q z>pKL#tKx2FkINw4T{2(b(8p*z}CZf367I8UjD0!WJD! zqFsZkYgLW^k`ei%D%BqocmS`etPL8kP^tL_ukBk@&@mu4-|@Md_}n1mYh+7!r`bhO z0-mOTGxT+cGelo#-26G!<(N(2=VPj=?|j|(3A2&^gBHXG2|Q$%;@dbm&8G)jyq!$` zBK3BB1RfdI=nnOEAkEIq*8(Lw6G!0DO2ylxKB=PBw2YP|@X`*6pw;MJE{$2E@u0rk zJ&cQ4&#q>+z$M%kSjcQZbGcVFnea6814?Auq1!Zh&s*P@;bh8@vSbcUM(7I2B0 z_UvwUA-5aMhZoq5sEL1p+pC#~zURtO2{#_;U{`pYy@{>iw!+1{5B|z6VA{hna2B1` zT-0Q1+?obW7IJY8^v7Kj^IW1Z}cRa%a(#GOgCmNSjJnK zQg$bMoY}?oK)HMk%wVILce(vAk^6+%$eK7Sbh44?7xo-1=Jvn_u!2w0)N|XJO>6@? z#T-E=(OK=R!sl=@-iqJGB7vvzlZ0km67ahOcBR|KeK;5Yh(9E7 zJZ?{*10Td+6L<^08K1z*2~5F71dhesahT!_%p&jsd73p54=0_IUW z7ng44tn5xciAzL1+0}%`ZjDOSLhL6{2o`)0mu}*9d?jz?^Z0PZG=Ha9^d|{?CRk`W zE?uX&NZ?lW=wUF++U#nn4vuz}cJ)T>>Okg`-cO)<5{JMd<($_;)JcJNf~DHEd=j6e z-Jsn_{TuCOK1usnrE(s-T6X&tBA+Gj6oDtG!*i0rXVZF|`)oW_>na#PIUTMfdMzDQ zXRm3ry~Y#tP}H-$+O67co3z`SwS)piS5E#O4id!oZ$r}4u&SA;=R-*OzJ-*N+8V0E zgS;rVsIUaZ?`#2|X!^FU!!AWkpKb~GIcl-a6fGXDW~@6Y{!a&rjG+;YdFGBCOO$+iu*)X96iGwC zA+c?9FfQ8(CA7M zqCEn4t*2+^f?Dw_RV#vI)Wju1D=N{B;1-~>(2DvpYhVMn8WuwKdC5nN$S zs3$zlVA#OdpuVsxEQDQQF)9JeP+xeO-HA%T6_5;nWmmHkc^OrUtMKorI^+QE&y8 zfd#ZQw;Ed68d%J1fW@#FB!eq#4MtRF72-}*RsBrW((||zZp3fk?oaoEAd|Xb{}rUi*X@djEk@bi@1@NGGY%-#)xV-fj~gun>ZPJsHVAvz`JQn zcoD9|-_tn2aN5dF`tAX|8F$3V^y9O*5__-*SK?e+;%SU1ir1P^yjV4)75Fm#LCMPO!M$6|C^e!qOQM=l#fIK{Lo-U?&s0!$sK&Id z8Kpw}2Di zpLFMRKkI(c{i^#-_q*;7-JiPiy1#T6bQg7(beDC1>#pdo3P6AY5*UFMI6))uf>zK8 zf}j^f@Qn~AgbR{j6ih;d5Gh0n(L#(6E5r%$LOUTrNEDKUWWg+?2&qDvkS=5hnL?J3 zE#wI8gQWS6+)#jQWzzS7RCr;1-o#E z;1H^WYN1Aug>gcyP$xJEyh;!t2oi({VhCah;t0|Z#1o_?NJo%Bke(osAOk^R1cehM z5o9FDL{J1lkpx8%6irYJL9qnI5fo2QJAx7jN+c+Wpk#u~1f>v^N>Cb(Cn%ku41zKV z$|5M6pd5nQ6O>C(9zpp86%bTNP!T~Ef{F?1Ku`%m9SQ10P-lX=5Y&~RZUo&#(9HyO zC+HS}dJxo;pk4&^Ca4cVeF?giCK*vbf^H+IKS2Wsx}Bg>f(8;ah#)ILg9#c!P#Hl( z39=DXPS7xdh7&Y`pbCO22^vYzD1t^4G=`wD1lb9?gCGY%RRmQNR6~$V&^Ur>392K= zNzizLCJ^KzsGcA}rYa~tE z`;=2<9w{0O0y1!eMqma5fFH=99+*M)^^OIC9J>^)o*!4X&_X~e4;YH^Vq;CKQnbm@-22LlKKD&;K7_7%n;|;rKL&)Ksk#O==6WZ0Rzek zdi{a3+N=AyS6D1L zqg!}sDY8qwTM_f`V6b!SQu~lO{O3D7LZ{MVm!uHlXhtw+l=2{(2D5VPQc|n2UyHK7 zX3)*&xpVANW~+)fLY3y&rN~wV)$_!3CPL^^GkUaatLbSjo7hIsnqyBn`Ngf}Gk8M- zm4b3dl_J9d(N)paId&{4+^+yC0#P&ut9o#t5EOoNKK3l$Z5Ay&wgP=sWTUCM67sTKakg#8lYJJq<0B zug-g(S(T?ea}Xd*8w_D#2yW;aCDEsmN`f(@ta3|5PDS4UB-SoH(MII|*MhjOk+*eO)avC15~l&<8eR85slQvi9vgCu$8U@(}j;1He#@9zp- z!5v$Rl!6(!W^O3BBeY5vK8XB7!cP-D1 z!(}f$MWS31qr`FSQiRGFHGiqHhOV*JPjA4XAbRK;QxjOyqp6e*@p@{#j(VS6ioHg$ zhpcF$+MAlkQ|8DnJ=#hO{cm2FliI9||HL__YlJljF3uSp>R8&Pm)j8c|IQhn9J|!7 z4f*B&#_^Jzk;?i~97nrU&}v2f3%aARl_*l@{6BD9GH1B5Gbpx85&b=0=QNMo-)h~q zcH;uRhFu!chGGBL20SH1Ib9cvpJSJ%w(0gi#U{HHA3|SiL^gFBLtg&ly+i?D)nr8f;xSr%1U#;aF zO3vthPM4hJGY_8ZrZ;G(^j2>8l56NCZyuK`;LfzTHrE)1=6P3jiN!9Jw9P z2Sa4Dt6lQ8n)CmV^;2E@?3Qa1b1Iu-0(MDmMbiJAt9m^H_1`}Lo@1Bjm2EBIl>eCE zJ@gOV{{M7&Mb4-YMcdkWZhOz+HTplKCfyka@)^Pp1YTMj{PI)imtU0N^vhrjXwG&3 zF9i*N#unHBm=5l_9&~_Sq0Y7gBR~zh4U7gpFjbIU;;3h!JrMG0JwvY0x%8S z4Q96h3xEyGx)Hbl458Ps!(Tx;nAsX;02Zflg4zMgk}L1>C`&1IaX} zLcs|tG=Wb7cD4bGMW?{TP>2F(!gmw+cnDHqKme>TEEKPx+~KvA;6r#3fnPQQA?onk*r{B6znVY> z7Z7M`3ymN!o}weVD7WD6BQW;*Fo_)HlKn66%>WRC)zP*D>! z?RX!)if7=>1m4;jKSAJ{z)I6UsV*-4Q~Ia%&*-1kKc|0Q|AKy}{zd&u`d#{$^{?o6 z>-Xqi)xW0StKX-8UH^uDzy3}ATl%;4@95vvzo&m+|AGEP{YUx(`j7RW=s(pT)PJV` zT>pjskp8g#i2h6cQT(L(n}0%_Znwg6<<|9zpjL^Z-Hg30gqVLV_M7 zXc0jV5ww_~B?LW8&{Bey5wx73M+jO$&`N?<5wx11H3Y3CXdOZ83EDu=MuIjGw3(ns z33`m6#|hd(&=Ul0C1@K#+X>o1(31o`MbOg(Jwwp51U*O4^8~#>&`yG0BOtqj|e(I z(8mOQLeQrK9VF;8f<7nc3xW<2beNzc1bs=+QG&iA=omrA3Hq9#ZwUI9pzjDeLC{Hp zP7!pPpzjGfL(mTdoh9f;f_@_C96>)5^b0}167(BEzZ3KaL4Oi-o}j-7xm?Xj^6UI!K6vCtuCXF!ZgvlUGCSkG&lTDZ$ z!n7w$E@AQrlTVle!W0swh%gqy6ceTcVM++okuaSI)0r?`2-B4?-3W6NVQwZ&cf#Ca zghnIWF8yvqktP7|`OFA?(mO^JYlKPkKTs(!!cFwI-Ux{irkMbo8zJqJo;AX|r7rY^ z)(B@9QIxb$S}i?JU%w)CGop0qN%}e32=6h%LfY`VM%d8^HyhzxX`>N7V1(O@aI6tF z8Bup5%r(LXjqncXY1*RB2*((qSBf#h$wt^oT1BhBLEq#_?@0@!*J;aoBb;MIsnYxO z*4@zr|aJ2LUtrlm5k4hVi@EIez#Rzv8;Y=gS zFv1B&ILiq0jc_9^WT5{fNe>%ggAry+D~+&7dROA4ZAK^=q4L%wB^u#fwEZ`w9Y&aA zL^0AFBWfo_7@@-mr_vVo80pz|b_s7p3DO7BTq7(n!p=q%A^l;5TWN_{`cFHlEBz%I z;eAHvH^Qf+=ZtWk5%!{WMI*e|2&+th39F^0j7FGYL~-p`5|7Ip-BDG4cufXHgs5T=%C#8J)pPxAL39HInaVQkP5PZ1#|;FKwmHv zl!I}apEZB-z4-q8V15km;pg$o`Az&&{2u-t{tNzhEz(A5v$VamrP>PZNbMNy9olN` zIBlJFg0^1Up!I1dX{TzZYn!xKJ5xJXJ5RekiyHUGM`-1jG?VH+3cX@AiE zt<&hjb+NicU7oIouD{Nv8>Snsv+Ks`e7dQ+8M;}zOS->xR|P0A0w?f-PS6VmAzUyD z5kiy@Bg6^qghU}(NEI@KY#~=D5G+E8&{^mvbQgLGeT06(0AZjoSQsh{6DovJ!dSr} z)Cjf0c%fcs5PZTUVXAPaaJMi+m@Ui|<_YtK2ZhDLQsFV-d0~(6rtr4#uJFF_p>S5X zqSxpR`e?mbpQkU-7wL=jCHl_#F8Xfz!TOQ<(fYCaJM>lh>G~)2FY7cn

k!s4Y-Ctf*rYHLwjgYI*ygZpVb6p;7xqHf%VE32_JzF> z_GZ}IVef{08Fo7COxTZMKZpGmb~#)Z9vdDXo)DfCo*CXHyjOU?@XGLU;dSBT!(HKb zhtCavAbeT)Q{j8VUk~3O{#N)q;Xj1`7=AANm+;@h{|G-Xv64p8N_r_)%9U=GZjpLQ zy`{dAL#mc!saA4I<0Y3gTe?TOSDGh1AT5v{mA;g|l8#H?NZ&~(rPISgL zX@IHJG{`jARA#c7%1y&e6{b<9F{Ub$&(vs|Y?^ACVVY%nz_h^hs_AXh$EL%kFHK*W zj+?$QeP=ppI&C^*`Yi%Ppa?cX6A=-S6;TvX9ML_ZUqt_ivItwmu!s>6l@W6y=0@BX zaeu`8h=mc0A{IwH9I-57L&QfBA4hx|@ma(d5r-qbjQA?zc*HjmXCvbx+eIcuCP$`3 zrbT8%W<};i=0=u8c8}~EX^R{cSrh4u^hVwt`B3Eg$R{FqM(&UNJn~TFk;tQw$0E-} z{uX&L${3Xzl^&HDl^xYSsx)d))ZnP{sNqo+Q6r;9M@@|KMa_*`616mHdDM!im!oz^ zy&APQ>h-AoQEx>ZjQTw4aMaPLZ=+5`osIfC>S{EMW}><1)adl+%;@as_R+b~`O*EN zr$;wM-yKb&XGYJCz9;(L=*`j3M86unH~RJH{n4kQzmNVQ`p4*V(Z59h7JWYYLiClG z@EBuEL`+mnOiXr6`YV!n>~F6LCsnOGrKj7^R$iY<;UiR~2ICAKoQDz+weTx?zJ z_}KbbcWgtfH+Dhnir7`LYhu^OZi;<0c1!Hu*z<894#lx?nmBEo5GTfk#YMy=#HGcR z#C3}664yJfG;UDb@VJV&`nbE|aNLZzS#fjXcEr6B_fFhA-yg5E6J~zH7zBs-leoVYQ-Vt9FUlT9K*Ty^JC&b?$ zKR#R(55tVvjxurXnC!siJm6Mjx)6B83VCU#Ejns`%U_rxBFy%KvT_D#Gs z@wUVvi9-{IC5}kEBe5#cm)Mv%IdN*@^u(sbyAw&`%*3^c>k~I7ZccnG@$tkb689y3 zm-tr_o1{t7CJ9MmQdm+%QdH7iNehx5OnM|~Wzw3YXOmt|dOPW0(zi(`l1?RkpY%i0 zk4e8L!{o5!=;YYs^yK{H;^f?$p@1^ zPd=18CaSINhdFPP)a3FaiT*_>)lH)oo$d6jvMd7XKKd6Rjw`7!fr=0DAUnJ=0z zo3EsR6qLfIWTo^?>6g+!<@S_;DT7i5r_`m~n=&uufs_R)52ienvLxlRl;2YRNI9Q! zA>~ra<&-O_F{uMnt*Jv&ho+XN4o|H}9ho{Ub!qDI)D@|#QrD!eOdo%6rv~SYRrCmt7l=gSp)pVH7q;u(E z=~B8WJvKchJu|%|eNg(~^s;nY`mpp7>6PhK={4!&(mm-D({cKY^jYb1(&wh%mwtcx z{PZW%x25k$e=7Z%^k>tbPyaB3&Cq0MGlUE=BP>J8FlFRr49F*K6Xvp&oEBI|J0k*uRxe`d#I$7Q$6PRvfuPRUNozAyX1 z?9JJaWpByen!P>y$?O-icV+L-ek=Q(?Dw)i$o?q%$Lw?2zhwWG{YUnn*?;Ba=M?5x zaysO6%;}udHRqoo%eysiY@RdEmv?6#$y=PaHt(stXY!uQdm-LU*vtA_if(kyfb+}=11qp=Evu^%TLTt$~Why=BMWm${&$mnLjFjOujwe zkzbuJ=hx*=&d2!==0B9bB!6lCBl(Z#zm)%S{_gzO@?XzCk$)=xO#a#YpYngs|26-7 z0b3AN5K|CWkWi3Z(6gX-LEnPg3T`hbEf`cVxS+ORWx?u#wFT=7HWfTpu%%#I!P5o1 z3SKGrsNm~@ZwpQooG$pGP%I29lnNsXqYL8-;|miClM1^O))#sTy@me5$%WGj?<~B# za8BWZ!Uqcyj*9-R-zE${c;eo<$3co8nS$MkeOyQ-%zYDJxp(3s*vnabL zx2UM7Ls7?~&P82|%8G17cNEnZd5XM6jYSU^Eh}14w5n)L(Ym4yMca#BEPAKty`m3_ z4itS_^heS8qKid;7hSbL3u6&2VU|csh9%3AW68A?Sh`tCErTqBEoGK+OTFbT3%1O# z%(Be+KQ-Lve-u^2fME$>1O%lB(yJg4N@jO4g0D^$<=0WB8;P1V^T>r%#T@qayy&$?QdTI2b=p)g` zqRXRCMxTm46I~Jglxjn@qrRd#QC+BRR1b=xcuJ&VDM+bQHZ_Qx~ZR)FbMZt-7tIEz(xoR@c_u*3(AWXd7$eY`o27OSVn1 z729UmX4&T2N^J{lWwtf8t+pR*du;n`mu$b;p4gt+ez*N$Z(wg^Z(?t1Z*FgCZ*A{t z7ww7mWP5LWy1lP`q&k_w?DR5+MnBB*#EG< zw!fvT(>3W&=sI*Gx)t4nj;3uiO|x_yola-aS#&m?M;FlF(j(|XdNf@`&!*?nOX(H# zYI+^Lk={aIrLWUB={xj2`T_ljenLN^U(!|ddq*QjV@Fd*3rA~5J4XjcCr1}YH%AW# z<)9rIj!Z{CN46u^k>@~;0S?14$5G;#?^xtm>{#kp?pWzqBb~6DNHJp#`Iw_m`tW0lfz76ikM<%1~ZG9 z!;~;fm}Sff<`i>=Im?`5&NCO8%gj~g5&IcipKZu~!8T!=vd!66Y+JSq8^uPmHkM{H z*i5z`o6GiRF{`tL9mo!43)xZZOm+@Ck6pknVwbSX*p=)Wwwyh|o@Oi9^Xx_TGJAu) z#eU$baW%L|t`=8^tIIXu8gVYp&3QQ=CvpK!;(}ZpXK;iY$PMO(a>KacTp>4#TgI*6 zR)_1s2oGq;nw&E4hhbC0;kTqXC6d%?Zps+ac6D}h_H^2u z4kzanoVm{aPV5}uG@Pc>at?G3a?WzDofn;#omZUKoY$Q< zowuEL`3SxSAIaC^>+p5?&-f0!!b4u=H9mn)TK1pT*DN=kW{pMf_rZDZheW z&2Qj$@Vofk{9eACKh59f@ACKghx}vVBcZ;~Q20V=cd*<-$qfv``^D5dIY2301;-;U8C| z>q}QNR|{7wS6dhD^0`Ep8|fw#jfeDnXWmmd9E_oX4h8NcGphV zPcfgybdTXhkt#r!wsgFC`q)BUl#mb-zwxx1CSwY#mm zgS(Tvi`(YTbPsS3c7N}l;-2Q7>7L^*anE-zaxZZ&bFXx-aj$ppbf0(McHeV9bU$`i zx}UpWdRltgc-nh9dOCZeJl#Ff9=nI}cs(Icyr;isq-Tt0yl0Z9$W!b&<++Rs}MQV#@D=(-`^Nbu_$K?N`4;-h zeCvGseFuGqeaC#i_^$cx`+oOF_}lxx_IL4j^Y`>qe%jCYz5cMjmp|U0?$7dD{(1gV z|3d#_{~G^#|91Zl|BwEQ{wx0L{#*V#{`>x?;-_LgvA)h@-@@;skNBI7OT$&J#C^o5gM74sn-wSbQv2iqFND;%o7(_)e?})DCtYy@CCKgMq_=3xP|4D}n2Q zTY+bRzXKm)tHoB2{W!LLY|mIKmX2j(V`5>f8XF&*7@HE?FIJBw(jaMwR3HtPMo5Ly zC~2%TUYaNsNmHe1(oAW#G*_A@Es)BjCDJl!g|tdqBdwP4Ef{^hA0l{Vu(fUP*7Hw^Eh#Uit@o1ge9Y zAQIF9bwE8(A2b3@Kr_$+v<7WK2hb6822r2~pa2aRzyTh_051?hEC3(`WDo|ufCdsl zGDrn|Kwr=g7y-TqBf)4e4om=(!4yyoW`NnC1eAgWU=dgh zmV)JA6<7n-gY94^I1G+~a&Quy0Tti^xCw59O7I-K1h2tcP!)^_)(A!hYX{o}y9Vt+ zcQ7YNf&+ttg9X9i!4bj2;OJmca7A!yaCh)%@NBRu_*d{lC?Zrd6d9@=svBw?>KH4FxbAVT zI1m>fmmZfJ*FSDR+@QE&aiikK%9G?Gd8#~Jo+;0kOXT_TLb*&{A}^Cy$gAbG@_Kor zyjk8VZ&GX`49Px{7$Zt-^+i?ACziJb>(B_6Qzz)SNU9Npfpk%D_<(jm6l3trLEFl`AYd( z>7qm_-IZv?t}qIx2uh6NQGAN1NJ>zNQxpX%nv$R-DJe>t(nsm5WGUH7uF_u_pqPrK z3{(awLzH34aAkz@y)sf6t&CO1D-)H;$`qwonXb%K<|rjfsj@&>q%2mJD$A9X%4%hc z@O_*nRt@QLuL@R{(r@P+WD@YV43@Xhe;@V)TE@NeNK;iuu};TPdo z;Wy#8;i~Za@ZaGNuo|omKZdnn9as<6hYew4*c3L0Enyqj9(IJCVOQ84_JkCqAp<$c zLl^WwKMX(#hM)|?uosMni7*AG!3>xQvtb@YP=_YWhlAiy_$?d(3*jg@7LJD#VG*1P zr@|4fnwP@E|-4kHX`y9G--yVFkPZ zFTpGDI=lt%z@6}Q2 zSapIrS)Hm*S7)hn)lzk#x>#MNu2k2k>(x!_R&~3&OWm#RRS&3#)njV8dQv^3o>MQX zSJdn3E%mPYK>bavRG+Ia)z|7)wjn`r{uO@1e7Sa^0mlm%jX}z^{t*_Qk%hiykYeXBU4b}>@;o5iFNNtQZ zUYn#%(Mq&q+U@w7@%7`|#53^~@s;r(5;`Tg6V!x^gyjim6K*8DNO+&vBGI1MCvkA% zq{JnO2NEwQzD#PJ6sfDSlQun5or`}9`nfg~+%QQAEFKukvytGYe zzogwxdy`%*y+wM@^lN?M`wZw)km1NE%$S_5)^Ya#=FHtkp617HcQ3uo!bw*LBJBmhj=bMz9uMt`Drs0zJD|KMu429CtFab5fwZh#x%Cb%hXfm`9WxC8El zyWnoP2ad)z?7$r6aSZli5lc9PWel;3<8dNR#=UVG?t?RNHqOHc>)6Ek_!~R~55vRp zcX%WojmP1MxCj^H>3AldjZ1JTUWm)^61*I*#B1<+yb*7~+wcy&3;%@o;C=WYK8%mz zy63ZKE}@CAGcU%}V#O?(^Q#rN?e{1`vQzvFlKzxoh;nEoIAdwrBXR-d3x)~D*z z^;!B{y;NVQFV>goEA=({dVQ0=Ro|}f(s%27^#l50{g_^^pVZIj=k$yE75%z?OTVi> z(0|h__2>Fa{k8s9uhRe0KNt~4P2&@zj#1C3Z!|KR7|o29MjNBO(b4E^L>WB{%AgI_ z;Efo=Ylwzqgbc;#WyBjvMsFkC=xg*dat&nY1~CR2gN*`XxbdAa(imfmHzpZVjA_P9 zV~#P;SYVVHON|xAYGa+T(b!`AVC*!0GWHnzjYGy!;}_$EaoVUbE*O`MYsO9Ej&a|3 zWIQpR883`i#-GOj8SjmM%xY#0Gt#VW)-^vj8=8&Hre+JXwb{=6%KX~wYIZlHO}ojM zPSa(2Ourdx22I(7re-FZDQ23PVP=^*W`A>lX`1=wAakhstvSLhG)J4`%!y`^S!~WQ zXPYJFd~=bx#9VH!GS`|L%+2OjbG!MIxyRgR9yE`b<>pDV!n|N!HgA}>%sb|N^PyR3 zJ~v;Qugo{*Tl2m7H~EM}kVsOS)Flnb7vxLQoU|luNPE(ebS6=x2cZZ}7$Oii@ez?o zBt&GQk|dHsQb{_=A~~c#!Gw^3WH2cpBS;|`O~#SQWC|%JGsrA5k1QaI$P%)gtRid4 z2C|uKBRj~CWG^{Hj*#QzS8|e^Ar<62xk#>%>*Nl(M;?+&@{GJ7ugDwnj#QDq$Oo&2 z6={8HeP-3S8d{C5rdA89mDSejXmz!^S(HUvti@X{%VYU1V8vNsE8a@6(yR!DR?y|&(3Rn|ZGk@>aqYv(u2Z=ByGzfFGo{0{lu U@~MB%ED;g^TG#%s|6jiMf0NWqb^rhX literal 35390 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 From 4be69e41c07b784f75918141eead70415c0ec4a4 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Mon, 11 Feb 2008 16:03:25 -0500 Subject: [PATCH 024/112] Revert "Bug #8937: Extension setup functions not called on server resets" This reverts commit 5e946dd853a4ebc2722ae023429ce5797de3d7a6. The devPrivates rework makes this workaround unnecessary. --- mi/miinitext.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/mi/miinitext.c b/mi/miinitext.c index 261fac9fc..3c55eebb3 100644 --- a/mi/miinitext.c +++ b/mi/miinitext.c @@ -739,16 +739,6 @@ InitExtensions(argc, argv) /* Sort the extensions according the init dependencies. */ LoaderSortExtensions(); listInitialised = TRUE; - } else { - /* Call the setup functions on subsequent server resets as well */ - for (i = 0; ExtensionModuleList[i].name != NULL; i++) { - ext = &ExtensionModuleList[i]; - if (ext->setupFunc != NULL && - (ext->disablePtr == NULL || - (ext->disablePtr != NULL && !*ext->disablePtr))) { - (ext->setupFunc)(); - } - } } for (i = 0; ExtensionModuleList[i].name != NULL; i++) { From 0d492b2166c4026b9078ffd86d89a31ebe590be4 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 12 Feb 2008 19:59:10 -0500 Subject: [PATCH 025/112] XACE: Move the selection access hook to its own function. --- Xext/xace.c | 18 +++++++----------- Xext/xace.h | 4 ++++ dix/dispatch.c | 10 ++++------ 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/Xext/xace.c b/Xext/xace.c index b2c7e4ab4..e88debc5f 100644 --- a/Xext/xace.c +++ b/Xext/xace.c @@ -63,6 +63,13 @@ int XaceHookPropertyAccess(ClientPtr client, WindowPtr pWin, return rec.status; } +int XaceHookSelectionAccess(ClientPtr client, Atom name, Mask access_mode) +{ + XaceSelectionAccessRec rec = { client, name, access_mode, Success }; + CallCallbacks(&XaceHooks[XACE_SELECTION_ACCESS], &rec); + return rec.status; +} + void XaceHookAuditEnd(ClientPtr ptr, int result) { XaceAuditRec rec = { ptr, result }; @@ -169,17 +176,6 @@ int XaceHook(int hook, ...) prv = &rec.status; break; } - case XACE_SELECTION_ACCESS: { - XaceSelectionAccessRec rec = { - va_arg(ap, ClientPtr), - va_arg(ap, Atom), - va_arg(ap, Mask), - Success /* default allow */ - }; - calldata = &rec; - prv = &rec.status; - break; - } case XACE_SCREEN_ACCESS: case XACE_SCREENSAVER_ACCESS: { XaceScreenAccessRec rec = { diff --git a/Xext/xace.h b/Xext/xace.h index 6f1f267ad..2016ca322 100644 --- a/Xext/xace.h +++ b/Xext/xace.h @@ -69,6 +69,8 @@ extern int XaceHook( extern int XaceHookDispatch(ClientPtr ptr, int major); extern int XaceHookPropertyAccess(ClientPtr ptr, WindowPtr pWin, PropertyPtr pProp, Mask access_mode); +extern int XaceHookSelectionAccess(ClientPtr ptr, Atom name, + Mask access_mode); extern void XaceHookAuditEnd(ClientPtr ptr, int result); /* Register a callback for a given hook. @@ -106,12 +108,14 @@ extern void XaceCensorImage( #define XaceHook(args...) Success #define XaceHookDispatch(args...) Success #define XaceHookPropertyAccess(args...) Success +#define XaceHookSelectionAccess(args...) Success #define XaceHookAuditEnd(args...) { ; } #define XaceCensorImage(args...) { ; } #else #define XaceHook(...) Success #define XaceHookDispatch(...) Success #define XaceHookPropertyAccess(...) Success +#define XaceHookSelectionAccess(...) Success #define XaceHookAuditEnd(...) { ; } #define XaceCensorImage(...) { ; } #endif diff --git a/dix/dispatch.c b/dix/dispatch.c index 0bca4417e..3589fba1c 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -995,8 +995,8 @@ ProcSetSelectionOwner(ClientPtr client) { int i = 0; - rc = XaceHook(XACE_SELECTION_ACCESS, client, stuff->selection, - DixSetAttrAccess); + rc = XaceHookSelectionAccess(client, stuff->selection, + DixSetAttrAccess); if (rc != Success) return rc; @@ -1081,8 +1081,7 @@ ProcGetSelectionOwner(ClientPtr client) int rc, i; xGetSelectionOwnerReply reply; - rc = XaceHook(XACE_SELECTION_ACCESS, client, stuff->id, - DixGetAttrAccess); + rc = XaceHookSelectionAccess(client, stuff->id, DixGetAttrAccess); if (rc != Success) return rc; @@ -1127,8 +1126,7 @@ ProcConvertSelection(ClientPtr client) rc = dixLookupWindow(&pWin, stuff->requestor, client, DixSetAttrAccess); if (rc != Success) return rc; - rc = XaceHook(XACE_SELECTION_ACCESS, client, stuff->selection, - DixReadAccess); + rc = XaceHookSelectionAccess(client, stuff->selection, DixReadAccess); if (rc != Success) return rc; From aa5216e89797b600f382c04e3eaa657e808a5c3e Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 31 Jan 2008 12:05:08 +1100 Subject: [PATCH 026/112] Rip out useless indirection in the callback list management. --- dix/dixutils.c | 21 ++++++--------------- include/dix.h | 19 ------------------- include/dixstruct.h | 1 - 3 files changed, 6 insertions(+), 35 deletions(-) diff --git a/dix/dixutils.c b/dix/dixutils.c index dd485d518..aaf510623 100644 --- a/dix/dixutils.c +++ b/dix/dixutils.c @@ -816,16 +816,8 @@ _DeleteCallbackList( *pcbl = NULL; } -static CallbackFuncsRec default_cbfuncs = -{ - _AddCallback, - _DeleteCallback, - _CallCallbacks, - _DeleteCallbackList -}; - static Bool -CreateCallbackList(CallbackListPtr *pcbl, CallbackFuncsPtr cbfuncs) +CreateCallbackList(CallbackListPtr *pcbl) { CallbackListPtr cbl; int i; @@ -833,7 +825,6 @@ CreateCallbackList(CallbackListPtr *pcbl, CallbackFuncsPtr cbfuncs) if (!pcbl) return FALSE; cbl = (CallbackListPtr) xalloc(sizeof(CallbackListRec)); if (!cbl) return FALSE; - cbl->funcs = cbfuncs ? *cbfuncs : default_cbfuncs; cbl->inCallback = 0; cbl->deleted = FALSE; cbl->numDeleted = 0; @@ -864,31 +855,31 @@ AddCallback(CallbackListPtr *pcbl, CallbackProcPtr callback, pointer data) if (!pcbl) return FALSE; if (!*pcbl) { /* list hasn't been created yet; go create it */ - if (!CreateCallbackList(pcbl, (CallbackFuncsPtr)NULL)) + if (!CreateCallbackList(pcbl)) return FALSE; } - return ((*(*pcbl)->funcs.AddCallback) (pcbl, callback, data)); + return _AddCallback(pcbl, callback, data); } _X_EXPORT Bool DeleteCallback(CallbackListPtr *pcbl, CallbackProcPtr callback, pointer data) { if (!pcbl || !*pcbl) return FALSE; - return ((*(*pcbl)->funcs.DeleteCallback) (pcbl, callback, data)); + return _DeleteCallback(pcbl, callback, data); } void CallCallbacks(CallbackListPtr *pcbl, pointer call_data) { if (!pcbl || !*pcbl) return; - (*(*pcbl)->funcs.CallCallbacks) (pcbl, call_data); + _CallCallbacks(pcbl, call_data); } void DeleteCallbackList(CallbackListPtr *pcbl) { if (!pcbl || !*pcbl) return; - (*(*pcbl)->funcs.DeleteCallbackList) (pcbl); + _DeleteCallbackList(pcbl); } void diff --git a/include/dix.h b/include/dix.h index 8cfbbc4f6..ec9806aef 100644 --- a/include/dix.h +++ b/include/dix.h @@ -498,25 +498,6 @@ typedef struct _CallbackList *CallbackListPtr; /* also in misc.h */ typedef void (*CallbackProcPtr) ( CallbackListPtr *, pointer, pointer); -typedef Bool (*AddCallbackProcPtr) ( - CallbackListPtr *, CallbackProcPtr, pointer); - -typedef Bool (*DeleteCallbackProcPtr) ( - CallbackListPtr *, CallbackProcPtr, pointer); - -typedef void (*CallCallbacksProcPtr) ( - CallbackListPtr *, pointer); - -typedef void (*DeleteCallbackListProcPtr) ( - CallbackListPtr *); - -typedef struct _CallbackProcs { - AddCallbackProcPtr AddCallback; - DeleteCallbackProcPtr DeleteCallback; - CallCallbacksProcPtr CallCallbacks; - DeleteCallbackListProcPtr DeleteCallbackList; -} CallbackFuncsRec, *CallbackFuncsPtr; - extern Bool AddCallback( CallbackListPtr * /*pcbl*/, CallbackProcPtr /*callback*/, diff --git a/include/dixstruct.h b/include/dixstruct.h index cbeac48cb..d44b9cfa7 100644 --- a/include/dixstruct.h +++ b/include/dixstruct.h @@ -187,7 +187,6 @@ typedef struct _CallbackRec { } CallbackRec, *CallbackPtr; typedef struct _CallbackList { - CallbackFuncsRec funcs; int inCallback; Bool deleted; int numDeleted; From 3eaecdd66e791e0f3d86b23ce10be057ca44c044 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 31 Jan 2008 21:36:14 +1100 Subject: [PATCH 027/112] Disable Record by default. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 566ddcbd0..d8b78eadc 100644 --- a/configure.ac +++ b/configure.ac @@ -526,7 +526,7 @@ AC_ARG_ENABLE(composite, AS_HELP_STRING([--disable-composite], [Build Compo AC_ARG_ENABLE(mitshm, AS_HELP_STRING([--disable-shm], [Build SHM extension (default: enabled)]), [MITSHM=$enableval], [MITSHM=yes]) AC_ARG_ENABLE(xres, AS_HELP_STRING([--disable-xres], [Build XRes extension (default: enabled)]), [RES=$enableval], [RES=yes]) AC_ARG_ENABLE(xtrap, AS_HELP_STRING([--disable-xtrap], [Build XTrap extension (default: enabled)]), [XTRAP=$enableval], [XTRAP=yes]) -AC_ARG_ENABLE(record, AS_HELP_STRING([--disable-record], [Build Record extension (default: enabled)]), [RECORD=$enableval], [RECORD=yes]) +AC_ARG_ENABLE(record, AS_HELP_STRING([--disable-record], [Build Record extension (default: disabled)]), [RECORD=$enableval], [RECORD=no]) AC_ARG_ENABLE(xv, AS_HELP_STRING([--disable-xv], [Build Xv extension (default: enabled)]), [XV=$enableval], [XV=yes]) AC_ARG_ENABLE(xvmc, AS_HELP_STRING([--disable-xvmc], [Build XvMC extension (default: enabled)]), [XVMC=$enableval], [XVMC=yes]) AC_ARG_ENABLE(dga, AS_HELP_STRING([--disable-dga], [Build DGA extension (default: auto)]), [DGA=$enableval], [DGA=auto]) From 2ce35f6d45c3e1761d33b786520ff5ba56a3c518 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 31 Jan 2008 21:39:48 +1100 Subject: [PATCH 028/112] Simplify critical output flushing. --- dix/dispatch.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/dix/dispatch.c b/dix/dispatch.c index 3589fba1c..32efff782 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -424,10 +424,9 @@ Dispatch(void) while (!isItTimeToYield) { if (*icheck[0] != *icheck[1]) - { ProcessInputEvents(); - FlushIfCriticalOutputPending(); - } + + FlushIfCriticalOutputPending(); #ifdef SMART_SCHEDULE if (!SmartScheduleDisable && (SmartScheduleTime - start_tick) >= SmartScheduleSlice) @@ -483,9 +482,6 @@ Dispatch(void) client->errorValue, result); break; } -#ifdef DAMAGEEXT - FlushIfCriticalOutputPending (); -#endif } FlushAllOutput(); #ifdef SMART_SCHEDULE From eb8dc11d19dd0b5354de408578ab0cfb865df672 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 31 Jan 2008 21:45:14 +1100 Subject: [PATCH 029/112] Remove some MAX* #defines that never get used. --- include/misc.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/misc.h b/include/misc.h index e6a5e9eb2..a1cbe8670 100644 --- a/include/misc.h +++ b/include/misc.h @@ -87,10 +87,7 @@ extern unsigned long serverGeneration; #define MAXSCREENS 16 #endif #define MAXCLIENTS 256 -#define MAXDITS 1 -#define MAXEXTENSIONS 128 #define MAXFORMATS 8 -#define MAXVISUALS_PER_SCREEN 50 typedef unsigned long PIXEL; typedef unsigned long ATOM; From 62cfe8863823c0994f20555cb35ee3bacb9e5225 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 14:57:25 +1100 Subject: [PATCH 030/112] Redact all mention of PanoramiX from user strings. --- Xext/panoramiX.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c index 311a8e716..75277beaa 100644 --- a/Xext/panoramiX.c +++ b/Xext/panoramiX.c @@ -463,10 +463,8 @@ void PanoramiXExtensionInit(int argc, char *argv[]) ProcPanoramiXDispatch, SProcPanoramiXDispatch, PanoramiXResetProc, StandardMinorOpcode); - if (!extEntry) { - ErrorF("PanoramiXExtensionInit(): failed to AddExtension\n"); + if (!extEntry) break; - } /* * First make sure all the basic allocations succeed. If not, @@ -514,7 +512,7 @@ void PanoramiXExtensionInit(int argc, char *argv[]) if (!success) { noPanoramiXExtension = TRUE; - ErrorF("%s Extension failed to initialize\n", PANORAMIX_PROTOCOL_NAME); + ErrorF(PANORAMIX_PROTOCOL_NAME " extension failed to initialize\n"); return; } @@ -604,14 +602,14 @@ Bool PanoramiXCreateConnectionBlock(void) */ if(!PanoramiXNumDepths) { - ErrorF("PanoramiX error: Incompatible screens. No common visuals\n"); + ErrorF("Xinerama error: No common visuals\n"); return FALSE; } for(i = 1; i < screenInfo.numScreens; i++) { pScreen = screenInfo.screens[i]; if(pScreen->rootDepth != screenInfo.screens[0]->rootDepth) { - ErrorF("PanoramiX error: Incompatible screens. Root window depths differ\n"); + ErrorF("Xinerama error: Root window depths differ\n"); return FALSE; } if(pScreen->backingStoreSupport != screenInfo.screens[0]->backingStoreSupport) From 7c0709a736c0f3aa011de67dd2c2962585ab146e Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 14:59:58 +1100 Subject: [PATCH 031/112] requestingClient is an xprintism, hide it for other servers. --- dix/dispatch.c | 4 ++++ dix/dixfonts.c | 5 ++++- dix/globals.c | 2 ++ hw/xnest/Font.c | 2 ++ include/dix.h | 2 ++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/dix/dispatch.c b/dix/dispatch.c index 32efff782..e8e650a91 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -417,7 +417,9 @@ Dispatch(void) } isItTimeToYield = FALSE; +#ifdef XPRINT requestingClient = client; +#endif #ifdef SMART_SCHEDULE start_tick = SmartScheduleTime; #endif @@ -489,7 +491,9 @@ Dispatch(void) if (client) client->smart_stop_tick = SmartScheduleTime; #endif +#ifdef XPRINT requestingClient = NULL; +#endif } dispatchException &= ~DE_PRIORITYCHANGE; } diff --git a/dix/dixfonts.c b/dix/dixfonts.c index 04f1f1b30..8def6ee21 100644 --- a/dix/dixfonts.c +++ b/dix/dixfonts.c @@ -1934,12 +1934,15 @@ GetDefaultPointSize () FontResolutionPtr GetClientResolutions (int *num) { +#ifdef XPRINT if (requestingClient && requestingClient->fontResFunc != NULL && !requestingClient->clientGone) { return (*requestingClient->fontResFunc)(requestingClient, num); } - else { + else +#endif + { static struct _FontResolution res; ScreenPtr pScreen; diff --git a/dix/globals.c b/dix/globals.c index d76b604da..7f95eabd5 100644 --- a/dix/globals.c +++ b/dix/globals.c @@ -143,7 +143,9 @@ Bool loadableFonts = FALSE; CursorPtr rootCursor; Bool blackRoot=FALSE; Bool whiteRoot=FALSE; +#ifdef XPRINT ClientPtr requestingClient; /* XXX this should be obsolete now, remove? */ +#endif _X_EXPORT TimeStamp currentTime; _X_EXPORT TimeStamp lastDeviceEventTime; diff --git a/hw/xnest/Font.c b/hw/xnest/Font.c index 72edcee9a..9f30085b1 100644 --- a/hw/xnest/Font.c +++ b/hw/xnest/Font.c @@ -44,8 +44,10 @@ xnestRealizeFont(ScreenPtr pScreen, FontPtr pFont) FontSetPrivate(pFont, xnestFontPrivateIndex, NULL); +#ifdef XPRINT if (requestingClient && XpClientIsPrintClient(requestingClient, NULL)) return True; +#endif name_atom = MakeAtom("FONT", 4, True); value_atom = 0L; diff --git a/include/dix.h b/include/dix.h index ec9806aef..52212e7e7 100644 --- a/include/dix.h +++ b/include/dix.h @@ -116,7 +116,9 @@ typedef struct _Client *ClientPtr; /* also in misc.h */ typedef struct _WorkQueue *WorkQueuePtr; +#ifdef XPRINT extern ClientPtr requestingClient; +#endif extern ClientPtr *clients; extern ClientPtr serverClient; extern int currentMaxClients; From 9113fa3de36e84bbae2727cace82b1cf0d709a86 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 15:03:57 +1100 Subject: [PATCH 032/112] Silence the harmless FreeFontPath error message. --- dix/dixfonts.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/dix/dixfonts.c b/dix/dixfonts.c index 8def6ee21..e9a3f3963 100644 --- a/dix/dixfonts.c +++ b/dix/dixfonts.c @@ -1644,9 +1644,6 @@ FreeFontPath(FontPathElementPtr *list, int n, Bool force) found++; } if (list[i]->refcount != found) { - ErrorF("FreeFontPath: FPE \"%.*s\" refcount is %d, should be %d; fixing.\n", - list[i]->name_length, list[i]->name, - list[i]->refcount, found); list[i]->refcount = found; /* ensure it will get freed */ } } From 238b816469355159eea98600ca900e3baa8fa313 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 15:08:03 +1100 Subject: [PATCH 033/112] X.Org Group -> X.Org Foundation --- include/site.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/site.h b/include/site.h index 279cf2d70..fec87070b 100644 --- a/include/site.h +++ b/include/site.h @@ -52,7 +52,7 @@ SOFTWARE. * server executable. */ #ifndef VENDOR_STRING -#define VENDOR_STRING "The X.Org Group" +#define VENDOR_STRING "The X.Org Foundation" #endif /* From 89d3249c3e7611b22414bc84b10ca60aab4b9a77 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 15:11:27 +1100 Subject: [PATCH 034/112] Silence FreeResource() --- dix/resource.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/dix/resource.c b/dix/resource.c index 6c1b04dc7..f318de3c0 100644 --- a/dix/resource.c +++ b/dix/resource.c @@ -535,7 +535,6 @@ FreeResource(XID id, RESTYPE skipDeleteFuncType) ResourcePtr *prev, *head; int *eltptr; int elements; - Bool gotOne = FALSE; if (((cid = CLIENT_ID(id)) < MAXCLIENTS) && clientTable[cid].buckets) { @@ -563,15 +562,11 @@ FreeResource(XID id, RESTYPE skipDeleteFuncType) xfree(res); if (*eltptr != elements) prev = head; /* prev may no longer be valid */ - gotOne = TRUE; } else prev = &res->next; } } - if (!gotOne) - ErrorF("Freeing resource id=%lX which isn't there.\n", - (unsigned long)id); } From b740b865e4c156a40adc6b63fcf215156fc9151a Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 15:16:01 +1100 Subject: [PATCH 035/112] Silence an error message in ConfigureWindow that never happens. --- dix/window.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dix/window.c b/dix/window.c index 1ccf12603..b896ef742 100644 --- a/dix/window.c +++ b/dix/window.c @@ -2155,7 +2155,7 @@ WhereDoIGoInTheStack( return pWin->nextSib; default: { - ErrorF("Internal error in ConfigureWindow, smode == %d\n",smode ); + /* should never happen; make something up. */ return pWin->nextSib; } } From f3b3b37ec6197f8884417fbc26630d3a28f2e319 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 15:36:11 +1100 Subject: [PATCH 036/112] Use strerror instead of errno values in user strings. --- Xext/xf86bigfont.c | 8 ++++---- hw/dmx/examples/ev.c | 2 +- hw/kdrive/linux/linux.c | 2 +- hw/kdrive/src/kmap.c | 8 ++++---- hw/kdrive/vesa/vm86.c | 2 +- hw/vfb/InitOutput.c | 18 +++++++++--------- hw/xfree86/os-support/bsd/bsd_apm.c | 2 +- hw/xfree86/os-support/bsd/bsd_kqueue_apm.c | 2 +- hw/xfree86/os-support/solaris/sun_apm.c | 6 +++--- hw/xprint/ps/psout_ftpstype1.c | 2 +- hw/xquartz/darwinKeyboard.c | 12 ++++++------ os/WaitFor.c | 8 ++++---- 12 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Xext/xf86bigfont.c b/Xext/xf86bigfont.c index 779f3b940..d5c5704de 100644 --- a/Xext/xf86bigfont.c +++ b/Xext/xf86bigfont.c @@ -236,15 +236,15 @@ shmalloc( size = (size + pagesize-1) & -pagesize; shmid = shmget(IPC_PRIVATE, size, S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH); if (shmid == -1) { - ErrorF(XF86BIGFONTNAME " extension: shmget() failed, size = %u, errno = %d\n", - size, errno); + ErrorF(XF86BIGFONTNAME " extension: shmget() failed, size = %u, %s\n", + size, strerror(errno)); xfree(pDesc); return (ShmDescPtr) NULL; } if ((addr = shmat(shmid, 0, 0)) == (char *)-1) { - ErrorF(XF86BIGFONTNAME " extension: shmat() failed, size = %u, errno = %d\n", - size, errno); + ErrorF(XF86BIGFONTNAME " extension: shmat() failed, size = %u, %s\n", + size, strerror(errno)); shmctl(shmid, IPC_RMID, (void *) 0); xfree(pDesc); return (ShmDescPtr) NULL; diff --git a/hw/dmx/examples/ev.c b/hw/dmx/examples/ev.c index 10912266d..ba45c2b25 100644 --- a/hw/dmx/examples/ev.c +++ b/hw/dmx/examples/ev.c @@ -174,7 +174,7 @@ int main(int argc, char **argv) } printf("\n"); } - printf("rc = %d, errno = %d (%s)\n", rc, errno, strerror(errno)); + printf("rc = %d, (%s)\n", rc, strerror(errno)); close(fd); } } diff --git a/hw/kdrive/linux/linux.c b/hw/kdrive/linux/linux.c index 23cd8f59f..258dc7b81 100644 --- a/hw/kdrive/linux/linux.c +++ b/hw/kdrive/linux/linux.c @@ -441,7 +441,7 @@ LinuxFini (void) memset (&vts, '\0', sizeof (vts)); /* valgrind */ ioctl (fd, VT_GETSTATE, &vts); if (ioctl (fd, VT_DISALLOCATE, vtno) < 0) - fprintf (stderr, "Can't deallocate console %d errno %d\n", vtno, errno); + fprintf (stderr, "Can't deallocate console %d %s\n", vtno, strerror(errno)); close (fd); } return; diff --git a/hw/kdrive/src/kmap.c b/hw/kdrive/src/kmap.c index b92c1a84f..ce1e28ae4 100644 --- a/hw/kdrive/src/kmap.c +++ b/hw/kdrive/src/kmap.c @@ -132,8 +132,8 @@ KdSetMappedMode (CARD32 addr, CARD32 size, int mode) sentry.type = type; if (ioctl (mtrr, MTRRIOC_ADD_ENTRY, &sentry) < 0) - ErrorF ("MTRRIOC_ADD_ENTRY failed 0x%x 0x%x %d (errno %d)\n", - base, bound - base, type, errno); + ErrorF ("MTRRIOC_ADD_ENTRY failed 0x%x 0x%x %d (%s)\n", + base, bound - base, type, strerror(errno)); } #endif } @@ -171,8 +171,8 @@ KdResetMappedMode (CARD32 addr, CARD32 size, int mode) sentry.type = type; if (ioctl (mtrr, MTRRIOC_DEL_ENTRY, &sentry) < 0) - ErrorF ("MTRRIOC_DEL_ENTRY failed 0x%x 0x%x %d (errno %d)\n", - base, bound - base, type, errno); + ErrorF ("MTRRIOC_DEL_ENTRY failed 0x%x 0x%x %d (%s)\n", + base, bound - base, type, strerror(errno)); } #endif } diff --git a/hw/kdrive/vesa/vm86.c b/hw/kdrive/vesa/vm86.c index 78fc593a7..0f7bb2262 100644 --- a/hw/kdrive/vesa/vm86.c +++ b/hw/kdrive/vesa/vm86.c @@ -567,7 +567,7 @@ vm86_loop(Vm86InfoPtr vi) if(errno == ENOSYS) { ErrorF("No vm86 support. Are you running on AMD64?\n"); } else { - ErrorF("vm86 failed (errno = %d).\n", errno); + ErrorF("vm86 failed (%s).\n", strerror(errno)); Vm86Debug(vi); } } else { diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c index a00f7a5bb..1edceb930 100644 --- a/hw/vfb/InitOutput.c +++ b/hw/vfb/InitOutput.c @@ -179,8 +179,8 @@ ddxGiveUp() if (-1 == unlink(vfbScreens[i].mmap_file)) { perror("unlink"); - ErrorF("unlink %s failed, errno %d", - vfbScreens[i].mmap_file, errno); + ErrorF("unlink %s failed, %s", + vfbScreens[i].mmap_file, strerror(errno)); } } break; @@ -196,7 +196,7 @@ ddxGiveUp() if (-1 == shmdt((char *)vfbScreens[i].pXWDHeader)) { perror("shmdt"); - ErrorF("shmdt failed, errno %d", errno); + ErrorF("shmdt failed, %s", strerror(errno)); } } break; @@ -582,7 +582,7 @@ vfbBlockHandler(pointer blockData, OSTimePtr pTimeout, pointer pReadmask) #endif { perror("msync"); - ErrorF("msync failed, errno %d", errno); + ErrorF("msync failed, %s", strerror(errno)); } } } @@ -605,7 +605,7 @@ vfbAllocateMmappedFramebuffer(vfbScreenInfoPtr pvfb) if (-1 == (pvfb->mmap_fd = open(pvfb->mmap_file, O_CREAT|O_RDWR, 0666))) { perror("open"); - ErrorF("open %s failed, errno %d", pvfb->mmap_file, errno); + ErrorF("open %s failed, %s", pvfb->mmap_file, strerror(errno)); return; } @@ -621,7 +621,7 @@ vfbAllocateMmappedFramebuffer(vfbScreenInfoPtr pvfb) if (-1 == write(pvfb->mmap_fd, dummyBuffer, writeThisTime)) { perror("write"); - ErrorF("write %s failed, errno %d", pvfb->mmap_file, errno); + ErrorF("write %s failed, %s", pvfb->mmap_file, strerror(errno)); return; } } @@ -635,7 +635,7 @@ vfbAllocateMmappedFramebuffer(vfbScreenInfoPtr pvfb) if (-1 == (long)pvfb->pXWDHeader) { perror("mmap"); - ErrorF("mmap %s failed, errno %d", pvfb->mmap_file, errno); + ErrorF("mmap %s failed, %s", pvfb->mmap_file, strerror(errno)); pvfb->pXWDHeader = NULL; return; } @@ -659,7 +659,7 @@ vfbAllocateSharedMemoryFramebuffer(vfbScreenInfoPtr pvfb) if (pvfb->shmid < 0) { perror("shmget"); - ErrorF("shmget %d bytes failed, errno %d", pvfb->sizeInBytes, errno); + ErrorF("shmget %d bytes failed, %s", pvfb->sizeInBytes, strerror(errno)); return; } @@ -669,7 +669,7 @@ vfbAllocateSharedMemoryFramebuffer(vfbScreenInfoPtr pvfb) if (-1 == (long)pvfb->pXWDHeader) { perror("shmat"); - ErrorF("shmat failed, errno %d", errno); + ErrorF("shmat failed, %s", strerror(errno)); pvfb->pXWDHeader = NULL; return; } diff --git a/hw/xfree86/os-support/bsd/bsd_apm.c b/hw/xfree86/os-support/bsd/bsd_apm.c index 61779875c..43eda7421 100644 --- a/hw/xfree86/os-support/bsd/bsd_apm.c +++ b/hw/xfree86/os-support/bsd/bsd_apm.c @@ -66,7 +66,7 @@ bsdPMGetEventFromOS(int fd, pmEvent *events, int num) if (ioctl(fd, APM_IOC_NEXTEVENT, &bsdEvent) < 0) { if (errno != EAGAIN) { xf86Msg(X_WARNING, "bsdPMGetEventFromOS: APM_IOC_NEXTEVENT" - " errno = %d\n", errno); + " %s\n", strerror(errno)); } break; } diff --git a/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c b/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c index b0171e2c3..b37070c37 100644 --- a/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c +++ b/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c @@ -102,7 +102,7 @@ bsdPMGetEventFromOS(int kq, pmEvent *events, int num) break; } else if (result < 0) { xf86Msg(X_WARNING, "bsdPMGetEventFromOS: kevent returns" - " errno = %d\n", errno); + " %s\n", strerror(errno)); break; } events[i] = bsdToXF86(APM_EVENT_TYPE(ev.data)); diff --git a/hw/xfree86/os-support/solaris/sun_apm.c b/hw/xfree86/os-support/solaris/sun_apm.c index a9657fd55..7decc900f 100644 --- a/hw/xfree86/os-support/solaris/sun_apm.c +++ b/hw/xfree86/os-support/solaris/sun_apm.c @@ -149,7 +149,7 @@ sunPMGetEventFromOS(int fd, pmEvent *events, int num) if (ioctl(fd, APM_IOC_NEXTEVENT, &sunEvent) < 0) { if (errno != EAGAIN) { xf86Msg(X_WARNING, "sunPMGetEventFromOS: APM_IOC_NEXTEVENT" - " errno = %d\n", errno); + " %s\n", strerror(errno)); } break; } @@ -178,7 +178,7 @@ sunPMConfirmEventToOs(int fd, pmEvent event) return PM_CONTINUE; else { xf86Msg(X_WARNING, "sunPMConfirmEventToOs: APM_IOC_SUSPEND" - " errno = %d\n", errno); + " %s\n", strerror(errno)); return PM_FAILED; } case XF86_APM_STANDBY_RESUME: @@ -191,7 +191,7 @@ sunPMConfirmEventToOs(int fd, pmEvent event) return PM_CONTINUE; else { xf86Msg(X_WARNING, "sunPMConfirmEventToOs: APM_IOC_RESUME" - " errno = %d\n", errno); + " %s\n", strerror(errno)); return PM_FAILED; } default: diff --git a/hw/xprint/ps/psout_ftpstype1.c b/hw/xprint/ps/psout_ftpstype1.c index 2d40c186a..572e13601 100644 --- a/hw/xprint/ps/psout_ftpstype1.c +++ b/hw/xprint/ps/psout_ftpstype1.c @@ -124,7 +124,7 @@ int PsOut_DownloadFreeType1(PsOutPtr self, const char *psfontname, FontPtr pFont switch(childpid) { case -1: - FatalError("PS DDX internal error: Cannot fork() converter child process, errno=%d\n", (int)errno); + FatalError("PS DDX internal error: Cannot fork() converter child process, %s\n", strerror(errno)); break; case 0: /* child */ fclose(self->Fp); diff --git a/hw/xquartz/darwinKeyboard.c b/hw/xquartz/darwinKeyboard.c index b368fe9d9..8d1ee8ec9 100644 --- a/hw/xquartz/darwinKeyboard.c +++ b/hw/xquartz/darwinKeyboard.c @@ -344,13 +344,13 @@ static Bool DarwinReadKeymapFile(NXKeyMapping *keyMap) { fref = fopen( darwinKeymapFile, "rb" ); if (fref == NULL) { - ErrorF("Unable to open keymapping file '%s' (errno %d).\n", - darwinKeymapFile, errno); + ErrorF("Unable to open keymapping file '%s' (%s).\n", + darwinKeymapFile, strerror(errno)); return FALSE; } if (fstat(fileno(fref), &st) == -1) { - ErrorF("Could not stat keymapping file '%s' (errno %d).\n", - darwinKeymapFile, errno); + ErrorF("Could not stat keymapping file '%s' (%s).\n", + darwinKeymapFile, strerror(errno)); return FALSE; } @@ -364,8 +364,8 @@ static Bool DarwinReadKeymapFile(NXKeyMapping *keyMap) { inBuffer = (char*) xalloc( st.st_size ); bufferEnd = (int *) (inBuffer + st.st_size); if (fread(inBuffer, st.st_size, 1, fref) != 1) { - ErrorF("Could not read %qd bytes from keymapping file '%s' (errno %d).\n", - st.st_size, darwinKeymapFile, errno); + ErrorF("Could not read %qd bytes from keymapping file '%s' (%s).\n", + st.st_size, darwinKeymapFile, strerror(errno)); return FALSE; } diff --git a/os/WaitFor.c b/os/WaitFor.c index c58f24888..36e01ca38 100644 --- a/os/WaitFor.c +++ b/os/WaitFor.c @@ -254,13 +254,13 @@ WaitForSomething(int *pClientsReady) } else if (selecterr == EINVAL) { - FatalError("WaitForSomething(): select: errno=%d\n", - selecterr); + FatalError("WaitForSomething(): select: %s\n", + strerror(selecterr)); } else if (selecterr != EINTR && selecterr != EAGAIN) { - ErrorF("WaitForSomething(): select: errno=%d\n", - selecterr); + ErrorF("WaitForSomething(): select: %s\n", + strerror(selecterr)); } } #ifdef SMART_SCHEDULE From ef77e4c4419703b5a802f3eee92476a43f788a86 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 16:03:01 +1100 Subject: [PATCH 037/112] Remove useless commentary from environment and argument processing. --- os/utils.c | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/os/utils.c b/os/utils.c index 22f9541f5..4041028a3 100644 --- a/os/utils.c +++ b/os/utils.c @@ -2002,18 +2002,6 @@ enum BadCode { #define BUGADDRESS "xorg@freedesktop.org" #endif -#define ARGMSG \ - "\nIf the arguments used are valid, and have been rejected incorrectly\n" \ - "please send details of the arguments and why they are valid to\n" \ - "%s. In the meantime, you can start the Xserver as\n" \ - "the \"super user\" (root).\n" - -#define ENVMSG \ - "\nIf the environment is valid, and have been rejected incorrectly\n" \ - "please send details of the environment and why it is valid to\n" \ - "%s. In the meantime, you can start the Xserver as\n" \ - "the \"super user\" (root).\n" - void CheckUserParameters(int argc, char **argv, char **envp) { @@ -2060,10 +2048,6 @@ CheckUserParameters(int argc, char **argv, char **envp) /* Check for bad environment variables and values */ #if REMOVE_ENV_LD while (envp[i] && (strncmp(envp[i], "LD", 2) == 0)) { -#ifdef ENVDEBUG - ErrorF("CheckUserParameters: removing %s from the " - "environment\n", strtok(envp[i], "=")); -#endif for (j = i; envp[j]; j++) { envp[j] = envp[j+1]; } @@ -2071,10 +2055,6 @@ CheckUserParameters(int argc, char **argv, char **envp) #endif if (envp[i] && (strlen(envp[i]) > MAX_ENV_LENGTH)) { #if REMOVE_LONG_ENV -#ifdef ENVDEBUG - ErrorF("CheckUserParameters: removing %s from the " - "environment\n", strtok(envp[i], "=")); -#endif for (j = i; envp[j]; j++) { envp[j] = envp[j+1]; } @@ -2127,20 +2107,16 @@ CheckUserParameters(int argc, char **argv, char **envp) return; case UnsafeArg: ErrorF("Command line argument number %d is unsafe\n", i); - ErrorF(ARGMSG, BUGADDRESS); break; case ArgTooLong: ErrorF("Command line argument number %d is too long\n", i); - ErrorF(ARGMSG, BUGADDRESS); break; case UnprintableArg: ErrorF("Command line argument number %d contains unprintable" " characters\n", i); - ErrorF(ARGMSG, BUGADDRESS); break; case EnvTooLong: ErrorF("Environment variable `%s' is too long\n", e); - ErrorF(ENVMSG, BUGADDRESS); break; case OutputIsPipe: ErrorF("Stdout and/or stderr is a pipe\n"); @@ -2150,8 +2126,6 @@ CheckUserParameters(int argc, char **argv, char **envp) break; default: ErrorF("Unknown error\n"); - ErrorF(ARGMSG, BUGADDRESS); - ErrorF(ENVMSG, BUGADDRESS); break; } FatalError("X server aborted because of unsafe environment\n"); From 2aaf6ac134fa9f61984b1c03929c7b596c971cc8 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 16:10:23 +1100 Subject: [PATCH 038/112] Don't even attempt to parse -bpp in xfree86 DDX option parsing. This hasn't been valid since 1999. Get with the times, man. --- hw/xfree86/common/xf86Init.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index d12b6bd6a..a3ddfd0b9 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -1566,15 +1566,6 @@ ddxProcessArgument(int argc, char **argv, int i) xf86sFlag = TRUE; return 0; } - if (!strcmp(argv[i], "-bpp")) - { - ErrorF("The -bpp option is no longer supported.\n" - "\tUse -depth to set the color depth, and use -fbbpp if you really\n" - "\tneed to force a non-default framebuffer (hardware) pixel format.\n"); - if (++i >= argc) - return 1; - return 2; - } if (!strcmp(argv[i], "-pixmap24")) { xf86Pix24 = Pix24Use24; From 24089b06243101b1bff4f2fd79fcbfd6a93992d5 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 16:11:13 +1100 Subject: [PATCH 039/112] Don't bother warning people about the keyboard driver rename, just do it. --- hw/xfree86/common/xf86Init.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index a3ddfd0b9..2a7ecfdc8 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -1135,12 +1135,6 @@ InitInput(argc, argv) for (pDev = xf86ConfigLayout.inputs; pDev && *pDev; pDev++) { /* Replace obsolete keyboard driver with kbd */ if (!xf86NameCmp((*pDev)->driver, "keyboard")) { - xf86MsgVerb(X_WARNING, 0, - "*** WARNING the legacy keyboard driver \"%s\" has been removed\n", - (*pDev)->driver); - xf86MsgVerb(X_WARNING, 0, - "*** Using the new \"kbd\" driver for \"%s\".\n", - (*pDev)->identifier); strcpy((*pDev)->driver, "kbd"); } From 0bdd20a0454c94f902fd4874855125bf7510fcf5 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 16:15:58 +1100 Subject: [PATCH 040/112] Eradicate the VTInit code. "This option should rarely be used." Never sounds like a better idea. --- hw/xfree86/common/xf86Config.c | 5 ---- hw/xfree86/common/xf86Globals.c | 1 - hw/xfree86/common/xf86Init.c | 42 ---------------------------- hw/xfree86/common/xf86Privstr.h | 1 - hw/xfree86/doc/man/xorg.conf.man.pre | 11 -------- hw/xfree86/parser/xf86tokens.h | 1 - 6 files changed, 61 deletions(-) diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index 622c31850..605c6b347 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -733,7 +733,6 @@ typedef enum { FLAG_DISABLEMODINDEV, FLAG_MODINDEVALLOWNONLOCAL, FLAG_ALLOWMOUSEOPENFAIL, - FLAG_VTINIT, FLAG_VTSYSREQ, FLAG_XKBDISABLE, FLAG_PCIPROBE1, @@ -785,8 +784,6 @@ static OptionInfoRec FlagOptions[] = { {0}, FALSE }, { FLAG_ALLOWMOUSEOPENFAIL, "AllowMouseOpenFail", OPTV_BOOLEAN, {0}, FALSE }, - { FLAG_VTINIT, "VTInit", OPTV_STRING, - {0}, FALSE }, { FLAG_VTSYSREQ, "VTSysReq", OPTV_BOOLEAN, {0}, FALSE }, { FLAG_XKBDISABLE, "XkbDisable", OPTV_BOOLEAN, @@ -977,8 +974,6 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts) #endif } - xf86Info.vtinit = xf86GetOptValString(FlagOptions, FLAG_VTINIT); - if (xf86IsOptionSet(FlagOptions, FLAG_PCIPROBE1)) xf86Info.pciFlags = PCIProbe1; if (xf86IsOptionSet(FlagOptions, FLAG_PCIPROBE2)) diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c index d796d627c..ba603f4df 100644 --- a/hw/xfree86/common/xf86Globals.c +++ b/hw/xfree86/common/xf86Globals.c @@ -97,7 +97,6 @@ InputInfoPtr xf86InputDevs = NULL; xf86InfoRec xf86Info = { -1, /* consoleFd */ -1, /* vtno */ - NULL, /* vtinit */ FALSE, /* vtSysreq */ SKWhenNeeded, /* ddxSpecialKeys */ NULL, /* pMouse */ diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 2a7ecfdc8..41cf1d17c 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -102,7 +102,6 @@ static void xf86PrintBanner(void); static void xf86PrintMarkers(void); static void xf86PrintDefaultModulePath(void); static void xf86PrintDefaultLibraryPath(void); -static void xf86RunVtInit(void); static Bool probe_devices_from_device_sections(DriverPtr drvp); static Bool add_matching_devices_to_configure_list(DriverPtr drvp); @@ -238,9 +237,6 @@ PostConfigInit(void) xf86OSPMClose = xf86OSPMOpen(); #endif - /* Run an external VT Init program if specified in the config file */ - xf86RunVtInit(); - /* Do this after XF86Config is read (it's normally in OsInit()) */ OsInitColors(); } @@ -1915,44 +1911,6 @@ xf86PrintDefaultLibraryPath(void) ErrorF("%s\n", DEFAULT_LIBRARY_PATH); } -static void -xf86RunVtInit(void) -{ - int i; - - /* - * If VTInit was set, run that program with consoleFd as stdin and stdout - */ - - if (xf86Info.vtinit) { - switch(fork()) { - case -1: - FatalError("xf86RunVtInit: fork failed (%s)\n", strerror(errno)); - break; - case 0: /* child */ - if (setuid(getuid()) == -1) { - xf86Msg(X_ERROR, "xf86RunVtInit: setuid failed (%s)\n", - strerror(errno)); - exit(255); - } - /* set stdin, stdout to the consoleFd */ - for (i = 0; i < 2; i++) { - if (xf86Info.consoleFd != i) { - close(i); - dup(xf86Info.consoleFd); - } - } - execl("/bin/sh", "sh", "-c", xf86Info.vtinit, (void *)NULL); - xf86Msg(X_WARNING, "exec of /bin/sh failed for VTInit (%s)\n", - strerror(errno)); - exit(255); - break; - default: /* parent */ - wait(NULL); - } - } -} - /* * xf86LoadModules iterates over a list that is being passed in. */ diff --git a/hw/xfree86/common/xf86Privstr.h b/hw/xfree86/common/xf86Privstr.h index 92a6305a0..d97ca440e 100644 --- a/hw/xfree86/common/xf86Privstr.h +++ b/hw/xfree86/common/xf86Privstr.h @@ -75,7 +75,6 @@ typedef enum { typedef struct { int consoleFd; int vtno; - char * vtinit; Bool vtSysreq; SpecialKeysInDDX ddxSpecialKeys; diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre index 608ba37ed..96f30c4bd 100644 --- a/hw/xfree86/doc/man/xorg.conf.man.pre +++ b/hw/xfree86/doc/man/xorg.conf.man.pre @@ -507,17 +507,6 @@ This allows the server to start up even if the mouse device can't be opened/initialised. Default: false. .TP 7 -.BI "Option \*qVTInit\*q \*q" command \*q -Runs -.I command -after the VT used by the server has been opened. -The command string is passed to \*q/bin/sh \-c\*q, and is run with the real -user's id with stdin and stdout set to the VT. -The purpose of this option is to allow system dependent VT initialisation -commands to be run. -This option should rarely be needed. -Default: not set. -.TP 7 .BI "Option \*qVTSysReq\*q \*q" boolean \*q enables the SYSV\-style VT switch sequence for non\-SYSV systems which support VT switching. diff --git a/hw/xfree86/parser/xf86tokens.h b/hw/xfree86/parser/xf86tokens.h index 786dac145..6e4fdeab5 100644 --- a/hw/xfree86/parser/xf86tokens.h +++ b/hw/xfree86/parser/xf86tokens.h @@ -208,7 +208,6 @@ typedef enum { XKBVARIANT, XKBOPTIONS, /* The next two have become ServerFlags options */ - VTINIT, VTSYSREQ, /* Obsolete keyboard tokens */ SERVERNUM, From e91ff09568c5579818b6641e88e95c6fe122cbe7 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 17:21:34 +1100 Subject: [PATCH 041/112] Friends don't let friends call xf86AddModuleInfo. That code only existed to leak memory. It can go now, thanks. --- hw/xfree86/common/xf86.h | 4 ++-- hw/xfree86/common/xf86Globals.c | 2 -- hw/xfree86/common/xf86Helper.c | 24 ++---------------------- hw/xfree86/common/xf86Priv.h | 3 --- hw/xfree86/common/xf86str.h | 2 +- hw/xfree86/exa/examodule.c | 26 +------------------------- hw/xfree86/loader/xf86sym.c | 2 -- hw/xfree86/xaa/xaaInitAccel.c | 26 +------------------------- 8 files changed, 7 insertions(+), 82 deletions(-) diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h index 4e7d914bf..4b3e10463 100644 --- a/hw/xfree86/common/xf86.h +++ b/hw/xfree86/common/xf86.h @@ -337,8 +337,8 @@ int xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type, pointer value); Bool xf86IsUnblank(int mode); -void xf86AddModuleInfo(ModuleInfoPtr info, pointer module); -void xf86DeleteModuleInfo(int idx); +_X_DEPRECATED void xf86AddModuleInfo(pointer info, pointer module); +_X_DEPRECATED void xf86DeleteModuleInfo(int idx); void xf86getsecs(long *, long *); /* xf86Debug.c */ diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c index ba603f4df..0dc42c66b 100644 --- a/hw/xfree86/common/xf86Globals.c +++ b/hw/xfree86/common/xf86Globals.c @@ -153,8 +153,6 @@ DriverPtr *xf86DriverList = NULL; int xf86NumDrivers = 0; InputDriverPtr *xf86InputDriverList = NULL; int xf86NumInputDrivers = 0; -ModuleInfoPtr *xf86ModuleInfoList = NULL; -int xf86NumModuleInfos = 0; int xf86NumScreens = 0; const char *xf86VisualNames[] = { diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index ec524e63c..8978f8206 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -170,37 +170,17 @@ xf86LookupInput(const char *name) return NULL; } +/* ABI stubs of despair */ _X_EXPORT void -xf86AddModuleInfo(ModuleInfoPtr info, pointer module) +xf86AddModuleInfo(pointer info, pointer module) { - /* Don't add null entries */ - if (!module) - return; - - if (xf86ModuleInfoList == NULL) - xf86NumModuleInfos = 0; - - xf86NumModuleInfos++; - xf86ModuleInfoList = xnfrealloc(xf86ModuleInfoList, - xf86NumModuleInfos * sizeof(ModuleInfoPtr)); - xf86ModuleInfoList[xf86NumModuleInfos - 1] = xnfalloc(sizeof(ModuleInfoRec)); - *xf86ModuleInfoList[xf86NumModuleInfos - 1] = *info; - xf86ModuleInfoList[xf86NumModuleInfos - 1]->module = module; - xf86ModuleInfoList[xf86NumModuleInfos - 1]->refCount = 0; } _X_EXPORT void xf86DeleteModuleInfo(int idx) { - if (xf86ModuleInfoList[idx]) { - if (xf86ModuleInfoList[idx]->module) - UnloadModule(xf86ModuleInfoList[idx]->module); - xfree(xf86ModuleInfoList[idx]); - xf86ModuleInfoList[idx] = NULL; - } } - /* Allocate a new ScrnInfoRec in xf86Screens */ _X_EXPORT ScrnInfoPtr diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h index 4723f5aba..32801cb3f 100644 --- a/hw/xfree86/common/xf86Priv.h +++ b/hw/xfree86/common/xf86Priv.h @@ -1,4 +1,3 @@ - /* * Copyright (c) 1997-2002 by The XFree86 Project, Inc. * @@ -97,8 +96,6 @@ extern Bool xf86SupportedMouseTypes[]; extern int xf86NumMouseTypes; extern DriverPtr *xf86DriverList; -extern ModuleInfoPtr *xf86ModuleInfoList; -extern int xf86NumModuleInfos; extern int xf86NumDrivers; extern Bool xf86Resetting; extern Bool xf86Initialising; diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h index 2e0213597..fc94284cb 100644 --- a/hw/xfree86/common/xf86str.h +++ b/hw/xfree86/common/xf86str.h @@ -348,7 +348,7 @@ typedef struct _DriverRec { * functions to configuration tools, the Xserver, or any other * application/module interested in such information. */ -typedef struct _ModuleInfoRec { +_X_DEPRECATED typedef struct _ModuleInfoRec { int moduleVersion; char * moduleName; pointer module; diff --git a/hw/xfree86/exa/examodule.c b/hw/xfree86/exa/examodule.c index b8d306eb4..086639cc5 100644 --- a/hw/xfree86/exa/examodule.c +++ b/hw/xfree86/exa/examodule.c @@ -178,8 +178,6 @@ exaDDXDriverInit(ScreenPtr pScreen) } -static MODULESETUPPROTO(exaSetup); - /*ARGSUSED*/ static const OptionInfoRec * EXAAvailableOptions(void *unused) @@ -201,26 +199,4 @@ static XF86ModuleVersionInfo exaVersRec = {0,0,0,0} }; -_X_EXPORT XF86ModuleData exaModuleData = { &exaVersRec, exaSetup, NULL }; - -static ModuleInfoRec EXA = { - 1, - "EXA", - NULL, - 0, - EXAAvailableOptions, -}; - -/*ARGSUSED*/ -static pointer -exaSetup(pointer Module, pointer Options, int *ErrorMajor, int *ErrorMinor) -{ - static Bool Initialised = FALSE; - - if (!Initialised) { - Initialised = TRUE; - xf86AddModuleInfo(&EXA, Module); - } - - return (pointer)TRUE; -} +_X_EXPORT XF86ModuleData exaModuleData = { &exaVersRec, NULL, NULL }; diff --git a/hw/xfree86/loader/xf86sym.c b/hw/xfree86/loader/xf86sym.c index 623e87ab5..754e9c06b 100644 --- a/hw/xfree86/loader/xf86sym.c +++ b/hw/xfree86/loader/xf86sym.c @@ -479,8 +479,6 @@ _X_HIDDEN void *xfree86LookupTab[] = { SYMFUNC(xf86IsScreenPrimary) SYMFUNC(xf86RegisterRootWindowProperty) SYMFUNC(xf86IsUnblank) - SYMFUNC(xf86AddModuleInfo) - SYMFUNC(xf86DeleteModuleInfo) #if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__) /* xf86sbusBus.c */ diff --git a/hw/xfree86/xaa/xaaInitAccel.c b/hw/xfree86/xaa/xaaInitAccel.c index fe0b70a14..1b7c15487 100644 --- a/hw/xfree86/xaa/xaaInitAccel.c +++ b/hw/xfree86/xaa/xaaInitAccel.c @@ -93,8 +93,6 @@ static const OptionInfoRec XAAOptions[] = { OPTV_NONE, {0}, FALSE } }; -static MODULESETUPPROTO(xaaSetup); - static XF86ModuleVersionInfo xaaVersRec = { "xaa", @@ -109,29 +107,7 @@ static XF86ModuleVersionInfo xaaVersRec = {0,0,0,0} }; -_X_EXPORT XF86ModuleData xaaModuleData = { &xaaVersRec, xaaSetup, NULL }; - -ModuleInfoRec XAA = { - 1, - "XAA", - NULL, - 0, - XAAAvailableOptions, -}; - -/*ARGSUSED*/ -static pointer -xaaSetup(pointer Module, pointer Options, int *ErrorMajor, int *ErrorMinor) -{ - static Bool Initialised = FALSE; - - if (!Initialised) { - Initialised = TRUE; - xf86AddModuleInfo(&XAA, Module); - } - - return (pointer)TRUE; -} +_X_EXPORT XF86ModuleData xaaModuleData = { &xaaVersRec, NULL, NULL }; /*ARGSUSED*/ static const OptionInfoRec * From f750ce53ac450824d0c792d11eafdf311cf8abc0 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 1 Feb 2008 17:33:48 +1100 Subject: [PATCH 042/112] Remove some braindamage from ModuleDesc. Yay dead code elimination. --- hw/xfree86/common/xf86Helper.c | 1 - hw/xfree86/loader/loaderProcs.h | 6 ------ hw/xfree86/loader/loadmod.c | 21 --------------------- 3 files changed, 28 deletions(-) diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index 8978f8206..1368d04ab 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -1,4 +1,3 @@ - /* * Copyright (c) 1997-2003 by The XFree86 Project, Inc. * diff --git a/hw/xfree86/loader/loaderProcs.h b/hw/xfree86/loader/loaderProcs.h index b71ad4590..9c73db3a6 100644 --- a/hw/xfree86/loader/loaderProcs.h +++ b/hw/xfree86/loader/loaderProcs.h @@ -62,17 +62,11 @@ typedef struct module_desc { struct module_desc *child; struct module_desc *sib; struct module_desc *parent; - struct module_desc *demand_next; char *name; - char *filename; - char *identifier; - XID client_id; - int in_use; int handle; ModuleSetupProc SetupProc; ModuleTearDownProc TearDownProc; void *TearDownData; /* returned from SetupProc */ - const char *path; const XF86ModuleVersionInfo *VersionInfo; } ModuleDesc, *ModuleDescPtr; diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c index 45e9cb374..650dcf35c 100644 --- a/hw/xfree86/loader/loadmod.c +++ b/hw/xfree86/loader/loadmod.c @@ -786,12 +786,7 @@ NewModuleDesc(const char *name) mdp->child = NULL; mdp->sib = NULL; mdp->parent = NULL; - mdp->demand_next = NULL; mdp->name = xstrdup(name); - mdp->filename = NULL; - mdp->identifier = NULL; - mdp->client_id = 0; - mdp->in_use = 0; mdp->handle = -1; mdp->SetupProc = NULL; mdp->TearDownProc = NULL; @@ -816,15 +811,10 @@ DuplicateModule(ModuleDescPtr mod, ModuleDescPtr parent) if (LoaderHandleOpen(mod->handle) == -1) return NULL; - ret->filename = xstrdup(mod->filename); - ret->identifier = mod->identifier; - ret->client_id = mod->client_id; - ret->in_use = mod->in_use; ret->handle = mod->handle; ret->SetupProc = mod->SetupProc; ret->TearDownProc = mod->TearDownProc; ret->TearDownData = NULL; - ret->path = mod->path; ret->child = DuplicateModule(mod->child, ret); ret->sib = DuplicateModule(mod->sib, parent); ret->parent = parent; @@ -943,8 +933,6 @@ doLoadModule(const char *module, const char *path, const char **subdirlist, if (ret->handle < 0) goto LoadModule_fail; - ret->filename = xstrdup(found); - /* drop any explicit suffix from the module name */ p = strchr(name, '.'); if (p) @@ -998,7 +986,6 @@ doLoadModule(const char *module, const char *path, const char **subdirlist, ret->SetupProc = setup; if (teardown) ret->TearDownProc = teardown; - ret->path = path; ret->VersionInfo = vers; } else { /* No initdata is OK for external modules */ @@ -1120,7 +1107,6 @@ UnloadModuleOrDriver(ModuleDescPtr mod) if (mod->sib) UnloadModuleOrDriver(mod->sib); TestFree(mod->name); - TestFree(mod->filename); xfree(mod); #ifdef __alpha__ istream_mem_barrier(); @@ -1145,7 +1131,6 @@ UnloadSubModule(ModuleDescPtr mod) UnloadModuleOrDriver(mod->child); TestFree(mod->name); - TestFree(mod->filename); xfree(mod); } @@ -1156,12 +1141,6 @@ FreeModuleDesc(ModuleDescPtr head) if (head == (ModuleDescPtr) 1) return; - /* - * only free it if it's not marked as in use. In use means that it may - * be unloaded someday, and UnloadModule will free it - */ - if (head->in_use) - return; if (head->child) FreeModuleDesc(head->child); sibs = head; From ba69904148acf755bec8fbda2eb869144f0ef7d4 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Sun, 3 Feb 2008 22:49:23 +1100 Subject: [PATCH 043/112] Simplify dlloader a bit more. --- hw/xfree86/loader/dlloader.c | 43 ++++++++++++++---------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/hw/xfree86/loader/dlloader.c b/hw/xfree86/loader/dlloader.c index 2afdef789..4caefd071 100644 --- a/hw/xfree86/loader/dlloader.c +++ b/hw/xfree86/loader/dlloader.c @@ -71,15 +71,9 @@ #define DLSYM_PREFIX "" #endif -typedef struct { - int handle; - void *dlhandle; - int flags; -} DLModuleRec, *DLModulePtr; - /* Hooray, yet another open coded linked list! FIXME */ typedef struct DLModuleList { - DLModulePtr module; + void *module; struct DLModuleList *next; } DLModuleList; @@ -88,19 +82,22 @@ static DLModuleList *dlModuleList = NULL; static void * DLFindSymbolLocal(pointer module, const char *name) { - DLModulePtr dlfile = module; void *p; char *n; static const char symPrefix[] = DLSYM_PREFIX; - n = malloc(strlen(symPrefix) + strlen(name) + 1); - if (strlen(symPrefix)) + if (strlen(symPrefix)) { + n = malloc(strlen(symPrefix) + strlen(name) + 1); sprintf(n, "%s%s", symPrefix, name); - else - sprintf(n, "%s", name); - p = dlsym(dlfile->dlhandle, n); - free(n); + } else { + n = name; + } + + p = dlsym(module, n); + + if (strlen(symPrefix)) + free(n); return p; } @@ -127,7 +124,7 @@ DLFindSymbol(const char *name) global_scope = dlopen(NULL, DLOPEN_LAZY | DLOPEN_GLOBAL); if (global_scope) - return dlsym(global_scope, name); + return DLFindSymbolLocal(global_scope, name); return NULL; } @@ -135,23 +132,17 @@ DLFindSymbol(const char *name) void * DLLoadModule(loaderPtr modrec, int flags) { - DLModulePtr dlfile; + void * dlfile; DLModuleList *l; int dlopen_flags; - if ((dlfile = calloc(1, sizeof(DLModuleRec))) == NULL) { - ErrorF("Unable to allocate DLModuleRec\n"); - return NULL; - } - dlfile->handle = modrec->handle; if (flags & LD_FLAG_GLOBAL) dlopen_flags = DLOPEN_LAZY | DLOPEN_GLOBAL; else dlopen_flags = DLOPEN_LAZY; - dlfile->dlhandle = dlopen(modrec->name, dlopen_flags); - if (dlfile->dlhandle == NULL) { + dlfile = dlopen(modrec->name, dlopen_flags); + if (dlfile == NULL) { ErrorF("dlopen: %s\n", dlerror()); - free(dlfile); return NULL; } @@ -166,7 +157,6 @@ DLLoadModule(loaderPtr modrec, int flags) void DLUnloadModule(void *modptr) { - DLModulePtr dlfile = (DLModulePtr) modptr; DLModuleList *l, *p; /* remove it from dlModuleList. */ @@ -185,6 +175,5 @@ DLUnloadModule(void *modptr) p = l; } } - dlclose(dlfile->dlhandle); - free(modptr); + dlclose(modptr); } From ae43d835bdaef96c3c73d7cee5b105f07340833d Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Wed, 13 Feb 2008 19:39:49 -0500 Subject: [PATCH 044/112] XACE: Change access modes for some device-related requests. Opening a device is not really "reading" it. Requests that globally configure a device should require "manage" access. --- Xi/chgdctl.c | 2 +- Xi/chgfctl.c | 2 +- Xi/chgkmap.c | 2 +- Xi/closedev.c | 2 +- Xi/opendev.c | 2 +- Xi/setbmap.c | 2 +- Xi/setmmap.c | 2 +- dix/devices.c | 10 +++++----- xkb/xkb.c | 14 +++++++------- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Xi/chgdctl.c b/Xi/chgdctl.c index e7d04a781..30174f496 100644 --- a/Xi/chgdctl.c +++ b/Xi/chgdctl.c @@ -111,7 +111,7 @@ ProcXChangeDeviceControl(ClientPtr client) REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq); len = stuff->length - (sizeof(xChangeDeviceControlReq) >> 2); - ret = dixLookupDevice(&dev, stuff->deviceid, client, DixSetAttrAccess); + ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess); if (ret != Success) goto out; diff --git a/Xi/chgfctl.c b/Xi/chgfctl.c index 696b74a16..3155e87c2 100644 --- a/Xi/chgfctl.c +++ b/Xi/chgfctl.c @@ -444,7 +444,7 @@ ProcXChangeFeedbackControl(ClientPtr client) REQUEST_AT_LEAST_SIZE(xChangeFeedbackControlReq); len = stuff->length - (sizeof(xChangeFeedbackControlReq) >> 2); - rc = dixLookupDevice(&dev, stuff->deviceid, client, DixSetAttrAccess); + rc = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess); if (rc != Success) return rc; diff --git a/Xi/chgkmap.c b/Xi/chgkmap.c index df334c11c..3f51648e1 100644 --- a/Xi/chgkmap.c +++ b/Xi/chgkmap.c @@ -106,7 +106,7 @@ ProcXChangeDeviceKeyMapping(ClientPtr client) count = stuff->keyCodes * stuff->keySymsPerKeyCode; REQUEST_FIXED_SIZE(xChangeDeviceKeyMappingReq, count * sizeof(CARD32)); - ret = dixLookupDevice(&dev, stuff->deviceid, client, DixSetAttrAccess); + ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess); if (ret != Success) return ret; len = stuff->length - (sizeof(xChangeDeviceKeyMappingReq) >> 2); diff --git a/Xi/closedev.c b/Xi/closedev.c index b2b5f69a6..94b7391fb 100644 --- a/Xi/closedev.c +++ b/Xi/closedev.c @@ -146,7 +146,7 @@ ProcXCloseDevice(ClientPtr client) REQUEST(xCloseDeviceReq); REQUEST_SIZE_MATCH(xCloseDeviceReq); - rc = dixLookupDevice(&d, stuff->deviceid, client, DixGetAttrAccess); + rc = dixLookupDevice(&d, stuff->deviceid, client, DixUseAccess); if (rc != Success) return rc; diff --git a/Xi/opendev.c b/Xi/opendev.c index 128b1bd9c..acda38530 100644 --- a/Xi/opendev.c +++ b/Xi/opendev.c @@ -106,7 +106,7 @@ ProcXOpenDevice(ClientPtr client) stuff->deviceid == inputInfo.keyboard->id) return BadDevice; - status = dixLookupDevice(&dev, stuff->deviceid, client, DixReadAccess); + status = dixLookupDevice(&dev, stuff->deviceid, client, DixUseAccess); if (status == BadDevice) { /* not open */ for (dev = inputInfo.off_devices; dev; dev = dev->next) if (dev->id == stuff->deviceid) diff --git a/Xi/setbmap.c b/Xi/setbmap.c index 3035c649e..f05225531 100644 --- a/Xi/setbmap.c +++ b/Xi/setbmap.c @@ -109,7 +109,7 @@ ProcXSetDeviceButtonMapping(ClientPtr client) rep.sequenceNumber = client->sequence; rep.status = MappingSuccess; - ret = dixLookupDevice(&dev, stuff->deviceid, client, DixSetAttrAccess); + ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess); if (ret != Success) return ret; diff --git a/Xi/setmmap.c b/Xi/setmmap.c index be3d3cb6c..34efde595 100644 --- a/Xi/setmmap.c +++ b/Xi/setmmap.c @@ -98,7 +98,7 @@ ProcXSetDeviceModifierMapping(ClientPtr client) REQUEST(xSetDeviceModifierMappingReq); REQUEST_AT_LEAST_SIZE(xSetDeviceModifierMappingReq); - ret = dixLookupDevice(&dev, stuff->deviceid, client, DixSetAttrAccess); + ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess); if (ret != Success) return ret; diff --git a/dix/devices.c b/dix/devices.c index 534a0b9e5..bdcca5aba 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -1295,7 +1295,7 @@ DoSetModifierMapping(ClientPtr client, KeyCode *inputMap, } } - rc = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixSetAttrAccess); + rc = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixManageAccess); if (rc != Success) return rc; @@ -1435,7 +1435,7 @@ ProcChangeKeyboardMapping(ClientPtr client) for (pDev = inputInfo.devices; pDev; pDev = pDev->next) { if ((pDev->coreEvents || pDev == inputInfo.keyboard) && pDev->key) { - rc = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixSetAttrAccess); + rc = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixManageAccess); if (rc != Success) return rc; } @@ -1472,7 +1472,7 @@ DoSetPointerMapping(ClientPtr client, DeviceIntPtr device, BYTE *map, int n) for (dev = inputInfo.devices; dev; dev = dev->next) { if ((dev->coreEvents || dev == inputInfo.pointer) && dev->button) { - rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixSetAttrAccess); + rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixManageAccess); if (rc != Success) return rc; } @@ -1810,7 +1810,7 @@ ProcChangeKeyboardControl (ClientPtr client) for (pDev = inputInfo.devices; pDev; pDev = pDev->next) { if ((pDev->coreEvents || pDev == inputInfo.keyboard) && pDev->kbdfeed && pDev->kbdfeed->CtrlProc) { - ret = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixSetAttrAccess); + ret = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixManageAccess); if (ret != Success) return ret; } @@ -1961,7 +1961,7 @@ ProcChangePointerControl(ClientPtr client) for (mouse = inputInfo.devices; mouse; mouse = mouse->next) { if ((mouse->coreEvents || mouse == inputInfo.pointer) && mouse->ptrfeed && mouse->ptrfeed->CtrlProc) { - rc = XaceHook(XACE_DEVICE_ACCESS, client, mouse, DixSetAttrAccess); + rc = XaceHook(XACE_DEVICE_ACCESS, client, mouse, DixManageAccess); if (rc != Success) return rc; } diff --git a/xkb/xkb.c b/xkb/xkb.c index 23e1dc76f..26f2812fe 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -211,7 +211,7 @@ ProcXkbSelectEvents(ClientPtr client) if (!(client->xkbClientFlags&_XkbClientInitialized)) return BadAccess; - CHK_ANY_DEVICE(dev, stuff->deviceSpec, client, DixReadAccess); + CHK_ANY_DEVICE(dev, stuff->deviceSpec, client, DixUseAccess); if (((stuff->affectWhich&XkbMapNotifyMask)!=0)&&(stuff->affectMap)) { client->mapNotifyMask&= ~stuff->affectMap; @@ -694,7 +694,7 @@ ProcXkbSetControls(ClientPtr client) if (!(client->xkbClientFlags & _XkbClientInitialized)) return BadAccess; - CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess); + CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess); CHK_MASK_LEGAL(0x01, stuff->changeCtrls, XkbAllControlsMask); for (tmpd = inputInfo.keyboard; tmpd; tmpd = tmpd->next) { @@ -2304,7 +2304,7 @@ ProcXkbSetMap(ClientPtr client) if (!(client->xkbClientFlags&_XkbClientInitialized)) return BadAccess; - CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess); + CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess); CHK_MASK_LEGAL(0x01,stuff->present,XkbAllMapComponentsMask); XkbSetCauseXkbReq(&cause,X_kbSetMap,client); @@ -2618,7 +2618,7 @@ ProcXkbSetCompatMap(ClientPtr client) if (!(client->xkbClientFlags&_XkbClientInitialized)) return BadAccess; - CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess); + CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess); data = (char *)&stuff[1]; xkbi = dev->key->xkbInfo; @@ -4844,7 +4844,7 @@ ProcXkbSetGeometry(ClientPtr client) if (!(client->xkbClientFlags&_XkbClientInitialized)) return BadAccess; - CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess); + CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess); CHK_ATOM_OR_NONE(stuff->name); xkb= dev->key->xkbInfo->desc; @@ -5126,7 +5126,7 @@ ProcXkbGetKbdByName(ClientPtr client) Bool geom_changed; XkbSrvLedInfoPtr old_sli; XkbSrvLedInfoPtr sli; - Mask access_mode = DixGetAttrAccess | DixSetAttrAccess; + Mask access_mode = DixGetAttrAccess | DixManageAccess; REQUEST(xkbGetKbdByNameReq); REQUEST_AT_LEAST_SIZE(xkbGetKbdByNameReq); @@ -5997,7 +5997,7 @@ xkbExtensionDeviceNotify ed; change= stuff->change; - CHK_ANY_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess); + CHK_ANY_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess); CHK_MASK_LEGAL(0x01,change,XkbXI_AllFeaturesMask); wire= (char *)&stuff[1]; From e99aadbc2635e87543fc9980d8156c3ede83544f Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Wed, 13 Feb 2008 19:46:29 -0500 Subject: [PATCH 045/112] xselinux: Add use to permission map for devices. --- Xext/xselinux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xext/xselinux.c b/Xext/xselinux.c index 9acc93c61..5aa2ad3fa 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -138,7 +138,7 @@ static struct security_class_mapping map[] = { { "x_selection", { "read", "", "", "", "getattr", "setattr", NULL }}, { "x_cursor", { "read", "write", "destroy", "create", "getattr", "setattr", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "use", NULL }}, { "x_client", { "", "", "destroy", "", "getattr", "setattr", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "manage", NULL }}, - { "x_device", { "read", "write", "", "", "getattr", "setattr", "", "", "", "getfocus", "setfocus", "", "", "", "", "", "", "grab", "freeze", "force_cursor", "", "", "", "", "", "manage", "", "bell", NULL }}, + { "x_device", { "read", "write", "", "", "getattr", "setattr", "", "", "", "getfocus", "setfocus", "", "", "", "", "", "", "grab", "freeze", "force_cursor", "", "", "", "", "use", "manage", "", "bell", NULL }}, { "x_server", { "record", "", "", "", "getattr", "setattr", "", "", "", "", "", "", "", "", "", "", "", "grab", "", "", "", "", "", "", "", "manage", "debug", NULL }}, { "x_extension", { "", "", "", "", "query", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "use", NULL }}, { "x_event", { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "send", "receive", NULL }}, From 4573cb2ce4b859744118d9a33de3599f033cdd2b Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Wed, 13 Feb 2008 20:16:56 -0500 Subject: [PATCH 046/112] security: Revise set of permissions granted to untrusted clients. Bug #14480: untrusted access broken on 7.3. --- Xext/security.c | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/Xext/security.c b/Xext/security.c index 069655964..a3cde2cec 100644 --- a/Xext/security.c +++ b/Xext/security.c @@ -70,10 +70,19 @@ static char *SecurityUntrustedExtensions[] = { NULL }; -/* Access modes that untrusted clients can do to trusted stuff */ -static const Mask SecurityAllowedMask = - DixGetAttrAccess | DixListPropAccess | DixGetPropAccess | - DixGetFocusAccess | DixListAccess | DixReceiveAccess; +/* + * Access modes that untrusted clients are allowed on trusted objects. + */ +static const Mask SecurityResourceMask = + DixGetAttrAccess | DixReceiveAccess | DixListPropAccess | + DixGetPropAccess | DixListAccess; +static const Mask SecurityRootWindowExtraMask = + DixReceiveAccess | DixSendAccess | DixAddAccess | DixRemoveAccess; +static const Mask SecurityDeviceMask = + DixGetAttrAccess | DixReceiveAccess | DixGetFocusAccess | + DixGrabAccess | DixSetAttrAccess | DixUseAccess; +static const Mask SecurityServerMask = DixGetAttrAccess | DixGrabAccess; +static const Mask SecurityClientMask = DixGetAttrAccess; /* SecurityAudit @@ -751,11 +760,15 @@ SecurityDevice(CallbackListPtr *pcbl, pointer unused, pointer calldata) XaceDeviceAccessRec *rec = calldata; SecurityStateRec *subj, *obj; Mask requested = rec->access_mode; - Mask allowed = SecurityAllowedMask; + Mask allowed = SecurityDeviceMask; subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); obj = dixLookupPrivate(&serverClient->devPrivates, stateKey); + if (rec->dev != inputInfo.keyboard) + /* this extension only supports the core keyboard */ + allowed = requested; + if (SecurityDoCheck(subj, obj, requested, allowed) != Success) { SecurityAudit("Security denied client %d keyboard access on request " "%s\n", rec->client->index, @@ -792,7 +805,7 @@ SecurityResource(CallbackListPtr *pcbl, pointer unused, pointer calldata) SecurityStateRec *subj, *obj; int cid = CLIENT_ID(rec->id); Mask requested = rec->access_mode; - Mask allowed = SecurityAllowedMask; + Mask allowed = SecurityResourceMask; subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); obj = dixLookupPrivate(&clients[cid]->devPrivates, stateKey); @@ -801,11 +814,15 @@ SecurityResource(CallbackListPtr *pcbl, pointer unused, pointer calldata) if (cid == 0) { if (rec->rtype & RC_DRAWABLE) /* additional operations allowed on root windows */ - allowed |= DixReadAccess|DixSendAccess; + allowed |= SecurityRootWindowExtraMask; else if (rec->rtype == RT_COLORMAP) /* allow access to default colormaps */ allowed = requested; + + else + /* allow read access to other server-owned resources */ + allowed |= DixReadAccess; } if (SecurityDoCheck(subj, obj, requested, allowed) == Success) @@ -816,9 +833,10 @@ SecurityResource(CallbackListPtr *pcbl, pointer unused, pointer calldata) return; #endif - SecurityAudit("Security: denied client %d access to resource 0x%x " - "of client %d on request %s\n", rec->client->index, rec->id, - cid, SecurityLookupRequestName(rec->client)); + SecurityAudit("Security: denied client %d access %x to resource 0x%x " + "of client %d on request %s\n", rec->client->index, + requested, rec->id, cid, + SecurityLookupRequestName(rec->client)); rec->status = BadAccess; /* deny access */ } @@ -850,7 +868,7 @@ SecurityServer(CallbackListPtr *pcbl, pointer unused, pointer calldata) XaceServerAccessRec *rec = calldata; SecurityStateRec *subj, *obj; Mask requested = rec->access_mode; - Mask allowed = SecurityAllowedMask; + Mask allowed = SecurityServerMask; subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); obj = dixLookupPrivate(&serverClient->devPrivates, stateKey); @@ -869,7 +887,7 @@ SecurityClient(CallbackListPtr *pcbl, pointer unused, pointer calldata) XaceClientAccessRec *rec = calldata; SecurityStateRec *subj, *obj; Mask requested = rec->access_mode; - Mask allowed = SecurityAllowedMask; + Mask allowed = SecurityClientMask; subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); obj = dixLookupPrivate(&rec->target->devPrivates, stateKey); @@ -889,7 +907,7 @@ SecurityProperty(CallbackListPtr *pcbl, pointer unused, pointer calldata) SecurityStateRec *subj, *obj; ATOM name = rec->pProp->propertyName; Mask requested = rec->access_mode; - Mask allowed = SecurityAllowedMask | DixReadAccess; + Mask allowed = SecurityResourceMask | DixReadAccess; subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); obj = dixLookupPrivate(&wClient(rec->pWin)->devPrivates, stateKey); From b8b7cdf6df3d338c50db670ce4cfd245f9fa8844 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 15 Feb 2008 01:31:46 +1100 Subject: [PATCH 047/112] Silence useless debug spew from XFree86-Misc extension. --- hw/xfree86/dixmods/extmod/xf86misc.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/hw/xfree86/dixmods/extmod/xf86misc.c b/hw/xfree86/dixmods/extmod/xf86misc.c index 8f4434601..3164d7501 100644 --- a/hw/xfree86/dixmods/extmod/xf86misc.c +++ b/hw/xfree86/dixmods/extmod/xf86misc.c @@ -110,7 +110,8 @@ static unsigned char XF86MiscReqCode = 0; #ifdef DEBUG # define DEBUG_P(x) ErrorF(x"\n"); #else -# define DEBUG_P(x) /**/ +# define DEBUG_P(x) do {} while (0) +} #endif #define MISCERR(x) (miscErrorBase + x) @@ -345,10 +346,10 @@ ProcXF86MiscSetMouseSettings(client) ClientVersion(client, &major, &minor); if (xf86GetVerbosity() > 1) { - ErrorF("SetMouseSettings - type: %d brate: %d srate: %d chdmid: %d\n", + DEBUG_P("SetMouseSettings - type: %d brate: %d srate: %d chdmid: %d\n", (int)stuff->mousetype, (int)stuff->baudrate, (int)stuff->samplerate, stuff->chordmiddle); - ErrorF(" em3but: %d em3tim: %d res: %d flags: %ld\n", + DEBUG_P(" em3but: %d em3tim: %d res: %d flags: %ld\n", stuff->emulate3buttons, (int)stuff->emulate3timeout, (int)stuff->resolution, (unsigned long)stuff->flags); } @@ -376,7 +377,7 @@ ProcXF86MiscSetMouseSettings(client) return BadAlloc; strncpy(devname,(char*)(&stuff[1]),stuff->devnamelen); if (xf86GetVerbosity() > 1) - ErrorF("SetMouseSettings - device: %s\n",devname); + DEBUG_P("SetMouseSettings - device: %s\n",devname); MiscExtSetMouseDevice(mouse, devname); } } @@ -395,12 +396,12 @@ ProcXF86MiscSetMouseSettings(client) case MISC_RET_BADCOMBO: return MISCERR(XF86MiscBadMouseCombo); case MISC_RET_NOMODULE: return MISCERR(XF86MiscNoModule); default: - ErrorF("Unexpected return from MiscExtApply(POINTER) = %d\n", ret); + DEBUG_P("Unexpected return from MiscExtApply(POINTER) = %d\n", ret); return BadImplementation; } if (xf86GetVerbosity() > 1) - ErrorF("SetMouseSettings - Succeeded\n"); + DEBUG_P("SetMouseSettings - Succeeded\n"); return (client->noClientException); } @@ -417,7 +418,7 @@ ProcXF86MiscSetKbdSettings(client) REQUEST_SIZE_MATCH(xXF86MiscSetKbdSettingsReq); if (xf86GetVerbosity() > 1) - ErrorF("SetKbdSettings - type: %d rate: %d delay: %d snumlk: %d\n", + DEBUG_P("SetKbdSettings - type: %d rate: %d delay: %d snumlk: %d\n", (int)stuff->kbdtype, (int)stuff->rate, (int)stuff->delay, stuff->servnumlock); @@ -434,12 +435,12 @@ ProcXF86MiscSetKbdSettings(client) case MISC_RET_BADVAL: return BadValue; case MISC_RET_BADKBDTYPE: return MISCERR(XF86MiscBadKbdType); default: - ErrorF("Unexpected return from MiscExtApply(KEYBOARD) = %d\n", ret); + DEBUG_P("Unexpected return from MiscExtApply(KEYBOARD) = %d\n", ret); return BadImplementation; } if (xf86GetVerbosity() > 1) - ErrorF("SetKbdSettings - Succeeded\n"); + DEBUG_P("SetKbdSettings - Succeeded\n"); return (client->noClientException); } @@ -457,7 +458,7 @@ ProcXF86MiscSetGrabKeysState(client) if ((status = MiscExtSetGrabKeysState(client, stuff->enable)) == 0) { if (xf86GetVerbosity() > 1) - ErrorF("SetGrabKeysState - %s\n", + DEBUG_P("SetGrabKeysState - %s\n", stuff->enable ? "enabled" : "disabled"); } @@ -493,7 +494,7 @@ ProcXF86MiscSetClientVersion(ClientPtr client) M_SETPRIV(client, pPriv); } if (xf86GetVerbosity() > 1) - ErrorF("SetClientVersion: %i %i\n",stuff->major,stuff->minor); + DEBUG_P("SetClientVersion: %i %i\n",stuff->major,stuff->minor); pPriv->major = stuff->major; pPriv->minor = stuff->minor; From c38feeb1492d9a47379b2e4d77dbadd8c421d17f Mon Sep 17 00:00:00 2001 From: Maarten Maathuis Date: Thu, 14 Feb 2008 18:52:47 +0100 Subject: [PATCH 048/112] Fix typo in commit b8b7cdf6df3d338c50db670ce4cfd245f9fa8844. --- hw/xfree86/dixmods/extmod/xf86misc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/xfree86/dixmods/extmod/xf86misc.c b/hw/xfree86/dixmods/extmod/xf86misc.c index 3164d7501..d2ee59580 100644 --- a/hw/xfree86/dixmods/extmod/xf86misc.c +++ b/hw/xfree86/dixmods/extmod/xf86misc.c @@ -111,7 +111,6 @@ static unsigned char XF86MiscReqCode = 0; # define DEBUG_P(x) ErrorF(x"\n"); #else # define DEBUG_P(x) do {} while (0) -} #endif #define MISCERR(x) (miscErrorBase + x) From 3e0353c78571890f849a1db47b0540aacc6793bc Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 15 Feb 2008 06:42:48 +1100 Subject: [PATCH 049/112] Bah, macros are hard. --- hw/xfree86/dixmods/extmod/xf86misc.c | 50 +++++++++------------------- 1 file changed, 15 insertions(+), 35 deletions(-) diff --git a/hw/xfree86/dixmods/extmod/xf86misc.c b/hw/xfree86/dixmods/extmod/xf86misc.c index d2ee59580..8127afdff 100644 --- a/hw/xfree86/dixmods/extmod/xf86misc.c +++ b/hw/xfree86/dixmods/extmod/xf86misc.c @@ -108,7 +108,7 @@ static unsigned char XF86MiscReqCode = 0; #endif #ifdef DEBUG -# define DEBUG_P(x) ErrorF(x"\n"); +# define DEBUG_P(x) ErrorF x; #else # define DEBUG_P(x) do {} while (0) #endif @@ -120,8 +120,6 @@ XFree86MiscExtensionInit(void) { ExtensionEntry* extEntry; - DEBUG_P("XFree86MiscExtensionInit"); - if (!xf86GetModInDevEnabled()) return; @@ -154,8 +152,6 @@ ProcXF86MiscQueryVersion(client) xXF86MiscQueryVersionReply rep; register int n; - DEBUG_P("XF86MiscQueryVersion"); - REQUEST_SIZE_MATCH(xXF86MiscQueryVersionReq); rep.type = X_Reply; rep.length = 0; @@ -252,8 +248,6 @@ ProcXF86MiscGetMouseSettings(client) register int n; int devnamelen; - DEBUG_P("XF86MiscGetMouseSettings"); - REQUEST_SIZE_MATCH(xXF86MiscGetMouseSettingsReq); rep.type = X_Reply; rep.sequenceNumber = client->sequence; @@ -303,8 +297,6 @@ ProcXF86MiscGetKbdSettings(client) pointer kbd; register int n; - DEBUG_P("XF86MiscGetKbdSettings"); - REQUEST_SIZE_MATCH(xXF86MiscGetKbdSettingsReq); rep.type = X_Reply; rep.length = 0; @@ -338,19 +330,17 @@ ProcXF86MiscSetMouseSettings(client) REQUEST(xXF86MiscSetMouseSettingsReq); - DEBUG_P("XF86MiscSetMouseSettings"); - REQUEST_AT_LEAST_SIZE(xXF86MiscSetMouseSettingsReq); ClientVersion(client, &major, &minor); if (xf86GetVerbosity() > 1) { - DEBUG_P("SetMouseSettings - type: %d brate: %d srate: %d chdmid: %d\n", + DEBUG_P(("SetMouseSettings - type: %d brate: %d srate: %d chdmid: %d\n", (int)stuff->mousetype, (int)stuff->baudrate, - (int)stuff->samplerate, stuff->chordmiddle); - DEBUG_P(" em3but: %d em3tim: %d res: %d flags: %ld\n", + (int)stuff->samplerate, stuff->chordmiddle)); + DEBUG_P((" em3but: %d em3tim: %d res: %d flags: %ld\n", stuff->emulate3buttons, (int)stuff->emulate3timeout, - (int)stuff->resolution, (unsigned long)stuff->flags); + (int)stuff->resolution, (unsigned long)stuff->flags)); } if ((mouse = MiscExtCreateStruct(MISC_POINTER)) == (pointer) 0) @@ -376,7 +366,7 @@ ProcXF86MiscSetMouseSettings(client) return BadAlloc; strncpy(devname,(char*)(&stuff[1]),stuff->devnamelen); if (xf86GetVerbosity() > 1) - DEBUG_P("SetMouseSettings - device: %s\n",devname); + DEBUG_P(("SetMouseSettings - device: %s\n",devname)); MiscExtSetMouseDevice(mouse, devname); } } @@ -395,12 +385,12 @@ ProcXF86MiscSetMouseSettings(client) case MISC_RET_BADCOMBO: return MISCERR(XF86MiscBadMouseCombo); case MISC_RET_NOMODULE: return MISCERR(XF86MiscNoModule); default: - DEBUG_P("Unexpected return from MiscExtApply(POINTER) = %d\n", ret); + DEBUG_P(("Unexpected return from MiscExtApply(POINTER) = %d\n", ret)); return BadImplementation; } if (xf86GetVerbosity() > 1) - DEBUG_P("SetMouseSettings - Succeeded\n"); + DEBUG_P(("SetMouseSettings - Succeeded\n")); return (client->noClientException); } @@ -412,14 +402,12 @@ ProcXF86MiscSetKbdSettings(client) pointer kbd; REQUEST(xXF86MiscSetKbdSettingsReq); - DEBUG_P("XF86MiscSetKbdSettings"); - REQUEST_SIZE_MATCH(xXF86MiscSetKbdSettingsReq); if (xf86GetVerbosity() > 1) - DEBUG_P("SetKbdSettings - type: %d rate: %d delay: %d snumlk: %d\n", + DEBUG_P(("SetKbdSettings - type: %d rate: %d delay: %d snumlk: %d\n", (int)stuff->kbdtype, (int)stuff->rate, - (int)stuff->delay, stuff->servnumlock); + (int)stuff->delay, stuff->servnumlock)); if ((kbd = MiscExtCreateStruct(MISC_KEYBOARD)) == (pointer) 0) return BadAlloc; @@ -434,12 +422,12 @@ ProcXF86MiscSetKbdSettings(client) case MISC_RET_BADVAL: return BadValue; case MISC_RET_BADKBDTYPE: return MISCERR(XF86MiscBadKbdType); default: - DEBUG_P("Unexpected return from MiscExtApply(KEYBOARD) = %d\n", ret); + DEBUG_P(("Unexpected return from MiscExtApply(KEYBOARD) = %d\n", ret)); return BadImplementation; } if (xf86GetVerbosity() > 1) - DEBUG_P("SetKbdSettings - Succeeded\n"); + DEBUG_P(("SetKbdSettings - Succeeded\n")); return (client->noClientException); } @@ -451,14 +439,12 @@ ProcXF86MiscSetGrabKeysState(client) xXF86MiscSetGrabKeysStateReply rep; REQUEST(xXF86MiscSetGrabKeysStateReq); - DEBUG_P("XF86MiscSetGrabKeysState"); - REQUEST_SIZE_MATCH(xXF86MiscSetGrabKeysStateReq); if ((status = MiscExtSetGrabKeysState(client, stuff->enable)) == 0) { if (xf86GetVerbosity() > 1) - DEBUG_P("SetGrabKeysState - %s\n", - stuff->enable ? "enabled" : "disabled"); + DEBUG_P(("SetGrabKeysState - %s\n", + stuff->enable ? "enabled" : "disabled")); } rep.type = X_Reply; @@ -482,8 +468,6 @@ ProcXF86MiscSetClientVersion(ClientPtr client) MiscPrivPtr pPriv; - DEBUG_P("XF86MiscSetClientVersion"); - REQUEST_SIZE_MATCH(xXF86MiscSetClientVersionReq); if ((pPriv = M_GETPRIV(client)) == NULL) { @@ -493,7 +477,7 @@ ProcXF86MiscSetClientVersion(ClientPtr client) M_SETPRIV(client, pPriv); } if (xf86GetVerbosity() > 1) - DEBUG_P("SetClientVersion: %i %i\n",stuff->major,stuff->minor); + DEBUG_P(("SetClientVersion: %i %i\n",stuff->major,stuff->minor)); pPriv->major = stuff->major; pPriv->minor = stuff->minor; @@ -511,8 +495,6 @@ ProcXF86MiscGetFilePaths(client) register int n; int configlen, modulelen, loglen; - DEBUG_P("XF86MiscGetFilePaths"); - REQUEST_SIZE_MATCH(xXF86MiscGetFilePathsReq); rep.type = X_Reply; rep.sequenceNumber = client->sequence; @@ -559,8 +541,6 @@ ProcXF86MiscPassMessage(client) REQUEST(xXF86MiscPassMessageReq); - DEBUG_P("XF86MiscPassMessage"); - REQUEST_AT_LEAST_SIZE(xXF86MiscPassMessageReq); size = (sizeof(xXF86MiscPassMessageReq) + 3) >> 2; size+= (stuff->typelen + 3) >> 2; From cd78f0d0fc08e4e2339ed09dad1a12802de7729c Mon Sep 17 00:00:00 2001 From: Pierre Willenbrock Date: Thu, 7 Feb 2008 21:28:28 +0100 Subject: [PATCH 050/112] AIGLX: Fix crash after client using GLX_EXT_texture_from_pixmap died. --- GL/glx/glxdri.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/GL/glx/glxdri.c b/GL/glx/glxdri.c index 6c1a199f7..e405ee06f 100644 --- a/GL/glx/glxdri.c +++ b/GL/glx/glxdri.c @@ -185,6 +185,42 @@ __glXDRIdrawableDestroy(__GLXdrawable *drawable) { __GLXDRIdrawable *private = (__GLXDRIdrawable *) drawable; + int i; + + for (i = 0; i < screenInfo.numScreens; i++) { + __GLXDRIscreen * const screen = (__GLXDRIscreen *) + glxGetScreen(screenInfo.screens[i]); + + GLuint lastOverride = screen->lastTexOffsetOverride; + + if (lastOverride) { + __GLXDRIdrawable **texOffsetOverride = screen->texOffsetOverride; + int i; + + for (i = 0; i < lastOverride; i++) { + if (texOffsetOverride[i] == private) { + + texOffsetOverride[i] = NULL; + + if (i + 1 == lastOverride) { + lastOverride = 0; + + while (i--) { + if (texOffsetOverride[i]) { + lastOverride = i + 1; + break; + } + } + + screen->lastTexOffsetOverride = lastOverride; + + break; + } + } + } + } + } + (*private->driDrawable.destroyDrawable)(&private->driDrawable); /* If the X window was destroyed, the dri DestroyWindow hook will From 005e31d3de04e7003f84a94d30f2b75a9636266e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Fri, 15 Feb 2008 00:01:32 +0000 Subject: [PATCH 051/112] AIGLX: Refactor code common between __glXDRI{drawableDestroy,releaseTexImage}. --- GL/glx/glxdri.c | 107 +++++++++++++++++++----------------------------- 1 file changed, 41 insertions(+), 66 deletions(-) diff --git a/GL/glx/glxdri.c b/GL/glx/glxdri.c index e405ee06f..304fed2bd 100644 --- a/GL/glx/glxdri.c +++ b/GL/glx/glxdri.c @@ -180,6 +180,41 @@ __glXDRIenterServer(GLboolean rendering) DRIWakeupHandler(NULL, 0, NULL); } + +static void +__glXDRIdoReleaseTexImage(__GLXDRIscreen *screen, __GLXDRIdrawable *drawable) +{ + GLuint lastOverride = screen->lastTexOffsetOverride; + + if (lastOverride) { + __GLXDRIdrawable **texOffsetOverride = screen->texOffsetOverride; + int i; + + for (i = 0; i < lastOverride; i++) { + if (texOffsetOverride[i] == drawable) { + + texOffsetOverride[i] = NULL; + + if (i + 1 == lastOverride) { + lastOverride = 0; + + while (i--) { + if (texOffsetOverride[i]) { + lastOverride = i + 1; + break; + } + } + + screen->lastTexOffsetOverride = lastOverride; + + break; + } + } + } + } +} + + static void __glXDRIdrawableDestroy(__GLXdrawable *drawable) { @@ -188,37 +223,9 @@ __glXDRIdrawableDestroy(__GLXdrawable *drawable) int i; for (i = 0; i < screenInfo.numScreens; i++) { - __GLXDRIscreen * const screen = (__GLXDRIscreen *) - glxGetScreen(screenInfo.screens[i]); - - GLuint lastOverride = screen->lastTexOffsetOverride; - - if (lastOverride) { - __GLXDRIdrawable **texOffsetOverride = screen->texOffsetOverride; - int i; - - for (i = 0; i < lastOverride; i++) { - if (texOffsetOverride[i] == private) { - - texOffsetOverride[i] = NULL; - - if (i + 1 == lastOverride) { - lastOverride = 0; - - while (i--) { - if (texOffsetOverride[i]) { - lastOverride = i + 1; - break; - } - } - - screen->lastTexOffsetOverride = lastOverride; - - break; - } - } - } - } + __glXDRIdoReleaseTexImage((__GLXDRIscreen *) + glxGetScreen(screenInfo.screens[i]), + private); } (*private->driDrawable.destroyDrawable)(&private->driDrawable); @@ -561,41 +568,9 @@ __glXDRIreleaseTexImage(__GLXcontext *baseContext, int buffer, __GLXdrawable *pixmap) { - ScreenPtr pScreen = pixmap->pDraw->pScreen; - __GLXDRIdrawable *driDraw = - containerOf(pixmap, __GLXDRIdrawable, base); - __GLXDRIscreen * const screen = - (__GLXDRIscreen *) glxGetScreen(pScreen); - GLuint lastOverride = screen->lastTexOffsetOverride; - - if (lastOverride) { - __GLXDRIdrawable **texOffsetOverride = screen->texOffsetOverride; - int i; - - for (i = 0; i < lastOverride; i++) { - if (texOffsetOverride[i] == driDraw) { - if (screen->texOffsetFinish) - screen->texOffsetFinish((PixmapPtr)pixmap->pDraw); - - texOffsetOverride[i] = NULL; - - if (i + 1 == lastOverride) { - lastOverride = 0; - - while (i--) { - if (texOffsetOverride[i]) { - lastOverride = i + 1; - break; - } - } - - screen->lastTexOffsetOverride = lastOverride; - - break; - } - } - } - } + __glXDRIdoReleaseTexImage((__GLXDRIscreen *) + glxGetScreen(pixmap->pDraw->pScreen), + containerOf(pixmap, __GLXDRIdrawable, base)); return Success; } From b71dc54352bc56a889823040ec19c1d8e118a1f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Mon, 4 Feb 2008 11:58:24 -0500 Subject: [PATCH 052/112] Add DRI2 module. --- configure.ac | 14 ++ hw/xfree86/Makefile.am | 8 +- hw/xfree86/dri2/Makefile.am | 15 ++ hw/xfree86/dri2/dri2.c | 448 ++++++++++++++++++++++++++++++++++++ hw/xfree86/dri2/dri2.h | 77 +++++++ include/dix-config.h.in | 3 + include/xorg-config.h.in | 3 + include/xorg-server.h.in | 3 + 8 files changed, 569 insertions(+), 2 deletions(-) create mode 100644 hw/xfree86/dri2/Makefile.am create mode 100644 hw/xfree86/dri2/dri2.c create mode 100644 hw/xfree86/dri2/dri2.h diff --git a/configure.ac b/configure.ac index d8b78eadc..10aa24158 100644 --- a/configure.ac +++ b/configure.ac @@ -368,6 +368,7 @@ AM_CONDITIONAL(PPC_VIDEO, [test "x$PPC_VIDEO" = xyes]) AM_CONDITIONAL(SPARC64_VIDEO, [test "x$SPARC64_VIDEO" = xyes]) DRI=no +DRI2=no KDRIVE_HW=no dnl it would be nice to autodetect these *CONS_SUPPORTs case $host_os in @@ -380,6 +381,7 @@ case $host_os in AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console]) AC_DEFINE(SYSCONS_SUPPORT, 1, [System has syscons console]) DRI=yes + DRI2=yes ;; *netbsd*) AC_DEFINE(CSRG_BASED, 1, [System is BSD-like]) @@ -387,6 +389,7 @@ case $host_os in AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console]) AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console]) DRI=yes + DRI2=yes ;; *openbsd*) AC_DEFINE(CSRG_BASED, 1, [System is BSD-like]) @@ -395,6 +398,7 @@ case $host_os in ;; *linux*) DRI=yes + DRI2=yes KDRIVE_HW=yes ;; *solaris*) @@ -535,6 +539,7 @@ AC_ARG_ENABLE(xdmcp, AS_HELP_STRING([--disable-xdmcp], [Build XDMCP ext AC_ARG_ENABLE(xdm-auth-1, AS_HELP_STRING([--disable-xdm-auth-1], [Build XDM-Auth-1 extension (default: auto)]), [XDMAUTH=$enableval], [XDMAUTH=auto]) AC_ARG_ENABLE(glx, AS_HELP_STRING([--disable-glx], [Build GLX extension (default: enabled)]), [GLX=$enableval], [GLX=yes]) AC_ARG_ENABLE(dri, AS_HELP_STRING([--enable-dri], [Build DRI extension (default: auto)]), [DRI=$enableval]) +AC_ARG_ENABLE(dri2, AS_HELP_STRING([--enable-dri2], [Build DRI2 extension (default: auto)]), [DRI2=$enableval]) AC_ARG_ENABLE(xinerama, AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes]) AC_ARG_ENABLE(xf86vidmode, AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=auto]) AC_ARG_ENABLE(xf86misc, AS_HELP_STRING([--disable-xf86misc], [Build XF86Misc extension (default: auto)]), [XF86MISC=$enableval], [XF86MISC=auto]) @@ -857,6 +862,14 @@ if test "x$DRI" = xyes; then AC_SUBST(GL_CFLAGS) fi +AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes) +if test "x$DRI2" = xyes; then + # FIXME: Bump the versions once we have releases of these. + AC_DEFINE(DRI2, 1, [Build DRI2 extension]) + PKG_CHECK_MODULES([DRIPROTO], [xf86driproto >= 2.0.3]) + PKG_CHECK_MODULES([LIBDRM], [libdrm >= 2.3.1]) +fi + AM_CONDITIONAL(XINERAMA, [test "x$XINERAMA" = xyes]) if test "x$XINERAMA" = xyes; then AC_DEFINE(XINERAMA, 1, [Support Xinerama extension]) @@ -2129,6 +2142,7 @@ hw/xfree86/doc/devel/Makefile hw/xfree86/doc/man/Makefile hw/xfree86/doc/sgml/Makefile hw/xfree86/dri/Makefile +hw/xfree86/dri2/Makefile hw/xfree86/dummylib/Makefile hw/xfree86/exa/Makefile hw/xfree86/fbdevhw/Makefile diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am index 4afc3a4e5..03c2c3a3f 100644 --- a/hw/xfree86/Makefile.am +++ b/hw/xfree86/Makefile.am @@ -4,6 +4,10 @@ if DRI DRI_SUBDIR = dri endif +if DRI2 +DRI2_SUBDIR = dri2 +endif + if XF86UTILS XF86UTILS_SUBDIR = utils endif @@ -21,11 +25,11 @@ DOC_SUBDIR = doc SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support parser rac \ ramdac shadowfb vbe vgahw xaa $(MFB_SUBDIR) $(CFB_SUBDIR) \ xf8_16bpp loader dixmods exa modes \ - $(DRI_SUBDIR) $(XF86UTILS_SUBDIR) $(DOC_SUBDIR) + $(DRI_SUBDIR) $(DRI2_SUBDIR) $(XF86UTILS_SUBDIR) $(DOC_SUBDIR) DIST_SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support \ parser rac ramdac shadowfb vbe vgahw xaa xf1bpp xf4bpp \ - xf8_16bpp xf8_32bpp loader dixmods dri exa modes \ + xf8_16bpp xf8_32bpp loader dixmods dri dri2 exa modes \ utils doc bin_PROGRAMS = Xorg diff --git a/hw/xfree86/dri2/Makefile.am b/hw/xfree86/dri2/Makefile.am new file mode 100644 index 000000000..be3cea48f --- /dev/null +++ b/hw/xfree86/dri2/Makefile.am @@ -0,0 +1,15 @@ +libdri2_la_LTLIBRARIES = libdri2.la +libdri2_la_CFLAGS = \ + -DHAVE_XORG_CONFIG_H \ + -I@MESA_SOURCE@/include \ + @DIX_CFLAGS@ @DRIPROTO_CFLAGS@ @LIBDRM_CFLAGS@ \ + -I$(top_srcdir)/hw/xfree86/common \ + -I$(top_srcdir)/hw/xfree86/os-support/bus + +libdri2_la_LDFLAGS = -module -avoid-version @LIBDRM_LIBS@ +libdri2_ladir = $(moduledir)/extensions +libdri2_la_SOURCES = \ + dri2.c \ + dri2.h + +sdk_HEADERS = dri2.h diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c new file mode 100644 index 000000000..7c703a72c --- /dev/null +++ b/hw/xfree86/dri2/dri2.c @@ -0,0 +1,448 @@ +/* + * Copyright © 2007 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Soft- + * ware"), to deal in the Software without restriction, including without + * limitation the rights to use, copy, modify, merge, publish, distribute, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, provided that the above copyright + * notice(s) and this permission notice appear in all copies of the Soft- + * ware and that both the above copyright notice(s) and this permission + * notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- + * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY + * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN + * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- + * QUENTIAL 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 PERFOR- + * MANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall + * not be used in advertising or otherwise to promote the sale, use or + * other dealings in this Software without prior written authorization of + * the copyright holder. + * + * Authors: + * Kristian Høgsberg (krh@redhat.com) + */ + +#ifdef HAVE_XORG_CONFIG_H +#include +#endif + +#include +#include "xf86Module.h" +#include "scrnintstr.h" +#include "windowstr.h" +#include "dri2.h" +#include + +#include "xf86.h" + +static DevPrivateKey dri2ScreenPrivateKey = &dri2ScreenPrivateKey; +static DevPrivateKey dri2WindowPrivateKey = &dri2WindowPrivateKey; +static DevPrivateKey dri2PixmapPrivateKey = &dri2PixmapPrivateKey; + +typedef struct _DRI2DrawablePriv { + drm_drawable_t drawable; + unsigned int handle; +} DRI2DrawablePrivRec, *DRI2DrawablePrivPtr; + +typedef struct _DRI2Screen { + int fd; + drmBO sareaBO; + void *sarea; + unsigned int sareaSize; + const char *driverName; + int ddxVersionMajor; + int ddxVersionMinor; + int ddxVersionPatch; + + __DRIEventBuffer *buffer; + int locked; + + DRI2GetPixmapHandleProcPtr getPixmapHandle; + DRI2BeginClipNotifyProcPtr beginClipNotify; + DRI2EndClipNotifyProcPtr endClipNotify; + + ClipNotifyProcPtr ClipNotify; + HandleExposuresProcPtr HandleExposures; +} DRI2ScreenRec, *DRI2ScreenPtr; + +static DRI2ScreenPtr +DRI2GetScreen(ScreenPtr pScreen) +{ + return dixLookupPrivate(&pScreen->devPrivates, dri2ScreenPrivateKey); +} + +static void * +DRI2ScreenAllocEvent(DRI2ScreenPtr ds, size_t size) +{ + unsigned int *pad, mask = ds->buffer->size - 1; + size_t pad_size; + void *p; + + if ((ds->buffer->head & mask) + size > ds->buffer->size) { + /* The requested event size would wrap the buffer, so pad to + * the end and allocate the event from the start. */ + pad_size = ds->buffer->size - (ds->buffer->head & mask); + pad = (unsigned int *) + (ds->buffer->data + (ds->buffer->prealloc & mask)); + *pad = DRI2_EVENT_HEADER(DRI2_EVENT_PAD, pad_size); + ds->buffer->prealloc += pad_size; + } + + p = ds->buffer->data + (ds->buffer->prealloc & mask); + ds->buffer->prealloc += size; + + return p; +} + +static void +DRI2ScreenCommitEvents(DRI2ScreenPtr ds) +{ + ds->buffer->head = ds->buffer->prealloc; +} + +static void +DRI2PostDrawableConfig(DrawablePtr pDraw) +{ + ScreenPtr pScreen = pDraw->pScreen; + DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + DRI2DrawablePrivPtr pPriv; + WindowPtr pWin; + PixmapPtr pPixmap; + BoxPtr pBox; + BoxRec pixmapBox; + int nBox; + int i; + __DRIDrawableConfigEvent *e; + size_t size; + + if (pDraw->type == DRAWABLE_WINDOW) { + pWin = (WindowPtr) pDraw; + pPriv = dixLookupPrivate(&pWin->devPrivates, dri2WindowPrivateKey); + + nBox = REGION_NUM_RECTS(&pWin->clipList); + pBox = REGION_RECTS(&pWin->clipList); + + pPixmap = pScreen->GetWindowPixmap(pWin); + } else { + pPixmap = (PixmapPtr) pDraw; + pPriv = dixLookupPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey); + + pixmapBox.x1 = 0; + pixmapBox.y1 = 0; + pixmapBox.x2 = pDraw->width; + pixmapBox.y2 = pDraw->height; + nBox = 1; + pBox = &pixmapBox; + } + + if (!pPriv) + return; + + size = sizeof *e + nBox * sizeof e->rects[0]; + + e = DRI2ScreenAllocEvent(ds, size); + e->event_header = DRI2_EVENT_HEADER(DRI2_EVENT_DRAWABLE_CONFIG, size); + e->drawable = pPriv->drawable; + e->x = pDraw->x - pPixmap->screen_x; + e->y = pDraw->y - pPixmap->screen_y; + e->width = pDraw->width; + e->height = pDraw->height; + + e->num_rects = nBox; + for (i = 0; i < nBox; i++) { + e->rects[i].x1 = pBox->x1 - pPixmap->screen_x; + e->rects[i].y1 = pBox->y1 - pPixmap->screen_y; + e->rects[i].x2 = pBox->x2 - pPixmap->screen_x; + e->rects[i].y2 = pBox->y2 - pPixmap->screen_y; + pBox++; + } +} + +static void +DRI2PostBufferAttach(DrawablePtr pDraw) +{ + ScreenPtr pScreen = pDraw->pScreen; + DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + DRI2DrawablePrivPtr pPriv; + WindowPtr pWin; + PixmapPtr pPixmap; + __DRIBufferAttachEvent *e; + size_t size; + unsigned int handle, flags; + + if (pDraw->type == DRAWABLE_WINDOW) { + pWin = (WindowPtr) pDraw; + pPixmap = pScreen->GetWindowPixmap(pWin); + pPriv = dixLookupPrivate(&pWin->devPrivates, dri2WindowPrivateKey); + } else { + pPixmap = (PixmapPtr) pDraw; + pPriv = dixLookupPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey); + } + + if (!pPriv) + return; + + size = sizeof *e; + + handle = ds->getPixmapHandle(pPixmap, &flags); + if (handle == 0 || handle == pPriv->handle) + return; + + e = DRI2ScreenAllocEvent(ds, size); + e->event_header = DRI2_EVENT_HEADER(DRI2_EVENT_BUFFER_ATTACH, size); + e->drawable = pPriv->drawable; + e->buffer.attachment = DRI_DRAWABLE_BUFFER_FRONT_LEFT; + e->buffer.handle = handle; + e->buffer.pitch = pPixmap->devKind; + e->buffer.cpp = pPixmap->drawable.bitsPerPixel / 8; + e->buffer.flags = flags; + + pPriv->handle = handle; +} + +static void +DRI2ClipNotify(WindowPtr pWin, int dx, int dy) +{ + ScreenPtr pScreen = pWin->drawable.pScreen; + DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + + if (!ds->locked) { + ds->beginClipNotify(pScreen); + ds->locked = 1; + } + + if (ds->ClipNotify) { + pScreen->ClipNotify = ds->ClipNotify; + pScreen->ClipNotify(pWin, dx, dy); + pScreen->ClipNotify = DRI2ClipNotify; + } + + DRI2PostDrawableConfig(&pWin->drawable); + DRI2PostBufferAttach(&pWin->drawable); +} + +static void +DRI2HandleExposures(WindowPtr pWin) +{ + ScreenPtr pScreen = pWin->drawable.pScreen; + DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + + if (ds->HandleExposures) { + pScreen->HandleExposures = ds->HandleExposures; + pScreen->HandleExposures(pWin); + pScreen->HandleExposures = DRI2HandleExposures; + } + + DRI2ScreenCommitEvents(ds); + + if (ds->locked) { + ds->endClipNotify(pScreen); + ds->locked = 0; + } +} + +void +DRI2CloseScreen(ScreenPtr pScreen) +{ + DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + + pScreen->ClipNotify = ds->ClipNotify; + pScreen->HandleExposures = ds->HandleExposures; + + drmBOUnmap(ds->fd, &ds->sareaBO); + drmBOUnreference(ds->fd, &ds->sareaBO); + + xfree(ds); + dixSetPrivate(&pScreen->devPrivates, dri2ScreenPrivateKey, NULL); +} + +Bool +DRI2CreateDrawable(ScreenPtr pScreen, + DrawablePtr pDraw, drm_drawable_t *pDrmDrawable) +{ + DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + WindowPtr pWin; + PixmapPtr pPixmap; + DRI2DrawablePrivPtr pPriv; + DevPrivateKey key; + PrivateRec **devPrivates; + + if (pDraw->type == DRAWABLE_WINDOW) { + pWin = (WindowPtr) pDraw; + devPrivates = &pWin->devPrivates; + key = dri2WindowPrivateKey; + } else { + pPixmap = (PixmapPtr) pDraw; + devPrivates = &pPixmap->devPrivates; + key = dri2PixmapPrivateKey; + } + + pPriv = dixLookupPrivate(devPrivates, key); + if (pPriv == NULL) { + pPriv = xalloc(sizeof *pPriv); + if (drmCreateDrawable(ds->fd, &pPriv->drawable)) + return FALSE; + + dixSetPrivate(devPrivates, key, pPriv); + } + + *pDrmDrawable = pPriv->drawable; + + DRI2PostDrawableConfig(pDraw); + DRI2PostBufferAttach(pDraw); + DRI2ScreenCommitEvents(ds); + + return TRUE; +} + +void +DRI2DestroyDrawable(ScreenPtr pScreen, DrawablePtr pDraw) +{ + DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + PixmapPtr pPixmap; + WindowPtr pWin; + DRI2DrawablePrivPtr pPriv; + + if (pDraw->type == DRAWABLE_WINDOW) { + pWin = (WindowPtr) pDraw; + pPriv = dixLookupPrivate(&pWin->devPrivates, dri2WindowPrivateKey); + dixSetPrivate(&pWin->devPrivates, dri2WindowPrivateKey, NULL); + } else { + pPixmap = (PixmapPtr) pDraw; + pPriv = dixLookupPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey); + dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, NULL); + } + + if (pPriv == NULL) + return; + + drmDestroyDrawable(ds->fd, pPriv->drawable); + xfree(pPriv); +} + +Bool +DRI2Connect(ScreenPtr pScreen, int *fd, const char **driverName, + int *ddxMajor, int *ddxMinor, int *ddxPatch, + unsigned int *sareaHandle) +{ + DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + + if (ds == NULL) + return FALSE; + + *fd = ds->fd; + *driverName = ds->driverName; + *ddxMajor = ds->ddxVersionMajor; + *ddxMinor = ds->ddxVersionMinor; + *ddxPatch = ds->ddxVersionPatch; + *sareaHandle = ds->sareaBO.handle; + + return TRUE; +} + +static void * +DRI2SetupSAREA(ScreenPtr pScreen, size_t driverSareaSize) +{ + DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + unsigned long mask; + const size_t event_buffer_size = 32 * 1024; + + ds->sareaSize = + sizeof(*ds->buffer) + event_buffer_size + + driverSareaSize + + sizeof (unsigned int); + + mask = DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE | DRM_BO_FLAG_MAPPABLE | + DRM_BO_FLAG_MEM_LOCAL | DRM_BO_FLAG_SHAREABLE; + + if (drmBOCreate(ds->fd, ds->sareaSize, 1, NULL, mask, 0, &ds->sareaBO)) + return NULL; + + if (drmBOMap(ds->fd, &ds->sareaBO, + DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE, 0, &ds->sarea)) { + drmBOUnreference(ds->fd, &ds->sareaBO); + return NULL; + } + + xf86DrvMsg(pScreen->myNum, X_INFO, + "[DRI2] Allocated %d byte SAREA, BO handle 0x%08x\n", + ds->sareaSize, ds->sareaBO.handle); + memset(ds->sarea, 0, ds->sareaSize); + + ds->buffer = ds->sarea; + ds->buffer->block_header = + DRI2_SAREA_BLOCK_HEADER(DRI2_SAREA_BLOCK_EVENT_BUFFER, + sizeof *ds->buffer + event_buffer_size); + ds->buffer->size = event_buffer_size; + + return DRI2_SAREA_BLOCK_NEXT(ds->buffer); +} + +void * +DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info) +{ + DRI2ScreenPtr ds; + void *p; + + ds = xalloc(sizeof *ds); + if (!ds) + return NULL; + + ds->fd = info->fd; + ds->driverName = info->driverName; + ds->ddxVersionMajor = info->ddxVersionMajor; + ds->ddxVersionMinor = info->ddxVersionMinor; + ds->ddxVersionPatch = info->ddxVersionPatch; + + ds->getPixmapHandle = info->getPixmapHandle; + ds->beginClipNotify = info->beginClipNotify; + ds->endClipNotify = info->endClipNotify; + + ds->ClipNotify = pScreen->ClipNotify; + pScreen->ClipNotify = DRI2ClipNotify; + ds->HandleExposures = pScreen->HandleExposures; + pScreen->HandleExposures = DRI2HandleExposures; + + dixSetPrivate(&pScreen->devPrivates, dri2ScreenPrivateKey, ds); + + p = DRI2SetupSAREA(pScreen, info->driverSareaSize); + if (p == NULL) { + xfree(ds); + return NULL; + } + + xf86DrvMsg(pScreen->myNum, X_INFO, "[DRI2] Setup complete\n"); + + return p; +} + +static pointer +DRI2Setup(pointer module, pointer opts, int *errmaj, int *errmin) +{ + return (pointer) 1; +} + +static XF86ModuleVersionInfo DRI2VersRec = +{ + "dri2", + MODULEVENDORSTRING, + MODINFOSTRING1, + MODINFOSTRING2, + XORG_VERSION_CURRENT, + 1, 0, 0, + ABI_CLASS_EXTENSION, + ABI_EXTENSION_VERSION, + MOD_CLASS_NONE, + { 0, 0, 0, 0 } +}; + +_X_EXPORT XF86ModuleData dri2ModuleData = { &DRI2VersRec, DRI2Setup, NULL }; + diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h new file mode 100644 index 000000000..65b4c6b76 --- /dev/null +++ b/hw/xfree86/dri2/dri2.h @@ -0,0 +1,77 @@ +/* + * Copyright © 2007 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Soft- + * ware"), to deal in the Software without restriction, including without + * limitation the rights to use, copy, modify, merge, publish, distribute, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, provided that the above copyright + * notice(s) and this permission notice appear in all copies of the Soft- + * ware and that both the above copyright notice(s) and this permission + * notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- + * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY + * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN + * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- + * QUENTIAL 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 PERFOR- + * MANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall + * not be used in advertising or otherwise to promote the sale, use or + * other dealings in this Software without prior written authorization of + * the copyright holder. + * + * Authors: + * Kristian Høgsberg (krh@redhat.com) + */ + +#ifndef _DRI2_H_ +#define _DRI2_H_ + +typedef unsigned int (*DRI2GetPixmapHandleProcPtr)(PixmapPtr p, + unsigned int *flags); +typedef void (*DRI2BeginClipNotifyProcPtr)(ScreenPtr pScreen); +typedef void (*DRI2EndClipNotifyProcPtr)(ScreenPtr pScreen); + +typedef struct { + unsigned int version; /* Version of this struct */ + int fd; + size_t driverSareaSize; + const char *driverName; + int ddxVersionMajor, ddxVersionMinor, ddxVersionPatch; + DRI2GetPixmapHandleProcPtr getPixmapHandle; + DRI2BeginClipNotifyProcPtr beginClipNotify; + DRI2EndClipNotifyProcPtr endClipNotify; +} DRI2InfoRec, *DRI2InfoPtr; + +void *DRI2ScreenInit(ScreenPtr pScreen, + DRI2InfoPtr info); + +void DRI2CloseScreen(ScreenPtr pScreen); + +Bool DRI2Connect(ScreenPtr pScreen, + int *fd, + const char **driverName, + int *ddxMajor, + int *ddxMinor, + int *ddxPatch, + unsigned int *sareaHandle); + +void DRI2Lock(ScreenPtr pScreen); +void DRI2Unlock(ScreenPtr pScreen); + +Bool DRI2CreateDrawable(ScreenPtr pScreen, + DrawablePtr pDraw, + drm_drawable_t *pDrmDrawable); + +void DRI2DestroyDrawable(ScreenPtr pScreen, + DrawablePtr pDraw); + +void DRI2ExtensionInit(void); + +#endif diff --git a/include/dix-config.h.in b/include/dix-config.h.in index 068b55170..38639d684 100644 --- a/include/dix-config.h.in +++ b/include/dix-config.h.in @@ -436,6 +436,9 @@ #undef XEPHYR_DRI +/* Build DRI2 extension */ +#undef DRI2 + /* Build DBE support */ #undef DBE diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in index b91ea9260..0603eab67 100644 --- a/include/xorg-config.h.in +++ b/include/xorg-config.h.in @@ -54,6 +54,9 @@ /* Building DRI-capable DDX. */ #undef XF86DRI +/* Build DRI2 extension */ +#undef DRI2 + /* Solaris 8 or later? */ #undef __SOL8__ diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in index dc6f1b31f..1d41b4ce6 100644 --- a/include/xorg-server.h.in +++ b/include/xorg-server.h.in @@ -142,6 +142,9 @@ /* Build DRI extension */ #undef XF86DRI +/* Build DRI2 extension */ +#undef DRI2 + /* Build Xorg server */ #undef XORGSERVER From 879515b1399f87a47010532af70f34b9b09e2a9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Mon, 4 Feb 2008 13:13:35 -0500 Subject: [PATCH 053/112] Add GLX provider for DRI2. --- GL/glx/Makefile.am | 2 + GL/glx/glxdri2.c | 573 +++++++++++++++++++++++++++++++++ GL/glx/glxscreens.c | 26 ++ hw/xfree86/dixmods/glxmodule.c | 3 + 4 files changed, 604 insertions(+) create mode 100644 GL/glx/glxdri2.c diff --git a/GL/glx/Makefile.am b/GL/glx/Makefile.am index 4cf56e89d..e37e499c5 100644 --- a/GL/glx/Makefile.am +++ b/GL/glx/Makefile.am @@ -25,6 +25,7 @@ INCLUDES = \ -I$(top_srcdir)/hw/xfree86/os-support/bus \ -I$(top_srcdir)/hw/xfree86/common \ -I$(top_srcdir)/hw/xfree86/dri \ + -I$(top_srcdir)/hw/xfree86/dri2 \ -I$(top_srcdir)/mi @@ -36,6 +37,7 @@ nodist_libglx_la_SOURCES = indirect_size.h \ libglxdri_la_SOURCES = \ glxdri.c \ + glxdri2.c \ extension_string.c \ extension_string.h diff --git a/GL/glx/glxdri2.c b/GL/glx/glxdri2.c new file mode 100644 index 000000000..d8df604c2 --- /dev/null +++ b/GL/glx/glxdri2.c @@ -0,0 +1,573 @@ +/* + * Copyright © 2007 Red Hat, Inc + * + * 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, and that the name of Red Hat, + * Inc not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Red Hat, Inc makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * RED HAT, INC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN + * NO EVENT SHALL RED HAT, INC 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. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#define _XF86DRI_SERVER_ +#include +#include +#include +#include +#include + +#include "glxserver.h" +#include "glxutil.h" +#include "glcontextmodes.h" + +#include "g_disptab.h" +#include "glapitable.h" +#include "glapi.h" +#include "glthread.h" +#include "dispatch.h" +#include "extension_string.h" + +#define containerOf(ptr, type, member) \ + (type *)( (char *)ptr - offsetof(type,member) ) + +typedef struct __GLXDRIscreen __GLXDRIscreen; +typedef struct __GLXDRIcontext __GLXDRIcontext; +typedef struct __GLXDRIdrawable __GLXDRIdrawable; + +struct __GLXDRIscreen { + __GLXscreen base; + __DRIscreen driScreen; + void *driver; + int fd; + + xf86EnterVTProc *enterVT; + xf86LeaveVTProc *leaveVT; + + __DRIcopySubBufferExtension *copySubBuffer; + __DRIswapControlExtension *swapControl; + + unsigned char glx_enable_bits[__GLX_EXT_BYTES]; +}; + +struct __GLXDRIcontext { + __GLXcontext base; + __DRIcontext driContext; + drm_context_t hwContext; +}; + +struct __GLXDRIdrawable { + __GLXdrawable base; + __DRIdrawable driDrawable; +}; + +static const char CREATE_NEW_SCREEN_FUNC[] = __DRI2_CREATE_NEW_SCREEN_STRING; + +static void +__glXDRIdrawableDestroy(__GLXdrawable *drawable) +{ + __GLXDRIdrawable *private = (__GLXDRIdrawable *) drawable; + + (*private->driDrawable.destroyDrawable)(&private->driDrawable); + + /* If the X window was destroyed, the dri DestroyWindow hook will + * aready have taken care of this, so only call if pDraw isn't NULL. */ + if (drawable->pDraw != NULL) + DRI2DestroyDrawable(drawable->pDraw->pScreen, drawable->pDraw); + + xfree(private); +} + +static GLboolean +__glXDRIdrawableResize(__GLXdrawable *glxPriv) +{ + /* Nothing to do here, the DRI driver asks the server for drawable + * geometry when it sess the SAREA timestamps change.*/ + + return GL_TRUE; +} + +static GLboolean +__glXDRIdrawableSwapBuffers(__GLXdrawable *basePrivate) +{ + __GLXDRIdrawable *private = (__GLXDRIdrawable *) basePrivate; + + (*private->driDrawable.swapBuffers)(&private->driDrawable); + + return TRUE; +} + + +static int +__glXDRIdrawableSwapInterval(__GLXdrawable *baseDrawable, int interval) +{ + __GLXDRIdrawable *draw = (__GLXDRIdrawable *) baseDrawable; + __GLXDRIscreen *screen = (__GLXDRIscreen *) + glxGetScreen(baseDrawable->pDraw->pScreen); + + if (screen->swapControl) + screen->swapControl->setSwapInterval(&draw->driDrawable, interval); + + return 0; +} + + +static void +__glXDRIdrawableCopySubBuffer(__GLXdrawable *basePrivate, + int x, int y, int w, int h) +{ + __GLXDRIdrawable *private = (__GLXDRIdrawable *) basePrivate; + __GLXDRIscreen *screen = (__GLXDRIscreen *) + glxGetScreen(basePrivate->pDraw->pScreen); + + if (screen->copySubBuffer) + screen->copySubBuffer->copySubBuffer(&private->driDrawable, + x, y, w, h); +} + +static void +__glXDRIcontextDestroy(__GLXcontext *baseContext) +{ + __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext; + __GLXDRIscreen *screen = (__GLXDRIscreen *) baseContext->pGlxScreen; + + context->driContext.destroyContext(&context->driContext); + drmDestroyContext(screen->fd, context->hwContext); + __glXContextDestroy(&context->base); + xfree(context); +} + +static int +__glXDRIcontextMakeCurrent(__GLXcontext *baseContext) +{ + __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext; + __GLXDRIdrawable *draw = (__GLXDRIdrawable *) baseContext->drawPriv; + __GLXDRIdrawable *read = (__GLXDRIdrawable *) baseContext->readPriv; + + return (*context->driContext.bindContext)(&context->driContext, + &draw->driDrawable, + &read->driDrawable); +} + +static int +__glXDRIcontextLoseCurrent(__GLXcontext *baseContext) +{ + __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext; + + return (*context->driContext.unbindContext)(&context->driContext); +} + +static int +__glXDRIcontextCopy(__GLXcontext *baseDst, __GLXcontext *baseSrc, + unsigned long mask) +{ + __GLXDRIcontext *dst = (__GLXDRIcontext *) baseDst; + __GLXDRIcontext *src = (__GLXDRIcontext *) baseSrc; + + /* FIXME: We will need to add DRIcontext::copyContext for this. */ + + (void) dst; + (void) src; + + return FALSE; +} + +static int +__glXDRIcontextForceCurrent(__GLXcontext *baseContext) +{ + __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext; + __GLXDRIdrawable *draw = (__GLXDRIdrawable *) baseContext->drawPriv; + __GLXDRIdrawable *read = (__GLXDRIdrawable *) baseContext->readPriv; + + return (*context->driContext.bindContext)(&context->driContext, + &draw->driDrawable, + &read->driDrawable); +} + +static int +__glXDRIbindTexImage(__GLXcontext *baseContext, + int buffer, + __GLXdrawable *glxPixmap) +{ + return Success; +} + +static int +__glXDRIreleaseTexImage(__GLXcontext *baseContext, + int buffer, + __GLXdrawable *pixmap) +{ + return Success; +} + +static __GLXtextureFromPixmap __glXDRItextureFromPixmap = { + __glXDRIbindTexImage, + __glXDRIreleaseTexImage +}; + +static void +__glXDRIscreenDestroy(__GLXscreen *baseScreen) +{ + __GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen; + + screen->driScreen.destroyScreen(&screen->driScreen); + + dlclose(screen->driver); + + __glXScreenDestroy(baseScreen); + + xfree(screen); +} + +static __GLXcontext * +__glXDRIscreenCreateContext(__GLXscreen *baseScreen, + __GLcontextModes *modes, + __GLXcontext *baseShareContext) +{ + __GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen; + __GLXDRIcontext *context, *shareContext; + __DRIcontext *driShare; + + shareContext = (__GLXDRIcontext *) baseShareContext; + if (shareContext) + driShare = &shareContext->driContext; + else + driShare = NULL; + + context = xalloc(sizeof *context); + if (context == NULL) + return NULL; + + memset(context, 0, sizeof *context); + context->base.destroy = __glXDRIcontextDestroy; + context->base.makeCurrent = __glXDRIcontextMakeCurrent; + context->base.loseCurrent = __glXDRIcontextLoseCurrent; + context->base.copy = __glXDRIcontextCopy; + context->base.forceCurrent = __glXDRIcontextForceCurrent; + context->base.textureFromPixmap = &__glXDRItextureFromPixmap; + + if (drmCreateContext(screen->fd, &context->hwContext)) + return GL_FALSE; + + context->driContext.private = + screen->driScreen.createNewContext(&screen->driScreen, + modes, + 0, /* render type */ + driShare, + context->hwContext, + &context->driContext); + + return &context->base; +} + +static __GLXdrawable * +__glXDRIscreenCreateDrawable(__GLXscreen *screen, + DrawablePtr pDraw, + int type, + XID drawId, + __GLcontextModes *modes) +{ + __GLXDRIscreen *driScreen = (__GLXDRIscreen *) screen; + __GLXDRIdrawable *private; + GLboolean retval; + drm_drawable_t hwDrawable; + + private = xalloc(sizeof *private); + if (private == NULL) + return NULL; + + memset(private, 0, sizeof *private); + + if (!__glXDrawableInit(&private->base, screen, + pDraw, type, drawId, modes)) { + xfree(private); + return NULL; + } + + private->base.destroy = __glXDRIdrawableDestroy; + private->base.resize = __glXDRIdrawableResize; + private->base.swapBuffers = __glXDRIdrawableSwapBuffers; + private->base.copySubBuffer = __glXDRIdrawableCopySubBuffer; + + retval = DRI2CreateDrawable(screen->pScreen, pDraw, &hwDrawable); + + private->driDrawable.private = + (driScreen->driScreen.createNewDrawable)(&driScreen->driScreen, + modes, + &private->driDrawable, + hwDrawable, 0, NULL); + + return &private->base; +} + +static int +getUST(int64_t *ust) +{ + struct timeval tv; + + if (ust == NULL) + return -EFAULT; + + if (gettimeofday(&tv, NULL) == 0) { + ust[0] = (tv.tv_sec * 1000000) + tv.tv_usec; + return 0; + } else { + return -errno; + } +} + +static void __glXReportDamage(__DRIdrawable *driDraw, + int x, int y, + drm_clip_rect_t *rects, int num_rects, + GLboolean front_buffer) +{ + __GLXDRIdrawable *drawable = + containerOf(driDraw, __GLXDRIdrawable, driDrawable); + DrawablePtr pDraw = drawable->base.pDraw; + RegionRec region; + + REGION_INIT(pDraw->pScreen, ®ion, (BoxPtr) rects, num_rects); + REGION_TRANSLATE(pScreen, ®ion, pDraw->x, pDraw->y); + DamageDamageRegion(pDraw, ®ion); + REGION_UNINIT(pDraw->pScreen, ®ion); +} + +/* Table of functions that we export to the driver. */ +static const __DRIinterfaceMethods interface_methods = { + _gl_context_modes_create, + _gl_context_modes_destroy, + + NULL, + + getUST, + NULL, + + __glXReportDamage, +}; + +static const char dri_driver_path[] = DRI_DRIVER_PATH; + +static Bool +glxDRIEnterVT (int index, int flags) +{ + __GLXDRIscreen *screen = (__GLXDRIscreen *) + glxGetScreen(screenInfo.screens[index]); + + LogMessage(X_INFO, "AIGLX: Resuming AIGLX clients after VT switch\n"); + + if (!(*screen->enterVT) (index, flags)) + return FALSE; + + glxResumeClients(); + + return TRUE; +} + +static void +glxDRILeaveVT (int index, int flags) +{ + __GLXDRIscreen *screen = (__GLXDRIscreen *) + glxGetScreen(screenInfo.screens[index]); + + LogMessage(X_INFO, "AIGLX: Suspending AIGLX clients for VT switch\n"); + + glxSuspendClients(); + + return (*screen->leaveVT) (index, flags); +} + +static void +initializeExtensions(__GLXDRIscreen *screen) +{ + const __DRIextension **extensions; + int i; + + extensions = screen->driScreen.getExtensions(&screen->driScreen); + for (i = 0; extensions[i]; i++) { +#ifdef __DRI_COPY_SUB_BUFFER + if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) { + screen->copySubBuffer = (__DRIcopySubBufferExtension *) extensions[i]; + __glXEnableExtension(screen->glx_enable_bits, + "GLX_MESA_copy_sub_buffer"); + + LogMessage(X_INFO, "AIGLX: enabled GLX_MESA_copy_sub_buffer\n"); + } +#endif + +#ifdef __DRI_SWAP_CONTROL + if (strcmp(extensions[i]->name, __DRI_SWAP_CONTROL) == 0) { + screen->swapControl = (__DRIswapControlExtension *) extensions[i]; + __glXEnableExtension(screen->glx_enable_bits, + "GLX_SGI_swap_control"); + __glXEnableExtension(screen->glx_enable_bits, + "GLX_MESA_swap_control"); + + LogMessage(X_INFO, "AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control\n"); + } +#endif + /* Ignore unknown extensions */ + } +} + +static __GLXscreen * +__glXDRIscreenProbe(ScreenPtr pScreen) +{ + __DRI2_CREATE_NEW_SCREEN_FUNC *createNewScreen; + __DRIversion ddx_version; + __DRIversion dri_version; + __DRIversion drm_version; + drmVersionPtr version; + const char *driverName; + __GLXDRIscreen *screen; + char filename[128]; + size_t buffer_size; + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + unsigned int sareaHandle; + + screen = xalloc(sizeof *screen); + if (screen == NULL) + return NULL; + memset(screen, 0, sizeof *screen); + + if (!xf86LoaderCheckSymbol("DRI2Connect") || + !DRI2Connect(pScreen, + &screen->fd, + &driverName, + &ddx_version.major, + &ddx_version.minor, + &ddx_version.patch, + &sareaHandle)) { + LogMessage(X_INFO, + "AIGLX: Screen %d is not DRI2 capable\n", pScreen->myNum); + return NULL; + } + + screen->base.destroy = __glXDRIscreenDestroy; + screen->base.createContext = __glXDRIscreenCreateContext; + screen->base.createDrawable = __glXDRIscreenCreateDrawable; + screen->base.swapInterval = __glXDRIdrawableSwapInterval; + screen->base.pScreen = pScreen; + + __glXInitExtensionEnableBits(screen->glx_enable_bits); + + /* DRI protocol version. */ + dri_version.major = XF86DRI_MAJOR_VERSION; + dri_version.minor = XF86DRI_MINOR_VERSION; + dri_version.patch = XF86DRI_PATCH_VERSION; + + version = drmGetVersion(screen->fd); + if (version) { + drm_version.major = version->version_major; + drm_version.minor = version->version_minor; + drm_version.patch = version->version_patchlevel; + drmFreeVersion(version); + } + else { + drm_version.major = -1; + drm_version.minor = -1; + drm_version.patch = -1; + } + + snprintf(filename, sizeof filename, "%s/%s_dri.so", + dri_driver_path, driverName); + + screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); + if (screen->driver == NULL) { + LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n", + filename, dlerror()); + goto handle_error; + } + + createNewScreen = dlsym(screen->driver, CREATE_NEW_SCREEN_FUNC); + if (createNewScreen == NULL) { + LogMessage(X_ERROR, "AIGLX error: dlsym for %s failed (%s)\n", + CREATE_NEW_SCREEN_FUNC, dlerror()); + goto handle_error; + } + + screen->driScreen.private = + (*createNewScreen)(pScreen->myNum, + &screen->driScreen, + &ddx_version, + &dri_version, + &drm_version, + screen->fd, + sareaHandle, + &interface_methods, + &screen->base.fbconfigs); + + if (screen->driScreen.private == NULL) { + LogMessage(X_ERROR, "AIGLX error: Calling driver entry point failed"); + goto handle_error; + } + + initializeExtensions(screen); + + __glXScreenInit(&screen->base, pScreen); + + buffer_size = __glXGetExtensionString(screen->glx_enable_bits, NULL); + if (buffer_size > 0) { + if (screen->base.GLXextensions != NULL) { + xfree(screen->base.GLXextensions); + } + + screen->base.GLXextensions = xnfalloc(buffer_size); + (void) __glXGetExtensionString(screen->glx_enable_bits, + screen->base.GLXextensions); + } + + screen->enterVT = pScrn->EnterVT; + pScrn->EnterVT = glxDRIEnterVT; + screen->leaveVT = pScrn->LeaveVT; + pScrn->LeaveVT = glxDRILeaveVT; + + LogMessage(X_INFO, + "AIGLX: Loaded and initialized %s\n", filename); + + return &screen->base; + + handle_error: + if (screen->driver) + dlclose(screen->driver); + + xfree(screen); + + LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n"); + + return NULL; +} + +__GLXprovider __glXDRI2Provider = { + __glXDRIscreenProbe, + "DRI2", + NULL +}; diff --git a/GL/glx/glxscreens.c b/GL/glx/glxscreens.c index 88773a785..6575b271d 100644 --- a/GL/glx/glxscreens.c +++ b/GL/glx/glxscreens.c @@ -280,6 +280,30 @@ void GlxSetVisualConfigs(int nconfigs, * call it. */ } +static void +filterOutNativeConfigs(__GLXscreen *pGlxScreen) +{ + __GLcontextModes *m, *next, *native_modes, **last; + ScreenPtr pScreen = pGlxScreen->pScreen; + int i, depth; + + last = &pGlxScreen->fbconfigs; + for (m = pGlxScreen->fbconfigs; m != NULL; m = next) { + next = m->next; + depth = m->redBits + m->blueBits + m->greenBits; + + for (i = 0; i < pScreen->numVisuals; i++) { + if (pScreen->visuals[i].nplanes == depth) { + *last = m; + last = &m->next; + break; + } + } + } + + *last = NULL; +} + static XID findVisualForConfig(ScreenPtr pScreen, __GLcontextModes *m) { @@ -513,6 +537,8 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen) pGlxScreen->CloseScreen = pScreen->CloseScreen; pScreen->CloseScreen = glxCloseScreen; + filterOutNativeConfigs(pGlxScreen); + i = 0; for (m = pGlxScreen->fbconfigs; m != NULL; m = m->next) { m->fbconfigID = FakeClientID(0); diff --git a/hw/xfree86/dixmods/glxmodule.c b/hw/xfree86/dixmods/glxmodule.c index 0ff867de0..a1a088629 100644 --- a/hw/xfree86/dixmods/glxmodule.c +++ b/hw/xfree86/dixmods/glxmodule.c @@ -125,6 +125,9 @@ glxSetup(pointer module, pointer opts, int *errmaj, int *errmin) provider = LoaderSymbol("__glXDRIProvider"); if (provider) GlxPushProvider(provider); + provider = LoaderSymbol("__glXDRI2Provider"); + if (provider) + GlxPushProvider(provider); } switch (xf86Info.glxVisuals) { From 0ffb6a3ad010e80fe8f973fc228d549f9dd3effd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Thu, 14 Feb 2008 22:20:56 -0500 Subject: [PATCH 054/112] GLX: Implement support for TTM BO based TFP when available. --- GL/glx/glxdri2.c | 60 ++++++++++++++++++++++++++++++++++++++++++ hw/xfree86/dri2/dri2.c | 8 ++++++ hw/xfree86/dri2/dri2.h | 3 +++ 3 files changed, 71 insertions(+) diff --git a/GL/glx/glxdri2.c b/GL/glx/glxdri2.c index d8df604c2..d1c8d417e 100644 --- a/GL/glx/glxdri2.c +++ b/GL/glx/glxdri2.c @@ -75,6 +75,7 @@ struct __GLXDRIscreen { __DRIcopySubBufferExtension *copySubBuffer; __DRIswapControlExtension *swapControl; + __DRItexBufferExtension *texBuffer; unsigned char glx_enable_bits[__GLX_EXT_BYTES]; }; @@ -213,6 +214,55 @@ __glXDRIcontextForceCurrent(__GLXcontext *baseContext) &read->driDrawable); } +#ifdef __DRI_TEX_BUFFER + +#define isPowerOfTwo(n) (((n) & ((n) - 1 )) == 0) + +static int +__glXDRIbindTexImage(__GLXcontext *baseContext, + int buffer, + __GLXdrawable *glxPixmap) +{ + ScreenPtr pScreen = glxPixmap->pDraw->pScreen; + __GLXDRIscreen * const screen = (__GLXDRIscreen *) glxGetScreen(pScreen); + PixmapPtr pixmap; + __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext; + unsigned int flags; + int w, h, target; + + if (screen->texBuffer == NULL) + return Success; + + pixmap = (PixmapPtr) glxPixmap->pDraw; + w = pixmap->drawable.width; + h = pixmap->drawable.height; + + if (!isPowerOfTwo(w) || !isPowerOfTwo(h)) + target = GL_TEXTURE_RECTANGLE_ARB; + else + target = GL_TEXTURE_2D; + + screen->texBuffer->setTexBuffer(&context->driContext, + target, + DRI2GetPixmapHandle(pixmap, &flags), + pixmap->drawable.depth, + pixmap->devKind, + h); + + return Success; +} + +static int +__glXDRIreleaseTexImage(__GLXcontext *baseContext, + int buffer, + __GLXdrawable *pixmap) +{ + /* FIXME: Just unbind the texture? */ + return Success; +} + +#else + static int __glXDRIbindTexImage(__GLXcontext *baseContext, int buffer, @@ -229,6 +279,8 @@ __glXDRIreleaseTexImage(__GLXcontext *baseContext, return Success; } +#endif + static __GLXtextureFromPixmap __glXDRItextureFromPixmap = { __glXDRIbindTexImage, __glXDRIreleaseTexImage @@ -434,6 +486,14 @@ initializeExtensions(__GLXDRIscreen *screen) LogMessage(X_INFO, "AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control\n"); } #endif + +#ifdef __DRI_TEX_BUFFER + if (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) { + screen->texBuffer = (__DRItexBufferExtension *) extensions[i]; + /* GLX_EXT_texture_from_pixmap is always enabled. */ + LogMessage(X_INFO, "AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects\n"); + } +#endif /* Ignore unknown extensions */ } } diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c index 7c703a72c..3bc533ede 100644 --- a/hw/xfree86/dri2/dri2.c +++ b/hw/xfree86/dri2/dri2.c @@ -348,6 +348,14 @@ DRI2Connect(ScreenPtr pScreen, int *fd, const char **driverName, return TRUE; } +unsigned int +DRI2GetPixmapHandle(PixmapPtr pPixmap, unsigned int *flags) +{ + DRI2ScreenPtr ds = DRI2GetScreen(pPixmap->drawable.pScreen); + + return ds->getPixmapHandle(pPixmap, flags); +} + static void * DRI2SetupSAREA(ScreenPtr pScreen, size_t driverSareaSize) { diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h index 65b4c6b76..c687a93f6 100644 --- a/hw/xfree86/dri2/dri2.h +++ b/hw/xfree86/dri2/dri2.h @@ -62,6 +62,9 @@ Bool DRI2Connect(ScreenPtr pScreen, int *ddxPatch, unsigned int *sareaHandle); +unsigned int DRI2GetPixmapHandle(PixmapPtr pPixmap, + unsigned int *flags); + void DRI2Lock(ScreenPtr pScreen); void DRI2Unlock(ScreenPtr pScreen); From a7d936c4ac8e3d7227ecbfe0ddc6cc257b450458 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Mon, 11 Feb 2008 16:09:03 -0800 Subject: [PATCH 055/112] XQuartz: Fixed EXTRA_DIST to include localization (cherry picked from commit 1b338c2a9330c85490a7c24d52adf24b124b70e6) --- hw/xquartz/bundle/Makefile.am | 56 +++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/hw/xquartz/bundle/Makefile.am b/hw/xquartz/bundle/Makefile.am index 00d540fee..95cfd19f7 100644 --- a/hw/xquartz/bundle/Makefile.am +++ b/hw/xquartz/bundle/Makefile.am @@ -18,9 +18,59 @@ EXTRA_DIST = \ Info.plist \ X11.icns \ bundle-main.c \ + X11.xcodeproj/project.pbxproj + Dutch.lproj/InfoPlist.strings \ + Dutch.lproj/Localizable.strings \ + Dutch.lproj/main.nib/keyedobjects.nib \ English.lproj/InfoPlist.strings \ English.lproj/Localizable.strings \ - English.lproj/main.nib/classes.nib \ - English.lproj/main.nib/info.nib \ + English.lproj/main.nib/designable.nib \ English.lproj/main.nib/keyedobjects.nib \ - X11.xcodeproj/project.pbxproj + French.lproj/InfoPlist.strings \ + French.lproj/Localizable.strings \ + French.lproj/main.nib/keyedobjects.nib \ + German.lproj/InfoPlist.strings \ + German.lproj/Localizable.strings \ + German.lproj/main.nib/keyedobjects.nib \ + Italian.lproj/InfoPlist.strings \ + Italian.lproj/Localizable.strings \ + Italian.lproj/main.nib/keyedobjects.nib \ + Japanese.lproj/InfoPlist.strings \ + Japanese.lproj/Localizable.strings \ + Japanese.lproj/main.nib/keyedobjects.nib \ + Spanish.lproj/InfoPlist.strings \ + Spanish.lproj/Localizable.strings \ + Spanish.lproj/main.nib/keyedobjects.nib \ + da.lproj/InfoPlist.strings \ + da.lproj/Localizable.strings \ + da.lproj/main.nib/keyedobjects.nib \ + fi.lproj/InfoPlist.strings \ + fi.lproj/Localizable.strings \ + fi.lproj/main.nib/keyedobjects.nib \ + ko.lproj/InfoPlist.strings \ + ko.lproj/Localizable.strings \ + ko.lproj/main.nib/keyedobjects.nib \ + no.lproj/InfoPlist.strings \ + no.lproj/Localizable.strings \ + no.lproj/main.nib/keyedobjects.nib \ + pl.lproj/InfoPlist.strings \ + pl.lproj/Localizable.strings \ + pl.lproj/main.nib/keyedobjects.nib \ + pt.lproj/InfoPlist.strings \ + pt.lproj/Localizable.strings \ + pt.lproj/main.nib/keyedobjects.nib \ + pt_PT.lproj/InfoPlist.strings \ + pt_PT.lproj/Localizable.strings \ + pt_PT.lproj/main.nib/keyedobjects.nib \ + ru.lproj/InfoPlist.strings \ + ru.lproj/Localizable.strings \ + ru.lproj/main.nib/keyedobjects.nib \ + sv.lproj/InfoPlist.strings \ + sv.lproj/Localizable.strings \ + sv.lproj/main.nib/keyedobjects.nib \ + zh_CN.lproj/InfoPlist.strings \ + zh_CN.lproj/Localizable.strings \ + zh_CN.lproj/main.nib/keyedobjects.nib \ + zh_TW.lproj/InfoPlist.strings \ + zh_TW.lproj/Localizable.strings \ + zh_TW.lproj/main.nib/keyedobjects.nib From d103820bb8635c63b34b85b45cad95ed9c152d90 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Sat, 16 Feb 2008 00:35:50 -0800 Subject: [PATCH 056/112] Fixed unescaped newline in EXTRA_DIST (cherry picked from commit 567c172c4d400fdfe69e7b096a3877fce5c2de9f) --- hw/xquartz/bundle/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xquartz/bundle/Makefile.am b/hw/xquartz/bundle/Makefile.am index 95cfd19f7..093a102b5 100644 --- a/hw/xquartz/bundle/Makefile.am +++ b/hw/xquartz/bundle/Makefile.am @@ -18,7 +18,7 @@ EXTRA_DIST = \ Info.plist \ X11.icns \ bundle-main.c \ - X11.xcodeproj/project.pbxproj + X11.xcodeproj/project.pbxproj \ Dutch.lproj/InfoPlist.strings \ Dutch.lproj/Localizable.strings \ Dutch.lproj/main.nib/keyedobjects.nib \ From b95059c20746a71e60ef152bb627e1d5c2210d75 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Sat, 16 Feb 2008 01:33:13 -0800 Subject: [PATCH 057/112] Added Xquartz.plist to EXTRA_DIST (cherry picked from commit 70f9495e0c1f1459507064b673fe57b1c90d3c2c) --- hw/xquartz/bundle/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/xquartz/bundle/Makefile.am b/hw/xquartz/bundle/Makefile.am index 093a102b5..801fdc7d8 100644 --- a/hw/xquartz/bundle/Makefile.am +++ b/hw/xquartz/bundle/Makefile.am @@ -15,6 +15,7 @@ resourcedir=$(libdir)/X11/xserver resource_DATA = Xquartz.plist EXTRA_DIST = \ + $(resource_DATA) \ Info.plist \ X11.icns \ bundle-main.c \ From 70c0592a97c7dc9db0576d32b3bdbe4766520509 Mon Sep 17 00:00:00 2001 From: Maarten Maathuis Date: Sun, 17 Feb 2008 11:21:01 +0100 Subject: [PATCH 058/112] Resize composite overlay window when the root window changes. - This allows some compositing managers to work, even after randr12 has changed the root window size. - Thanks to ajax for figuring out the best place to put this. - Example: - xf86RandR12SetMode() calls EnableDisableFBAccess(). - That calls xf86SetRootClip() which in turn calls ResizeChildrenWinSize(). - The final step is the call to PositionWindow(). --- composite/compwindow.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/composite/compwindow.c b/composite/compwindow.c index 579236713..ee0f7d270 100644 --- a/composite/compwindow.c +++ b/composite/compwindow.c @@ -165,6 +165,29 @@ compCheckRedirect (WindowPtr pWin) return TRUE; } +static int +updateOverlayWindow(ScreenPtr pScreen) +{ + CompScreenPtr cs; + WindowPtr pWin; /* overlay window */ + XID vlist[2]; + + cs = GetCompScreen(pScreen); + if ((pWin = cs->pOverlayWin) != NULL) { + if ((pWin->drawable.width == pScreen->width) && + (pWin->drawable.height == pScreen->height)) + return Success; + + /* Let's resize the overlay window. */ + vlist[0] = pScreen->width; + vlist[1] = pScreen->height; + return ConfigureWindow(pWin, CWWidth | CWHeight, vlist, wClient(pWin)); + } + + /* Let's be on the safe side and not assume an overlay window is always allocated. */ + return Success; +} + Bool compPositionWindow (WindowPtr pWin, int x, int y) { @@ -203,6 +226,8 @@ compPositionWindow (WindowPtr pWin, int x, int y) cs->PositionWindow = pScreen->PositionWindow; pScreen->PositionWindow = compPositionWindow; compCheckTree (pWin->drawable.pScreen); + if (updateOverlayWindow(pScreen) != Success) + ret = FALSE; return ret; } From a48cc88ea2674c28b69b8d738b168cbafcf4001f Mon Sep 17 00:00:00 2001 From: Maarten Maathuis Date: Sun, 17 Feb 2008 18:47:28 +0100 Subject: [PATCH 059/112] Fix rotation for multi-monitor situation. - The (x,y)-coordinates of the crtc were not being passed as xFixed values, which made it an obscure bug to find. - Fix bug #13787. --- hw/xfree86/modes/xf86Rotate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c index c129d9b92..e2d6295b9 100644 --- a/hw/xfree86/modes/xf86Rotate.c +++ b/hw/xfree86/modes/xf86Rotate.c @@ -580,9 +580,9 @@ xf86CrtcRotate (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation) } else { - PictureTransformTranslate (&crtc_to_fb, &fb_to_crtc, crtc->x, crtc->y); + PictureTransformTranslate (&crtc_to_fb, &fb_to_crtc, F(crtc->x), F(crtc->y)); PictureTransformIsInverse ("offset", &crtc_to_fb, &fb_to_crtc); - + /* * these are the size of the shadow pixmap, which * matches the mode, not the pre-rotated copy in the From e4eb7e5842f0f56f07e9cf3b16249c172d0a975d Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Wed, 30 Jan 2008 23:24:14 +1100 Subject: [PATCH 060/112] XKB: Delete xkberrs.c Get rid of the XKB errors code to save a bunch of space. --- include/xkbsrv.h | 3 +-- xkb/Makefile.am | 1 - xkb/xkberrs.c | 37 ------------------------------------- 3 files changed, 1 insertion(+), 40 deletions(-) delete mode 100644 xkb/xkberrs.c diff --git a/include/xkbsrv.h b/include/xkbsrv.h index bf386e72d..c7709f727 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -310,8 +310,7 @@ extern CARD32 xkbDebugFlags; #define _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t)) #define _XkbFree(p) Xfree(p) -#define _XkbLibError(c,l,d) \ - { _XkbErrCode= (c); _XkbErrLocation= (l); _XkbErrData= (d); } +#define _XkbLibError(c,l,d) /* Epoch fail */ #define _XkbErrCode2(a,b) ((XID)((((unsigned int)(a))<<24)|((b)&0xffffff))) #define _XkbErrCode3(a,b,c) _XkbErrCode2(a,(((unsigned int)(b))<<16)|(c)) #define _XkbErrCode4(a,b,c,d) _XkbErrCode3(a,b,((((unsigned int)(c))<<8)|(d))) diff --git a/xkb/Makefile.am b/xkb/Makefile.am index 78cdf7196..e750d6098 100644 --- a/xkb/Makefile.am +++ b/xkb/Makefile.am @@ -32,7 +32,6 @@ XKBFILE_SRCS = \ xkmread.c \ xkbtext.c \ xkbfmisc.c \ - xkberrs.c \ xkbout.c X11_SRCS = \ diff --git a/xkb/xkberrs.c b/xkb/xkberrs.c deleted file mode 100644 index 3534356c6..000000000 --- a/xkb/xkberrs.c +++ /dev/null @@ -1,37 +0,0 @@ -/************************************************************ - Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. - - 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 Silicon Graphics not be - used in advertising or publicity pertaining to distribution - of the software without specific prior written permission. - Silicon Graphics makes no representation about the suitability - of this software for any purpose. It is provided "as is" - without any express or implied warranty. - - SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - GRAPHICS 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. - - ********************************************************/ - -#ifdef HAVE_DIX_CONFIG_H -#include -#endif - -#include -#include -#include - -unsigned _XkbErrCode; -char * _XkbErrLocation= NULL; -unsigned _XkbErrData; From 37867626e314e74031378a8a4ff06f69b899a3b2 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 1 Feb 2008 14:41:04 +1100 Subject: [PATCH 061/112] main(): Remove uncredible failure NO, NO, NO. NO. The only way this could possibly be worse is if you were viewing it in Comic Sans. --- dix/main.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/dix/main.c b/dix/main.c index 9114f00d9..068dae92e 100644 --- a/dix/main.c +++ b/dix/main.c @@ -137,8 +137,6 @@ _X_EXPORT PaddingInfo PixmapWidthPaddingInfo[33]; int connBlockScreenStart; -static int restart = 0; - _X_EXPORT void NotImplemented(xEvent *from, xEvent *to) { @@ -264,13 +262,6 @@ main(int argc, char *argv[], char *envp[]) DarwinHandleGUI(argc, argv, envp); #endif - /* Notice if we're restarted. Probably this is because we jumped through - * an uninitialized pointer */ - if (restart) - FatalError("server restarted. Jumped through uninitialized pointer?\n"); - else - restart = 1; - CheckUserParameters(argc, argv, envp); CheckUserAuthorization(); From 68bd7ac1930b5cffb6657b8d5f5bf8ae58eae8d9 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Sun, 3 Feb 2008 23:12:15 +1100 Subject: [PATCH 062/112] XKB: Move headers into the server tree We need to start breaking the XKB API to enforce sanity, so drag whichever headers we need to do so into the server tree, as the client API is set in stone, being part of Xlib. --- hw/dmx/examples/xinput.c | 2 +- hw/dmx/examples/xled.c | 2 +- hw/xfree86/utils/xorgcfg/text-mode.c | 2 +- hw/xfree86/utils/xorgconfig/xorgconfig.c | 2 +- include/xkbsrv.h | 4 +- include/xkbstr.h | 613 +++++++++++++++++++++ xkb/XKBAlloc.c | 2 +- xkb/XKBGAlloc.c | 2 +- xkb/maprules.c | 2 +- xkb/xkb.c | 2 +- xkb/xkb.h | 5 +- xkb/xkbInit.c | 4 +- xkb/xkbSwap.c | 2 +- xkb/xkbUtils.c | 2 +- xkb/xkbfile.h | 480 +++++++++++++++++ xkb/xkbfmisc.c | 4 +- xkb/xkbgeom.h | 655 +++++++++++++++++++++++ xkb/xkbout.c | 6 +- xkb/xkbtext.c | 4 +- xkb/xkmread.c | 4 +- 20 files changed, 1774 insertions(+), 25 deletions(-) create mode 100644 include/xkbstr.h create mode 100644 xkb/xkbfile.h create mode 100644 xkb/xkbgeom.h diff --git a/hw/dmx/examples/xinput.c b/hw/dmx/examples/xinput.c index 74353a93b..b6753e4ec 100644 --- a/hw/dmx/examples/xinput.c +++ b/hw/dmx/examples/xinput.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include "xkbstr.h" #include #include diff --git a/hw/dmx/examples/xled.c b/hw/dmx/examples/xled.c index 270f80511..322dda2f3 100644 --- a/hw/dmx/examples/xled.c +++ b/hw/dmx/examples/xled.c @@ -37,7 +37,7 @@ #include #include #include -#include +#include "xkbstr.h" #include int main(int argc, char **argv) diff --git a/hw/xfree86/utils/xorgcfg/text-mode.c b/hw/xfree86/utils/xorgcfg/text-mode.c index 0b6e65482..c1fa67ed7 100644 --- a/hw/xfree86/utils/xorgcfg/text-mode.c +++ b/hw/xfree86/utils/xorgcfg/text-mode.c @@ -39,7 +39,7 @@ #endif #include #include -#include +#include "xkbstr.h" #include #include "cards.h" #include "config.h" diff --git a/hw/xfree86/utils/xorgconfig/xorgconfig.c b/hw/xfree86/utils/xorgconfig/xorgconfig.c index 30eb83182..d537abac4 100644 --- a/hw/xfree86/utils/xorgconfig/xorgconfig.c +++ b/hw/xfree86/utils/xorgconfig/xorgconfig.c @@ -106,7 +106,7 @@ #include #include -#include +#include "xkbstr.h" #include #define MAX_XKBOPTIONS 5 diff --git a/include/xkbsrv.h b/include/xkbsrv.h index c7709f727..e825f33a0 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -27,7 +27,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #ifndef _XKBSRV_H_ #define _XKBSRV_H_ -#ifdef XKB_IN_SERVER #define XkbAllocClientMap SrvXkbAllocClientMap #define XkbAllocServerMap SrvXkbAllocServerMap #define XkbChangeTypesOfKey SrvXkbChangeTypesOfKey @@ -52,10 +51,9 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #define XkbVirtualModsToReal SrvXkbVirtualModsToReal #define XkbChangeKeycodeRange SrvXkbChangeKeycodeRange #define XkbApplyVirtualModChanges SrvXkbApplyVirtualModChanges -#endif -#include #include +#include "xkbstr.h" #include "inputstr.h" typedef struct _XkbInterest { diff --git a/include/xkbstr.h b/include/xkbstr.h new file mode 100644 index 000000000..e519e657d --- /dev/null +++ b/include/xkbstr.h @@ -0,0 +1,613 @@ +/************************************************************ +Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. + +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 Silicon Graphics not be +used in advertising or publicity pertaining to distribution +of the software without specific prior written permission. +Silicon Graphics makes no representation about the suitability +of this software for any purpose. It is provided "as is" +without any express or implied warranty. + +SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +GRAPHICS 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. + +********************************************************/ + +#ifndef _XKBSTR_H_ +#define _XKBSTR_H_ + +#include + +#define XkbCharToInt(v) ((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f)) +#define XkbIntTo2Chars(i,h,l) (((h)=((i>>8)&0xff)),((l)=((i)&0xff))) + +#if defined(WORD64) && defined(UNSIGNEDBITFIELDS) +#define Xkb2CharsToInt(h,l) ((h)&0x80?(int)(((h)<<8)|(l)|(~0xffff)):\ + (int)(((h)<<8)|(l)&0x7fff)) +#else +#define Xkb2CharsToInt(h,l) ((short)(((h)<<8)|(l))) +#endif + + /* + * Common data structures and access macros + */ + +typedef struct _XkbStateRec { + unsigned char group; + unsigned char locked_group; + unsigned short base_group; + unsigned short latched_group; + unsigned char mods; + unsigned char base_mods; + unsigned char latched_mods; + unsigned char locked_mods; + unsigned char compat_state; + unsigned char grab_mods; + unsigned char compat_grab_mods; + unsigned char lookup_mods; + unsigned char compat_lookup_mods; + unsigned short ptr_buttons; +} XkbStateRec,*XkbStatePtr; +#define XkbModLocks(s) ((s)->locked_mods) +#define XkbStateMods(s) ((s)->base_mods|(s)->latched_mods|XkbModLocks(s)) +#define XkbGroupLock(s) ((s)->locked_group) +#define XkbStateGroup(s) ((s)->base_group+(s)->latched_group+XkbGroupLock(s)) +#define XkbStateFieldFromRec(s) XkbBuildCoreState((s)->lookup_mods,(s)->group) +#define XkbGrabStateFromRec(s) XkbBuildCoreState((s)->grab_mods,(s)->group) + +typedef struct _XkbMods { + unsigned char mask; /* effective mods */ + unsigned char real_mods; + unsigned short vmods; +} XkbModsRec,*XkbModsPtr; + +typedef struct _XkbKTMapEntry { + Bool active; + unsigned char level; + XkbModsRec mods; +} XkbKTMapEntryRec,*XkbKTMapEntryPtr; + +typedef struct _XkbKeyType { + XkbModsRec mods; + unsigned char num_levels; + unsigned char map_count; + XkbKTMapEntryPtr map; + XkbModsPtr preserve; + Atom name; + Atom * level_names; +} XkbKeyTypeRec, *XkbKeyTypePtr; + +#define XkbNumGroups(g) ((g)&0x0f) +#define XkbOutOfRangeGroupInfo(g) ((g)&0xf0) +#define XkbOutOfRangeGroupAction(g) ((g)&0xc0) +#define XkbOutOfRangeGroupNumber(g) (((g)&0x30)>>4) +#define XkbSetGroupInfo(g,w,n) (((w)&0xc0)|(((n)&3)<<4)|((g)&0x0f)) +#define XkbSetNumGroups(g,n) (((g)&0xf0)|((n)&0x0f)) + + /* + * Structures and access macros used primarily by the server + */ + +typedef struct _XkbBehavior { + unsigned char type; + unsigned char data; +} XkbBehavior; + +#define XkbAnyActionDataSize 7 +typedef struct _XkbAnyAction { + unsigned char type; + unsigned char data[XkbAnyActionDataSize]; +} XkbAnyAction; + +typedef struct _XkbModAction { + unsigned char type; + unsigned char flags; + unsigned char mask; + unsigned char real_mods; + unsigned char vmods1; + unsigned char vmods2; +} XkbModAction; +#define XkbModActionVMods(a) \ + ((short)(((a)->vmods1<<8)|((a)->vmods2))) +#define XkbSetModActionVMods(a,v) \ + (((a)->vmods1=(((v)>>8)&0xff)),(a)->vmods2=((v)&0xff)) + +typedef struct _XkbGroupAction { + unsigned char type; + unsigned char flags; + char group_XXX; +} XkbGroupAction; +#define XkbSAGroup(a) (XkbCharToInt((a)->group_XXX)) +#define XkbSASetGroup(a,g) ((a)->group_XXX=(g)) + +typedef struct _XkbISOAction { + unsigned char type; + unsigned char flags; + unsigned char mask; + unsigned char real_mods; + char group_XXX; + unsigned char affect; + unsigned char vmods1; + unsigned char vmods2; +} XkbISOAction; + +typedef struct _XkbPtrAction { + unsigned char type; + unsigned char flags; + unsigned char high_XXX; + unsigned char low_XXX; + unsigned char high_YYY; + unsigned char low_YYY; +} XkbPtrAction; +#define XkbPtrActionX(a) (Xkb2CharsToInt((a)->high_XXX,(a)->low_XXX)) +#define XkbPtrActionY(a) (Xkb2CharsToInt((a)->high_YYY,(a)->low_YYY)) +#define XkbSetPtrActionX(a,x) (XkbIntTo2Chars(x,(a)->high_XXX,(a)->low_XXX)) +#define XkbSetPtrActionY(a,y) (XkbIntTo2Chars(y,(a)->high_YYY,(a)->low_YYY)) + +typedef struct _XkbPtrBtnAction { + unsigned char type; + unsigned char flags; + unsigned char count; + unsigned char button; +} XkbPtrBtnAction; + +typedef struct _XkbPtrDfltAction { + unsigned char type; + unsigned char flags; + unsigned char affect; + char valueXXX; +} XkbPtrDfltAction; +#define XkbSAPtrDfltValue(a) (XkbCharToInt((a)->valueXXX)) +#define XkbSASetPtrDfltValue(a,c) ((a)->valueXXX= ((c)&0xff)) + +typedef struct _XkbSwitchScreenAction { + unsigned char type; + unsigned char flags; + char screenXXX; +} XkbSwitchScreenAction; +#define XkbSAScreen(a) (XkbCharToInt((a)->screenXXX)) +#define XkbSASetScreen(a,s) ((a)->screenXXX= ((s)&0xff)) + +typedef struct _XkbCtrlsAction { + unsigned char type; + unsigned char flags; + unsigned char ctrls3; + unsigned char ctrls2; + unsigned char ctrls1; + unsigned char ctrls0; +} XkbCtrlsAction; +#define XkbActionSetCtrls(a,c) (((a)->ctrls3=(((c)>>24)&0xff)),\ + ((a)->ctrls2=(((c)>>16)&0xff)),\ + ((a)->ctrls1=(((c)>>8)&0xff)),\ + ((a)->ctrls0=((c)&0xff))) +#define XkbActionCtrls(a) ((((unsigned int)(a)->ctrls3)<<24)|\ + (((unsigned int)(a)->ctrls2)<<16)|\ + (((unsigned int)(a)->ctrls1)<<8)|\ + ((unsigned int)((a)->ctrls0))) + +typedef struct _XkbMessageAction { + unsigned char type; + unsigned char flags; + unsigned char message[6]; +} XkbMessageAction; + +typedef struct _XkbRedirectKeyAction { + unsigned char type; + unsigned char new_key; + unsigned char mods_mask; + unsigned char mods; + unsigned char vmods_mask0; + unsigned char vmods_mask1; + unsigned char vmods0; + unsigned char vmods1; +} XkbRedirectKeyAction; + +#define XkbSARedirectVMods(a) ((((unsigned int)(a)->vmods1)<<8)|\ + ((unsigned int)(a)->vmods0)) +#define XkbSARedirectSetVMods(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),\ + ((a)->vmods_mask0=((m)&0xff))) +#define XkbSARedirectVModsMask(a) ((((unsigned int)(a)->vmods_mask1)<<8)|\ + ((unsigned int)(a)->vmods_mask0)) +#define XkbSARedirectSetVModsMask(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),\ + ((a)->vmods_mask0=((m)&0xff))) + +typedef struct _XkbDeviceBtnAction { + unsigned char type; + unsigned char flags; + unsigned char count; + unsigned char button; + unsigned char device; +} XkbDeviceBtnAction; + +typedef struct _XkbDeviceValuatorAction { + unsigned char type; + unsigned char device; + unsigned char v1_what; + unsigned char v1_ndx; + unsigned char v1_value; + unsigned char v2_what; + unsigned char v2_ndx; + unsigned char v2_value; +} XkbDeviceValuatorAction; + +typedef union _XkbAction { + XkbAnyAction any; + XkbModAction mods; + XkbGroupAction group; + XkbISOAction iso; + XkbPtrAction ptr; + XkbPtrBtnAction btn; + XkbPtrDfltAction dflt; + XkbSwitchScreenAction screen; + XkbCtrlsAction ctrls; + XkbMessageAction msg; + XkbRedirectKeyAction redirect; + XkbDeviceBtnAction devbtn; + XkbDeviceValuatorAction devval; + unsigned char type; +} XkbAction; + +typedef struct _XkbControls { + unsigned char mk_dflt_btn; + unsigned char num_groups; + unsigned char groups_wrap; + XkbModsRec internal; + XkbModsRec ignore_lock; + unsigned int enabled_ctrls; + unsigned short repeat_delay; + unsigned short repeat_interval; + unsigned short slow_keys_delay; + unsigned short debounce_delay; + unsigned short mk_delay; + unsigned short mk_interval; + unsigned short mk_time_to_max; + unsigned short mk_max_speed; + short mk_curve; + unsigned short ax_options; + unsigned short ax_timeout; + unsigned short axt_opts_mask; + unsigned short axt_opts_values; + unsigned int axt_ctrls_mask; + unsigned int axt_ctrls_values; + unsigned char per_key_repeat[XkbPerKeyBitArraySize]; +} XkbControlsRec, *XkbControlsPtr; + +#define XkbAX_AnyFeedback(c) ((c)->enabled_ctrls&XkbAccessXFeedbackMask) +#define XkbAX_NeedOption(c,w) ((c)->ax_options&(w)) +#define XkbAX_NeedFeedback(c,w) (XkbAX_AnyFeedback(c)&&XkbAX_NeedOption(c,w)) + +typedef struct _XkbServerMapRec { + unsigned short num_acts; + unsigned short size_acts; + XkbAction *acts; + + XkbBehavior *behaviors; + unsigned short *key_acts; +#if defined(__cplusplus) || defined(c_plusplus) + /* explicit is a C++ reserved word */ + unsigned char *c_explicit; +#else + unsigned char *explicit; +#endif + unsigned char vmods[XkbNumVirtualMods]; + unsigned short *vmodmap; +} XkbServerMapRec, *XkbServerMapPtr; + +#define XkbSMKeyActionsPtr(m,k) (&(m)->acts[(m)->key_acts[k]]) + + /* + * Structures and access macros used primarily by clients + */ + +typedef struct _XkbSymMapRec { + unsigned char kt_index[XkbNumKbdGroups]; + unsigned char group_info; + unsigned char width; + unsigned short offset; +} XkbSymMapRec, *XkbSymMapPtr; + +typedef struct _XkbClientMapRec { + unsigned char size_types; + unsigned char num_types; + XkbKeyTypePtr types; + + unsigned short size_syms; + unsigned short num_syms; + KeySym *syms; + XkbSymMapPtr key_sym_map; + + unsigned char *modmap; +} XkbClientMapRec, *XkbClientMapPtr; + +#define XkbCMKeyGroupInfo(m,k) ((m)->key_sym_map[k].group_info) +#define XkbCMKeyNumGroups(m,k) (XkbNumGroups((m)->key_sym_map[k].group_info)) +#define XkbCMKeyGroupWidth(m,k,g) (XkbCMKeyType(m,k,g)->num_levels) +#define XkbCMKeyGroupsWidth(m,k) ((m)->key_sym_map[k].width) +#define XkbCMKeyTypeIndex(m,k,g) ((m)->key_sym_map[k].kt_index[g&0x3]) +#define XkbCMKeyType(m,k,g) (&(m)->types[XkbCMKeyTypeIndex(m,k,g)]) +#define XkbCMKeyNumSyms(m,k) (XkbCMKeyGroupsWidth(m,k)*XkbCMKeyNumGroups(m,k)) +#define XkbCMKeySymsOffset(m,k) ((m)->key_sym_map[k].offset) +#define XkbCMKeySymsPtr(m,k) (&(m)->syms[XkbCMKeySymsOffset(m,k)]) + + /* + * Compatibility structures and access macros + */ + +typedef struct _XkbSymInterpretRec { + KeySym sym; + unsigned char flags; + unsigned char match; + unsigned char mods; + unsigned char virtual_mod; + XkbAnyAction act; +} XkbSymInterpretRec,*XkbSymInterpretPtr; + +typedef struct _XkbCompatMapRec { + XkbSymInterpretPtr sym_interpret; + XkbModsRec groups[XkbNumKbdGroups]; + unsigned short num_si; + unsigned short size_si; +} XkbCompatMapRec, *XkbCompatMapPtr; + +typedef struct _XkbIndicatorMapRec { + unsigned char flags; + unsigned char which_groups; + unsigned char groups; + unsigned char which_mods; + XkbModsRec mods; + unsigned int ctrls; +} XkbIndicatorMapRec, *XkbIndicatorMapPtr; + +#define XkbIM_IsAuto(i) ((((i)->flags&XkbIM_NoAutomatic)==0)&&\ + (((i)->which_groups&&(i)->groups)||\ + ((i)->which_mods&&(i)->mods.mask)||\ + ((i)->ctrls))) +#define XkbIM_InUse(i) (((i)->flags)||((i)->which_groups)||\ + ((i)->which_mods)||((i)->ctrls)) + + +typedef struct _XkbIndicatorRec { + unsigned long phys_indicators; + XkbIndicatorMapRec maps[XkbNumIndicators]; +} XkbIndicatorRec,*XkbIndicatorPtr; + +typedef struct _XkbKeyNameRec { + char name[XkbKeyNameLength]; +} XkbKeyNameRec,*XkbKeyNamePtr; + +typedef struct _XkbKeyAliasRec { + char real[XkbKeyNameLength]; + char alias[XkbKeyNameLength]; +} XkbKeyAliasRec,*XkbKeyAliasPtr; + + /* + * Names for everything + */ +typedef struct _XkbNamesRec { + Atom keycodes; + Atom geometry; + Atom symbols; + Atom types; + Atom compat; + Atom vmods[XkbNumVirtualMods]; + Atom indicators[XkbNumIndicators]; + Atom groups[XkbNumKbdGroups]; + XkbKeyNamePtr keys; + XkbKeyAliasPtr key_aliases; + Atom *radio_groups; + Atom phys_symbols; + + unsigned char num_keys; + unsigned char num_key_aliases; + unsigned short num_rg; +} XkbNamesRec,*XkbNamesPtr; + +typedef struct _XkbGeometry *XkbGeometryPtr; + /* + * Tie it all together into one big keyboard description + */ +typedef struct _XkbDesc { + struct _XDisplay * dpy; + unsigned short flags; + unsigned short device_spec; + KeyCode min_key_code; + KeyCode max_key_code; + + XkbControlsPtr ctrls; + XkbServerMapPtr server; + XkbClientMapPtr map; + XkbIndicatorPtr indicators; + XkbNamesPtr names; + XkbCompatMapPtr compat; + XkbGeometryPtr geom; +} XkbDescRec, *XkbDescPtr; +#define XkbKeyKeyTypeIndex(d,k,g) (XkbCMKeyTypeIndex((d)->map,k,g)) +#define XkbKeyKeyType(d,k,g) (XkbCMKeyType((d)->map,k,g)) +#define XkbKeyGroupWidth(d,k,g) (XkbCMKeyGroupWidth((d)->map,k,g)) +#define XkbKeyGroupsWidth(d,k) (XkbCMKeyGroupsWidth((d)->map,k)) +#define XkbKeyGroupInfo(d,k) (XkbCMKeyGroupInfo((d)->map,(k))) +#define XkbKeyNumGroups(d,k) (XkbCMKeyNumGroups((d)->map,(k))) +#define XkbKeyNumSyms(d,k) (XkbCMKeyNumSyms((d)->map,(k))) +#define XkbKeySymsPtr(d,k) (XkbCMKeySymsPtr((d)->map,(k))) +#define XkbKeySym(d,k,n) (XkbKeySymsPtr(d,k)[n]) +#define XkbKeySymEntry(d,k,sl,g) \ + (XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl)))) +#define XkbKeyAction(d,k,n) \ + (XkbKeyHasActions(d,k)?&XkbKeyActionsPtr(d,k)[n]:NULL) +#define XkbKeyActionEntry(d,k,sl,g) \ + (XkbKeyHasActions(d,k)?\ + XkbKeyAction(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))):NULL) + +#define XkbKeyHasActions(d,k) ((d)->server->key_acts[k]!=0) +#define XkbKeyNumActions(d,k) (XkbKeyHasActions(d,k)?XkbKeyNumSyms(d,k):1) +#define XkbKeyActionsPtr(d,k) (XkbSMKeyActionsPtr((d)->server,k)) +#define XkbKeycodeInRange(d,k) (((k)>=(d)->min_key_code)&&\ + ((k)<=(d)->max_key_code)) +#define XkbNumKeys(d) ((d)->max_key_code-(d)->min_key_code+1) + + + /* + * The following structures can be used to track changes + * to a keyboard device + */ +typedef struct _XkbMapChanges { + unsigned short changed; + KeyCode min_key_code; + KeyCode max_key_code; + unsigned char first_type; + unsigned char num_types; + KeyCode first_key_sym; + unsigned char num_key_syms; + KeyCode first_key_act; + unsigned char num_key_acts; + KeyCode first_key_behavior; + unsigned char num_key_behaviors; + KeyCode first_key_explicit; + unsigned char num_key_explicit; + KeyCode first_modmap_key; + unsigned char num_modmap_keys; + KeyCode first_vmodmap_key; + unsigned char num_vmodmap_keys; + unsigned char pad; + unsigned short vmods; +} XkbMapChangesRec,*XkbMapChangesPtr; + +typedef struct _XkbControlsChanges { + unsigned int changed_ctrls; + unsigned int enabled_ctrls_changes; + Bool num_groups_changed; +} XkbControlsChangesRec,*XkbControlsChangesPtr; + +typedef struct _XkbIndicatorChanges { + unsigned int state_changes; + unsigned int map_changes; +} XkbIndicatorChangesRec,*XkbIndicatorChangesPtr; + +typedef struct _XkbNameChanges { + unsigned int changed; + unsigned char first_type; + unsigned char num_types; + unsigned char first_lvl; + unsigned char num_lvls; + unsigned char num_aliases; + unsigned char num_rg; + unsigned char first_key; + unsigned char num_keys; + unsigned short changed_vmods; + unsigned long changed_indicators; + unsigned char changed_groups; +} XkbNameChangesRec,*XkbNameChangesPtr; + +typedef struct _XkbCompatChanges { + unsigned char changed_groups; + unsigned short first_si; + unsigned short num_si; +} XkbCompatChangesRec,*XkbCompatChangesPtr; + +typedef struct _XkbChanges { + unsigned short device_spec; + unsigned short state_changes; + XkbMapChangesRec map; + XkbControlsChangesRec ctrls; + XkbIndicatorChangesRec indicators; + XkbNameChangesRec names; + XkbCompatChangesRec compat; +} XkbChangesRec, *XkbChangesPtr; + + /* + * These data structures are used to construct a keymap from + * a set of components or to list components in the server + * database. + */ +typedef struct _XkbComponentNames { + char * keymap; + char * keycodes; + char * types; + char * compat; + char * symbols; + char * geometry; +} XkbComponentNamesRec, *XkbComponentNamesPtr; + +typedef struct _XkbComponentName { + unsigned short flags; + char * name; +} XkbComponentNameRec,*XkbComponentNamePtr; + +typedef struct _XkbComponentList { + int num_keymaps; + int num_keycodes; + int num_types; + int num_compat; + int num_symbols; + int num_geometry; + XkbComponentNamePtr keymaps; + XkbComponentNamePtr keycodes; + XkbComponentNamePtr types; + XkbComponentNamePtr compat; + XkbComponentNamePtr symbols; + XkbComponentNamePtr geometry; +} XkbComponentListRec, *XkbComponentListPtr; + + /* + * The following data structures describe and track changes to a + * non-keyboard extension device + */ +typedef struct _XkbDeviceLedInfo { + unsigned short led_class; + unsigned short led_id; + unsigned int phys_indicators; + unsigned int maps_present; + unsigned int names_present; + unsigned int state; + Atom names[XkbNumIndicators]; + XkbIndicatorMapRec maps[XkbNumIndicators]; +} XkbDeviceLedInfoRec,*XkbDeviceLedInfoPtr; + +typedef struct _XkbDeviceInfo { + char * name; + Atom type; + unsigned short device_spec; + Bool has_own_state; + unsigned short supported; + unsigned short unsupported; + + unsigned short num_btns; + XkbAction * btn_acts; + + unsigned short sz_leds; + unsigned short num_leds; + unsigned short dflt_kbd_fb; + unsigned short dflt_led_fb; + XkbDeviceLedInfoPtr leds; +} XkbDeviceInfoRec,*XkbDeviceInfoPtr; + +#define XkbXI_DevHasBtnActs(d) (((d)->num_btns>0)&&((d)->btn_acts!=NULL)) +#define XkbXI_LegalDevBtn(d,b) (XkbXI_DevHasBtnActs(d)&&((b)<(d)->num_btns)) +#define XkbXI_DevHasLeds(d) (((d)->num_leds>0)&&((d)->leds!=NULL)) + +typedef struct _XkbDeviceLedChanges { + unsigned short led_class; + unsigned short led_id; + unsigned int defined; /* names or maps changed */ + struct _XkbDeviceLedChanges *next; +} XkbDeviceLedChangesRec,*XkbDeviceLedChangesPtr; + +typedef struct _XkbDeviceChanges { + unsigned int changed; + unsigned short first_btn; + unsigned short num_btns; + XkbDeviceLedChangesRec leds; +} XkbDeviceChangesRec,*XkbDeviceChangesPtr; + +#endif /* _XKBSTR_H_ */ diff --git a/xkb/XKBAlloc.c b/xkb/XKBAlloc.c index f0a1f890e..790aede92 100644 --- a/xkb/XKBAlloc.c +++ b/xkb/XKBAlloc.c @@ -36,7 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "misc.h" #include "inputstr.h" #include -#include +#include "xkbgeom.h" /***===================================================================***/ diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c index 815cc95f5..7a75d200d 100644 --- a/xkb/XKBGAlloc.c +++ b/xkb/XKBGAlloc.c @@ -37,7 +37,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "misc.h" #include "inputstr.h" #include -#include +#include "xkbgeom.h" #ifdef X_NOT_POSIX #define Size_t unsigned int diff --git a/xkb/maprules.c b/xkb/maprules.c index 0fa356ee5..52a1cdc86 100644 --- a/xkb/maprules.c +++ b/xkb/maprules.c @@ -46,7 +46,7 @@ #include "misc.h" #include "inputstr.h" #include "dix.h" -#include +#include "xkbstr.h" #define XKBSRV_NEED_FILE_FUNCS #include diff --git a/xkb/xkb.c b/xkb/xkb.c index 26f2812fe..66edcc1fd 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -3870,7 +3870,7 @@ ProcXkbSetNames(ClientPtr client) /***====================================================================***/ -#include +#include "xkbgeom.h" #define XkbSizeCountedString(s) ((s)?((((2+strlen(s))+3)/4)*4):4) diff --git a/xkb/xkb.h b/xkb/xkb.h index 99b60bf5e..bc6c6c954 100644 --- a/xkb/xkb.h +++ b/xkb/xkb.h @@ -1,4 +1,5 @@ -/* #include "XKBfile.h" */ +#ifndef _XKB_H +#define _XKB_H extern int ProcXkbUseExtension(ClientPtr client); extern int ProcXkbSelectEvents(ClientPtr client); @@ -35,3 +36,5 @@ extern Bool XkbCopyKeymap( XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies); + +#endif diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index 6301a32e7..bb1de9de6 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -48,9 +48,9 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "property.h" #define XKBSRV_NEED_FILE_FUNCS #include -#include +#include "xkbgeom.h" #include -#include +#include "xkbfile.h" #include "xkb.h" #define CREATE_ATOM(s) MakeAtom(s,sizeof(s)-1,1) diff --git a/xkb/xkbSwap.c b/xkb/xkbSwap.c index da4c9053b..50b08f46c 100644 --- a/xkb/xkbSwap.c +++ b/xkb/xkbSwap.c @@ -36,7 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "misc.h" #include "inputstr.h" #include -#include +#include "xkbstr.h" #include "extnsionst.h" #include "xkb.h" diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c index 3cedf825a..67843e9fb 100644 --- a/xkb/xkbUtils.c +++ b/xkb/xkbUtils.c @@ -42,7 +42,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #define XKBSRV_NEED_FILE_FUNCS #include -#include +#include "xkbgeom.h" #include "xkb.h" int XkbDisableLockActions = 0; diff --git a/xkb/xkbfile.h b/xkb/xkbfile.h new file mode 100644 index 000000000..d58bec69f --- /dev/null +++ b/xkb/xkbfile.h @@ -0,0 +1,480 @@ +/************************************************************ + Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + + 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 Silicon Graphics not be + used in advertising or publicity pertaining to distribution + of the software without specific prior written permission. + Silicon Graphics makes no representation about the suitability + of this software for any purpose. It is provided "as is" + without any express or implied warranty. + + SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + GRAPHICS 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. + + ********************************************************/ + +#ifndef _XKBFILE_H_ +#define _XKBFILE_H_ 1 + +/***====================================================================***/ + +#define XkbXKMFile 0 +#define XkbCFile 1 +#define XkbXKBFile 2 +#define XkbMessage 3 + +#define XkbMapDefined (1<<0) +#define XkbStateDefined (1<<1) + +typedef struct _XkbFileInfo { + unsigned type; + unsigned defined; + XkbDescPtr xkb; +} XkbFileInfo,*XkbFileInfoPtr; + +typedef void (*XkbFileAddOnFunc)( + FILE * /* file */, + XkbFileInfo * /* result */, + Bool /* topLevel */, + Bool /* showImplicit */, + int /* fileSection */, + void * /* priv */ +); + +/***====================================================================***/ + +#define _XkbSuccess 0 +#define _XkbErrMissingNames 1 +#define _XkbErrMissingTypes 2 +#define _XkbErrMissingReqTypes 3 +#define _XkbErrMissingSymbols 4 +#define _XkbErrMissingVMods 5 +#define _XkbErrMissingIndicators 6 +#define _XkbErrMissingCompatMap 7 +#define _XkbErrMissingSymInterps 8 +#define _XkbErrMissingGeometry 9 +#define _XkbErrIllegalDoodad 10 +#define _XkbErrIllegalTOCType 11 +#define _XkbErrIllegalContents 12 +#define _XkbErrEmptyFile 13 +#define _XkbErrFileNotFound 14 +#define _XkbErrFileCannotOpen 15 +#define _XkbErrBadValue 16 +#define _XkbErrBadMatch 17 +#define _XkbErrBadTypeName 18 +#define _XkbErrBadTypeWidth 19 +#define _XkbErrBadFileType 20 +#define _XkbErrBadFileVersion 21 +#define _XkbErrBadFileFormat 22 +#define _XkbErrBadAlloc 23 +#define _XkbErrBadLength 24 +#define _XkbErrXReqFailure 25 +#define _XkbErrBadImplementation 26 + +extern char * _XkbErrMessages[]; +extern unsigned _XkbErrCode; +extern char * _XkbErrLocation; +extern unsigned _XkbErrData; + +/***====================================================================***/ + +_XFUNCPROTOBEGIN + +extern char * XkbIndentText( + unsigned /* size */ +); + +extern char * XkbAtomText( + Display * /* dpy */, + Atom /* atm */, + unsigned /* format */ +); + +extern char * XkbKeysymText( + KeySym /* sym */, + unsigned /* format */ +); + +extern char * XkbStringText( + char * /* str */, + unsigned /* format */ +); + +extern char * XkbKeyNameText( + char * /* name */, + unsigned /* format */ +); + +extern char * +XkbModIndexText( + unsigned /* ndx */, + unsigned /* format */ +); + +extern char * +XkbModMaskText( + unsigned /* mask */, + unsigned /* format */ +); + +extern char * XkbVModIndexText( + Display * /* dpy */, + XkbDescPtr /* xkb */, + unsigned /* ndx */, + unsigned /* format */ +); + +extern char * XkbVModMaskText( + Display * /* dpy */, + XkbDescPtr /* xkb */, + unsigned /* modMask */, + unsigned /* mask */, + unsigned /* format */ +); + +extern char * XkbConfigText( + unsigned /* config */, + unsigned /* format */ +); + +extern char * XkbSIMatchText( + unsigned /* type */, + unsigned /* format */ +); + +extern char * XkbIMWhichStateMaskText( + unsigned /* use_which */, + unsigned /* format */ +); + +extern char * XkbAccessXDetailText( + unsigned /* state */, + unsigned /* format */ +); + +extern char * XkbNKNDetailMaskText( + unsigned /* detail */, + unsigned /* format */ +); + +extern char * XkbControlsMaskText( + unsigned /* ctrls */, + unsigned /* format */ +); + +extern char * XkbGeomFPText( + int /* val */, + unsigned /* format */ +); + +extern char * XkbDoodadTypeText( + unsigned /* type */, + unsigned /* format */ +); + +extern char * XkbActionTypeText( + unsigned /* type */, + unsigned /* format */ +); + +extern char * XkbActionText( + Display * /* dpy */, + XkbDescPtr /* xkb */, + XkbAction * /* action */, + unsigned /* format */ +); + +extern char * XkbBehaviorText( + XkbDescPtr /* xkb */, + XkbBehavior * /* behavior */, + unsigned /* format */ +); + +/***====================================================================***/ + +#define _XkbKSLower (1<<0) +#define _XkbKSUpper (1<<1) + +#define XkbKSIsLower(k) (_XkbKSCheckCase(k)&_XkbKSLower) +#define XkbKSIsUpper(k) (_XkbKSCheckCase(k)&_XkbKSUpper) +#define XkbKSIsKeypad(k) (((k)>=XK_KP_Space)&&((k)<=XK_KP_Equal)) +#define XkbKSIsDeadKey(k) \ + (((k)>=XK_dead_grave)&&((k)<=XK_dead_semivoiced_sound)) + +extern unsigned _XkbKSCheckCase( + KeySym /* sym */ +); + +extern int XkbFindKeycodeByName( + XkbDescPtr /* xkb */, + char * /* name */, + Bool /* use_aliases */ +); + +extern Bool XkbLookupGroupAndLevel( + XkbDescPtr /* xkb */, + int /* key */, + int * /* mods_inout */, + int * /* grp_inout */, + int * /* lvl_rtrn */ +); + +/***====================================================================***/ + +extern char * XkbAtomGetString( + Display * /* dpy */, + Atom /* atm */ +); + +extern Atom XkbInternAtom( + Display * /* dpy */, + char * /* name */, + Bool /* onlyIfExists */ +); + +extern Status XkbChangeKbdDisplay( + Display * /* newDpy */, + XkbFileInfo * /* result */ +); + +extern Atom XkbChangeAtomDisplay( + Display * /* oldDpy */, + Display * /* newDpy */, + Atom /* atm */ +); + +extern void XkbInitAtoms( + Display * /* dpy */ +); + +/***====================================================================***/ + +#ifdef _XKBGEOM_H_ + +#define XkbDW_Unknown 0 +#define XkbDW_Doodad 1 +#define XkbDW_Section 2 +typedef struct _XkbDrawable { + int type; + int priority; + union { + XkbDoodadPtr doodad; + XkbSectionPtr section; + } u; + struct _XkbDrawable * next; +} XkbDrawableRec,*XkbDrawablePtr; + +extern XkbDrawablePtr +XkbGetOrderedDrawables( + XkbGeometryPtr /* geom */, + XkbSectionPtr /* section */ +); + +extern void +XkbFreeOrderedDrawables( + XkbDrawablePtr /* draw */ +); + +#endif + +/***====================================================================***/ + +extern unsigned XkbConvertGetByNameComponents( + Bool /* toXkm */, + unsigned /* orig */ +); + +extern unsigned XkbConvertXkbComponents( + Bool /* toXkm */, + unsigned /* orig */ +); + +extern Bool XkbDetermineFileType( + XkbFileInfo * /* xkb */, + int /* format */, + int * /* opts_missing */ +); + +extern Bool XkbNameMatchesPattern( + char * /* name */, + char * /* pattern */ +); + +/***====================================================================***/ + +extern Bool XkbWriteXKBKeycodes( + FILE * /* file */, + XkbFileInfo * /* result */, + Bool /* topLevel */, + Bool /* showImplicit */, + XkbFileAddOnFunc /* addOn */, + void * /* priv */ +); + +extern Bool XkbWriteXKBKeyTypes( + FILE * /* file */, + XkbFileInfo * /* result */, + Bool /* topLevel */, + Bool /* showImplicit */, + XkbFileAddOnFunc /* addOn */, + void * /* priv */ +); + +extern Bool XkbWriteXKBCompatMap( + FILE * /* file */, + XkbFileInfo * /* result */, + Bool /* topLevel */, + Bool /* showImplicit */, + XkbFileAddOnFunc /* addOn */, + void * /* priv */ +); + +extern Bool XkbWriteXKBSymbols( + FILE * /* file */, + XkbFileInfo * /* result */, + Bool /* topLevel */, + Bool /* showImplicit */, + XkbFileAddOnFunc /* addOn */, + void * /* priv */ +); + +extern Bool XkbWriteXKBGeometry( + FILE * /* file */, + XkbFileInfo * /* result */, + Bool /* topLevel */, + Bool /* showImplicit */, + XkbFileAddOnFunc /* addOn */, + void * /* priv */ +); + +extern Bool XkbWriteXKBSemantics( + FILE * /* file */, + XkbFileInfo * /* result */, + Bool /* topLevel */, + Bool /* showImplicit */, + XkbFileAddOnFunc /* addOn */, + void * /* priv */ +); + +extern Bool XkbWriteXKBLayout( + FILE * /* file */, + XkbFileInfo * /* result */, + Bool /* topLevel */, + Bool /* showImplicit */, + XkbFileAddOnFunc /* addOn */, + void * /* priv */ +); + +extern Bool XkbWriteXKBKeymap( + FILE * /* file */, + XkbFileInfo * /* result */, + Bool /* topLevel */, + Bool /* showImplicit */, + XkbFileAddOnFunc /* addOn */, + void * /* priv */ +); + +extern Bool XkbWriteXKBFile( + FILE * /* file */, + XkbFileInfo * /* result */, + Bool /* showImplicit */, + XkbFileAddOnFunc /* addOn */, + void * /* priv */ +); + +extern Bool XkbWriteCFile( + FILE * /* file */, + char * /* name */, + XkbFileInfo * /* info */ +); + +extern Bool XkbWriteXKMFile( + FILE * /* file */, + XkbFileInfo * /* result */ +); + +extern Bool XkbWriteToServer( + XkbFileInfo * /* result */ +); + +extern void XkbEnsureSafeMapName( + char * /* name */ +); + +extern Bool XkbWriteXKBKeymapForNames( + FILE * /* file */, + XkbComponentNamesPtr /* names */, + Display * /* dpy */, + XkbDescPtr /* xkb */, + unsigned /* want */, + unsigned /* need */ +); + +extern Status XkbMergeFile( + XkbDescPtr /* xkb */, + XkbFileInfo /* finfo */ +); + +/***====================================================================***/ + +extern Bool XkmProbe( + FILE * /* file */ +); + +extern unsigned XkbReadFromServer( + Display * /* dpy */, + unsigned /* need */, + unsigned /* want */, + XkbFileInfo * /* result */ +); + +extern unsigned XkmReadFile( + FILE * /* file */, + unsigned /* need */, + unsigned /* want */, + XkbFileInfo * /* result */ +); + +#ifdef _XKMFORMAT_H_ + +extern Bool XkmReadTOC( + FILE * /* file */, + xkmFileInfo * /* file_info */, + int /* max_toc */, + xkmSectionInfo * /* toc */ +); + +extern xkmSectionInfo *XkmFindTOCEntry( + xkmFileInfo * /* finfo */, + xkmSectionInfo * /* toc */, + unsigned /* type */ +); + +extern Bool XkmReadFileSection( + FILE * /* file */, + xkmSectionInfo * /* toc */, + XkbFileInfo * /* result */, + unsigned * /* loaded_rtrn */ +); + +extern char * XkmReadFileSectionName( + FILE * /* file */, + xkmSectionInfo * /* toc */ +); + +#endif /* _XKMFORMAT_H */ + +_XFUNCPROTOEND + +#endif /* _XKBFILE_H_ */ diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c index 05344b475..06d3519af 100644 --- a/xkb/xkbfmisc.c +++ b/xkb/xkbfmisc.c @@ -42,10 +42,10 @@ #include "misc.h" #include "inputstr.h" #include "dix.h" -#include +#include "xkbstr.h" #define XKBSRV_NEED_FILE_FUNCS 1 #include -#include +#include "xkbgeom.h" #include "xkb.h" unsigned diff --git a/xkb/xkbgeom.h b/xkb/xkbgeom.h new file mode 100644 index 000000000..a6918b4b9 --- /dev/null +++ b/xkb/xkbgeom.h @@ -0,0 +1,655 @@ +/************************************************************ +Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. + +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 Silicon Graphics not be +used in advertising or publicity pertaining to distribution +of the software without specific prior written permission. +Silicon Graphics makes no representation about the suitability +of this software for any purpose. It is provided "as is" +without any express or implied warranty. + +SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +GRAPHICS 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. + +********************************************************/ + +#ifndef _XKBGEOM_H_ +#define _XKBGEOM_H_ + +#include "xkbstr.h" + +#define XkbAddGeomKeyAlias SrvXkbAddGeomKeyAlias +#define XkbAddGeomColor SrvXkbAddGeomColor +#define XkbAddGeomDoodad SrvXkbAddGeomDoodad +#define XkbAddGeomKey SrvXkbAddGeomKey +#define XkbAddGeomOutline SrvXkbAddGeomOutline +#define XkbAddGeomOverlay SrvXkbAddGeomOverlay +#define XkbAddGeomOverlayRow SrvXkbAddGeomOverlayRow +#define XkbAddGeomOverlayKey SrvXkbAddGeomOverlayKey +#define XkbAddGeomProperty SrvXkbAddGeomProperty +#define XkbAddGeomRow SrvXkbAddGeomRow +#define XkbAddGeomSection SrvXkbAddGeomSection +#define XkbAddGeomShape SrvXkbAddGeomShape +#define XkbAllocGeomKeyAliases SrvXkbAllocGeomKeyAliases +#define XkbAllocGeomColors SrvXkbAllocGeomColors +#define XkbAllocGeomDoodads SrvXkbAllocGeomDoodads +#define XkbAllocGeomKeys SrvXkbAllocGeomKeys +#define XkbAllocGeomOutlines SrvXkbAllocGeomOutlines +#define XkbAllocGeomPoints SrvXkbAllocGeomPoints +#define XkbAllocGeomProps SrvXkbAllocGeomProps +#define XkbAllocGeomRows SrvXkbAllocGeomRows +#define XkbAllocGeomSectionDoodads SrvXkbAllocGeomSectionDoodads +#define XkbAllocGeomSections SrvXkbAllocGeomSections +#define XkbAllocGeomOverlays SrvXkbAllocGeomOverlays +#define XkbAllocGeomOverlayRows SrvXkbAllocGeomOverlayRows +#define XkbAllocGeomOverlayKeys SrvXkbAllocGeomOverlayKeys +#define XkbAllocGeomShapes SrvXkbAllocGeomShapes +#define XkbAllocGeometry SrvXkbAllocGeometry +#define XkbFreeGeomKeyAliases SrvXkbFreeGeomKeyAliases +#define XkbFreeGeomColors SrvXkbFreeGeomColors +#define XkbFreeGeomDoodads SrvXkbFreeGeomDoodads +#define XkbFreeGeomProperties SrvXkbFreeGeomProperties +#define XkbFreeGeomOverlayKeys SrvXkbFreeGeomOverlayKeys +#define XkbFreeGeomOverlayRows SrvXkbFreeGeomOverlayRows +#define XkbFreeGeomOverlays SrvXkbFreeGeomOverlays +#define XkbFreeGeomKeys SrvXkbFreeGeomKeys +#define XkbFreeGeomRows SrvXkbFreeGeomRows +#define XkbFreeGeomSections SrvXkbFreeGeomSections +#define XkbFreeGeomPoints SrvXkbFreeGeomPoints +#define XkbFreeGeomOutlines SrvXkbFreeGeomOutlines +#define XkbFreeGeomShapes SrvXkbFreeGeomShapes +#define XkbFreeGeometry SrvXkbFreeGeometry + +typedef struct _XkbProperty { + char *name; + char *value; +} XkbPropertyRec,*XkbPropertyPtr; + +typedef struct _XkbColor { + unsigned int pixel; + char * spec; +} XkbColorRec,*XkbColorPtr; + +typedef struct _XkbPoint { + short x; + short y; +} XkbPointRec, *XkbPointPtr; + +typedef struct _XkbBounds { + short x1,y1; + short x2,y2; +} XkbBoundsRec, *XkbBoundsPtr; +#define XkbBoundsWidth(b) (((b)->x2)-((b)->x1)) +#define XkbBoundsHeight(b) (((b)->y2)-((b)->y1)) + +typedef struct _XkbOutline { + unsigned short num_points; + unsigned short sz_points; + unsigned short corner_radius; + XkbPointPtr points; +} XkbOutlineRec, *XkbOutlinePtr; + +typedef struct _XkbShape { + Atom name; + unsigned short num_outlines; + unsigned short sz_outlines; + XkbOutlinePtr outlines; + XkbOutlinePtr approx; + XkbOutlinePtr primary; + XkbBoundsRec bounds; +} XkbShapeRec, *XkbShapePtr; +#define XkbOutlineIndex(s,o) ((int)((o)-&(s)->outlines[0])) + +typedef struct _XkbShapeDoodad { + Atom name; + unsigned char type; + unsigned char priority; + short top; + short left; + short angle; + unsigned short color_ndx; + unsigned short shape_ndx; +} XkbShapeDoodadRec, *XkbShapeDoodadPtr; +#define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx]) +#define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx]) +#define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0]) +#define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0]) + +typedef struct _XkbTextDoodad { + Atom name; + unsigned char type; + unsigned char priority; + short top; + short left; + short angle; + short width; + short height; + unsigned short color_ndx; + char * text; + char * font; +} XkbTextDoodadRec, *XkbTextDoodadPtr; +#define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx]) +#define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0]) + +typedef struct _XkbIndicatorDoodad { + Atom name; + unsigned char type; + unsigned char priority; + short top; + short left; + short angle; + unsigned short shape_ndx; + unsigned short on_color_ndx; + unsigned short off_color_ndx; +} XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr; +#define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx]) +#define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx]) +#define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx]) +#define XkbSetIndicatorDoodadOnColor(g,d,c) \ + ((d)->on_color_ndx= (c)-&(g)->colors[0]) +#define XkbSetIndicatorDoodadOffColor(g,d,c) \ + ((d)->off_color_ndx= (c)-&(g)->colors[0]) +#define XkbSetIndicatorDoodadShape(g,d,s) \ + ((d)->shape_ndx= (s)-&(g)->shapes[0]) + +typedef struct _XkbLogoDoodad { + Atom name; + unsigned char type; + unsigned char priority; + short top; + short left; + short angle; + unsigned short color_ndx; + unsigned short shape_ndx; + char * logo_name; +} XkbLogoDoodadRec, *XkbLogoDoodadPtr; +#define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx]) +#define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx]) +#define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0]) +#define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0]) + +typedef struct _XkbAnyDoodad { + Atom name; + unsigned char type; + unsigned char priority; + short top; + short left; + short angle; +} XkbAnyDoodadRec, *XkbAnyDoodadPtr; + +typedef union _XkbDoodad { + XkbAnyDoodadRec any; + XkbShapeDoodadRec shape; + XkbTextDoodadRec text; + XkbIndicatorDoodadRec indicator; + XkbLogoDoodadRec logo; +} XkbDoodadRec, *XkbDoodadPtr; + +#define XkbUnknownDoodad 0 +#define XkbOutlineDoodad 1 +#define XkbSolidDoodad 2 +#define XkbTextDoodad 3 +#define XkbIndicatorDoodad 4 +#define XkbLogoDoodad 5 + +typedef struct _XkbKey { + XkbKeyNameRec name; + short gap; + unsigned char shape_ndx; + unsigned char color_ndx; +} XkbKeyRec, *XkbKeyPtr; +#define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx]) +#define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx]) +#define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0]) +#define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0]) + +typedef struct _XkbRow { + short top; + short left; + unsigned short num_keys; + unsigned short sz_keys; + int vertical; + XkbKeyPtr keys; + XkbBoundsRec bounds; +} XkbRowRec, *XkbRowPtr; + +typedef struct _XkbSection { + Atom name; + unsigned char priority; + short top; + short left; + unsigned short width; + unsigned short height; + short angle; + unsigned short num_rows; + unsigned short num_doodads; + unsigned short num_overlays; + unsigned short sz_rows; + unsigned short sz_doodads; + unsigned short sz_overlays; + XkbRowPtr rows; + XkbDoodadPtr doodads; + XkbBoundsRec bounds; + struct _XkbOverlay *overlays; +} XkbSectionRec, *XkbSectionPtr; + +typedef struct _XkbOverlayKey { + XkbKeyNameRec over; + XkbKeyNameRec under; +} XkbOverlayKeyRec,*XkbOverlayKeyPtr; + +typedef struct _XkbOverlayRow { + unsigned short row_under; + unsigned short num_keys; + unsigned short sz_keys; + XkbOverlayKeyPtr keys; +} XkbOverlayRowRec,*XkbOverlayRowPtr; + +typedef struct _XkbOverlay { + Atom name; + XkbSectionPtr section_under; + unsigned short num_rows; + unsigned short sz_rows; + XkbOverlayRowPtr rows; + XkbBoundsPtr bounds; +} XkbOverlayRec,*XkbOverlayPtr; + +typedef struct _XkbGeometry { + Atom name; + unsigned short width_mm; + unsigned short height_mm; + char * label_font; + XkbColorPtr label_color; + XkbColorPtr base_color; + unsigned short sz_properties; + unsigned short sz_colors; + unsigned short sz_shapes; + unsigned short sz_sections; + unsigned short sz_doodads; + unsigned short sz_key_aliases; + unsigned short num_properties; + unsigned short num_colors; + unsigned short num_shapes; + unsigned short num_sections; + unsigned short num_doodads; + unsigned short num_key_aliases; + XkbPropertyPtr properties; + XkbColorPtr colors; + XkbShapePtr shapes; + XkbSectionPtr sections; + XkbDoodadPtr doodads; + XkbKeyAliasPtr key_aliases; +} XkbGeometryRec; +#define XkbGeomColorIndex(g,c) ((int)((c)-&(g)->colors[0])) + +#define XkbGeomPropertiesMask (1<<0) +#define XkbGeomColorsMask (1<<1) +#define XkbGeomShapesMask (1<<2) +#define XkbGeomSectionsMask (1<<3) +#define XkbGeomDoodadsMask (1<<4) +#define XkbGeomKeyAliasesMask (1<<5) +#define XkbGeomAllMask (0x3f) + +typedef struct _XkbGeometrySizes { + unsigned int which; + unsigned short num_properties; + unsigned short num_colors; + unsigned short num_shapes; + unsigned short num_sections; + unsigned short num_doodads; + unsigned short num_key_aliases; +} XkbGeometrySizesRec,*XkbGeometrySizesPtr; + +_XFUNCPROTOBEGIN + +extern XkbPropertyPtr +XkbAddGeomProperty( + XkbGeometryPtr /* geom */, + char * /* name */, + char * /* value */ +); + +extern XkbKeyAliasPtr +XkbAddGeomKeyAlias( + XkbGeometryPtr /* geom */, + char * /* alias */, + char * /* real */ +); + +extern XkbColorPtr +XkbAddGeomColor( + XkbGeometryPtr /* geom */, + char * /* spec */, + unsigned int /* pixel */ +); + +extern XkbOutlinePtr +XkbAddGeomOutline( + XkbShapePtr /* shape */, + int /* sz_points */ +); + +extern XkbShapePtr +XkbAddGeomShape( + XkbGeometryPtr /* geom */, + Atom /* name */, + int /* sz_outlines */ +); + +extern XkbKeyPtr +XkbAddGeomKey( + XkbRowPtr /* row */ +); + +extern XkbRowPtr +XkbAddGeomRow( + XkbSectionPtr /* section */, + int /* sz_keys */ +); + +extern XkbSectionPtr +XkbAddGeomSection( + XkbGeometryPtr /* geom */, + Atom /* name */, + int /* sz_rows */, + int /* sz_doodads */, + int /* sz_overlays */ +); + +extern XkbOverlayPtr +XkbAddGeomOverlay( + XkbSectionPtr /* section */, + Atom /* name */, + int /* sz_rows */ +); + +extern XkbOverlayRowPtr +XkbAddGeomOverlayRow( + XkbOverlayPtr /* overlay */, + int /* row_under */, + int /* sz_keys */ +); + +extern XkbOverlayKeyPtr +XkbAddGeomOverlayKey( + XkbOverlayPtr /* overlay */, + XkbOverlayRowPtr /* row */, + char * /* over */, + char * /* under */ +); + +extern XkbDoodadPtr +XkbAddGeomDoodad( + XkbGeometryPtr /* geom */, + XkbSectionPtr /* section */, + Atom /* name */ +); + + +extern void +XkbFreeGeomKeyAliases( + XkbGeometryPtr /* geom */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeomColors( + XkbGeometryPtr /* geom */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeomDoodads( + XkbDoodadPtr /* doodads */, + int /* nDoodads */, + Bool /* freeAll */ +); + + +extern void +XkbFreeGeomProperties( + XkbGeometryPtr /* geom */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeomOverlayKeys( + XkbOverlayRowPtr /* row */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeomOverlayRows( + XkbOverlayPtr /* overlay */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeomOverlays( + XkbSectionPtr /* section */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeomKeys( + XkbRowPtr /* row */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeomRows( + XkbSectionPtr /* section */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeomSections( + XkbGeometryPtr /* geom */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + + +extern void +XkbFreeGeomPoints( + XkbOutlinePtr /* outline */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeomOutlines( + XkbShapePtr /* shape */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeomShapes( + XkbGeometryPtr /* geom */, + int /* first */, + int /* count */, + Bool /* freeAll */ +); + +extern void +XkbFreeGeometry( + XkbGeometryPtr /* geom */, + unsigned int /* which */, + Bool /* freeMap */ +); + +extern Status +XkbAllocGeomProps( + XkbGeometryPtr /* geom */, + int /* nProps */ +); + +extern Status +XkbAllocGeomKeyAliases( + XkbGeometryPtr /* geom */, + int /* nAliases */ +); + +extern Status +XkbAllocGeomColors( + XkbGeometryPtr /* geom */, + int /* nColors */ +); + +extern Status +XkbAllocGeomShapes( + XkbGeometryPtr /* geom */, + int /* nShapes */ +); + +extern Status +XkbAllocGeomSections( + XkbGeometryPtr /* geom */, + int /* nSections */ +); + +extern Status +XkbAllocGeomOverlays( + XkbSectionPtr /* section */, + int /* num_needed */ +); + +extern Status +XkbAllocGeomOverlayRows( + XkbOverlayPtr /* overlay */, + int /* num_needed */ +); + +extern Status +XkbAllocGeomOverlayKeys( + XkbOverlayRowPtr /* row */, + int /* num_needed */ +); + +extern Status +XkbAllocGeomDoodads( + XkbGeometryPtr /* geom */, + int /* nDoodads */ +); + +extern Status +XkbAllocGeomSectionDoodads( + XkbSectionPtr /* section */, + int /* nDoodads */ +); + +extern Status +XkbAllocGeomOutlines( + XkbShapePtr /* shape */, + int /* nOL */ +); + +extern Status +XkbAllocGeomRows( + XkbSectionPtr /* section */, + int /* nRows */ +); + +extern Status +XkbAllocGeomPoints( + XkbOutlinePtr /* ol */, + int /* nPts */ +); + +extern Status +XkbAllocGeomKeys( + XkbRowPtr /* row */, + int /* nKeys */ +); + +extern Status +XkbAllocGeometry( + XkbDescPtr /* xkb */, + XkbGeometrySizesPtr /* sizes */ +); + +extern Status +XkbSetGeometry( + Display * /* dpy */, + unsigned /* deviceSpec */, + XkbGeometryPtr /* geom */ +); + +extern Bool +XkbComputeShapeTop( + XkbShapePtr /* shape */, + XkbBoundsPtr /* bounds */ +); + +extern Bool +XkbComputeShapeBounds( + XkbShapePtr /* shape */ +); + +extern Bool +XkbComputeRowBounds( + XkbGeometryPtr /* geom */, + XkbSectionPtr /* section */, + XkbRowPtr /* row */ +); + +extern Bool +XkbComputeSectionBounds( + XkbGeometryPtr /* geom */, + XkbSectionPtr /* section */ +); + +extern char * +XkbFindOverlayForKey( + XkbGeometryPtr /* geom */, + XkbSectionPtr /* wanted */, + char * /* under */ +); + +extern Status +XkbGetGeometry( + Display * /* dpy */, + XkbDescPtr /* xkb */ +); + +extern Status +XkbGetNamedGeometry( + Display * /* dpy */, + XkbDescPtr /* xkb */, + Atom /* name */ +); + +_XFUNCPROTOEND + +#endif /* _XKBGEOM_H_ */ diff --git a/xkb/xkbout.c b/xkb/xkbout.c index 8905ef4d3..fc4e43e3f 100644 --- a/xkb/xkbout.c +++ b/xkb/xkbout.c @@ -40,12 +40,12 @@ #include "misc.h" #include "inputstr.h" #include "dix.h" -#include +#include "xkbstr.h" #define XKBSRV_NEED_FILE_FUNCS 1 #include -#include -#include +#include "xkbgeom.h" +#include "xkbfile.h" #define VMOD_HIDE_VALUE 0 #define VMOD_SHOW_VALUE 1 diff --git a/xkb/xkbtext.c b/xkb/xkbtext.c index 4983e2b9e..1520a9f58 100644 --- a/xkb/xkbtext.c +++ b/xkb/xkbtext.c @@ -40,10 +40,10 @@ #include "misc.h" #include "inputstr.h" #include "dix.h" -#include +#include "xkbstr.h" #define XKBSRV_NEED_FILE_FUNCS 1 #include -#include +#include "xkbgeom.h" /***====================================================================***/ diff --git a/xkb/xkmread.c b/xkb/xkmread.c index c6c18422d..88296188a 100644 --- a/xkb/xkmread.c +++ b/xkb/xkmread.c @@ -39,10 +39,10 @@ #include #include "misc.h" #include "inputstr.h" -#include +#include "xkbstr.h" #define XKBSRV_NEED_FILE_FUNCS #include -#include +#include "xkbgeom.h" Atom XkbInternAtom(Display *dpy,char *str,Bool only_if_exists) From 0f12a448dcbbbf1f40aa98d09c9d25ee511c5bbf Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Sun, 3 Feb 2008 23:15:39 +1100 Subject: [PATCH 063/112] XKB: Deprecate XKBSRV_NEED_FILE_FUNCS There's no point in having the function definitions be conditional, so whatever. --- {xkb => include}/xkbfile.h | 0 include/xkbsrv.h | 21 +-------------------- 2 files changed, 1 insertion(+), 20 deletions(-) rename {xkb => include}/xkbfile.h (100%) diff --git a/xkb/xkbfile.h b/include/xkbfile.h similarity index 100% rename from xkb/xkbfile.h rename to include/xkbfile.h diff --git a/include/xkbsrv.h b/include/xkbsrv.h index e825f33a0..df9aefca3 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -124,8 +124,6 @@ typedef struct _XkbEventCause { #define _BEEP_LED_CHANGE 14 #define _BEEP_BOUNCE_REJECT 15 -struct _XkbSrvInfo; /* definition see below */ - typedef struct _XkbFilter { CARD16 keycode; CARD8 what; @@ -317,13 +315,8 @@ extern int DeviceKeyPress,DeviceKeyRelease,DeviceMotionNotify; extern int DeviceButtonPress,DeviceButtonRelease; extern int DeviceEnterNotify,DeviceLeaveNotify; -#ifdef XINPUT #define _XkbIsPressEvent(t) (((t)==KeyPress)||((t)==DeviceKeyPress)) #define _XkbIsReleaseEvent(t) (((t)==KeyRelease)||((t)==DeviceKeyRelease)) -#else -#define _XkbIsPressEvent(t) ((t)==KeyPress) -#define _XkbIsReleaseEvent(t) ((t)==KeyRelease) -#endif #define _XkbCoreKeycodeInRange(c,k) (((k)>=(c)->curKeySyms.minKeyCode)&&\ ((k)<=(c)->curKeySyms.maxKeyCode)) @@ -343,14 +336,6 @@ extern int DeviceEnterNotify,DeviceLeaveNotify; #define False 0 #endif -#ifndef PATH_MAX -#ifdef MAXPATHLEN -#define PATH_MAX MAXPATHLEN -#else -#define PATH_MAX 1024 -#endif -#endif - _XFUNCPROTOBEGIN extern void XkbUseMsg( @@ -987,10 +972,8 @@ extern void XkbSendNewKeyboardNotify( xkbNewKeyboardNotify * /* pNKN */ ); -#ifdef XKBSRV_NEED_FILE_FUNCS - +#include "xkbfile.h" #include -#include #include #define _XkbListKeymaps 0 @@ -1053,8 +1036,6 @@ extern int _XkbStrCaseCmp( char * /* str2 */ ); -#endif /* XKBSRV_NEED_FILE_FUNCS */ - _XFUNCPROTOEND #define XkbAtomGetString(d,s) NameForAtom(s) From 534fc5140b039a8c98ab715d0a6740d513b41209 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Sun, 3 Feb 2008 23:30:22 +1100 Subject: [PATCH 064/112] XKB: Remove a bunch of mad ifdefs We have SEEK_SET and size_t, seriously. Also use DebugF instead of ifdef DEBUG, and ditch a couple of random bits that were never used. --- xkb/XKBGAlloc.c | 8 +---- xkb/XKBMAlloc.c | 4 +-- xkb/XKBMisc.c | 5 +-- xkb/ddxBeep.c | 4 --- xkb/ddxCtrls.c | 23 ------------- xkb/ddxKeyClick.c | 4 --- xkb/ddxList.c | 13 ++----- xkb/ddxLoad.c | 80 +++++++------------------------------------ xkb/maprules.c | 86 ++++++++++++++++++----------------------------- xkb/xkb.c | 2 -- xkb/xkbAccessX.c | 8 ++--- xkb/xkbEvents.c | 34 +++++++------------ xkb/xkbInit.c | 17 +--------- xkb/xkbPrKeyEv.c | 4 +-- xkb/xkbUtils.c | 10 ------ xkb/xkmread.c | 19 ++--------- 16 files changed, 69 insertions(+), 252 deletions(-) diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c index 7a75d200d..94072b8ce 100644 --- a/xkb/XKBGAlloc.c +++ b/xkb/XKBGAlloc.c @@ -39,12 +39,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include "xkbgeom.h" -#ifdef X_NOT_POSIX -#define Size_t unsigned int -#else -#define Size_t size_t -#endif - /***====================================================================***/ static void @@ -465,7 +459,7 @@ _XkbGeomAlloc( XPointer * old, unsigned short * num, unsigned short * total, int num_new, - Size_t sz_elem) + size_t sz_elem) { if (num_new<1) return Success; diff --git a/xkb/XKBMAlloc.c b/xkb/XKBMAlloc.c index 9feaf8e93..178b5b89a 100644 --- a/xkb/XKBMAlloc.c +++ b/xkb/XKBMAlloc.c @@ -55,10 +55,8 @@ XkbClientMapPtr map; ((!XkbIsLegalKeycode(xkb->min_key_code))|| (!XkbIsLegalKeycode(xkb->max_key_code))|| (xkb->max_key_codemin_key_code))) { -#ifdef DEBUG -fprintf(stderr,"bad keycode (%d,%d) in XkbAllocClientMap\n", + DebugF("bad keycode (%d,%d) in XkbAllocClientMap\n", xkb->min_key_code,xkb->max_key_code); -#endif return BadValue; } diff --git a/xkb/XKBMisc.c b/xkb/XKBMisc.c index 0404108a2..85415a4c9 100644 --- a/xkb/XKBMisc.c +++ b/xkb/XKBMisc.c @@ -416,10 +416,7 @@ unsigned changed,tmp; if (((explicit&XkbExplicitAutoRepeatMask)==0)&&(xkb->ctrls)) { CARD8 old; old= xkb->ctrls->per_key_repeat[key/8]; -#ifdef RETURN_SHOULD_REPEAT - if (*XkbKeySymsPtr(xkb,key) != XK_Return) -#endif - xkb->ctrls->per_key_repeat[key/8]|= (1<<(key%8)); + xkb->ctrls->per_key_repeat[key/8]|= (1<<(key%8)); if (changes && (old!=xkb->ctrls->per_key_repeat[key/8])) changes->ctrls.changed_ctrls|= XkbPerKeyRepeatMask; } diff --git a/xkb/ddxBeep.c b/xkb/ddxBeep.c index 331357ded..2faed5818 100644 --- a/xkb/ddxBeep.c +++ b/xkb/ddxBeep.c @@ -139,10 +139,6 @@ Atom name; next= 0; pitch= oldPitch= ctrl->bell_pitch; duration= oldDuration= ctrl->bell_duration; -#ifdef DEBUG - if (xkbDebugFlags>1) - ErrorF("beep: %d (count= %d)\n",xkbInfo->beepType,xkbInfo->beepCount); -#endif name= None; switch (xkbInfo->beepType) { default: diff --git a/xkb/ddxCtrls.c b/xkb/ddxCtrls.c index 0f7f9187f..34ea0bd3f 100644 --- a/xkb/ddxCtrls.c +++ b/xkb/ddxCtrls.c @@ -47,12 +47,6 @@ int realRepeat; realRepeat= ctrl->autoRepeat; if ((dev->kbdfeed)&&(XkbDDXUsesSoftRepeat(dev))) ctrl->autoRepeat= 0; -#ifdef DEBUG -if (xkbDebugFlags&0x4) { - ErrorF("XkbDDXKeybdCtrlProc: setting repeat to %d (real repeat is %d)\n", - ctrl->autoRepeat,realRepeat); -} -#endif if (dev->key && dev->key->xkbInfo && dev->key->xkbInfo->kbdProc) (*dev->key->xkbInfo->kbdProc)(dev,ctrl); ctrl->autoRepeat= realRepeat; @@ -93,23 +87,6 @@ unsigned changed, i; unsigned char *rep_old, *rep_new, *rep_fb; changed= new->enabled_ctrls^old->enabled_ctrls; -#ifdef NOTDEF - if (changed&XkbRepeatKeysMask) { - if (dev->kbdfeed) { - int realRepeat; - - if (new->enabled_ctrls&XkbRepeatKeysMask) - dev->kbdfeed->ctrl.autoRepeat= realRepeat= 1; - else dev->kbdfeed->ctrl.autoRepeat= realRepeat= 0; - - if (XkbDDXUsesSoftRepeat(dev)) - dev->kbdfeed->ctrl.autoRepeat= FALSE; - if (dev->kbdfeed->CtrlProc) - (*dev->kbdfeed->CtrlProc)(dev,&dev->kbdfeed->ctrl); - dev->kbdfeed->ctrl.autoRepeat= realRepeat; - } - } -#endif for (rep_old = old->per_key_repeat, rep_new = new->per_key_repeat, rep_fb = dev->kbdfeed->ctrl.autoRepeats, diff --git a/xkb/ddxKeyClick.c b/xkb/ddxKeyClick.c index f48296dbc..51d78f56d 100644 --- a/xkb/ddxKeyClick.c +++ b/xkb/ddxKeyClick.c @@ -42,9 +42,5 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. void XkbDDXKeyClick(DeviceIntPtr pXDev,int keycode,int synthetic) { -#ifdef DEBUG - if (xkbDebugFlags) - ErrorF("Click.\n"); -#endif return; } diff --git a/xkb/ddxList.c b/xkb/ddxList.c index a91a9badf..80e050524 100644 --- a/xkb/ddxList.c +++ b/xkb/ddxList.c @@ -43,14 +43,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include -#ifndef PATH_MAX -#ifdef MAXPATHLEN -#define PATH_MAX MAXPATHLEN -#else -#define PATH_MAX 1024 -#endif -#endif - #ifdef WIN32 /* from ddxLoad.c */ extern const char* Win32TempDir(); @@ -199,9 +191,8 @@ char tmpname[PATH_MAX]; #ifndef WIN32 in= Popen(buf,"r"); #else -#ifdef DEBUG_CMD - ErrorF("xkb executes: %s\n",buf); -#endif + if (xkbDebugFlags) + DebugF("xkbList executes: %s\n",buf); if (System(buf) < 0) ErrorF("Could not invoke keymap compiler\n"); else diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c index d79ae7a7b..63122264b 100644 --- a/xkb/ddxLoad.c +++ b/xkb/ddxLoad.c @@ -50,14 +50,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #if defined(CSRG_BASED) || defined(linux) || defined(__sgi) || defined(AIXV3) || defined(__osf__) || defined(__GNU__) #include -#endif - -#ifndef PATH_MAX -#ifdef MAXPATHLEN -#define PATH_MAX MAXPATHLEN -#else -#define PATH_MAX 1024 -#endif #endif /* @@ -161,44 +153,19 @@ Win32System(const char *cmdline) #define System(x) Win32System(x) #endif -#ifdef MAKE_XKM_OUTPUT_DIR -/* Borrow trans_mkdir from Xtransutil.c to more safely make directories */ -# undef X11_t -# define TRANS_SERVER -# define PRMSG(lvl,x,a,b,c) \ - if (lvl <= 1) { LogMessage(X_ERROR,x,a,b,c); } else ((void)0) -# include -# ifndef XKM_OUTPUT_DIR_MODE -# define XKM_OUTPUT_DIR_MODE 0755 -# endif -#endif - static void OutputDirectory( char* outdir, size_t size) { #ifndef WIN32 - if (getuid() == 0 && (strlen(XKM_OUTPUT_DIR) < size) -#ifdef MAKE_XKM_OUTPUT_DIR - && (trans_mkdir(XKM_OUTPUT_DIR, XKM_OUTPUT_DIR_MODE) == 0) -#endif - ) + if (getuid() == 0 && (strlen(XKM_OUTPUT_DIR) < size)) { /* if server running as root it *may* be able to write */ /* FIXME: check whether directory is writable at all */ (void) strcpy (outdir, XKM_OUTPUT_DIR); } else -#endif -#ifdef _PATH_VARTMP - if ((strlen(_PATH_VARTMP) + 1) < size) - { - (void) strcpy (outdir, _PATH_VARTMP); - if (outdir[strlen(outdir) - 1] != '/') /* Hi IBM, Digital */ - (void) strcat (outdir, "/"); - } else -#endif -#ifdef WIN32 +#else if (strlen(Win32TempDir()) + 1 < size) { (void) strcpy(outdir, Win32TempDir()); @@ -256,15 +223,10 @@ char *cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile; PRE_ERROR_MSG,ERROR_PREFIX,POST_ERROR_MSG1,file, xkm_output_dir,outFile); } -#ifdef DEBUG if (xkbDebugFlags) { - ErrorF("XkbDDXCompileNamedKeymap compiling keymap using:\n"); - ErrorF(" \"cmd\"\n"); + DebugF("XkbDDXCompileNamedKeymap compiling keymap using:\n"); + DebugF(" \"cmd\"\n"); } -#endif -#ifdef DEBUG_CMD - ErrorF("xkb executes: %s\n",cmd); -#endif if (System(cmd)==0) { if (nameRtrn) { strncpy(nameRtrn,outFile,nameRtrnLen); @@ -276,9 +238,7 @@ char *cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile; xfree(cmd); return True; } -#ifdef DEBUG - ErrorF("Error compiling keymap (%s)\n",names->keymap); -#endif + DebugF("Error compiling keymap (%s)\n",names->keymap); if (outFile!=NULL) _XkbFree(outFile); if (cmd!=NULL) @@ -371,12 +331,8 @@ char tmpname[PATH_MAX]; if (fclose(out)==0 && System(buf) >= 0) #endif { -#ifdef DEBUG_CMD - ErrorF("xkb executes: %s\n",buf); - ErrorF("xkbcomp input:\n"); - XkbWriteXKBKeymapForNames(stderr,names,NULL,xkb,want,need); - ErrorF("end xkbcomp input\n"); -#endif + if (xkbDebugFlags) + DebugF("xkb executes: %s\n",buf); if (nameRtrn) { strncpy(nameRtrn,keymap,nameRtrnLen); nameRtrn[nameRtrnLen-1]= '\0'; @@ -385,24 +341,20 @@ char tmpname[PATH_MAX]; xfree (buf); return True; } -#ifdef DEBUG else - ErrorF("Error compiling keymap (%s)\n",keymap); -#endif + DebugF("Error compiling keymap (%s)\n",keymap); #ifdef WIN32 /* remove the temporary file */ unlink(tmpname); #endif } -#ifdef DEBUG else { #ifndef WIN32 - ErrorF("Could not invoke keymap compiler\n"); + DebugF("Could not invoke keymap compiler\n"); #else - ErrorF("Could not open file %s\n", tmpname); + DebugF("Could not open file %s\n", tmpname); #endif } -#endif if (nameRtrn) nameRtrn[0]= '\0'; if (buf != NULL) @@ -477,17 +429,13 @@ unsigned missing; return 0; } else if (!XkbDDXCompileNamedKeymap(xkb,names,nameRtrn,nameRtrnLen)) { -#ifdef NOISY - ErrorF("Couldn't compile keymap file\n"); -#endif + DebugF("Couldn't compile keymap file\n"); return 0; } } else if (!XkbDDXCompileKeymapByNames(xkb,names,want,need, nameRtrn,nameRtrnLen)){ -#ifdef NOISY - ErrorF("Couldn't compile keymap file\n"); -#endif + DebugF("Couldn't compile keymap file\n"); return 0; } file= XkbDDXOpenConfigFile(nameRtrn,fileName,PATH_MAX); @@ -502,11 +450,9 @@ unsigned missing; (void) unlink (fileName); return 0; } -#ifdef DEBUG else if (xkbDebugFlags) { - ErrorF("Loaded %s, defined=0x%x\n",fileName,finfoRtrn->defined); + DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,finfoRtrn->defined); } -#endif fclose(file); (void) unlink (fileName); return (need|want)&(~missing); diff --git a/xkb/maprules.c b/xkb/maprules.c index 52a1cdc86..72e642fbe 100644 --- a/xkb/maprules.c +++ b/xkb/maprules.c @@ -50,16 +50,6 @@ #define XKBSRV_NEED_FILE_FUNCS #include -#ifdef DEBUG -#define PR_DEBUG(s) fprintf(stderr,s) -#define PR_DEBUG1(s,a) fprintf(stderr,s,a) -#define PR_DEBUG2(s,a,b) fprintf(stderr,s,a,b) -#else -#define PR_DEBUG(s) -#define PR_DEBUG1(s,a) -#define PR_DEBUG2(s,a,b) -#endif - /***====================================================================***/ #define DFLT_LINE_SIZE 128 @@ -171,8 +161,8 @@ Bool endOfFile,spacePending,slashPending,inComment; } if (checkbang && ch=='!') { if (line->num_line!=0) { - PR_DEBUG("The '!' legal only at start of line\n"); - PR_DEBUG("Line containing '!' ignored\n"); + DebugF("The '!' legal only at start of line\n"); + DebugF("Line containing '!' ignored\n"); line->num_line= 0; inComment= 0; break; @@ -273,9 +263,7 @@ unsigned present, l_ndx_present, v_ndx_present; register int i; int len, ndx; _Xstrtokparams strtok_buf; -#ifdef DEBUG Bool found; -#endif l_ndx_present = v_ndx_present = present= 0; @@ -284,9 +272,7 @@ Bool found; bzero((char *)remap,sizeof(RemapSpec)); remap->number = len; while ((tok=_XStrtok(str," ",strtok_buf))!=NULL) { -#ifdef DEBUG found= False; -#endif str= NULL; if (strcmp(tok,"=")==0) continue; @@ -299,22 +285,20 @@ Bool found; *end != '\0' || ndx == -1) break; if (ndx < 1 || ndx > XkbNumKbdGroups) { - PR_DEBUG2("Illegal %s index: %d\n", cname[i], ndx); - PR_DEBUG1("Index must be in range 1..%d\n", + DebugF("Illegal %s index: %d\n", cname[i], ndx); + DebugF("Index must be in range 1..%d\n", XkbNumKbdGroups); break; } } else { ndx = 0; } -#ifdef DEBUG found= True; -#endif if (present&(1<num_remap= 0; return; } if ((present&COMPONENT_MASK)==0) { - PR_DEBUG("Mapping needs at least one component\n"); - PR_DEBUG("Illegal mapping ignored\n"); + DebugF("Mapping needs at least one component\n"); + DebugF("Illegal mapping ignored\n"); remap->num_remap= 0; return; } if (((present&COMPONENT_MASK)&(1<num_remap= 0; return; } @@ -434,8 +414,8 @@ Bool append = False; } if (remap->num_remap==0) { - PR_DEBUG("Must have a mapping before first line of data\n"); - PR_DEBUG("Illegal line of data ignored\n"); + DebugF("Must have a mapping before first line of data\n"); + DebugF("Illegal line of data ignored\n"); return False; } bzero((char *)&tmp,sizeof(FileSpec)); @@ -447,8 +427,8 @@ Bool append = False; continue; } if (nread>remap->num_remap) { - PR_DEBUG("Too many words on a line\n"); - PR_DEBUG1("Extra word \"%s\" ignored\n",tok); + DebugF("Too many words on a line\n"); + DebugF("Extra word \"%s\" ignored\n",tok); continue; } tmp.name[remap->remap[nread].word]= tok; @@ -456,8 +436,8 @@ Bool append = False; append = True; } if (nreadnum_remap) { - PR_DEBUG1("Too few words on a line: %s\n", line->line); - PR_DEBUG("line ignored\n"); + DebugF("Too few words on a line: %s\n", line->line); + DebugF("line ignored\n"); return False; } @@ -903,9 +883,7 @@ XkbRF_AddRule(XkbRF_RulesPtr rules) } if (!rules->rules) { rules->sz_rules= rules->num_rules= 0; -#ifdef DEBUG - fprintf(stderr,"Allocation failure in XkbRF_AddRule\n"); -#endif + DebugF("Allocation failure in XkbRF_AddRule\n"); return NULL; } bzero((char *)&rules->rules[rules->num_rules],sizeof(XkbRF_RuleRec)); @@ -1022,7 +1000,7 @@ XkbRF_AddVarDesc(XkbRF_DescribeVarsPtr vars) } if (!vars->desc) { vars->sz_desc= vars->num_desc= 0; - PR_DEBUG("Allocation failure in XkbRF_AddVarDesc\n"); + DebugF("Allocation failure in XkbRF_AddVarDesc\n"); return NULL; } vars->desc[vars->num_desc].name= NULL; @@ -1059,7 +1037,7 @@ XkbRF_AddVarToDescribe(XkbRF_RulesPtr rules,char *name) XkbRF_DescribeVarsRec); } if ((!rules->extra_names)||(!rules->extra)) { - PR_DEBUG("allocation error in extra parts\n"); + DebugF("allocation error in extra parts\n"); rules->sz_extra= rules->num_extra= 0; rules->extra_names= NULL; rules->extra= NULL; @@ -1102,7 +1080,7 @@ int len,headingtype,extra_ndx = 0; } if (extra_ndx<0) { XkbRF_DescribeVarsPtr var; - PR_DEBUG1("Extra heading \"%s\" encountered\n",tok); + DebugF("Extra heading \"%s\" encountered\n",tok); var= XkbRF_AddVarToDescribe(rules,tok); if (var) extra_ndx= var-rules->extra; @@ -1113,20 +1091,20 @@ int len,headingtype,extra_ndx = 0; } if (headingtype == HEAD_NONE) { - PR_DEBUG("Must have a heading before first line of data\n"); - PR_DEBUG("Illegal line of data ignored\n"); + DebugF("Must have a heading before first line of data\n"); + DebugF("Illegal line of data ignored\n"); continue; } len = strlen(line.line); if ((tmp.name= strtok(line.line, " \t")) == NULL) { - PR_DEBUG("Huh? No token on line\n"); - PR_DEBUG("Illegal line of data ignored\n"); + DebugF("Huh? No token on line\n"); + DebugF("Illegal line of data ignored\n"); continue; } if (strlen(tmp.name) == len) { - PR_DEBUG("No description found\n"); - PR_DEBUG("Illegal line of data ignored\n"); + DebugF("No description found\n"); + DebugF("Illegal line of data ignored\n"); continue; } @@ -1134,8 +1112,8 @@ int len,headingtype,extra_ndx = 0; while ((*tok!='\n')&&isspace(*tok)) tok++; if (*tok == '\0') { - PR_DEBUG("No description found\n"); - PR_DEBUG("Illegal line of data ignored\n"); + DebugF("No description found\n"); + DebugF("Illegal line of data ignored\n"); continue; } tmp.desc= tok; diff --git a/xkb/xkb.c b/xkb/xkb.c index 66edcc1fd..bd9a87cf5 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -5784,10 +5784,8 @@ char * str; return status; } else if (length!=0) { -#ifdef DEBUG ErrorF("Internal Error! BadLength in ProcXkbGetDeviceInfo\n"); ErrorF(" Wrote %d fewer bytes than expected\n",length); -#endif return BadLength; } if (stuff->wanted&(~supported)) { diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c index d95fbcdde..75b8c5a27 100644 --- a/xkb/xkbAccessX.c +++ b/xkb/xkbAccessX.c @@ -130,11 +130,9 @@ xEvent xE; xE.u.u.type = type; xE.u.u.detail = keyCode; xE.u.keyButtonPointer.time = GetTimeInMillis(); -#ifdef DEBUG if (xkbDebugFlags&0x8) { - ErrorF("AXKE: Key %d %s\n",keyCode,(xE.u.u.type==KeyPress?"down":"up")); + DebugF("AXKE: Key %d %s\n",keyCode,(xE.u.u.type==KeyPress?"down":"up")); } -#endif if (_XkbIsPressEvent(type)) XkbDDXKeyClick(keybd,keyCode,TRUE); @@ -533,10 +531,8 @@ KeySym * sym = XkbKeySymsPtr(xkbi->desc,key); ((ctrls->enabled_ctrls&(XkbSlowKeysMask|XkbRepeatKeysMask))== XkbRepeatKeysMask)) { if (BitIsOn(keybd->kbdfeed->ctrl.autoRepeats,key)) { -#ifdef DEBUG if (xkbDebugFlags&0x10) - ErrorF("Starting software autorepeat...\n"); -#endif + DebugF("Starting software autorepeat...\n"); xkbi->repeatKey = key; xkbi->repeatKeyTimer= TimerSet(xkbi->repeatKeyTimer, 0, ctrls->repeat_delay, diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c index 7643703e4..49725d065 100644 --- a/xkb/xkbEvents.c +++ b/xkb/xkbEvents.c @@ -813,23 +813,21 @@ XkbSrvInfoPtr xkbi; xkbi= pXDev->key->xkbInfo; if ( pClient->xkbClientFlags & _XkbClientInitialized ) { -#ifdef DEBUG if ((xkbDebugFlags&0x10)&& ((xE[0].u.u.type==KeyPress)||(xE[0].u.u.type==KeyRelease)|| (xE[0].u.u.type==DeviceKeyPress)|| (xE[0].u.u.type == DeviceKeyRelease))) { - ErrorF("XKbFilterWriteEvents:\n"); - ErrorF(" Event state= 0x%04x\n",xE[0].u.keyButtonPointer.state); - ErrorF(" XkbLastRepeatEvent!=xE (0x%p!=0x%p) %s\n", + DebugF("XKbFilterWriteEvents:\n"); + DebugF(" Event state= 0x%04x\n",xE[0].u.keyButtonPointer.state); + DebugF(" XkbLastRepeatEvent!=xE (0x%p!=0x%p) %s\n", XkbLastRepeatEvent,xE, ((XkbLastRepeatEvent!=(pointer)xE)?"True":"False")); - ErrorF(" (xkbClientEventsFlags&XWDA)==0 (0x%x) %s\n", + DebugF(" (xkbClientEventsFlags&XWDA)==0 (0x%x) %s\n", pClient->xkbClientFlags, (_XkbWantsDetectableAutoRepeat(pClient)?"True":"False")); - ErrorF(" !IsRelease(%d) %s\n",xE[0].u.u.type, + DebugF(" !IsRelease(%d) %s\n",xE[0].u.u.type, (!_XkbIsReleaseEvent(xE[0].u.u.type))?"True":"False"); } -#endif /* DEBUG */ if ( (XkbLastRepeatEvent==(pointer)xE) && (_XkbWantsDetectableAutoRepeat(pClient)) && (_XkbIsReleaseEvent(xE[0].u.u.type)) ) { @@ -866,13 +864,11 @@ XkbSrvInfoPtr xkbi; if (xE[0].u.u.type == ButtonPress && ((xE[0].u.keyButtonPointer.state >> 7) & button_mask) == button_mask && (xkbi->lockedPtrButtons & button_mask) == button_mask) { -#ifdef DEBUG /* If the MouseKeys is pressed, and the "real" mouse is also pressed * when the mouse is released, the server does not behave properly. * Faking a release of the button here solves the problem. */ - ErrorF("Faking release of button %d\n", xE[0].u.u.detail); -#endif + DebugF("Faking release of button %d\n", xE[0].u.u.detail); XkbDDXFakePointerButton(ButtonRelease, xE[0].u.u.detail); } } @@ -881,21 +877,19 @@ XkbSrvInfoPtr xkbi; for (i=0;istate; - ErrorF("XKbFilterWriteEvents (non-XKB):\n"); - ErrorF("event= 0x%04x\n",xE[i].u.keyButtonPointer.state); - ErrorF("lookup= 0x%02x, grab= 0x%02x\n",s->lookup_mods, + DebugF("XKbFilterWriteEvents (non-XKB):\n"); + DebugF("event= 0x%04x\n",xE[i].u.keyButtonPointer.state); + DebugF("lookup= 0x%02x, grab= 0x%02x\n",s->lookup_mods, s->grab_mods); - ErrorF("compat lookup= 0x%02x, grab= 0x%02x\n", + DebugF("compat lookup= 0x%02x, grab= 0x%02x\n", s->compat_lookup_mods, s->compat_grab_mods); } -#endif if ( (type>=KeyPress)&&(type<=MotionNotify) ) { CARD16 old,new; @@ -924,16 +918,12 @@ XkbSrvInfoPtr xkbi; if (type == ButtonPress && ((xE[i].u.keyButtonPointer.state >> 7) & button_mask) == button_mask && (xkbi->lockedPtrButtons & button_mask) == button_mask) { -#ifdef DEBUG - ErrorF("Faking release of button %d\n", xE[i].u.u.detail); -#endif + DebugF("Faking release of button %d\n", xE[i].u.u.detail); XkbDDXFakePointerButton(ButtonRelease, xE[i].u.u.detail); } else if (type == DeviceButtonPress && ((((deviceKeyButtonPointer*)&xE[i])->state >> 7) & button_mask) == button_mask && (xkbi->lockedPtrButtons & button_mask) == button_mask) { -#ifdef DEBUG - ErrorF("Faking release of button %d\n", ((deviceKeyButtonPointer*)&xE[i])->state); -#endif + DebugF("Faking release of button %d\n", ((deviceKeyButtonPointer*)&xE[i])->state); XkbDDXFakePointerButton(DeviceButtonRelease, ((deviceKeyButtonPointer*)&xE[i])->state); } } diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index bb1de9de6..2ac51f26c 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -280,10 +280,6 @@ XkbSetRulesDflts(char *rulesFile,char *model,char *layout, /***====================================================================***/ -#if defined(luna) -#define XKB_DDX_PERMANENT_LOCK 1 -#endif - #include "xkbDflts.h" static Bool @@ -390,15 +386,6 @@ Atom unknown; names->indicators[LED_COMPOSE-1] = CREATE_ATOM("Compose"); #endif } -#ifdef DEBUG_RADIO_GROUPS - if (names->num_rg<1) { - names->radio_groups= (Atom *)_XkbCalloc(RG_COUNT, sizeof(Atom)); - if (names->radio_groups) { - names->num_rg = RG_COUNT; - names->radio_groups[RG_BOGUS_FUNCTION_GROUP]= CREATE_ATOM("BOGUS"); - } - } -#endif if (xkb->geom!=NULL) names->geometry= xkb->geom->name; else names->geometry= unknown; @@ -771,9 +758,7 @@ XkbSrvLedInfoPtr sli; sli= XkbFindSrvLedInfo(pXDev,XkbDfltXIClass,XkbDfltXIId,0); if (sli && xkbi) XkbCheckIndicatorMaps(xkbi->device,sli,XkbAllIndicatorsMask); -#ifdef DEBUG - else ErrorF("No indicator feedback in XkbFinishInit (shouldn't happen)!\n"); -#endif + else DebugF("No indicator feedback in XkbFinishInit (shouldn't happen)!\n"); return softRepeat; } diff --git a/xkb/xkbPrKeyEv.c b/xkb/xkbPrKeyEv.c index 3fec4f5ca..69c218c8c 100644 --- a/xkb/xkbPrKeyEv.c +++ b/xkb/xkbPrKeyEv.c @@ -56,11 +56,9 @@ int xiEvent; xkbi= keyc->xkbInfo; key= xE->u.u.detail; xiEvent= (xE->u.u.type & EXTENSION_EVENT_BASE); -#ifdef DEBUG if (xkbDebugFlags&0x8) { - ErrorF("XkbPKE: Key %d %s\n",key,(xE->u.u.type==KeyPress?"down":"up")); + DebugF("XkbPKE: Key %d %s\n",key,(xE->u.u.type==KeyPress?"down":"up")); } -#endif if ( (xkbi->repeatKey==key) && (xE->u.u.type==KeyRelease) && ((xkbi->desc->ctrls->enabled_ctrls&XkbRepeatKeysMask)==0) ) { diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c index 67843e9fb..28d66b38b 100644 --- a/xkb/xkbUtils.c +++ b/xkb/xkbUtils.c @@ -211,16 +211,6 @@ KeySym tsyms[XkbMaxSymsPerKey],*syms; XkbMapChangesPtr mc; xkb= pXDev->key->xkbInfo->desc; -#ifdef NOTYET - if (firstmin_key_code) { - if (first>=XkbMinLegalKeyCode) { - xkb->min_key_code= first; - /* 1/12/95 (ef) -- XXX! should zero out the new maps */ - changes->map.changed|= XkbKeycodesMask; -/* generate a NewKeyboard notify here? */ - } - } -#endif if (first+num-1>xkb->max_key_code) { /* 1/12/95 (ef) -- XXX! should allow XKB structures to grow */ num= xkb->max_key_code-first+1; diff --git a/xkb/xkmread.c b/xkb/xkmread.c index 88296188a..2bb02896b 100644 --- a/xkb/xkmread.c +++ b/xkb/xkmread.c @@ -40,8 +40,7 @@ #include "misc.h" #include "inputstr.h" #include "xkbstr.h" -#define XKBSRV_NEED_FILE_FUNCS -#include +#include "xkbsrv.h" #include "xkbgeom.h" Atom @@ -52,10 +51,6 @@ XkbInternAtom(Display *dpy,char *str,Bool only_if_exists) return MakeAtom(str,strlen(str),!only_if_exists); } -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - char * _XkbDupString(char *str) { @@ -562,10 +557,8 @@ FindTypeForKey(XkbDescPtr xkb,Atom name,unsigned width,KeySym *syms) register unsigned i; for (i=0;imap->num_types;i++) { if (xkb->map->types[i].name==name) { -#ifdef DEBUG if (xkb->map->types[i].num_levels!=width) - fprintf(stderr,"Group width mismatch between key and type\n"); -#endif + DebugF("Group width mismatch between key and type\n"); return &xkb->map->types[i]; } } @@ -1086,10 +1079,8 @@ unsigned i,size_toc; fread(file_info,SIZEOF(xkmFileInfo),1,file); size_toc= file_info->num_toc; if (size_toc>max_toc) { -#ifdef DEBUG - fprintf(stderr,"Warning! Too many TOC entries; last %d ignored\n", + DebugF("Warning! Too many TOC entries; last %d ignored\n", size_toc-max_toc); -#endif size_toc= max_toc; } for (i=0;ixkb==NULL) result->xkb= XkbAllocKeyboard(); for (i=0;i Date: Sun, 3 Feb 2008 23:43:18 +1100 Subject: [PATCH 065/112] XKB: Remove usage of client-side types Since we're no longer sharing with Xlib, don't pass Displays and XPointers everywhere. --- include/xkbfile.h | 33 +--------------- include/xkbsrv.h | 12 +++--- include/xkbstr.h | 1 - xkb/XKBGAlloc.c | 32 ++++++++-------- xkb/ddxLoad.c | 4 +- xkb/xkbfmisc.c | 11 +++--- xkb/xkbgeom.h | 20 ---------- xkb/xkbout.c | 96 +++++++++++++++++++---------------------------- xkb/xkbtext.c | 56 +++++++++++++-------------- xkb/xkmread.c | 51 ++++++++++++------------- 10 files changed, 119 insertions(+), 197 deletions(-) diff --git a/include/xkbfile.h b/include/xkbfile.h index d58bec69f..e90d7668e 100644 --- a/include/xkbfile.h +++ b/include/xkbfile.h @@ -96,7 +96,6 @@ extern char * XkbIndentText( ); extern char * XkbAtomText( - Display * /* dpy */, Atom /* atm */, unsigned /* format */ ); @@ -129,14 +128,12 @@ XkbModMaskText( ); extern char * XkbVModIndexText( - Display * /* dpy */, XkbDescPtr /* xkb */, unsigned /* ndx */, unsigned /* format */ ); extern char * XkbVModMaskText( - Display * /* dpy */, XkbDescPtr /* xkb */, unsigned /* modMask */, unsigned /* mask */, @@ -189,7 +186,6 @@ extern char * XkbActionTypeText( ); extern char * XkbActionText( - Display * /* dpy */, XkbDescPtr /* xkb */, XkbAction * /* action */, unsigned /* format */ @@ -232,31 +228,12 @@ extern Bool XkbLookupGroupAndLevel( /***====================================================================***/ -extern char * XkbAtomGetString( - Display * /* dpy */, - Atom /* atm */ -); - extern Atom XkbInternAtom( - Display * /* dpy */, char * /* name */, Bool /* onlyIfExists */ ); -extern Status XkbChangeKbdDisplay( - Display * /* newDpy */, - XkbFileInfo * /* result */ -); - -extern Atom XkbChangeAtomDisplay( - Display * /* oldDpy */, - Display * /* newDpy */, - Atom /* atm */ -); - -extern void XkbInitAtoms( - Display * /* dpy */ -); +extern void XkbInitAtoms(void); /***====================================================================***/ @@ -415,7 +392,6 @@ extern void XkbEnsureSafeMapName( extern Bool XkbWriteXKBKeymapForNames( FILE * /* file */, XkbComponentNamesPtr /* names */, - Display * /* dpy */, XkbDescPtr /* xkb */, unsigned /* want */, unsigned /* need */ @@ -432,13 +408,6 @@ extern Bool XkmProbe( FILE * /* file */ ); -extern unsigned XkbReadFromServer( - Display * /* dpy */, - unsigned /* need */, - unsigned /* want */, - XkbFileInfo * /* result */ -); - extern unsigned XkmReadFile( FILE * /* file */, unsigned /* need */, diff --git a/include/xkbsrv.h b/include/xkbsrv.h index df9aefca3..a71150462 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -328,12 +328,10 @@ extern int DeviceEnterNotify,DeviceLeaveNotify; #define IsKeypadKey(s) XkbKSIsKeypad(s) #define Status int -#define XPointer pointer -#define Display struct _XDisplay #ifndef True -#define True 1 -#define False 0 +#define True TRUE +#define False FALSE #endif _XFUNCPROTOBEGIN @@ -1020,11 +1018,11 @@ extern Bool XkbDDXNamesFromRules( ); extern Bool XkbDDXApplyConfig( - XPointer /* cfg_in */, + void * /* cfg_in */, XkbSrvInfoPtr /* xkbi */ ); -extern XPointer XkbDDXPreloadConfig( +extern void *XkbDDXPreloadConfig( char ** /* rulesFileRtrn */, XkbRF_VarDefsPtr /* defs */, XkbComponentNamesPtr /* names */, @@ -1038,6 +1036,6 @@ extern int _XkbStrCaseCmp( _XFUNCPROTOEND -#define XkbAtomGetString(d,s) NameForAtom(s) +#define XkbAtomGetString(s) NameForAtom(s) #endif /* _XKBSRV_H_ */ diff --git a/include/xkbstr.h b/include/xkbstr.h index e519e657d..f390c611c 100644 --- a/include/xkbstr.h +++ b/include/xkbstr.h @@ -418,7 +418,6 @@ typedef struct _XkbGeometry *XkbGeometryPtr; * Tie it all together into one big keyboard description */ typedef struct _XkbDesc { - struct _XDisplay * dpy; unsigned short flags; unsigned short device_spec; KeyCode min_key_code; diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c index 94072b8ce..c37f49a55 100644 --- a/xkb/XKBGAlloc.c +++ b/xkb/XKBGAlloc.c @@ -455,7 +455,7 @@ XkbFreeGeometry(XkbGeometryPtr geom,unsigned which,Bool freeMap) /***====================================================================***/ static Status -_XkbGeomAlloc( XPointer * old, +_XkbGeomAlloc( void ** old, unsigned short * num, unsigned short * total, int num_new, @@ -471,8 +471,8 @@ _XkbGeomAlloc( XPointer * old, *total= (*num)+num_new; if ((*old)!=NULL) - (*old)= (XPointer)_XkbRealloc((*old),(*total)*sz_elem); - else (*old)= (XPointer)_XkbCalloc((*total),sz_elem); + (*old)= _XkbRealloc((*old),(*total)*sz_elem); + else (*old)= _XkbCalloc((*total),sz_elem); if ((*old)==NULL) { *total= *num= 0; return BadAlloc; @@ -485,44 +485,44 @@ _XkbGeomAlloc( XPointer * old, return Success; } -#define _XkbAllocProps(g,n) _XkbGeomAlloc((XPointer *)&(g)->properties,\ +#define _XkbAllocProps(g,n) _XkbGeomAlloc((void *)&(g)->properties,\ &(g)->num_properties,&(g)->sz_properties,\ (n),sizeof(XkbPropertyRec)) -#define _XkbAllocColors(g,n) _XkbGeomAlloc((XPointer *)&(g)->colors,\ +#define _XkbAllocColors(g,n) _XkbGeomAlloc((void *)&(g)->colors,\ &(g)->num_colors,&(g)->sz_colors,\ (n),sizeof(XkbColorRec)) -#define _XkbAllocShapes(g,n) _XkbGeomAlloc((XPointer *)&(g)->shapes,\ +#define _XkbAllocShapes(g,n) _XkbGeomAlloc((void *)&(g)->shapes,\ &(g)->num_shapes,&(g)->sz_shapes,\ (n),sizeof(XkbShapeRec)) -#define _XkbAllocSections(g,n) _XkbGeomAlloc((XPointer *)&(g)->sections,\ +#define _XkbAllocSections(g,n) _XkbGeomAlloc((void *)&(g)->sections,\ &(g)->num_sections,&(g)->sz_sections,\ (n),sizeof(XkbSectionRec)) -#define _XkbAllocDoodads(g,n) _XkbGeomAlloc((XPointer *)&(g)->doodads,\ +#define _XkbAllocDoodads(g,n) _XkbGeomAlloc((void *)&(g)->doodads,\ &(g)->num_doodads,&(g)->sz_doodads,\ (n),sizeof(XkbDoodadRec)) -#define _XkbAllocKeyAliases(g,n) _XkbGeomAlloc((XPointer *)&(g)->key_aliases,\ +#define _XkbAllocKeyAliases(g,n) _XkbGeomAlloc((void *)&(g)->key_aliases,\ &(g)->num_key_aliases,&(g)->sz_key_aliases,\ (n),sizeof(XkbKeyAliasRec)) -#define _XkbAllocOutlines(s,n) _XkbGeomAlloc((XPointer *)&(s)->outlines,\ +#define _XkbAllocOutlines(s,n) _XkbGeomAlloc((void *)&(s)->outlines,\ &(s)->num_outlines,&(s)->sz_outlines,\ (n),sizeof(XkbOutlineRec)) -#define _XkbAllocRows(s,n) _XkbGeomAlloc((XPointer *)&(s)->rows,\ +#define _XkbAllocRows(s,n) _XkbGeomAlloc((void *)&(s)->rows,\ &(s)->num_rows,&(s)->sz_rows,\ (n),sizeof(XkbRowRec)) -#define _XkbAllocPoints(o,n) _XkbGeomAlloc((XPointer *)&(o)->points,\ +#define _XkbAllocPoints(o,n) _XkbGeomAlloc((void *)&(o)->points,\ &(o)->num_points,&(o)->sz_points,\ (n),sizeof(XkbPointRec)) -#define _XkbAllocKeys(r,n) _XkbGeomAlloc((XPointer *)&(r)->keys,\ +#define _XkbAllocKeys(r,n) _XkbGeomAlloc((void *)&(r)->keys,\ &(r)->num_keys,&(r)->sz_keys,\ (n),sizeof(XkbKeyRec)) -#define _XkbAllocOverlays(s,n) _XkbGeomAlloc((XPointer *)&(s)->overlays,\ +#define _XkbAllocOverlays(s,n) _XkbGeomAlloc((void *)&(s)->overlays,\ &(s)->num_overlays,&(s)->sz_overlays,\ (n),sizeof(XkbOverlayRec)) -#define _XkbAllocOverlayRows(o,n) _XkbGeomAlloc((XPointer *)&(o)->rows,\ +#define _XkbAllocOverlayRows(o,n) _XkbGeomAlloc((void *)&(o)->rows,\ &(o)->num_rows,&(o)->sz_rows,\ (n),sizeof(XkbOverlayRowRec)) -#define _XkbAllocOverlayKeys(r,n) _XkbGeomAlloc((XPointer *)&(r)->keys,\ +#define _XkbAllocOverlayKeys(r,n) _XkbGeomAlloc((void *)&(r)->keys,\ &(r)->num_keys,&(r)->sz_keys,\ (n),sizeof(XkbOverlayKeyRec)) diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c index 63122264b..60a8d443a 100644 --- a/xkb/ddxLoad.c +++ b/xkb/ddxLoad.c @@ -321,10 +321,10 @@ char tmpname[PATH_MAX]; #ifdef DEBUG if (xkbDebugFlags) { ErrorF("XkbDDXCompileKeymapByNames compiling keymap:\n"); - XkbWriteXKBKeymapForNames(stderr,names,NULL,xkb,want,need); + XkbWriteXKBKeymapForNames(stderr,names,xkb,want,need); } #endif - XkbWriteXKBKeymapForNames(out,names,NULL,xkb,want,need); + XkbWriteXKBKeymapForNames(out,names,xkb,want,need); #ifndef WIN32 if (Pclose(out)==0) #else diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c index 06d3519af..4182c3a34 100644 --- a/xkb/xkbfmisc.c +++ b/xkb/xkbfmisc.c @@ -160,7 +160,6 @@ _AddIncl( FILE * file, Bool XkbWriteXKBKeymapForNames( FILE * file, XkbComponentNamesPtr names, - Display * dpy, XkbDescPtr xkb, unsigned want, unsigned need) @@ -233,7 +232,7 @@ XkbFileInfo finfo; if ((xkb!=NULL) && (old_names!=NULL)) { if (wantNames&XkmTypesMask) { if (old_names->types!=None) { - tmp= XkbAtomGetString(dpy,old_names->types); + tmp= XkbAtomGetString(old_names->types); names->types= _XkbDupString(tmp); } else { @@ -243,7 +242,7 @@ XkbFileInfo finfo; } if (wantNames&XkmCompatMapMask) { if (old_names->compat!=None) { - tmp= XkbAtomGetString(dpy,old_names->compat); + tmp= XkbAtomGetString(old_names->compat); names->compat= _XkbDupString(tmp); } else wantDflts|= XkmCompatMapMask; @@ -252,13 +251,13 @@ XkbFileInfo finfo; if (wantNames&XkmSymbolsMask) { if (old_names->symbols==None) return False; - tmp= XkbAtomGetString(dpy,old_names->symbols); + tmp= XkbAtomGetString(old_names->symbols); names->symbols= _XkbDupString(tmp); complete|= XkmSymbolsMask; } if (wantNames&XkmKeyNamesMask) { if (old_names->keycodes!=None) { - tmp= XkbAtomGetString(dpy,old_names->keycodes); + tmp= XkbAtomGetString(old_names->keycodes); names->keycodes= _XkbDupString(tmp); } else wantDflts|= XkmKeyNamesMask; @@ -267,7 +266,7 @@ XkbFileInfo finfo; if (wantNames&XkmGeometryMask) { if (old_names->geometry==None) return False; - tmp= XkbAtomGetString(dpy,old_names->geometry); + tmp= XkbAtomGetString(old_names->geometry); names->geometry= _XkbDupString(tmp); complete|= XkmGeometryMask; wantNames&= ~XkmGeometryMask; diff --git a/xkb/xkbgeom.h b/xkb/xkbgeom.h index a6918b4b9..173affee9 100644 --- a/xkb/xkbgeom.h +++ b/xkb/xkbgeom.h @@ -599,13 +599,6 @@ XkbAllocGeometry( XkbGeometrySizesPtr /* sizes */ ); -extern Status -XkbSetGeometry( - Display * /* dpy */, - unsigned /* deviceSpec */, - XkbGeometryPtr /* geom */ -); - extern Bool XkbComputeShapeTop( XkbShapePtr /* shape */, @@ -637,19 +630,6 @@ XkbFindOverlayForKey( char * /* under */ ); -extern Status -XkbGetGeometry( - Display * /* dpy */, - XkbDescPtr /* xkb */ -); - -extern Status -XkbGetNamedGeometry( - Display * /* dpy */, - XkbDescPtr /* xkb */, - Atom /* name */ -); - _XFUNCPROTOEND #endif /* _XKBGEOM_H_ */ diff --git a/xkb/xkbout.c b/xkb/xkbout.c index fc4e43e3f..b72c05c60 100644 --- a/xkb/xkbout.c +++ b/xkb/xkbout.c @@ -52,7 +52,7 @@ #define VMOD_COMMENT_VALUE 2 static Bool -WriteXKBVModDecl(FILE *file,Display *dpy,XkbDescPtr xkb,int showValue) +WriteXKBVModDecl(FILE *file,XkbDescPtr xkb,int showValue) { register int i,nMods; Atom * vmodNames; @@ -67,7 +67,7 @@ Atom * vmodNames; if ((vmodNames!=NULL)&&(vmodNames[i]!=None)) { if (nMods==0) fprintf(file," virtual_modifiers "); else fprintf(file,","); - fprintf(file,"%s",XkbAtomText(dpy,vmodNames[i],XkbXKBFile)); + fprintf(file,"%s",XkbAtomText(vmodNames[i],XkbXKBFile)); if ((showValue!=VMOD_HIDE_VALUE)&& (xkb->server)&&(xkb->server->vmods[i]!=XkbNoModifierMask)) { if (showValue==VMOD_COMMENT_VALUE) { @@ -92,12 +92,7 @@ Atom * vmodNames; static Bool WriteXKBAction(FILE *file,XkbFileInfo *result,XkbAnyAction *action) { -XkbDescPtr xkb; -Display * dpy; - - xkb= result->xkb; - dpy= xkb->dpy; - fprintf(file,"%s",XkbActionText(dpy,xkb,(XkbAction *)action,XkbXKBFile)); + fprintf(file,"%s",XkbActionText(result->xkb,(XkbAction *)action,XkbXKBFile)); return True; } @@ -114,11 +109,9 @@ XkbWriteXKBKeycodes( FILE * file, Atom kcName; register unsigned i; XkbDescPtr xkb; -Display * dpy; char * alternate; xkb= result->xkb; - dpy= xkb->dpy; if ((!xkb)||(!xkb->names)||(!xkb->names->keys)) { _XkbLibError(_XkbErrMissingNames,"XkbWriteXKBKeycodes",0); return False; @@ -126,7 +119,7 @@ char * alternate; kcName= xkb->names->keycodes; if (kcName!=None) fprintf(file,"xkb_keycodes \"%s\" {\n", - XkbAtomText(dpy,kcName,XkbXKBFile)); + XkbAtomText(kcName,XkbXKBFile)); else fprintf(file,"xkb_keycodes {\n"); fprintf(file," minimum = %d;\n",xkb->min_key_code); fprintf(file," maximum = %d;\n",xkb->max_key_code); @@ -148,7 +141,7 @@ char * alternate; else type= " virtual "; if (xkb->names->indicators[i]!=None) { fprintf(file,"%sindicator %d = \"%s\";\n",type,i+1, - XkbAtomText(dpy,xkb->names->indicators[i],XkbXKBFile)); + XkbAtomText(xkb->names->indicators[i],XkbXKBFile)); } } } @@ -175,14 +168,12 @@ XkbWriteXKBKeyTypes( FILE * file, XkbFileAddOnFunc addOn, void * priv) { -Display * dpy; register unsigned i,n; XkbKeyTypePtr type; XkbKTMapEntryPtr entry; XkbDescPtr xkb; xkb= result->xkb; - dpy= xkb->dpy; if ((!xkb)||(!xkb->map)||(!xkb->map->types)) { _XkbLibError(_XkbErrMissingTypes,"XkbWriteXKBKeyTypes",0); return False; @@ -194,27 +185,27 @@ XkbDescPtr xkb; if ((xkb->names==NULL)||(xkb->names->types==None)) fprintf(file,"xkb_types {\n\n"); else fprintf(file,"xkb_types \"%s\" {\n\n", - XkbAtomText(dpy,xkb->names->types,XkbXKBFile)); - WriteXKBVModDecl(file,dpy,xkb, + XkbAtomText(xkb->names->types,XkbXKBFile)); + WriteXKBVModDecl(file,xkb, (showImplicit?VMOD_COMMENT_VALUE:VMOD_HIDE_VALUE)); type= xkb->map->types; for (i=0;imap->num_types;i++,type++) { fprintf(file," type \"%s\" {\n", - XkbAtomText(dpy,type->name,XkbXKBFile)); + XkbAtomText(type->name,XkbXKBFile)); fprintf(file," modifiers= %s;\n", - XkbVModMaskText(dpy,xkb,type->mods.real_mods,type->mods.vmods, + XkbVModMaskText(xkb,type->mods.real_mods,type->mods.vmods, XkbXKBFile)); entry= type->map; for (n=0;nmap_count;n++,entry++) { char *str; - str=XkbVModMaskText(dpy,xkb,entry->mods.real_mods,entry->mods.vmods, + str=XkbVModMaskText(xkb,entry->mods.real_mods,entry->mods.vmods, XkbXKBFile); fprintf(file," map[%s]= Level%d;\n",str,entry->level+1); if ((type->preserve)&&((type->preserve[n].real_mods)|| (type->preserve[n].vmods))) { fprintf(file," preserve[%s]= ",str); - fprintf(file,"%s;\n",XkbVModMaskText(dpy,xkb, + fprintf(file,"%s;\n",XkbVModMaskText(xkb, type->preserve[n].real_mods, type->preserve[n].vmods, XkbXKBFile)); @@ -226,7 +217,7 @@ XkbDescPtr xkb; if ((*name)==None) continue; fprintf(file," level_name[Level%d]= \"%s\";\n",n+1, - XkbAtomText(dpy,*name,XkbXKBFile)); + XkbAtomText(*name,XkbXKBFile)); } } fprintf(file," };\n"); @@ -248,7 +239,7 @@ WriteXKBIndicatorMap( FILE * file, XkbDescPtr xkb; xkb= result->xkb; - fprintf(file," indicator \"%s\" {\n",XkbAtomGetString(xkb->dpy,name)); + fprintf(file," indicator \"%s\" {\n",XkbAtomGetString(name)); if (led->flags&XkbIM_NoExplicit) fprintf(file," !allowExplicit;\n"); if (led->flags&XkbIM_LEDDrivesKB) @@ -266,7 +257,7 @@ XkbDescPtr xkb; XkbIMWhichStateMaskText(led->which_mods,XkbXKBFile)); } fprintf(file," modifiers= %s;\n", - XkbVModMaskText(xkb->dpy,xkb, + XkbVModMaskText(xkb, led->mods.real_mods,led->mods.vmods, XkbXKBFile)); } @@ -288,13 +279,11 @@ XkbWriteXKBCompatMap( FILE * file, XkbFileAddOnFunc addOn, void * priv) { -Display * dpy; register unsigned i; XkbSymInterpretPtr interp; XkbDescPtr xkb; xkb= result->xkb; - dpy= xkb->dpy; if ((!xkb)||(!xkb->compat)||(!xkb->compat->sym_interpret)) { _XkbLibError(_XkbErrMissingCompatMap,"XkbWriteXKBCompatMap",0); return False; @@ -302,8 +291,8 @@ XkbDescPtr xkb; if ((xkb->names==NULL)||(xkb->names->compat==None)) fprintf(file,"xkb_compatibility {\n\n"); else fprintf(file,"xkb_compatibility \"%s\" {\n\n", - XkbAtomText(dpy,xkb->names->compat,XkbXKBFile)); - WriteXKBVModDecl(file,dpy,xkb, + XkbAtomText(xkb->names->compat,XkbXKBFile)); + WriteXKBVModDecl(file,xkb, (showImplicit?VMOD_COMMENT_VALUE:VMOD_HIDE_VALUE)); fprintf(file," interpret.useModMapMods= AnyLevel;\n"); @@ -318,7 +307,7 @@ XkbDescPtr xkb; XkbModMaskText(interp->mods,XkbXKBFile)); if (interp->virtual_mod!=XkbNoModifier) { fprintf(file," virtualModifier= %s;\n", - XkbVModIndexText(dpy,xkb,interp->virtual_mod,XkbXKBFile)); + XkbVModIndexText(xkb,interp->virtual_mod,XkbXKBFile)); } if (interp->match&XkbSI_LevelOneOnly) fprintf(file," useModMapMods=level1;\n"); @@ -337,7 +326,7 @@ XkbDescPtr xkb; gc= &xkb->compat->groups[i]; if ((gc->real_mods==0)&&(gc->vmods==0)) continue; - fprintf(file," group %d = %s;\n",i+1,XkbVModMaskText(xkb->dpy,xkb, + fprintf(file," group %d = %s;\n",i+1,XkbVModMaskText(xkb, gc->real_mods,gc->vmods, XkbXKBFile)); } @@ -367,7 +356,6 @@ XkbWriteXKBSymbols( FILE * file, XkbFileAddOnFunc addOn, void * priv) { -Display * dpy; register unsigned i,tmp; XkbDescPtr xkb; XkbClientMapPtr map; @@ -377,7 +365,6 @@ Bool showActions; xkb= result->xkb; map= xkb->map; srv= xkb->server; - dpy= xkb->dpy; if ((!xkb)||(!map)||(!map->syms)||(!map->key_sym_map)) { _XkbLibError(_XkbErrMissingSymbols,"XkbWriteXKBSymbols",0); return False; @@ -389,11 +376,11 @@ Bool showActions; if ((xkb->names==NULL)||(xkb->names->symbols==None)) fprintf(file,"xkb_symbols {\n\n"); else fprintf(file,"xkb_symbols \"%s\" {\n\n", - XkbAtomText(dpy,xkb->names->symbols,XkbXKBFile)); + XkbAtomText(xkb->names->symbols,XkbXKBFile)); for (tmp=i=0;inames->groups[i]!=None) { fprintf(file," name[group%d]=\"%s\";\n",i+1, - XkbAtomText(dpy,xkb->names->groups[i],XkbXKBFile)); + XkbAtomText(xkb->names->groups[i],XkbXKBFile)); tmp++; } } @@ -429,19 +416,19 @@ Bool showActions; if (srv->explicit[i]&(1<types[typeNdx].name, + XkbAtomText(map->types[typeNdx].name, XkbXKBFile)); } else if (showImplicit) { fprintf(file,"\n// type[group%d]= \"%s\",",g+1, - XkbAtomText(dpy,map->types[typeNdx].name, + XkbAtomText(map->types[typeNdx].name, XkbXKBFile)); } } } else { fprintf(file,"\n%s type= \"%s\",",comment, - XkbAtomText(dpy,map->types[typeNdx].name, + XkbAtomText(map->types[typeNdx].name, XkbXKBFile)); } simple= False; @@ -457,13 +444,13 @@ Bool showActions; (xkb->server->vmodmap[i]!=0)) { if ((srv->explicit[i]&XkbExplicitVModMapMask)!=0) { fprintf(file,"\n virtualMods= %s,", - XkbVModMaskText(dpy,xkb,0, + XkbVModMaskText(xkb,0, xkb->server->vmodmap[i], XkbXKBFile)); } else if (showImplicit) { fprintf(file,"\n// virtualMods= %s,", - XkbVModMaskText(dpy,xkb,0, + XkbVModMaskText(xkb,0, xkb->server->vmodmap[i], XkbXKBFile)); } @@ -603,7 +590,6 @@ char * iStr; static Bool WriteXKBDoodad( FILE * file, - Display * dpy, unsigned indent, XkbGeometryPtr geom, XkbDoodadPtr doodad) @@ -615,7 +601,7 @@ XkbColorPtr color; i_str= XkbIndentText(indent); fprintf(file,"%s%s \"%s\" {\n",i_str, XkbDoodadTypeText(doodad->any.type,XkbMessage), - XkbAtomText(dpy,doodad->any.name,XkbMessage)); + XkbAtomText(doodad->any.name,XkbMessage)); fprintf(file,"%s top= %s;\n",i_str, XkbGeomFPText(doodad->any.top,XkbXKBFile)); fprintf(file,"%s left= %s;\n",i_str, @@ -634,7 +620,7 @@ XkbColorPtr color; } shape= XkbShapeDoodadShape(geom,&doodad->shape); fprintf(file,"%s shape= \"%s\";\n",i_str, - XkbAtomText(dpy,shape->name,XkbXKBFile)); + XkbAtomText(shape->name,XkbXKBFile)); break; case XkbTextDoodad: if (doodad->text.angle!=0) { @@ -670,7 +656,7 @@ XkbColorPtr color; fprintf(file,"%s offColor= \"%s\";\n",i_str, XkbStringText(color->spec,XkbXKBFile)); fprintf(file,"%s shape= \"%s\";\n",i_str, - XkbAtomText(dpy,shape->name,XkbXKBFile)); + XkbAtomText(shape->name,XkbXKBFile)); break; case XkbLogoDoodad: fprintf(file,"%s logoName= \"%s\";\n",i_str, @@ -685,7 +671,7 @@ XkbColorPtr color; } shape= XkbLogoDoodadShape(geom,&doodad->logo); fprintf(file,"%s shape= \"%s\";\n",i_str, - XkbAtomText(dpy,shape->name,XkbXKBFile)); + XkbAtomText(shape->name,XkbXKBFile)); break; } fprintf(file,"%s};\n",i_str); @@ -695,7 +681,6 @@ XkbColorPtr color; /*ARGSUSED*/ static Bool WriteXKBOverlay( FILE * file, - Display * dpy, unsigned indent, XkbGeometryPtr geom, XkbOverlayPtr ol) @@ -708,7 +693,7 @@ XkbOverlayKeyPtr key; i_str= XkbIndentText(indent); if (ol->name!=None) { fprintf(file,"%soverlay \"%s\" {\n",i_str, - XkbAtomText(dpy,ol->name,XkbMessage)); + XkbAtomText(ol->name,XkbMessage)); } else fprintf(file,"%soverlay {\n",i_str); for (nOut=r=0,row=ol->rows;rnum_rows;r++,row++) { @@ -730,7 +715,6 @@ XkbOverlayKeyPtr key; static Bool WriteXKBSection( FILE * file, - Display * dpy, XkbSectionPtr s, XkbGeometryPtr geom) { @@ -739,7 +723,7 @@ XkbRowPtr row; int dfltKeyColor = 0; fprintf(file," section \"%s\" {\n", - XkbAtomText(dpy,s->name,XkbXKBFile)); + XkbAtomText(s->name,XkbXKBFile)); if (s->rows&&(s->rows->num_keys>0)) { dfltKeyColor= s->rows->keys[0].color_ndx; fprintf(file," key.color= \"%s\";\n", @@ -788,7 +772,7 @@ int dfltKeyColor = 0; shape= XkbKeyShape(geom,key); fprintf(file,"{ %6s, \"%s\", %3s", XkbKeyNameText(key->name.name,XkbXKBFile), - XkbAtomText(dpy,shape->name,XkbXKBFile), + XkbAtomText(shape->name,XkbXKBFile), XkbGeomFPText(key->gap,XkbXKBFile)); if (key->color_ndx!=dfltKeyColor) { fprintf(file,", color=\"%s\"",XkbKeyColor(geom,key)->spec); @@ -803,17 +787,17 @@ int dfltKeyColor = 0; if (s->doodads!=NULL) { XkbDoodadPtr doodad; for (i=0,doodad=s->doodads;inum_doodads;i++,doodad++) { - WriteXKBDoodad(file,dpy,8,geom,doodad); + WriteXKBDoodad(file,8,geom,doodad); } } if (s->overlays!=NULL) { XkbOverlayPtr ol; for (i=0,ol=s->overlays;inum_overlays;i++,ol++) { - WriteXKBOverlay(file,dpy,8,geom,ol); + WriteXKBOverlay(file,8,geom,ol); } } fprintf(file," }; // End of \"%s\" section\n\n", - XkbAtomText(dpy,s->name,XkbXKBFile)); + XkbAtomText(s->name,XkbXKBFile)); return True; } @@ -825,7 +809,6 @@ XkbWriteXKBGeometry( FILE * file, XkbFileAddOnFunc addOn, void * priv) { -Display * dpy; register unsigned i,n; XkbDescPtr xkb; XkbGeometryPtr geom; @@ -835,12 +818,11 @@ XkbGeometryPtr geom; _XkbLibError(_XkbErrMissingGeometry,"XkbWriteXKBGeometry",0); return False; } - dpy= xkb->dpy; geom= xkb->geom; if (geom->name==None) fprintf(file,"xkb_geometry {\n\n"); else fprintf(file,"xkb_geometry \"%s\" {\n\n", - XkbAtomText(dpy,geom->name,XkbXKBFile)); + XkbAtomText(geom->name,XkbXKBFile)); fprintf(file," width= %s;\n", XkbGeomFPText(geom->width_mm,XkbXKBFile)); fprintf(file," height= %s;\n\n", @@ -889,7 +871,7 @@ XkbGeometryPtr geom; for (shape=geom->shapes,i=0;inum_shapes;i++,shape++) { lastR=0; fprintf(file," shape \"%s\" {", - XkbAtomText(dpy,shape->name,XkbXKBFile)); + XkbAtomText(shape->name,XkbXKBFile)); outline= shape->outlines; if (shape->num_outlines>1) { for (n=0;nnum_outlines;n++,outline++) { @@ -909,13 +891,13 @@ XkbGeometryPtr geom; if (geom->num_sections>0) { XkbSectionPtr section; for (section=geom->sections,i=0;inum_sections;i++,section++){ - WriteXKBSection(file,dpy,section,geom); + WriteXKBSection(file,section,geom); } } if (geom->num_doodads>0) { XkbDoodadPtr doodad; for (i=0,doodad=geom->doodads;inum_doodads;i++,doodad++) { - WriteXKBDoodad(file,dpy,4,geom,doodad); + WriteXKBDoodad(file,4,geom,doodad); } } if (addOn) diff --git a/xkb/xkbtext.c b/xkb/xkbtext.c index 1520a9f58..d08c91589 100644 --- a/xkb/xkbtext.c +++ b/xkb/xkbtext.c @@ -69,11 +69,11 @@ char *rtrn; /***====================================================================***/ char * -XkbAtomText(Display *dpy,Atom atm,unsigned format) +XkbAtomText(Atom atm,unsigned format) { char *rtrn,*tmp; - tmp= XkbAtomGetString(dpy,atm); + tmp= XkbAtomGetString(atm); if (tmp!=NULL) { int len; len= strlen(tmp)+1; @@ -101,7 +101,7 @@ char *rtrn,*tmp; /***====================================================================***/ char * -XkbVModIndexText(Display *dpy,XkbDescPtr xkb,unsigned ndx,unsigned format) +XkbVModIndexText(XkbDescPtr xkb,unsigned ndx,unsigned format) { register int len; register Atom *vmodNames; @@ -116,7 +116,7 @@ char numBuf[20]; if (ndx>=XkbNumVirtualMods) tmp= "illegal"; else if (vmodNames&&(vmodNames[ndx]!=None)) - tmp= XkbAtomGetString(dpy,vmodNames[ndx]); + tmp= XkbAtomGetString(vmodNames[ndx]); if (tmp==NULL) sprintf(tmp=numBuf,"%d",ndx); @@ -135,8 +135,7 @@ char numBuf[20]; } char * -XkbVModMaskText( Display * dpy, - XkbDescPtr xkb, +XkbVModMaskText( XkbDescPtr xkb, unsigned modMask, unsigned mask, unsigned format) @@ -163,7 +162,7 @@ char *str,buf[BUFFER_SIZE]; char *tmp; for (i=0,bit=1;ireal_mods || tmp) { TryCopyStr(buf, - XkbVModMaskText(dpy,xkb,act->real_mods,tmp,XkbXKBFile), + XkbVModMaskText(xkb,act->real_mods,tmp,XkbXKBFile), sz); } else TryCopyStr(buf,"none",sz); @@ -701,7 +700,7 @@ unsigned tmp; /*ARGSUSED*/ static Bool -CopyGroupActionArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf, +CopyGroupActionArgs(XkbDescPtr xkb,XkbAction *action,char *buf, int *sz) { XkbGroupAction * act; @@ -726,7 +725,7 @@ char tbuf[32]; /*ARGSUSED*/ static Bool -CopyMovePtrArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) +CopyMovePtrArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) { XkbPtrAction * act; int x,y; @@ -751,7 +750,7 @@ char tbuf[32]; /*ARGSUSED*/ static Bool -CopyPtrBtnArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) +CopyPtrBtnArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) { XkbPtrBtnAction * act; char tbuf[32]; @@ -785,7 +784,7 @@ char tbuf[32]; /*ARGSUSED*/ static Bool -CopySetPtrDfltArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf, +CopySetPtrDfltArgs(XkbDescPtr xkb,XkbAction *action,char *buf, int *sz) { XkbPtrDfltAction * act; @@ -803,7 +802,7 @@ char tbuf[32]; } static Bool -CopyISOLockArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) +CopyISOLockArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) { XkbISOAction * act; char tbuf[64]; @@ -831,7 +830,7 @@ char tbuf[64]; TryCopyStr(buf,"+",sz); } if (tmp) - TryCopyStr(buf,XkbVModMaskText(dpy,xkb,0,tmp,XkbXKBFile),sz); + TryCopyStr(buf,XkbVModMaskText(xkb,0,tmp,XkbXKBFile),sz); } else TryCopyStr(buf,"none",sz); } @@ -865,7 +864,7 @@ char tbuf[64]; /*ARGSUSED*/ static Bool -CopySwitchScreenArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf, +CopySwitchScreenArgs(XkbDescPtr xkb,XkbAction *action,char *buf, int *sz) { XkbSwitchScreenAction * act; @@ -884,7 +883,7 @@ char tbuf[32]; /*ARGSUSED*/ static Bool -CopySetLockControlsArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action, +CopySetLockControlsArgs(XkbDescPtr xkb,XkbAction *action, char *buf,int *sz) { XkbCtrlsAction * act; @@ -971,7 +970,7 @@ char tbuf[32]; /*ARGSUSED*/ static Bool -CopyActionMessageArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf, +CopyActionMessageArgs(XkbDescPtr xkb,XkbAction *action,char *buf, int *sz) { XkbMessageAction * act; @@ -998,7 +997,7 @@ char tbuf[32]; } static Bool -CopyRedirectKeyArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf, +CopyRedirectKeyArgs(XkbDescPtr xkb,XkbAction *action,char *buf, int *sz) { XkbRedirectKeyAction * act; @@ -1022,19 +1021,19 @@ unsigned vmods,vmods_mask; return True; if ((act->mods_mask==XkbAllModifiersMask)&& (vmods_mask==XkbAllVirtualModsMask)) { - tmp= XkbVModMaskText(dpy,xkb,act->mods,vmods,XkbXKBFile); + tmp= XkbVModMaskText(xkb,act->mods,vmods,XkbXKBFile); TryCopyStr(buf,",mods=",sz); TryCopyStr(buf,tmp,sz); } else { if ((act->mods_mask&act->mods)||(vmods_mask&vmods)) { - tmp= XkbVModMaskText(dpy,xkb,act->mods_mask&act->mods, + tmp= XkbVModMaskText(xkb,act->mods_mask&act->mods, vmods_mask&vmods,XkbXKBFile); TryCopyStr(buf,",mods= ",sz); TryCopyStr(buf,tmp,sz); } if ((act->mods_mask&(~act->mods))||(vmods_mask&(~vmods))) { - tmp= XkbVModMaskText(dpy,xkb,act->mods_mask&(~act->mods), + tmp= XkbVModMaskText(xkb,act->mods_mask&(~act->mods), vmods_mask&(~vmods),XkbXKBFile); TryCopyStr(buf,",clearMods= ",sz); TryCopyStr(buf,tmp,sz); @@ -1045,7 +1044,7 @@ unsigned vmods,vmods_mask; /*ARGSUSED*/ static Bool -CopyDeviceBtnArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf, +CopyDeviceBtnArgs(XkbDescPtr xkb,XkbAction *action,char *buf, int *sz) { XkbDeviceBtnAction * act; @@ -1078,7 +1077,7 @@ char tbuf[32]; /*ARGSUSED*/ static Bool -CopyOtherArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) +CopyOtherArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) { XkbAnyAction * act; char tbuf[32]; @@ -1096,7 +1095,6 @@ char tbuf[32]; } typedef Bool (*actionCopy)( - Display * /* dpy */, XkbDescPtr /* xkb */, XkbAction * /* action */, char * /* buf */, @@ -1128,7 +1126,7 @@ static actionCopy copyActionArgs[XkbSA_NumActions] = { #define ACTION_SZ 256 char * -XkbActionText(Display *dpy,XkbDescPtr xkb,XkbAction *action,unsigned format) +XkbActionText(XkbDescPtr xkb,XkbAction *action,unsigned format) { char buf[ACTION_SZ],*tmp; int sz; @@ -1145,8 +1143,8 @@ int sz; sprintf(buf,"%s(",XkbActionTypeText(action->type,XkbXKBFile)); sz= ACTION_SZ-strlen(buf)+2; /* room for close paren and NULL */ if (action->type<(unsigned)XkbSA_NumActions) - (*copyActionArgs[action->type])(dpy,xkb,action,buf,&sz); - else CopyOtherArgs(dpy,xkb,action,buf,&sz); + (*copyActionArgs[action->type])(xkb,action,buf,&sz); + else CopyOtherArgs(xkb,action,buf,&sz); TryCopyStr(buf,")",&sz); } tmp= tbGetBuffer(strlen(buf)+1); diff --git a/xkb/xkmread.c b/xkb/xkmread.c index 2bb02896b..1e5b2cb4e 100644 --- a/xkb/xkmread.c +++ b/xkb/xkmread.c @@ -44,7 +44,7 @@ #include "xkbgeom.h" Atom -XkbInternAtom(Display *dpy,char *str,Bool only_if_exists) +XkbInternAtom(char *str,Bool only_if_exists) { if (str==NULL) return None; @@ -66,18 +66,18 @@ char *new; /***====================================================================***/ -static XPointer -XkmInsureSize(XPointer oldPtr,int oldCount,int *newCountRtrn,int elemSize) +static void * +XkmInsureSize(void *oldPtr,int oldCount,int *newCountRtrn,int elemSize) { int newCount= *newCountRtrn; if (oldPtr==NULL) { if (newCount==0) return NULL; - oldPtr= (XPointer)_XkbCalloc(newCount,elemSize); + oldPtr= _XkbCalloc(newCount,elemSize); } else if (oldCountnames->vmods[i]= XkbInternAtom(xkb->dpy,name,False); + xkb->names->vmods[i]= XkbInternAtom(name,False); if (changes) changes->names.changed_vmods|= bit; } @@ -244,7 +244,7 @@ XkbDescPtr xkb; return -1; } if (name[0]!='\0') { - xkb->names->keycodes= XkbInternAtom(xkb->dpy,name,False); + xkb->names->keycodes= XkbInternAtom(name,False); } for (pN=&xkb->names->keys[minKC],i=minKC;i<=(int)maxKC;i++,pN++) { @@ -300,7 +300,7 @@ XkbDescPtr xkb; _XkbLibError(_XkbErrBadAlloc,"ReadXkmKeyTypes",0); return -1; } - xkb->names->types= XkbInternAtom(xkb->dpy,buf,False); + xkb->names->types= XkbInternAtom(buf,False); } num_types= XkmGetCARD16(file,&nRead); nRead+= XkmSkipPadding(file,2); @@ -355,7 +355,7 @@ XkbDescPtr xkb; return -1; } if (buf[0]!='\0') { - type->name= XkbInternAtom(xkb->dpy,buf,False); + type->name= XkbInternAtom(buf,False); } else type->name= None; @@ -393,7 +393,7 @@ XkbDescPtr xkb; nRead+= tmp; if (strlen(buf)==0) type->level_names[n]= None; - else type->level_names[n]= XkbInternAtom(xkb->dpy,buf,0); + else type->level_names[n]= XkbInternAtom(buf,0); } } } @@ -437,7 +437,7 @@ XkbCompatMapPtr compat; _XkbLibError(_XkbErrBadAlloc,"ReadXkmCompatMap",0); return -1; } - xkb->names->compat= XkbInternAtom(xkb->dpy,name,False); + xkb->names->compat= XkbInternAtom(name,False); } num_si= XkmGetCARD16(file,&nRead); groups= XkmGetCARD8(file,&nRead); @@ -523,7 +523,7 @@ XkbDescPtr xkb; } nRead+= tmp; if (buf[0]!='\0') - name= XkbInternAtom(xkb->dpy,buf,False); + name= XkbInternAtom(buf,False); else name= None; if ((tmp=fread(&wire,SIZEOF(xkmIndicatorMapDesc),1,file))<1) { _XkbLibError(_XkbErrBadLength,"ReadXkmIndicators",0); @@ -600,7 +600,7 @@ XkbDescPtr xkb; } if ((buf[0]!='\0')&&(xkb->names)) { Atom name; - name= XkbInternAtom(xkb->dpy,buf,0); + name= XkbInternAtom(buf,0); xkb->names->symbols= name; xkb->names->phys_symbols= name; } @@ -611,7 +611,7 @@ XkbDescPtr xkb; nRead+= tmp; if ((buf[0]!='\0')&&(xkb->names)) { Atom name; - name= XkbInternAtom(xkb->dpy,buf,0); + name= XkbInternAtom(buf,0); xkb->names->groups[i]= name; } else xkb->names->groups[i]= None; @@ -654,7 +654,7 @@ XkbDescPtr xkb; for (g=0;g0)) { - typeName[g]= XkbInternAtom(xkb->dpy,buf,1); + typeName[g]= XkbInternAtom(buf,1); nRead+= tmp; } type[g]=FindTypeForKey(xkb,typeName[g],wireMap.width,NULL); @@ -732,7 +732,6 @@ XkbDescPtr xkb; static int ReadXkmGeomDoodad( FILE * file, - Display * dpy, XkbGeometryPtr geom, XkbSectionPtr section) { @@ -745,7 +744,7 @@ int nRead=0; nRead+= XkmGetCountedString(file,buf,100); tmp= fread(&doodadWire,SIZEOF(xkmDoodadDesc),1,file); nRead+= SIZEOF(xkmDoodadDesc)*tmp; - doodad= XkbAddGeomDoodad(geom,section,XkbInternAtom(dpy,buf,False)); + doodad= XkbAddGeomDoodad(geom,section,XkbInternAtom(buf,False)); if (!doodad) return nRead; doodad->any.type= doodadWire.any.type; @@ -790,7 +789,6 @@ int nRead=0; static int ReadXkmGeomOverlay( FILE * file, - Display * dpy, XkbGeometryPtr geom, XkbSectionPtr section) { @@ -806,7 +804,7 @@ register int r; nRead+= XkmGetCountedString(file,buf,100); tmp= fread(&olWire,SIZEOF(xkmOverlayDesc),1,file); nRead+= tmp*SIZEOF(xkmOverlayDesc); - ol= XkbAddGeomOverlay(section,XkbInternAtom(dpy,buf,False), + ol= XkbAddGeomOverlay(section,XkbInternAtom(buf,False), olWire.num_rows); if (!ol) return nRead; @@ -833,7 +831,6 @@ register int r; static int ReadXkmGeomSection( FILE * file, - Display * dpy, XkbGeometryPtr geom) { register int i; @@ -845,7 +842,7 @@ char buf[100]; Atom nameAtom; nRead+= XkmGetCountedString(file,buf,100); - nameAtom= XkbInternAtom(dpy,buf,False); + nameAtom= XkbInternAtom(buf,False); tmp= fread(§ionWire,SIZEOF(xkmSectionDesc),1,file); nRead+= SIZEOF(xkmSectionDesc)*tmp; section= XkbAddGeomSection(geom,nameAtom,sectionWire.num_rows, @@ -896,7 +893,7 @@ Atom nameAtom; } if (sectionWire.num_doodads>0) { for (i=0;i0) { for (i=0;ixkb->geom; - geom->name= XkbInternAtom(result->xkb->dpy,buf,False); + geom->name= XkbInternAtom(buf,False); geom->width_mm= wireGeom.width_mm; geom->height_mm= wireGeom.height_mm; nRead+= XkmGetCountedString(file,buf,100); @@ -975,7 +972,7 @@ XkbGeometrySizesRec sizes; XkbOutlinePtr ol; xkmOutlineDesc olWire; nRead+= XkmGetCountedString(file,buf,100); - nameAtom= XkbInternAtom(result->xkb->dpy,buf,False); + nameAtom= XkbInternAtom(buf,False); tmp= fread(&shapeWire,SIZEOF(xkmShapeDesc),1,file); nRead+= tmp*SIZEOF(xkmShapeDesc); shape= XkbAddGeomShape(geom,nameAtom,shapeWire.num_outlines); @@ -1014,7 +1011,7 @@ XkbGeometrySizesRec sizes; } if (wireGeom.num_sections>0) { for (i=0;ixkb->dpy,geom); + tmp= ReadXkmGeomSection(file,geom); nRead+= tmp; if (tmp==0) return nRead; @@ -1022,7 +1019,7 @@ XkbGeometrySizesRec sizes; } if (wireGeom.num_doodads>0) { for (i=0;ixkb->dpy,geom,NULL); + tmp= ReadXkmGeomDoodad(file,geom,NULL); nRead+= tmp; if (tmp==0) return nRead; From ab79110a84b2d299ecae0605fa535edbebd99565 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Sun, 3 Feb 2008 23:48:57 +1100 Subject: [PATCH 066/112] XKB: Remove support for pre-built keymaps Don't load prebuilt keymaps anymore. --- include/xkbsrv.h | 7 ---- xkb/ddxLoad.c | 83 +----------------------------------------------- xkb/maprules.c | 4 +-- xkb/xkb.c | 31 ++++++++---------- xkb/xkbInit.c | 21 ++---------- 5 files changed, 18 insertions(+), 128 deletions(-) diff --git a/include/xkbsrv.h b/include/xkbsrv.h index a71150462..60b0eb7e5 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -1022,13 +1022,6 @@ extern Bool XkbDDXApplyConfig( XkbSrvInfoPtr /* xkbi */ ); -extern void *XkbDDXPreloadConfig( - char ** /* rulesFileRtrn */, - XkbRF_VarDefsPtr /* defs */, - XkbComponentNamesPtr /* names */, - DeviceIntPtr /* dev */ -); - extern int _XkbStrCaseCmp( char * /* str1 */, char * /* str2 */ diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c index 60a8d443a..760119dc9 100644 --- a/xkb/ddxLoad.c +++ b/xkb/ddxLoad.c @@ -178,74 +178,6 @@ OutputDirectory( } } -static Bool -XkbDDXCompileNamedKeymap( XkbDescPtr xkb, - XkbComponentNamesPtr names, - char * nameRtrn, - int nameRtrnLen) -{ -char *cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile; - - if (names->keymap==NULL) - return False; - strncpy(file,names->keymap,PATH_MAX); file[PATH_MAX-1]= '\0'; - if ((map= strrchr(file,'('))!=NULL) { - char *tmp; - if ((tmp= strrchr(map,')'))!=NULL) { - *map++= '\0'; - *tmp= '\0'; - } - else { - map= NULL; - } - } - if ((outFile= strrchr(file,'/'))!=NULL) - outFile= _XkbDupString(&outFile[1]); - else outFile= _XkbDupString(file); - XkbEnsureSafeMapName(outFile); - OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir)); - - if (XkbBaseDirectory!=NULL) { - char *xkbbasedir = XkbBaseDirectory; - char *xkbbindir = XkbBinDirectory; - - cmd = Xprintf("\"%s" PATHSEPARATOR "xkbcomp\" -w %d \"-R%s\" -xkm %s%s -em1 %s -emp %s -eml %s keymap/%s \"%s%s.xkm\"", - xkbbindir, - ((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:(int)xkbDebugFlags)), - xkbbasedir,(map?"-m ":""),(map?map:""), - PRE_ERROR_MSG,ERROR_PREFIX,POST_ERROR_MSG1,file, - xkm_output_dir,outFile); - } - else { - cmd = Xprintf("xkbcomp -w %d -xkm %s%s -em1 %s -emp %s -eml %s keymap/%s \"%s%s.xkm\"", - ((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:(int)xkbDebugFlags)), - (map?"-m ":""),(map?map:""), - PRE_ERROR_MSG,ERROR_PREFIX,POST_ERROR_MSG1,file, - xkm_output_dir,outFile); - } - if (xkbDebugFlags) { - DebugF("XkbDDXCompileNamedKeymap compiling keymap using:\n"); - DebugF(" \"cmd\"\n"); - } - if (System(cmd)==0) { - if (nameRtrn) { - strncpy(nameRtrn,outFile,nameRtrnLen); - nameRtrn[nameRtrnLen-1]= '\0'; - } - if (outFile!=NULL) - _XkbFree(outFile); - if (cmd!=NULL) - xfree(cmd); - return True; - } - DebugF("Error compiling keymap (%s)\n",names->keymap); - if (outFile!=NULL) - _XkbFree(outFile); - if (cmd!=NULL) - xfree(cmd); - return False; -} - static Bool XkbDDXCompileKeymapByNames( XkbDescPtr xkb, XkbComponentNamesPtr names, @@ -418,20 +350,7 @@ unsigned missing; if ((names->keycodes==NULL)&&(names->types==NULL)&& (names->compat==NULL)&&(names->symbols==NULL)&& (names->geometry==NULL)) { - if (names->keymap==NULL) { - bzero(finfoRtrn,sizeof(XkbFileInfo)); - if (xkb && XkbDetermineFileType(finfoRtrn,XkbXKMFile,NULL) && - ((finfoRtrn->defined&need)==need) ) { - finfoRtrn->xkb= xkb; - nameRtrn[0]= '\0'; - return finfoRtrn->defined; - } - return 0; - } - else if (!XkbDDXCompileNamedKeymap(xkb,names,nameRtrn,nameRtrnLen)) { - DebugF("Couldn't compile keymap file\n"); - return 0; - } + return 0; } else if (!XkbDDXCompileKeymapByNames(xkb,names,want,need, nameRtrn,nameRtrnLen)){ diff --git a/xkb/maprules.c b/xkb/maprules.c index 72e642fbe..4c947f004 100644 --- a/xkb/maprules.c +++ b/xkb/maprules.c @@ -459,7 +459,7 @@ Bool append = False; rule->types= _XkbDupString(tmp.name[TYPES]); rule->compat= _XkbDupString(tmp.name[COMPAT]); rule->geometry= _XkbDupString(tmp.name[GEOMETRY]); - rule->keymap= _XkbDupString(tmp.name[KEYMAP]); + rule->keymap= NULL; rule->layout_num = rule->variant_num = 0; for (i = 0; i < nread; i++) { @@ -589,7 +589,6 @@ XkbRF_ApplyRule( XkbRF_RulePtr rule, Apply(rule->types, &names->types); Apply(rule->compat, &names->compat); Apply(rule->geometry, &names->geometry); - Apply(rule->keymap, &names->keymap); } static Bool @@ -1279,7 +1278,6 @@ XkbRF_GroupPtr group; if (rule->types) _XkbFree(rule->types); if (rule->compat) _XkbFree(rule->compat); if (rule->geometry) _XkbFree(rule->geometry); - if (rule->keymap) _XkbFree(rule->keymap); bzero((char *)rule,sizeof(XkbRF_RuleRec)); } _XkbFree(rules->rules); diff --git a/xkb/xkb.c b/xkb/xkb.c index bd9a87cf5..ea5189f2c 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -5157,25 +5157,20 @@ ProcXkbGetKbdByName(ClientPtr client) if (stuff->load) fwant= XkbGBN_AllComponentsMask; else fwant= stuff->want|stuff->need; - if (!names.keymap) { - if ((!names.compat)&& - (fwant&(XkbGBN_CompatMapMask|XkbGBN_IndicatorMapMask))) { - names.compat= _XkbDupString("%"); - } - if ((!names.types)&&(fwant&(XkbGBN_TypesMask))) { - names.types= _XkbDupString("%"); - } - if ((!names.symbols)&&(fwant&XkbGBN_SymbolsMask)) { - names.symbols= _XkbDupString("%"); - } - geom_changed= ((names.geometry!=NULL)&&(strcmp(names.geometry,"%")!=0)); - if ((!names.geometry)&&(fwant&XkbGBN_GeometryMask)) { - names.geometry= _XkbDupString("%"); - geom_changed= False; - } + if ((!names.compat)&& + (fwant&(XkbGBN_CompatMapMask|XkbGBN_IndicatorMapMask))) { + names.compat= _XkbDupString("%"); } - else { - geom_changed= True; + if ((!names.types)&&(fwant&(XkbGBN_TypesMask))) { + names.types= _XkbDupString("%"); + } + if ((!names.symbols)&&(fwant&XkbGBN_SymbolsMask)) { + names.symbols= _XkbDupString("%"); + } + geom_changed= ((names.geometry!=NULL)&&(strcmp(names.geometry,"%")!=0)); + if ((!names.geometry)&&(fwant&XkbGBN_GeometryMask)) { + names.geometry= _XkbDupString("%"); + geom_changed= False; } bzero(mapFile,PATH_MAX); diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index 2ac51f26c..73dd32e35 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -591,7 +591,7 @@ XkbRF_VarDefsRec defs; * generation. Eventually they will be freed at the end of this * function. */ - if (names->keymap) names->keymap = _XkbDupString(names->keymap); + names->keymap = NULL; if (names->keycodes) names->keycodes = _XkbDupString(names->keycodes); if (names->types) names->types = _XkbDupString(names->types); if (names->compat) names->compat = _XkbDupString(names->compat); @@ -602,11 +602,6 @@ XkbRF_VarDefsRec defs; XkbComponentNamesRec rNames; bzero(&rNames,sizeof(XkbComponentNamesRec)); if (XkbDDXNamesFromRules(dev,rules,&defs,&rNames)) { - if (rNames.keymap) { - if (!names->keymap) - names->keymap = rNames.keymap; - else _XkbFree(rNames.keymap); - } if (rNames.keycodes) { if (!names->keycodes) names->keycodes = rNames.keycodes; @@ -637,16 +632,8 @@ XkbRF_VarDefsRec defs; } } - if (names->keymap) { - XkbComponentNamesRec tmpNames; - bzero(&tmpNames,sizeof(XkbComponentNamesRec)); - tmpNames.keymap = names->keymap; - ok = (Bool) XkbDDXLoadKeymapByNames(dev,&tmpNames,XkmAllIndicesMask,0, - &finfo,name,PATH_MAX); - } - if (!(ok && (finfo.xkb!=NULL))) - ok = (Bool) XkbDDXLoadKeymapByNames(dev,names,XkmAllIndicesMask,0, - &finfo,name,PATH_MAX); + ok = (Bool) XkbDDXLoadKeymapByNames(dev,names,XkmAllIndicesMask,0, + &finfo,name,PATH_MAX); if (ok && (finfo.xkb!=NULL)) { XkbDescPtr xkb; @@ -694,8 +681,6 @@ XkbRF_VarDefsRec defs; pSyms->map= NULL; } - if (names->keymap) _XkbFree(names->keymap); - names->keymap = NULL; if (names->keycodes) _XkbFree(names->keycodes); names->keycodes = NULL; if (names->types) _XkbFree(names->types); From 2d256f098ae05033ad76672d5ebdb9dfa7e6b995 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Sat, 16 Feb 2008 19:57:37 +0200 Subject: [PATCH 067/112] XKB: Always set size correctly in XkbCopyKeymap's geometry routines We were forgetting to set the sizes for sections and rows and a couple of other misc bits in XkbCopyKeymap's geometry. Sort that out, and add a couple of clarifying comments along the way. --- xkb/xkbUtils.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c index 28d66b38b..b3132701d 100644 --- a/xkb/xkbUtils.c +++ b/xkb/xkbUtils.c @@ -1506,10 +1506,12 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) /* properties */ if (src->geom->num_properties) { if (src->geom->num_properties != dst->geom->sz_properties) { + /* If we've got more properties in the destination than + * the source, run through and free all the excess ones + * first. */ if (src->geom->num_properties < dst->geom->sz_properties) { for (i = src->geom->num_properties, - dprop = dst->geom->properties + - src->geom->num_properties; + dprop = dst->geom->properties + i; i < dst->geom->num_properties; i++, dprop++) { xfree(dprop->name); @@ -1529,6 +1531,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) dst->geom->properties = tmp; } + /* We don't set num_properties as we need it to try and avoid + * too much reallocing. */ dst->geom->sz_properties = src->geom->num_properties; if (dst->geom->sz_properties > dst->geom->num_properties) { @@ -1564,6 +1568,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) } } + /* ... which is already src->geom->num_properties. */ dst->geom->num_properties = dst->geom->sz_properties; } else { @@ -1587,8 +1592,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) if (src->geom->num_colors != dst->geom->sz_colors) { if (src->geom->num_colors < dst->geom->sz_colors) { for (i = src->geom->num_colors, - dcolor = dst->geom->colors + - src->geom->num_colors; + dcolor = dst->geom->colors + i; i < dst->geom->num_colors; i++, dcolor++) { xfree(dcolor->spec); @@ -1706,7 +1710,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) } doutline->num_points = soutline->num_points; - doutline->sz_points = soutline->sz_points; + doutline->sz_points = soutline->num_points; } } @@ -1785,6 +1789,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) memset(tmp, 0, src->geom->num_sections * sizeof(XkbSectionRec)); dst->geom->sections = tmp; dst->geom->num_sections = src->geom->num_sections; + dst->geom->sz_sections = src->geom->num_sections; for (i = 0, ssection = src->geom->sections, @@ -1798,6 +1803,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) dsection->rows = tmp; } dsection->num_rows = ssection->num_rows; + dsection->sz_rows = ssection->num_rows; + for (j = 0, srow = ssection->rows, drow = dsection->rows; j < ssection->num_rows; j++, srow++, drow++) { From e5f002eddef1abe324033a3155f01d048536a48d Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Sat, 16 Feb 2008 20:00:47 +0200 Subject: [PATCH 068/112] XkbProcessOtherEvent: Don't depend on now-removed header We don't do XKBsrv.h anymore. --- xkb/xkbPrOtherEv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xkb/xkbPrOtherEv.c b/xkb/xkbPrOtherEv.c index d65107cdc..8017903be 100644 --- a/xkb/xkbPrOtherEv.c +++ b/xkb/xkbPrOtherEv.c @@ -36,7 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include "misc.h" #include "inputstr.h" -#include +#include "xkbsrv.h" #include #include From fbd776894658e7afb2c55dc8582b2a3efab78a3c Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Sat, 16 Feb 2008 20:01:18 +0200 Subject: [PATCH 069/112] XKB: Ditch XkbFileInfo Sorry about the megacommit, but this touches on a lot of stuff. Get rid of XkbFileInfo, which was pretty seriously redundant, and move the only useful thing it had (defined) into XkbDescRec. defined will be removed pretty soon anyway. Is the compat map pointer non-NULL? Then you have a compat map, congratulations! Anyhow, I digress. All functions that took an XkbFileInfoPtr now take an XkbDescPtr, _except_ XkmReadFile, which returns an XkbDescPtr *, because people want to deal in XkbDescPtrs, not XkbDescRecs. --- include/xkbfile.h | 45 +++++-------- include/xkbsrv.h | 2 +- include/xkbstr.h | 1 + xkb/ddxLoad.c | 14 ++-- xkb/xkb.c | 89 +++++++++++++------------ xkb/xkbActions.c | 4 +- xkb/xkbInit.c | 157 +++++++++++++++++--------------------------- xkb/xkbfmisc.c | 98 ++-------------------------- xkb/xkbout.c | 46 +++++-------- xkb/xkmread.c | 161 ++++++---------------------------------------- 10 files changed, 175 insertions(+), 442 deletions(-) diff --git a/include/xkbfile.h b/include/xkbfile.h index e90d7668e..0a6cb18b9 100644 --- a/include/xkbfile.h +++ b/include/xkbfile.h @@ -37,15 +37,9 @@ #define XkbMapDefined (1<<0) #define XkbStateDefined (1<<1) -typedef struct _XkbFileInfo { - unsigned type; - unsigned defined; - XkbDescPtr xkb; -} XkbFileInfo,*XkbFileInfoPtr; - typedef void (*XkbFileAddOnFunc)( FILE * /* file */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, Bool /* topLevel */, Bool /* showImplicit */, int /* fileSection */, @@ -277,12 +271,6 @@ extern unsigned XkbConvertXkbComponents( unsigned /* orig */ ); -extern Bool XkbDetermineFileType( - XkbFileInfo * /* xkb */, - int /* format */, - int * /* opts_missing */ -); - extern Bool XkbNameMatchesPattern( char * /* name */, char * /* pattern */ @@ -292,7 +280,7 @@ extern Bool XkbNameMatchesPattern( extern Bool XkbWriteXKBKeycodes( FILE * /* file */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, Bool /* topLevel */, Bool /* showImplicit */, XkbFileAddOnFunc /* addOn */, @@ -301,7 +289,7 @@ extern Bool XkbWriteXKBKeycodes( extern Bool XkbWriteXKBKeyTypes( FILE * /* file */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, Bool /* topLevel */, Bool /* showImplicit */, XkbFileAddOnFunc /* addOn */, @@ -310,7 +298,7 @@ extern Bool XkbWriteXKBKeyTypes( extern Bool XkbWriteXKBCompatMap( FILE * /* file */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, Bool /* topLevel */, Bool /* showImplicit */, XkbFileAddOnFunc /* addOn */, @@ -319,7 +307,7 @@ extern Bool XkbWriteXKBCompatMap( extern Bool XkbWriteXKBSymbols( FILE * /* file */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, Bool /* topLevel */, Bool /* showImplicit */, XkbFileAddOnFunc /* addOn */, @@ -328,7 +316,7 @@ extern Bool XkbWriteXKBSymbols( extern Bool XkbWriteXKBGeometry( FILE * /* file */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, Bool /* topLevel */, Bool /* showImplicit */, XkbFileAddOnFunc /* addOn */, @@ -337,7 +325,7 @@ extern Bool XkbWriteXKBGeometry( extern Bool XkbWriteXKBSemantics( FILE * /* file */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, Bool /* topLevel */, Bool /* showImplicit */, XkbFileAddOnFunc /* addOn */, @@ -346,7 +334,7 @@ extern Bool XkbWriteXKBSemantics( extern Bool XkbWriteXKBLayout( FILE * /* file */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, Bool /* topLevel */, Bool /* showImplicit */, XkbFileAddOnFunc /* addOn */, @@ -355,7 +343,7 @@ extern Bool XkbWriteXKBLayout( extern Bool XkbWriteXKBKeymap( FILE * /* file */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, Bool /* topLevel */, Bool /* showImplicit */, XkbFileAddOnFunc /* addOn */, @@ -364,7 +352,7 @@ extern Bool XkbWriteXKBKeymap( extern Bool XkbWriteXKBFile( FILE * /* file */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, Bool /* showImplicit */, XkbFileAddOnFunc /* addOn */, void * /* priv */ @@ -373,16 +361,16 @@ extern Bool XkbWriteXKBFile( extern Bool XkbWriteCFile( FILE * /* file */, char * /* name */, - XkbFileInfo * /* info */ + XkbDescPtr /* info */ ); extern Bool XkbWriteXKMFile( FILE * /* file */, - XkbFileInfo * /* result */ + XkbDescPtr /* result */ ); extern Bool XkbWriteToServer( - XkbFileInfo * /* result */ + XkbDescPtr /* result */ ); extern void XkbEnsureSafeMapName( @@ -398,8 +386,7 @@ extern Bool XkbWriteXKBKeymapForNames( ); extern Status XkbMergeFile( - XkbDescPtr /* xkb */, - XkbFileInfo /* finfo */ + XkbDescPtr /* xkb */ ); /***====================================================================***/ @@ -412,7 +399,7 @@ extern unsigned XkmReadFile( FILE * /* file */, unsigned /* need */, unsigned /* want */, - XkbFileInfo * /* result */ + XkbDescPtr * /* result */ ); #ifdef _XKMFORMAT_H_ @@ -433,7 +420,7 @@ extern xkmSectionInfo *XkmFindTOCEntry( extern Bool XkmReadFileSection( FILE * /* file */, xkmSectionInfo * /* toc */, - XkbFileInfo * /* result */, + XkbDescPtr /* result */, unsigned * /* loaded_rtrn */ ); diff --git a/include/xkbsrv.h b/include/xkbsrv.h index 60b0eb7e5..ef99e94e7 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -1005,7 +1005,7 @@ extern unsigned int XkbDDXLoadKeymapByNames( XkbComponentNamesPtr /* names */, unsigned int /* want */, unsigned int /* need */, - XkbFileInfoPtr /* finfoRtrn */, + XkbDescPtr * /* finfoRtrn */, char * /* keymapNameRtrn */, int /* keymapNameRtrnLen */ ); diff --git a/include/xkbstr.h b/include/xkbstr.h index f390c611c..214a5543c 100644 --- a/include/xkbstr.h +++ b/include/xkbstr.h @@ -418,6 +418,7 @@ typedef struct _XkbGeometry *XkbGeometryPtr; * Tie it all together into one big keyboard description */ typedef struct _XkbDesc { + unsigned int defined; unsigned short flags; unsigned short device_spec; KeyCode min_key_code; diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c index 760119dc9..d80ce62b8 100644 --- a/xkb/ddxLoad.c +++ b/xkb/ddxLoad.c @@ -334,16 +334,16 @@ XkbDDXLoadKeymapByNames( DeviceIntPtr keybd, XkbComponentNamesPtr names, unsigned want, unsigned need, - XkbFileInfo * finfoRtrn, + XkbDescPtr * xkbRtrn, char * nameRtrn, int nameRtrnLen) { -XkbDescPtr xkb; +XkbDescPtr xkb; FILE * file; char fileName[PATH_MAX]; unsigned missing; - bzero(finfoRtrn,sizeof(XkbFileInfo)); + *xkbRtrn = NULL; if ((keybd==NULL)||(keybd->key==NULL)||(keybd->key->xkbInfo==NULL)) xkb= NULL; else xkb= keybd->key->xkbInfo->desc; @@ -353,7 +353,7 @@ unsigned missing; return 0; } else if (!XkbDDXCompileKeymapByNames(xkb,names,want,need, - nameRtrn,nameRtrnLen)){ + nameRtrn,nameRtrnLen)){ DebugF("Couldn't compile keymap file\n"); return 0; } @@ -362,15 +362,15 @@ unsigned missing; LogMessage(X_ERROR, "Couldn't open compiled keymap file %s\n",fileName); return 0; } - missing= XkmReadFile(file,need,want,finfoRtrn); - if (finfoRtrn->xkb==NULL) { + missing= XkmReadFile(file,need,want,xkbRtrn); + if (*xkbRtrn==NULL) { LogMessage(X_ERROR, "Error loading keymap %s\n",fileName); fclose(file); (void) unlink (fileName); return 0; } else if (xkbDebugFlags) { - DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,finfoRtrn->defined); + DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,(*xkbRtrn)->defined); } fclose(file); (void) unlink (fileName); diff --git a/xkb/xkb.c b/xkb/xkb.c index ea5189f2c..b0d2f0d3d 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -5109,7 +5109,6 @@ ProcXkbGetKbdByName(ClientPtr client) { DeviceIntPtr dev; DeviceIntPtr tmpd; - XkbFileInfo finfo; xkbGetKbdByNameReply rep; xkbGetMapReply mrep; xkbGetCompatMapReply crep; @@ -5117,7 +5116,7 @@ ProcXkbGetKbdByName(ClientPtr client) xkbGetNamesReply nrep; xkbGetGeometryReply grep; XkbComponentNamesRec names; - XkbDescPtr xkb; + XkbDescPtr xkb, new; unsigned char * str; char mapFile[PATH_MAX]; unsigned len; @@ -5194,35 +5193,35 @@ ProcXkbGetKbdByName(ClientPtr client) } /* We pass dev in here so we can get the old names out if needed. */ - rep.found = XkbDDXLoadKeymapByNames(dev,&names,fwant,fneed,&finfo, + rep.found = XkbDDXLoadKeymapByNames(dev,&names,fwant,fneed,&new, mapFile,PATH_MAX); rep.newKeyboard= False; rep.pad1= rep.pad2= rep.pad3= rep.pad4= 0; stuff->want|= stuff->need; - if (finfo.xkb==NULL) + if (new==NULL) rep.reported= 0; else { if (stuff->load) rep.loaded= True; if (stuff->load || - ((rep.reported&XkbGBN_SymbolsMask) && (finfo.xkb->compat))) { + ((rep.reported&XkbGBN_SymbolsMask) && (new->compat))) { XkbChangesRec changes; bzero(&changes,sizeof(changes)); - XkbUpdateDescActions(finfo.xkb, - finfo.xkb->min_key_code,XkbNumKeys(finfo.xkb), + XkbUpdateDescActions(new, + new->min_key_code,XkbNumKeys(new), &changes); } - if (finfo.xkb->map==NULL) + if (new->map==NULL) rep.reported&= ~(XkbGBN_SymbolsMask|XkbGBN_TypesMask); else if (rep.reported&(XkbGBN_SymbolsMask|XkbGBN_TypesMask)) { mrep.type= X_Reply; mrep.deviceID = dev->id; mrep.sequenceNumber= client->sequence; mrep.length = ((SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply))>>2); - mrep.minKeyCode = finfo.xkb->min_key_code; - mrep.maxKeyCode = finfo.xkb->max_key_code; + mrep.minKeyCode = new->min_key_code; + mrep.maxKeyCode = new->max_key_code; mrep.present = 0; mrep.totalSyms = mrep.totalActs = mrep.totalKeyBehaviors= mrep.totalKeyExplicit= @@ -5230,7 +5229,7 @@ ProcXkbGetKbdByName(ClientPtr client) if (rep.reported&(XkbGBN_TypesMask|XkbGBN_ClientSymbolsMask)) { mrep.present|= XkbKeyTypesMask; mrep.firstType = 0; - mrep.nTypes = mrep.totalTypes= finfo.xkb->map->num_types; + mrep.nTypes = mrep.totalTypes= new->map->num_types; } else { mrep.firstType = mrep.nTypes= 0; @@ -5238,8 +5237,8 @@ ProcXkbGetKbdByName(ClientPtr client) } if (rep.reported&XkbGBN_ClientSymbolsMask) { mrep.present|= (XkbKeySymsMask|XkbModifierMapMask); - mrep.firstKeySym = mrep.firstModMapKey= finfo.xkb->min_key_code; - mrep.nKeySyms = mrep.nModMapKeys= XkbNumKeys(finfo.xkb); + mrep.firstKeySym = mrep.firstModMapKey= new->min_key_code; + mrep.nKeySyms = mrep.nModMapKeys= XkbNumKeys(new); } else { mrep.firstKeySym= mrep.firstModMapKey= 0; @@ -5249,9 +5248,9 @@ ProcXkbGetKbdByName(ClientPtr client) mrep.present|= XkbAllServerInfoMask; mrep.virtualMods= ~0; mrep.firstKeyAct = mrep.firstKeyBehavior = - mrep.firstKeyExplicit = finfo.xkb->min_key_code; + mrep.firstKeyExplicit = new->min_key_code; mrep.nKeyActs = mrep.nKeyBehaviors = - mrep.nKeyExplicit = XkbNumKeys(finfo.xkb); + mrep.nKeyExplicit = XkbNumKeys(new); } else { mrep.virtualMods= 0; @@ -5259,10 +5258,10 @@ ProcXkbGetKbdByName(ClientPtr client) mrep.firstKeyExplicit = 0; mrep.nKeyActs= mrep.nKeyBehaviors= mrep.nKeyExplicit= 0; } - XkbComputeGetMapReplySize(finfo.xkb,&mrep); + XkbComputeGetMapReplySize(new,&mrep); rep.length+= SIZEOF(xGenericReply)/4+mrep.length; } - if (finfo.xkb->compat==NULL) + if (new->compat==NULL) rep.reported&= ~XkbGBN_CompatMapMask; else if (rep.reported&XkbGBN_CompatMapMask) { crep.type= X_Reply; @@ -5271,11 +5270,11 @@ ProcXkbGetKbdByName(ClientPtr client) crep.length= 0; crep.groups= XkbAllGroupsMask; crep.firstSI= 0; - crep.nSI= crep.nTotalSI= finfo.xkb->compat->num_si; - XkbComputeGetCompatMapReplySize(finfo.xkb->compat,&crep); + crep.nSI= crep.nTotalSI= new->compat->num_si; + XkbComputeGetCompatMapReplySize(new->compat,&crep); rep.length+= SIZEOF(xGenericReply)/4+crep.length; } - if (finfo.xkb->indicators==NULL) + if (new->indicators==NULL) rep.reported&= ~XkbGBN_IndicatorMapMask; else if (rep.reported&XkbGBN_IndicatorMapMask) { irep.type= X_Reply; @@ -5283,28 +5282,28 @@ ProcXkbGetKbdByName(ClientPtr client) irep.sequenceNumber= client->sequence; irep.length= 0; irep.which= XkbAllIndicatorsMask; - XkbComputeGetIndicatorMapReplySize(finfo.xkb->indicators,&irep); + XkbComputeGetIndicatorMapReplySize(new->indicators,&irep); rep.length+= SIZEOF(xGenericReply)/4+irep.length; } - if (finfo.xkb->names==NULL) + if (new->names==NULL) rep.reported&= ~(XkbGBN_OtherNamesMask|XkbGBN_KeyNamesMask); else if (rep.reported&(XkbGBN_OtherNamesMask|XkbGBN_KeyNamesMask)) { nrep.type= X_Reply; nrep.deviceID= dev->id; nrep.sequenceNumber= client->sequence; nrep.length= 0; - nrep.minKeyCode= finfo.xkb->min_key_code; - nrep.maxKeyCode= finfo.xkb->max_key_code; + nrep.minKeyCode= new->min_key_code; + nrep.maxKeyCode= new->max_key_code; if (rep.reported&XkbGBN_OtherNamesMask) { nrep.which= XkbAllNamesMask; - if (finfo.xkb->map!=NULL) - nrep.nTypes= finfo.xkb->map->num_types; + if (new->map!=NULL) + nrep.nTypes= new->map->num_types; else nrep.nTypes= 0; nrep.nKTLevels= 0; nrep.groupNames= XkbAllGroupsMask; nrep.virtualMods= XkbAllVirtualModsMask; nrep.indicators= XkbAllIndicatorsMask; - nrep.nRadioGroups= finfo.xkb->names->num_rg; + nrep.nRadioGroups= new->names->num_rg; } else { nrep.which= 0; @@ -5317,9 +5316,9 @@ ProcXkbGetKbdByName(ClientPtr client) } if (rep.reported&XkbGBN_KeyNamesMask) { nrep.which|= XkbKeyNamesMask; - nrep.firstKey= finfo.xkb->min_key_code; - nrep.nKeys= XkbNumKeys(finfo.xkb); - nrep.nKeyAliases= finfo.xkb->names->num_key_aliases; + nrep.firstKey= new->min_key_code; + nrep.nKeys= XkbNumKeys(new); + nrep.nKeyAliases= new->names->num_key_aliases; if (nrep.nKeyAliases) nrep.which|= XkbKeyAliasesMask; } @@ -5328,10 +5327,10 @@ ProcXkbGetKbdByName(ClientPtr client) nrep.firstKey= nrep.nKeys= 0; nrep.nKeyAliases= 0; } - XkbComputeGetNamesReplySize(finfo.xkb,&nrep); + XkbComputeGetNamesReplySize(new,&nrep); rep.length+= SIZEOF(xGenericReply)/4+nrep.length; } - if (finfo.xkb->geom==NULL) + if (new->geom==NULL) rep.reported&= ~XkbGBN_GeometryMask; else if (rep.reported&XkbGBN_GeometryMask) { grep.type= X_Reply; @@ -5344,7 +5343,7 @@ ProcXkbGetKbdByName(ClientPtr client) grep.nProperties= grep.nColors= grep.nShapes= 0; grep.nSections= grep.nDoodads= 0; grep.baseColorNdx= grep.labelColorNdx= 0; - XkbComputeGetGeometryReplySize(finfo.xkb->geom,&grep,None); + XkbComputeGetGeometryReplySize(new->geom,&grep,None); rep.length+= SIZEOF(xGenericReply)/4+grep.length; } } @@ -5359,23 +5358,23 @@ ProcXkbGetKbdByName(ClientPtr client) } WriteToClient(client,SIZEOF(xkbGetKbdByNameReply), (char *)&rep); if (reported&(XkbGBN_SymbolsMask|XkbGBN_TypesMask)) - XkbSendMap(client,finfo.xkb,&mrep); + XkbSendMap(client,new,&mrep); if (reported&XkbGBN_CompatMapMask) - XkbSendCompatMap(client,finfo.xkb->compat,&crep); + XkbSendCompatMap(client,new->compat,&crep); if (reported&XkbGBN_IndicatorMapMask) - XkbSendIndicatorMap(client,finfo.xkb->indicators,&irep); + XkbSendIndicatorMap(client,new->indicators,&irep); if (reported&(XkbGBN_KeyNamesMask|XkbGBN_OtherNamesMask)) - XkbSendNames(client,finfo.xkb,&nrep); + XkbSendNames(client,new,&nrep); if (reported&XkbGBN_GeometryMask) - XkbSendGeometry(client,finfo.xkb->geom,&grep,False); + XkbSendGeometry(client,new->geom,&grep,False); if (rep.loaded) { XkbDescPtr old_xkb; xkbNewKeyboardNotify nkn; int i,nG,nTG; old_xkb= xkb; - xkb= finfo.xkb; + xkb= new; dev->key->xkbInfo->desc= xkb; - finfo.xkb= old_xkb; /* so it'll get freed automatically */ + new= old_xkb; /* so it'll get freed automatically */ *xkb->ctrls= *old_xkb->ctrls; for (nG=nTG=0,i=xkb->min_key_code;i<=xkb->max_key_code;i++) { @@ -5419,8 +5418,8 @@ ProcXkbGetKbdByName(ClientPtr client) /* this should be either a MN or an NKN, depending on whether or not * the keycode range changed? */ nkn.deviceID= nkn.oldDeviceID= dev->id; - nkn.minKeyCode= finfo.xkb->min_key_code; - nkn.maxKeyCode= finfo.xkb->max_key_code; + nkn.minKeyCode= new->min_key_code; + nkn.maxKeyCode= new->max_key_code; nkn.oldMinKeyCode= xkb->min_key_code; nkn.oldMaxKeyCode= xkb->max_key_code; nkn.requestMajor= XkbReqCode; @@ -5430,9 +5429,9 @@ ProcXkbGetKbdByName(ClientPtr client) nkn.changed|= XkbNKN_GeometryMask; XkbSendNewKeyboardNotify(dev,&nkn); } - if ((finfo.xkb!=NULL)&&(finfo.xkb!=xkb)) { - XkbFreeKeyboard(finfo.xkb,XkbAllComponentsMask,True); - finfo.xkb= NULL; + if ((new!=NULL)&&(new!=xkb)) { + XkbFreeKeyboard(new,XkbAllComponentsMask,True); + new= NULL; } if (names.keymap) { _XkbFree(names.keymap); names.keymap= NULL; } if (names.keycodes) { _XkbFree(names.keycodes); names.keycodes= NULL; } diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c index 2aacc8ca6..890cf4250 100644 --- a/xkb/xkbActions.c +++ b/xkb/xkbActions.c @@ -843,7 +843,7 @@ _XkbFilterRedirectKey( XkbSrvInfoPtr xkbi, unsigned keycode, XkbAction * pAction) { -unsigned realMods; +unsigned realMods = 0; xEvent ev; int x,y; XkbStateRec old; @@ -1145,7 +1145,7 @@ void XkbHandleActions(DeviceIntPtr dev,DeviceIntPtr kbd,xEvent *xE,int count) { int key,bit,i; -CARD8 realMods; +CARD8 realMods = 0; XkbSrvInfoPtr xkbi; KeyClassPtr keyc; int changed,sendEvent; diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index 73dd32e35..37dd94019 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -88,7 +88,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. typedef struct _SrvXkmInfo { DeviceIntPtr dev; FILE * file; - XkbFileInfo xkbinfo; + XkbDescPtr xkb; } SrvXkmInfo; @@ -125,7 +125,6 @@ typedef struct _SrvXkmInfo { char * XkbBaseDirectory= XKB_BASE_DIRECTORY; char * XkbBinDirectory= XKB_BIN_DIRECTORY; static int XkbWantAccessX= 0; -static XkbFileInfo * _XkbInitFileInfo= NULL; static Bool rulesDefined= False; static char * XkbRulesFile= NULL; @@ -283,10 +282,8 @@ XkbSetRulesDflts(char *rulesFile,char *model,char *layout, #include "xkbDflts.h" static Bool -XkbInitKeyTypes(XkbDescPtr xkb,SrvXkmInfo *file) +XkbInitKeyTypes(XkbDescPtr xkb) { - if (file->xkbinfo.defined&XkmTypesMask) - return True; initTypeNames(NULL); if (XkbAllocClientMap(xkb,XkbKeyTypesMask,num_dflt_types)!=Success) return False; @@ -299,7 +296,7 @@ XkbInitKeyTypes(XkbDescPtr xkb,SrvXkmInfo *file) } static void -XkbInitRadioGroups(XkbSrvInfoPtr xkbi,SrvXkmInfo *file) +XkbInitRadioGroups(XkbSrvInfoPtr xkbi) { xkbi->nRadioGroups = 0; xkbi->radioGroups = NULL; @@ -308,13 +305,11 @@ XkbInitRadioGroups(XkbSrvInfoPtr xkbi,SrvXkmInfo *file) static Status -XkbInitCompatStructs(XkbDescPtr xkb,SrvXkmInfo *file) +XkbInitCompatStructs(XkbDescPtr xkb) { register int i; XkbCompatMapPtr compat; - if (file->xkbinfo.defined&XkmCompatMapMask) - return Success; if (XkbAllocCompatMap(xkb,XkbAllCompatMask,num_dfltSI)!=Success) return BadAlloc; compat = xkb->compat; @@ -335,17 +330,17 @@ XkbCompatMapPtr compat; } static void -XkbInitSemantics(XkbDescPtr xkb,SrvXkmInfo *file) +XkbInitSemantics(XkbDescPtr xkb) { - XkbInitKeyTypes(xkb,file); - XkbInitCompatStructs(xkb,file); + XkbInitKeyTypes(xkb); + XkbInitCompatStructs(xkb); return; } /***====================================================================***/ static Status -XkbInitNames(XkbSrvInfoPtr xkbi,SrvXkmInfo *file) +XkbInitNames(XkbSrvInfoPtr xkbi) { XkbDescPtr xkb; XkbNamesPtr names; @@ -363,29 +358,25 @@ Atom unknown; if (names->symbols==None) names->symbols= unknown; if (names->types==None) names->types= unknown; if (names->compat==None) names->compat= unknown; - if ((file->xkbinfo.defined&XkmVirtualModsMask)==0) { - if (names->vmods[vmod_NumLock]==None) - names->vmods[vmod_NumLock]= CREATE_ATOM("NumLock"); - if (names->vmods[vmod_Alt]==None) - names->vmods[vmod_Alt]= CREATE_ATOM("Alt"); - if (names->vmods[vmod_AltGr]==None) - names->vmods[vmod_AltGr]= CREATE_ATOM("ModeSwitch"); - } + if (names->vmods[vmod_NumLock]==None) + names->vmods[vmod_NumLock]= CREATE_ATOM("NumLock"); + if (names->vmods[vmod_Alt]==None) + names->vmods[vmod_Alt]= CREATE_ATOM("Alt"); + if (names->vmods[vmod_AltGr]==None) + names->vmods[vmod_AltGr]= CREATE_ATOM("ModeSwitch"); - if (((file->xkbinfo.defined&XkmIndicatorsMask)==0)|| - ((file->xkbinfo.defined&XkmGeometryMask)==0)) { - initIndicatorNames(NULL,xkb); - if (names->indicators[LED_CAPS-1]==None) - names->indicators[LED_CAPS-1] = CREATE_ATOM("Caps Lock"); - if (names->indicators[LED_NUM-1]==None) - names->indicators[LED_NUM-1] = CREATE_ATOM("Num Lock"); - if (names->indicators[LED_SCROLL-1]==None) - names->indicators[LED_SCROLL-1] = CREATE_ATOM("Scroll Lock"); + initIndicatorNames(NULL,xkb); + if (names->indicators[LED_CAPS-1]==None) + names->indicators[LED_CAPS-1] = CREATE_ATOM("Caps Lock"); + if (names->indicators[LED_NUM-1]==None) + names->indicators[LED_NUM-1] = CREATE_ATOM("Num Lock"); + if (names->indicators[LED_SCROLL-1]==None) + names->indicators[LED_SCROLL-1] = CREATE_ATOM("Scroll Lock"); #ifdef LED_COMPOSE - if (names->indicators[LED_COMPOSE-1]==None) - names->indicators[LED_COMPOSE-1] = CREATE_ATOM("Compose"); + if (names->indicators[LED_COMPOSE-1]==None) + names->indicators[LED_COMPOSE-1] = CREATE_ATOM("Compose"); #endif - } + if (xkb->geom!=NULL) names->geometry= xkb->geom->name; else names->geometry= unknown; @@ -393,7 +384,7 @@ Atom unknown; } static Status -XkbInitIndicatorMap(XkbSrvInfoPtr xkbi,SrvXkmInfo *file) +XkbInitIndicatorMap(XkbSrvInfoPtr xkbi) { XkbDescPtr xkb; XkbIndicatorPtr map; @@ -402,27 +393,24 @@ XkbSrvLedInfoPtr sli; xkb= xkbi->desc; if (XkbAllocIndicatorMaps(xkb)!=Success) return BadAlloc; - if ((file->xkbinfo.defined&XkmIndicatorsMask)==0) { - map= xkb->indicators; - map->phys_indicators = PHYS_LEDS; - map->maps[LED_CAPS-1].flags= XkbIM_NoExplicit; - map->maps[LED_CAPS-1].which_mods= XkbIM_UseLocked; - map->maps[LED_CAPS-1].mods.mask= LockMask; - map->maps[LED_CAPS-1].mods.real_mods= LockMask; + map= xkb->indicators; + map->phys_indicators = PHYS_LEDS; + map->maps[LED_CAPS-1].flags= XkbIM_NoExplicit; + map->maps[LED_CAPS-1].which_mods= XkbIM_UseLocked; + map->maps[LED_CAPS-1].mods.mask= LockMask; + map->maps[LED_CAPS-1].mods.real_mods= LockMask; - map->maps[LED_NUM-1].flags= XkbIM_NoExplicit; - map->maps[LED_NUM-1].which_mods= XkbIM_UseLocked; - map->maps[LED_NUM-1].mods.mask= 0; - map->maps[LED_NUM-1].mods.real_mods= 0; - map->maps[LED_NUM-1].mods.vmods= vmod_NumLockMask; + map->maps[LED_NUM-1].flags= XkbIM_NoExplicit; + map->maps[LED_NUM-1].which_mods= XkbIM_UseLocked; + map->maps[LED_NUM-1].mods.mask= 0; + map->maps[LED_NUM-1].mods.real_mods= 0; + map->maps[LED_NUM-1].mods.vmods= vmod_NumLockMask; + + map->maps[LED_SCROLL-1].flags= XkbIM_NoExplicit; + map->maps[LED_SCROLL-1].which_mods= XkbIM_UseLocked; + map->maps[LED_SCROLL-1].mods.mask= Mod3Mask; + map->maps[LED_SCROLL-1].mods.real_mods= Mod3Mask; -/* Metro Link */ - map->maps[LED_SCROLL-1].flags= XkbIM_NoExplicit; - map->maps[LED_SCROLL-1].which_mods= XkbIM_UseLocked; - map->maps[LED_SCROLL-1].mods.mask= Mod3Mask; - map->maps[LED_SCROLL-1].mods.real_mods= Mod3Mask; -/* Metro Link */ - } sli= XkbFindSrvLedInfo(xkbi->device,XkbDfltXIClass,XkbDfltXIId,0); if (sli) XkbCheckIndicatorMaps(xkbi->device,sli,XkbAllIndicatorsMask); @@ -430,7 +418,7 @@ XkbSrvLedInfoPtr sli; } static Status -XkbInitControls(DeviceIntPtr pXDev,XkbSrvInfoPtr xkbi,SrvXkmInfo *file) +XkbInitControls(DeviceIntPtr pXDev,XkbSrvInfoPtr xkbi) { XkbDescPtr xkb; XkbControlsPtr ctrls; @@ -440,8 +428,7 @@ XkbControlsPtr ctrls; if (XkbAllocControls(xkb,XkbAllControlsMask)!=Success) FatalError("Couldn't allocate keyboard controls\n"); ctrls= xkb->ctrls; - if ((file->xkbinfo.defined&XkmSymbolsMask)==0) - ctrls->num_groups = 1; + ctrls->num_groups = 1; ctrls->groups_wrap = XkbSetGroupInfo(1,XkbWrapIntoRange,0); ctrls->internal.mask = 0; ctrls->internal.real_mods = 0; @@ -464,29 +451,18 @@ XkbInitDevice(DeviceIntPtr pXDev) int i; XkbSrvInfoPtr xkbi; XkbChangesRec changes; -SrvXkmInfo file; unsigned check; XkbEventCauseRec cause; - file.dev= pXDev; - file.file=NULL; - bzero(&file.xkbinfo,sizeof(XkbFileInfo)); bzero(&changes,sizeof(XkbChangesRec)); pXDev->key->xkbInfo= xkbi= _XkbTypedCalloc(1,XkbSrvInfoRec); if ( xkbi ) { XkbDescPtr xkb; - if ((_XkbInitFileInfo!=NULL)&&(_XkbInitFileInfo->xkb!=NULL)) { - file.xkbinfo= *_XkbInitFileInfo; - xkbi->desc= _XkbInitFileInfo->xkb; - _XkbInitFileInfo= NULL; - } - else { - xkbi->desc= XkbAllocKeyboard(); - if (!xkbi->desc) - FatalError("Couldn't allocate keyboard description\n"); - xkbi->desc->min_key_code = pXDev->key->curKeySyms.minKeyCode; - xkbi->desc->max_key_code = pXDev->key->curKeySyms.maxKeyCode; - } + xkbi->desc= XkbAllocKeyboard(); + if (!xkbi->desc) + FatalError("Couldn't allocate keyboard description\n"); + xkbi->desc->min_key_code = pXDev->key->curKeySyms.minKeyCode; + xkbi->desc->max_key_code = pXDev->key->curKeySyms.maxKeyCode; xkb= xkbi->desc; if (xkb->min_key_code == 0) xkb->min_key_code = pXDev->key->curKeySyms.minKeyCode; @@ -509,32 +485,23 @@ XkbEventCauseRec cause; xkbi->dfltPtrDelta=1; xkbi->device = pXDev; - file.xkbinfo.xkb= xkb; - XkbInitSemantics(xkb,&file); - XkbInitNames(xkbi,&file); - XkbInitRadioGroups(xkbi,&file); + XkbInitSemantics(xkb); + XkbInitNames(xkbi); + XkbInitRadioGroups(xkbi); /* 12/31/94 (ef) -- XXX! Should check if state loaded from file */ bzero(&xkbi->state,sizeof(XkbStateRec)); - XkbInitControls(pXDev,xkbi,&file); + XkbInitControls(pXDev,xkbi); - if (file.xkbinfo.defined&XkmSymbolsMask) - memcpy(pXDev->key->modifierMap,xkb->map->modmap,xkb->max_key_code+1); - else - memcpy(xkb->map->modmap,pXDev->key->modifierMap,xkb->max_key_code+1); + memcpy(xkb->map->modmap,pXDev->key->modifierMap,xkb->max_key_code+1); - XkbInitIndicatorMap(xkbi,&file); + XkbInitIndicatorMap(xkbi); XkbDDXInitDevice(pXDev); - if (!(file.xkbinfo.defined&XkmSymbolsMask)) { - XkbUpdateKeyTypesFromCore(pXDev,xkb->min_key_code,XkbNumKeys(xkb), - &changes); - } - else { - XkbUpdateCoreDescription(pXDev,True); - } + XkbUpdateKeyTypesFromCore(pXDev,xkb->min_key_code,XkbNumKeys(xkb), + &changes); XkbSetCauseUnknown(&cause); XkbUpdateActions(pXDev,xkb->min_key_code, XkbNumKeys(xkb),&changes, &check,&cause); @@ -546,8 +513,6 @@ XkbEventCauseRec cause; pXDev->key->curKeySyms.minKeyCode = xkb->min_key_code; pXDev->key->curKeySyms.maxKeyCode = xkb->max_key_code; } - if (file.file!=NULL) - fclose(file.file); return; } @@ -571,12 +536,12 @@ XkbInitKeyboardDeviceStruct( DeviceIntPtr /*device*/, KeybdCtrl * /*ctrl*/)) { -XkbFileInfo finfo; KeySymsRec tmpSyms,*pSyms; CARD8 tmpMods[XkbMaxLegalKeyCode+1],*pMods; char name[PATH_MAX],*rules; Bool ok=False; XkbRF_VarDefsRec defs; +XkbDescPtr xkb; if ((dev->key!=NULL)||(dev->kbdfeed!=NULL)) return False; @@ -633,13 +598,11 @@ XkbRF_VarDefsRec defs; } ok = (Bool) XkbDDXLoadKeymapByNames(dev,names,XkmAllIndicesMask,0, - &finfo,name,PATH_MAX); + &xkb,name,PATH_MAX); - if (ok && (finfo.xkb!=NULL)) { - XkbDescPtr xkb; + if (ok && (xkb!=NULL)) { KeyCode minKC,maxKC; - xkb= finfo.xkb; minKC= xkb->min_key_code; maxKC= xkb->max_key_code; if (XkbIsLegalKeycode(minKC)&&XkbIsLegalKeycode(maxKC)&&(minKC<=maxKC)&& @@ -669,13 +632,11 @@ XkbRF_VarDefsRec defs; pMods= tmpMods; } } - _XkbInitFileInfo= &finfo; } else { LogMessage(X_WARNING, "Couldn't load XKB keymap, falling back to pre-XKB keymap\n"); } ok= InitKeyboardDeviceStruct((DevicePtr)dev,pSyms,pMods,bellProc,ctrlProc); - _XkbInitFileInfo= NULL; if ((pSyms==&tmpSyms)&&(pSyms->map!=NULL)) { _XkbFree(pSyms->map); pSyms->map= NULL; diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c index 4182c3a34..866b4b154 100644 --- a/xkb/xkbfmisc.c +++ b/xkb/xkbfmisc.c @@ -146,7 +146,7 @@ XkbWriteSectionFromName(FILE *file,char *sectionName,char *name) /* ARGSUSED */ static void _AddIncl( FILE * file, - XkbFileInfo * result, + XkbDescPtr xkb, Bool topLevel, Bool showImplicit, int index, @@ -169,9 +169,6 @@ unsigned complete; XkbNamesPtr old_names; int multi_section; unsigned wantNames,wantConfig,wantDflts; -XkbFileInfo finfo; - - bzero(&finfo,sizeof(XkbFileInfo)); complete= 0; if ((name=names->keymap)==NULL) name= "default"; @@ -187,14 +184,8 @@ XkbFileInfo finfo; if (want==0) return False; - if (xkb!=NULL) { + if (xkb!=NULL) old_names= xkb->names; - finfo.type= 0; - finfo.defined= 0; - finfo.xkb= xkb; - if (!XkbDetermineFileType(&finfo,XkbXKBFile,NULL)) - return False; - } else old_names= NULL; wantConfig= want&(~complete); @@ -304,7 +295,7 @@ XkbFileInfo finfo; wantNames= complete&(~(wantConfig|wantDflts)); name= names->keycodes; if (wantConfig&XkmKeyNamesMask) - XkbWriteXKBKeycodes(file,&finfo,False,False,_AddIncl,name); + XkbWriteXKBKeycodes(file,xkb,False,False,_AddIncl,name); else if (wantDflts&XkmKeyNamesMask) fprintf(stderr,"Default symbols not implemented yet!\n"); else if (wantNames&XkmKeyNamesMask) @@ -312,7 +303,7 @@ XkbFileInfo finfo; name= names->types; if (wantConfig&XkmTypesMask) - XkbWriteXKBKeyTypes(file,&finfo,False,False,_AddIncl,name); + XkbWriteXKBKeyTypes(file,xkb,False,False,_AddIncl,name); else if (wantDflts&XkmTypesMask) fprintf(stderr,"Default types not implemented yet!\n"); else if (wantNames&XkmTypesMask) @@ -320,7 +311,7 @@ XkbFileInfo finfo; name= names->compat; if (wantConfig&XkmCompatMapMask) - XkbWriteXKBCompatMap(file,&finfo,False,False,_AddIncl,name); + XkbWriteXKBCompatMap(file,xkb,False,False,_AddIncl,name); else if (wantDflts&XkmCompatMapMask) fprintf(stderr,"Default interps not implemented yet!\n"); else if (wantNames&XkmCompatMapMask) @@ -328,13 +319,13 @@ XkbFileInfo finfo; name= names->symbols; if (wantConfig&XkmSymbolsMask) - XkbWriteXKBSymbols(file,&finfo,False,False,_AddIncl,name); + XkbWriteXKBSymbols(file,xkb,False,False,_AddIncl,name); else if (wantNames&XkmSymbolsMask) XkbWriteSectionFromName(file,"symbols",name); name= names->geometry; if (wantConfig&XkmGeometryMask) - XkbWriteXKBGeometry(file,&finfo,False,False,_AddIncl,name); + XkbWriteXKBGeometry(file,xkb,False,False,_AddIncl,name); else if (wantNames&XkmGeometryMask) XkbWriteSectionFromName(file,"geometry",name); @@ -404,81 +395,6 @@ unsigned rtrn; return rtrn; } -Bool -XkbDetermineFileType(XkbFileInfoPtr finfo,int format,int *opts_missing) -{ -unsigned present; -XkbDescPtr xkb; - - if ((!finfo)||(!finfo->xkb)) - return False; - if (opts_missing) - *opts_missing= 0; - xkb= finfo->xkb; - present= 0; - if ((xkb->names)&&(xkb->names->keys)) present|= XkmKeyNamesMask; - if ((xkb->map)&&(xkb->map->types)) present|= XkmTypesMask; - if (xkb->compat) present|= XkmCompatMapMask; - if ((xkb->map)&&(xkb->map->num_syms>1)) present|= XkmSymbolsMask; - if (xkb->indicators) present|= XkmIndicatorsMask; - if (xkb->geom) present|= XkmGeometryMask; - if (!present) - return False; - else switch (present) { - case XkmKeyNamesMask: - finfo->type= XkmKeyNamesIndex; - finfo->defined= present; - return True; - case XkmTypesMask: - finfo->type= XkmTypesIndex; - finfo->defined= present; - return True; - case XkmCompatMapMask: - finfo->type= XkmCompatMapIndex; - finfo->defined= present; - return True; - case XkmSymbolsMask: - if (format!=XkbXKMFile) { - finfo->type= XkmSymbolsIndex; - finfo->defined= present; - return True; - } - break; - case XkmGeometryMask: - finfo->type= XkmGeometryIndex; - finfo->defined= present; - return True; - } - if ((present&(~XkmSemanticsLegal))==0) { - if ((XkmSemanticsRequired&present)==XkmSemanticsRequired) { - if (opts_missing) - *opts_missing= XkmSemanticsOptional&(~present); - finfo->type= XkmSemanticsFile; - finfo->defined= present; - return True; - } - } - else if ((present&(~XkmLayoutLegal))==0) { - if ((XkmLayoutRequired&present)==XkmLayoutRequired) { - if (opts_missing) - *opts_missing= XkmLayoutOptional&(~present); - finfo->type= XkmLayoutFile; - finfo->defined= present; - return True; - } - } - else if ((present&(~XkmKeymapLegal))==0) { - if ((XkmKeymapRequired&present)==XkmKeymapRequired) { - if (opts_missing) - *opts_missing= XkmKeymapOptional&(~present); - finfo->type= XkmKeymapFile; - finfo->defined= present; - return True; - } - } - return False; -} - /* all latin-1 alphanumerics, plus parens, slash, minus, underscore and */ /* wildcards */ diff --git a/xkb/xkbout.c b/xkb/xkbout.c index b72c05c60..229cc9258 100644 --- a/xkb/xkbout.c +++ b/xkb/xkbout.c @@ -90,9 +90,9 @@ Atom * vmodNames; /***====================================================================***/ static Bool -WriteXKBAction(FILE *file,XkbFileInfo *result,XkbAnyAction *action) +WriteXKBAction(FILE *file,XkbDescPtr xkb,XkbAnyAction *action) { - fprintf(file,"%s",XkbActionText(result->xkb,(XkbAction *)action,XkbXKBFile)); + fprintf(file,"%s",XkbActionText(xkb,(XkbAction *)action,XkbXKBFile)); return True; } @@ -100,7 +100,7 @@ WriteXKBAction(FILE *file,XkbFileInfo *result,XkbAnyAction *action) Bool XkbWriteXKBKeycodes( FILE * file, - XkbFileInfo * result, + XkbDescPtr xkb, Bool topLevel, Bool showImplicit, XkbFileAddOnFunc addOn, @@ -108,10 +108,8 @@ XkbWriteXKBKeycodes( FILE * file, { Atom kcName; register unsigned i; -XkbDescPtr xkb; char * alternate; - xkb= result->xkb; if ((!xkb)||(!xkb->names)||(!xkb->names->keys)) { _XkbLibError(_XkbErrMissingNames,"XkbWriteXKBKeycodes",0); return False; @@ -155,14 +153,14 @@ char * alternate; } } if (addOn) - (*addOn)(file,result,topLevel,showImplicit,XkmKeyNamesIndex,priv); + (*addOn)(file,xkb,topLevel,showImplicit,XkmKeyNamesIndex,priv); fprintf(file,"};\n\n"); return True; } Bool XkbWriteXKBKeyTypes( FILE * file, - XkbFileInfo * result, + XkbDescPtr xkb, Bool topLevel, Bool showImplicit, XkbFileAddOnFunc addOn, @@ -171,9 +169,7 @@ XkbWriteXKBKeyTypes( FILE * file, register unsigned i,n; XkbKeyTypePtr type; XkbKTMapEntryPtr entry; -XkbDescPtr xkb; - xkb= result->xkb; if ((!xkb)||(!xkb->map)||(!xkb->map->types)) { _XkbLibError(_XkbErrMissingTypes,"XkbWriteXKBKeyTypes",0); return False; @@ -223,22 +219,20 @@ XkbDescPtr xkb; fprintf(file," };\n"); } if (addOn) - (*addOn)(file,result,topLevel,showImplicit,XkmTypesIndex,priv); + (*addOn)(file,xkb,topLevel,showImplicit,XkmTypesIndex,priv); fprintf(file,"};\n\n"); return True; } static Bool WriteXKBIndicatorMap( FILE * file, - XkbFileInfo * result, + XkbDescPtr xkb, Atom name, XkbIndicatorMapPtr led, XkbFileAddOnFunc addOn, void * priv) { -XkbDescPtr xkb; - xkb= result->xkb; fprintf(file," indicator \"%s\" {\n",XkbAtomGetString(name)); if (led->flags&XkbIM_NoExplicit) fprintf(file," !allowExplicit;\n"); @@ -266,14 +260,14 @@ XkbDescPtr xkb; XkbControlsMaskText(led->ctrls,XkbXKBFile)); } if (addOn) - (*addOn)(file,result,False,True,XkmIndicatorsIndex,priv); + (*addOn)(file,xkb,False,True,XkmIndicatorsIndex,priv); fprintf(file," };\n"); return True; } Bool XkbWriteXKBCompatMap( FILE * file, - XkbFileInfo * result, + XkbDescPtr xkb, Bool topLevel, Bool showImplicit, XkbFileAddOnFunc addOn, @@ -281,9 +275,7 @@ XkbWriteXKBCompatMap( FILE * file, { register unsigned i; XkbSymInterpretPtr interp; -XkbDescPtr xkb; - xkb= result->xkb; if ((!xkb)||(!xkb->compat)||(!xkb->compat->sym_interpret)) { _XkbLibError(_XkbErrMissingCompatMap,"XkbWriteXKBCompatMap",0); return False; @@ -316,7 +308,7 @@ XkbDescPtr xkb; if (interp->flags&XkbSI_AutoRepeat) fprintf(file," repeat= True;\n"); fprintf(file," action= "); - WriteXKBAction(file,result,&interp->act); + WriteXKBAction(file,xkb,&interp->act); fprintf(file,";\n"); fprintf(file," };\n"); } @@ -337,32 +329,30 @@ XkbDescPtr xkb; (map->which_mods!=0)|| (map->mods.real_mods!=0)||(map->mods.vmods!=0)|| (map->ctrls!=0)) { - WriteXKBIndicatorMap(file,result,xkb->names->indicators[i],map, + WriteXKBIndicatorMap(file,xkb,xkb->names->indicators[i],map, addOn,priv); } } } if (addOn) - (*addOn)(file,result,topLevel,showImplicit,XkmCompatMapIndex,priv); + (*addOn)(file,xkb,topLevel,showImplicit,XkmCompatMapIndex,priv); fprintf(file,"};\n\n"); return True; } Bool XkbWriteXKBSymbols( FILE * file, - XkbFileInfo * result, + XkbDescPtr xkb, Bool topLevel, Bool showImplicit, XkbFileAddOnFunc addOn, void * priv) { register unsigned i,tmp; -XkbDescPtr xkb; XkbClientMapPtr map; XkbServerMapPtr srv; Bool showActions; - xkb= result->xkb; map= xkb->map; srv= xkb->server; if ((!xkb)||(!map)||(!map->syms)||(!map->key_sym_map)) { @@ -517,7 +507,7 @@ Bool showActions; for (s=0;sxkb; if ((!xkb)||(!xkb->geom)) { _XkbLibError(_XkbErrMissingGeometry,"XkbWriteXKBGeometry",0); return False; @@ -901,7 +889,7 @@ XkbGeometryPtr geom; } } if (addOn) - (*addOn)(file,result,topLevel,showImplicit,XkmGeometryIndex,priv); + (*addOn)(file,xkb,topLevel,showImplicit,XkmGeometryIndex,priv); fprintf(file,"};\n\n"); return True; } diff --git a/xkb/xkmread.c b/xkb/xkmread.c index 1e5b2cb4e..b14a5beda 100644 --- a/xkb/xkmread.c +++ b/xkb/xkmread.c @@ -165,14 +165,12 @@ int count,nRead=0; /***====================================================================***/ static int -ReadXkmVirtualMods(FILE *file,XkbFileInfo *result,XkbChangesPtr changes) +ReadXkmVirtualMods(FILE *file,XkbDescPtr xkb,XkbChangesPtr changes) { register unsigned int i,bit; unsigned int bound,named,tmp; int nRead=0; -XkbDescPtr xkb; - xkb= result->xkb; if (XkbAllocServerMap(xkb,XkbVirtualModsMask,0)!=Success) { _XkbLibError(_XkbErrBadAlloc,"ReadXkmVirtualMods",0); return -1; @@ -209,16 +207,14 @@ XkbDescPtr xkb; /***====================================================================***/ static int -ReadXkmKeycodes(FILE *file,XkbFileInfo *result,XkbChangesPtr changes) +ReadXkmKeycodes(FILE *file,XkbDescPtr xkb,XkbChangesPtr changes) { register int i; unsigned minKC,maxKC,nAl; int nRead=0; char name[100]; XkbKeyNamePtr pN; -XkbDescPtr xkb; - xkb= result->xkb; name[0]= '\0'; nRead+= XkmGetCountedString(file,name,100); minKC= XkmGetCARD8(file,&nRead); @@ -276,7 +272,7 @@ XkbDescPtr xkb; /***====================================================================***/ static int -ReadXkmKeyTypes(FILE *file,XkbFileInfo *result,XkbChangesPtr changes) +ReadXkmKeyTypes(FILE *file,XkbDescPtr xkb,XkbChangesPtr changes) { register unsigned i,n; unsigned num_types; @@ -287,9 +283,7 @@ xkmKeyTypeDesc wire; XkbKTMapEntryPtr entry; xkmKTMapEntryDesc wire_entry; char buf[100]; -XkbDescPtr xkb; - xkb= result->xkb; if ((tmp= XkmGetCountedString(file,buf,100))<1) { _XkbLibError(_XkbErrBadLength,"ReadXkmKeyTypes",0); return -1; @@ -414,7 +408,7 @@ XkbDescPtr xkb; /***====================================================================***/ static int -ReadXkmCompatMap(FILE *file,XkbFileInfo *result,XkbChangesPtr changes) +ReadXkmCompatMap(FILE *file,XkbDescPtr xkb,XkbChangesPtr changes) { register int i; unsigned num_si,groups; @@ -423,10 +417,8 @@ XkbSymInterpretPtr interp; xkmSymInterpretDesc wire; unsigned tmp; int nRead=0; -XkbDescPtr xkb; XkbCompatMapPtr compat; - xkb= result->xkb; if ((tmp= XkmGetCountedString(file,name,100))<1) { _XkbLibError(_XkbErrBadLength,"ReadXkmCompatMap",0); return -1; @@ -492,16 +484,14 @@ XkbCompatMapPtr compat; } static int -ReadXkmIndicators(FILE *file,XkbFileInfo *result,XkbChangesPtr changes) +ReadXkmIndicators(FILE *file,XkbDescPtr xkb,XkbChangesPtr changes) { register unsigned nLEDs; xkmIndicatorMapDesc wire; char buf[100]; unsigned tmp; int nRead=0; -XkbDescPtr xkb; - xkb= result->xkb; if ((xkb->indicators==NULL)&&(XkbAllocIndicatorMaps(xkb)!=Success)) { _XkbLibError(_XkbErrBadAlloc,"indicator rec",0); return -1; @@ -575,16 +565,14 @@ FindTypeForKey(XkbDescPtr xkb,Atom name,unsigned width,KeySym *syms) } static int -ReadXkmSymbols(FILE *file,XkbFileInfo *result) +ReadXkmSymbols(FILE *file,XkbDescPtr xkb) { register int i,g,s,totalVModMaps; xkmKeySymMapDesc wireMap; char buf[100]; unsigned minKC,maxKC,groupNames,tmp; int nRead=0; -XkbDescPtr xkb; - xkb= result->xkb; if ((tmp=XkmGetCountedString(file,buf,100))<1) return -1; nRead+= tmp; @@ -911,7 +899,7 @@ Atom nameAtom; } static int -ReadXkmGeometry(FILE *file,XkbFileInfo *result) +ReadXkmGeometry(FILE *file,XkbDescPtr xkb) { register int i; char buf[100]; @@ -931,11 +919,11 @@ XkbGeometrySizesRec sizes; sizes.num_sections= wireGeom.num_sections; sizes.num_doodads= wireGeom.num_doodads; sizes.num_key_aliases= wireGeom.num_key_aliases; - if (XkbAllocGeometry(result->xkb,&sizes)!=Success) { + if (XkbAllocGeometry(xkb,&sizes)!=Success) { _XkbLibError(_XkbErrBadAlloc,"ReadXkmGeometry",0); return nRead; } - geom= result->xkb->geom; + geom= xkb->geom; geom->name= XkbInternAtom(buf,False); geom->width_mm= wireGeom.width_mm; geom->height_mm= wireGeom.height_mm; @@ -1055,7 +1043,7 @@ int nRead=0; return 1; } -Bool +static Bool XkmReadTOC(FILE *file,xkmFileInfo* file_info,int max_toc,xkmSectionInfo *toc) { unsigned hdr,tmp; @@ -1086,117 +1074,11 @@ unsigned i,size_toc; return 1; } -Bool -XkmReadFileSection( FILE * file, - xkmSectionInfo * toc, - XkbFileInfo * result, - unsigned * loaded_rtrn) -{ -xkmSectionInfo tmpTOC; -int nRead; - - if ((!result)||(!result->xkb)) { - _XkbLibError(_XkbErrBadMatch,"XkmReadFileSection",0); - return 0; - } - fseek(file,toc->offset,SEEK_SET); - fread(&tmpTOC,SIZEOF(xkmSectionInfo),1,file); - nRead= SIZEOF(xkmSectionInfo); - if ((tmpTOC.type!=toc->type)||(tmpTOC.format!=toc->format)|| - (tmpTOC.size!=toc->size)||(tmpTOC.offset!=toc->offset)) { - _XkbLibError(_XkbErrIllegalContents,"XkmReadFileSection",0); - return 0; - } - switch (tmpTOC.type) { - case XkmVirtualModsIndex: - nRead+= ReadXkmVirtualMods(file,result,NULL); - if ((loaded_rtrn)&&(nRead>=0)) - *loaded_rtrn|= XkmVirtualModsMask; - break; - case XkmTypesIndex: - nRead+= ReadXkmKeyTypes(file,result,NULL); - if ((loaded_rtrn)&&(nRead>=0)) - *loaded_rtrn|= XkmTypesMask; - break; - case XkmCompatMapIndex: - nRead+= ReadXkmCompatMap(file,result,NULL); - if ((loaded_rtrn)&&(nRead>=0)) - *loaded_rtrn|= XkmCompatMapMask; - break; - case XkmKeyNamesIndex: - nRead+= ReadXkmKeycodes(file,result,NULL); - if ((loaded_rtrn)&&(nRead>=0)) - *loaded_rtrn|= XkmKeyNamesMask; - break; - case XkmSymbolsIndex: - nRead+= ReadXkmSymbols(file,result); - if ((loaded_rtrn)&&(nRead>=0)) - *loaded_rtrn|= XkmSymbolsMask; - break; - case XkmIndicatorsIndex: - nRead+= ReadXkmIndicators(file,result,NULL); - if ((loaded_rtrn)&&(nRead>=0)) - *loaded_rtrn|= XkmIndicatorsMask; - break; - case XkmGeometryIndex: - nRead+= ReadXkmGeometry(file,result); - if ((loaded_rtrn)&&(nRead>=0)) - *loaded_rtrn|= XkmGeometryMask; - break; - default: - _XkbLibError(_XkbErrBadImplementation, - XkbConfigText(tmpTOC.type,XkbMessage),0); - nRead= 0; - break; - } - if (nRead!=tmpTOC.size) { - _XkbLibError(_XkbErrBadLength,XkbConfigText(tmpTOC.type,XkbMessage), - nRead-tmpTOC.size); - return 0; - } - return (nRead>=0); -} - -char * -XkmReadFileSectionName(FILE *file,xkmSectionInfo *toc) -{ -xkmSectionInfo tmpTOC; -char name[100]; - - if ((!file)||(!toc)) - return 0; - switch (toc->type) { - case XkmVirtualModsIndex: - case XkmIndicatorsIndex: - break; - case XkmTypesIndex: - case XkmCompatMapIndex: - case XkmKeyNamesIndex: - case XkmSymbolsIndex: - case XkmGeometryIndex: - fseek(file,toc->offset,SEEK_SET); - fread(&tmpTOC,SIZEOF(xkmSectionInfo),1,file); - if ((tmpTOC.type!=toc->type)||(tmpTOC.format!=toc->format)|| - (tmpTOC.size!=toc->size)||(tmpTOC.offset!=toc->offset)) { - _XkbLibError(_XkbErrIllegalContents,"XkmReadFileSectionName",0); - return 0; - } - if (XkmGetCountedString(file,name,100)>0) - return _XkbDupString(name); - break; - default: - _XkbLibError(_XkbErrBadImplementation, - XkbConfigText(tmpTOC.type,XkbMessage),0); - break; - } - return NULL; -} - /***====================================================================***/ #define MAX_TOC 16 unsigned -XkmReadFile(FILE *file,unsigned need,unsigned want,XkbFileInfo *result) +XkmReadFile(FILE *file,unsigned need,unsigned want,XkbDescPtr *xkb) { register unsigned i; xkmSectionInfo toc[MAX_TOC],tmpTOC; @@ -1211,9 +1093,8 @@ unsigned which= need|want; need&(~fileInfo.present)); return which; } - result->type= fileInfo.type; - if (result->xkb==NULL) - result->xkb= XkbAllocKeyboard(); + if (*xkb==NULL) + *xkb= XkbAllocKeyboard(); for (i=0;i0) { nRead+= tmp; which&= ~(1<defined|= (1<defined|= (1< Date: Tue, 15 Jan 2008 19:43:16 -0800 Subject: [PATCH 070/112] glx: Use glapi sources from the mesa tree With recent mesa HEAD, the glapi sources used only in the xserver glx module are carried in the mesa tree. Previously, these were generated separately and committed to the xserver tree. The build is changed to symlink these files like the other mesa sources. This reduces the chance for mismatches between mesa's glX API and the xserver's glX API. --- GL/glx/.gitignore | 12 +- GL/glx/Makefile.am | 18 +- GL/glx/indirect_dispatch.c | 5889 ------------------------------ GL/glx/indirect_dispatch.h | 1047 ------ GL/glx/indirect_dispatch_swap.c | 6051 ------------------------------- GL/glx/indirect_reqsize.c | 832 ----- GL/glx/indirect_reqsize.h | 121 - GL/glx/indirect_size_get.c | 1206 ------ GL/glx/indirect_size_get.h | 102 - GL/glx/indirect_table.c | 1596 -------- GL/symlink-mesa.sh | 8 + 11 files changed, 27 insertions(+), 16855 deletions(-) delete mode 100644 GL/glx/indirect_dispatch.c delete mode 100644 GL/glx/indirect_dispatch.h delete mode 100644 GL/glx/indirect_dispatch_swap.c delete mode 100644 GL/glx/indirect_reqsize.c delete mode 100644 GL/glx/indirect_reqsize.h delete mode 100644 GL/glx/indirect_size_get.c delete mode 100644 GL/glx/indirect_size_get.h delete mode 100644 GL/glx/indirect_table.c diff --git a/GL/glx/.gitignore b/GL/glx/.gitignore index 5cf6f0a44..c49b54d43 100644 --- a/GL/glx/.gitignore +++ b/GL/glx/.gitignore @@ -1,5 +1,13 @@ -indirect_size.h +glapi.c glcontextmodes.c glcontextmodes.h -glapi.c glthread.c +indirect_dispatch.c +indirect_dispatch.h +indirect_dispatch_swap.c +indirect_reqsize.c +indirect_reqsize.h +indirect_size.h +indirect_size_get.c +indirect_size_get.h +indirect_table.c diff --git a/GL/glx/Makefile.am b/GL/glx/Makefile.am index e37e499c5..377d76019 100644 --- a/GL/glx/Makefile.am +++ b/GL/glx/Makefile.am @@ -33,7 +33,15 @@ nodist_libglx_la_SOURCES = indirect_size.h \ glapi.c \ glcontextmodes.c \ glcontextmode.h \ - glthread.c + glthread.c \ + indirect_dispatch.c \ + indirect_dispatch.h \ + indirect_dispatch_swap.c \ + indirect_reqsize.c \ + indirect_reqsize.h \ + indirect_size_get.c \ + indirect_size_get.h \ + indirect_table.c libglxdri_la_SOURCES = \ glxdri.c \ @@ -56,15 +64,7 @@ libglx_la_SOURCES = \ glxserver.h \ glxutil.c \ glxutil.h \ - indirect_dispatch.c \ - indirect_dispatch.h \ - indirect_dispatch_swap.c \ indirect_program.c \ - indirect_reqsize.c \ - indirect_reqsize.h \ - indirect_size_get.c \ - indirect_size_get.h \ - indirect_table.c \ indirect_table.h \ indirect_texture_compression.c \ indirect_util.c \ diff --git a/GL/glx/indirect_dispatch.c b/GL/glx/indirect_dispatch.c deleted file mode 100644 index 2afd3eb22..000000000 --- a/GL/glx/indirect_dispatch.c +++ /dev/null @@ -1,5889 +0,0 @@ -/* DO NOT EDIT - This file generated automatically by glX_proto_recv.py (from Mesa) script */ - -/* - * (C) Copyright IBM Corporation 2005 - * All Rights Reserved. - * - * 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, sub license, - * and/or 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 (including the next - * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM, - * AND/OR THEIR SUPPLIERS 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. - */ - -#include -#include -#include -#include -#include "indirect_size.h" -#include "indirect_size_get.h" -#include "indirect_dispatch.h" -#include "glxserver.h" -#include "glxbyteorder.h" -#include "indirect_util.h" -#include "singlesize.h" -#include "glapitable.h" -#include "glapi.h" -#include "glthread.h" -#include "dispatch.h" - -#define __GLX_PAD(x) (((x) + 3) & ~3) - -typedef struct { - __GLX_PIXEL_3D_HDR; -} __GLXpixel3DHeader; - -extern GLboolean __glXErrorOccured( void ); -extern void __glXClearErrorOccured( void ); - -static const unsigned dummy_answer[2] = {0, 0}; - -int __glXDisp_NewList(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - CALL_NewList( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - *(GLenum *)(pc + 4) - ) ); - error = Success; - } - - return error; -} - -int __glXDisp_EndList(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - CALL_EndList( GET_DISPATCH(), () ); - error = Success; - } - - return error; -} - -void __glXDisp_CallList(GLbyte * pc) -{ - CALL_CallList( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); -} - -void __glXDisp_CallLists(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 0); - const GLenum type = *(GLenum *)(pc + 4); - const GLvoid * lists = (const GLvoid *)(pc + 8); - - lists = (const GLvoid *) (pc + 8); - - CALL_CallLists( GET_DISPATCH(), ( - n, - type, - lists - ) ); -} - -int __glXDisp_DeleteLists(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - CALL_DeleteLists( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - *(GLsizei *)(pc + 4) - ) ); - error = Success; - } - - return error; -} - -int __glXDisp_GenLists(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLuint retval; - retval = CALL_GenLists( GET_DISPATCH(), ( - *(GLsizei *)(pc + 0) - ) ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDisp_ListBase(GLbyte * pc) -{ - CALL_ListBase( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); -} - -void __glXDisp_Begin(GLbyte * pc) -{ - CALL_Begin( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_Bitmap(GLbyte * pc) -{ - const GLubyte * const bitmap = (const GLubyte *) (pc + 44); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_Bitmap( GET_DISPATCH(), ( - *(GLsizei *)(pc + 20), - *(GLsizei *)(pc + 24), - *(GLfloat *)(pc + 28), - *(GLfloat *)(pc + 32), - *(GLfloat *)(pc + 36), - *(GLfloat *)(pc + 40), - bitmap - ) ); -} - -void __glXDisp_Color3bv(GLbyte * pc) -{ - CALL_Color3bv( GET_DISPATCH(), ( - (const GLbyte *)(pc + 0) - ) ); -} - -void __glXDisp_Color3dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_Color3dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_Color3fv(GLbyte * pc) -{ - CALL_Color3fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_Color3iv(GLbyte * pc) -{ - CALL_Color3iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_Color3sv(GLbyte * pc) -{ - CALL_Color3sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_Color3ubv(GLbyte * pc) -{ - CALL_Color3ubv( GET_DISPATCH(), ( - (const GLubyte *)(pc + 0) - ) ); -} - -void __glXDisp_Color3uiv(GLbyte * pc) -{ - CALL_Color3uiv( GET_DISPATCH(), ( - (const GLuint *)(pc + 0) - ) ); -} - -void __glXDisp_Color3usv(GLbyte * pc) -{ - CALL_Color3usv( GET_DISPATCH(), ( - (const GLushort *)(pc + 0) - ) ); -} - -void __glXDisp_Color4bv(GLbyte * pc) -{ - CALL_Color4bv( GET_DISPATCH(), ( - (const GLbyte *)(pc + 0) - ) ); -} - -void __glXDisp_Color4dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_Color4dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_Color4fv(GLbyte * pc) -{ - CALL_Color4fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_Color4iv(GLbyte * pc) -{ - CALL_Color4iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_Color4sv(GLbyte * pc) -{ - CALL_Color4sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_Color4ubv(GLbyte * pc) -{ - CALL_Color4ubv( GET_DISPATCH(), ( - (const GLubyte *)(pc + 0) - ) ); -} - -void __glXDisp_Color4uiv(GLbyte * pc) -{ - CALL_Color4uiv( GET_DISPATCH(), ( - (const GLuint *)(pc + 0) - ) ); -} - -void __glXDisp_Color4usv(GLbyte * pc) -{ - CALL_Color4usv( GET_DISPATCH(), ( - (const GLushort *)(pc + 0) - ) ); -} - -void __glXDisp_EdgeFlagv(GLbyte * pc) -{ - CALL_EdgeFlagv( GET_DISPATCH(), ( - (const GLboolean *)(pc + 0) - ) ); -} - -void __glXDisp_End(GLbyte * pc) -{ - CALL_End( GET_DISPATCH(), () ); -} - -void __glXDisp_Indexdv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 8); - pc -= 4; - } -#endif - - CALL_Indexdv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_Indexfv(GLbyte * pc) -{ - CALL_Indexfv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_Indexiv(GLbyte * pc) -{ - CALL_Indexiv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_Indexsv(GLbyte * pc) -{ - CALL_Indexsv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_Normal3bv(GLbyte * pc) -{ - CALL_Normal3bv( GET_DISPATCH(), ( - (const GLbyte *)(pc + 0) - ) ); -} - -void __glXDisp_Normal3dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_Normal3dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_Normal3fv(GLbyte * pc) -{ - CALL_Normal3fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_Normal3iv(GLbyte * pc) -{ - CALL_Normal3iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_Normal3sv(GLbyte * pc) -{ - CALL_Normal3sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos2dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_RasterPos2dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos2fv(GLbyte * pc) -{ - CALL_RasterPos2fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos2iv(GLbyte * pc) -{ - CALL_RasterPos2iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos2sv(GLbyte * pc) -{ - CALL_RasterPos2sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos3dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_RasterPos3dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos3fv(GLbyte * pc) -{ - CALL_RasterPos3fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos3iv(GLbyte * pc) -{ - CALL_RasterPos3iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos3sv(GLbyte * pc) -{ - CALL_RasterPos3sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos4dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_RasterPos4dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos4fv(GLbyte * pc) -{ - CALL_RasterPos4fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos4iv(GLbyte * pc) -{ - CALL_RasterPos4iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_RasterPos4sv(GLbyte * pc) -{ - CALL_RasterPos4sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_Rectdv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_Rectdv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0), - (const GLdouble *)(pc + 16) - ) ); -} - -void __glXDisp_Rectfv(GLbyte * pc) -{ - CALL_Rectfv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0), - (const GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_Rectiv(GLbyte * pc) -{ - CALL_Rectiv( GET_DISPATCH(), ( - (const GLint *)(pc + 0), - (const GLint *)(pc + 8) - ) ); -} - -void __glXDisp_Rectsv(GLbyte * pc) -{ - CALL_Rectsv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_TexCoord1dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 8); - pc -= 4; - } -#endif - - CALL_TexCoord1dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord1fv(GLbyte * pc) -{ - CALL_TexCoord1fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord1iv(GLbyte * pc) -{ - CALL_TexCoord1iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord1sv(GLbyte * pc) -{ - CALL_TexCoord1sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord2dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_TexCoord2dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord2fv(GLbyte * pc) -{ - CALL_TexCoord2fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord2iv(GLbyte * pc) -{ - CALL_TexCoord2iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord2sv(GLbyte * pc) -{ - CALL_TexCoord2sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord3dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_TexCoord3dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord3fv(GLbyte * pc) -{ - CALL_TexCoord3fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord3iv(GLbyte * pc) -{ - CALL_TexCoord3iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord3sv(GLbyte * pc) -{ - CALL_TexCoord3sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord4dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_TexCoord4dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord4fv(GLbyte * pc) -{ - CALL_TexCoord4fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord4iv(GLbyte * pc) -{ - CALL_TexCoord4iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_TexCoord4sv(GLbyte * pc) -{ - CALL_TexCoord4sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex2dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_Vertex2dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex2fv(GLbyte * pc) -{ - CALL_Vertex2fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex2iv(GLbyte * pc) -{ - CALL_Vertex2iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex2sv(GLbyte * pc) -{ - CALL_Vertex2sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex3dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_Vertex3dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex3fv(GLbyte * pc) -{ - CALL_Vertex3fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex3iv(GLbyte * pc) -{ - CALL_Vertex3iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex3sv(GLbyte * pc) -{ - CALL_Vertex3sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex4dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_Vertex4dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex4fv(GLbyte * pc) -{ - CALL_Vertex4fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex4iv(GLbyte * pc) -{ - CALL_Vertex4iv( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_Vertex4sv(GLbyte * pc) -{ - CALL_Vertex4sv( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_ClipPlane(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 36); - pc -= 4; - } -#endif - - CALL_ClipPlane( GET_DISPATCH(), ( - *(GLenum *)(pc + 32), - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_ColorMaterial(GLbyte * pc) -{ - CALL_ColorMaterial( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4) - ) ); -} - -void __glXDisp_CullFace(GLbyte * pc) -{ - CALL_CullFace( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_Fogf(GLbyte * pc) -{ - CALL_Fogf( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_Fogfv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 0); - const GLfloat * params; - - params = (const GLfloat *) (pc + 4); - - CALL_Fogfv( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDisp_Fogi(GLbyte * pc) -{ - CALL_Fogi( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4) - ) ); -} - -void __glXDisp_Fogiv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 0); - const GLint * params; - - params = (const GLint *) (pc + 4); - - CALL_Fogiv( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDisp_FrontFace(GLbyte * pc) -{ - CALL_FrontFace( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_Hint(GLbyte * pc) -{ - CALL_Hint( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4) - ) ); -} - -void __glXDisp_Lightf(GLbyte * pc) -{ - CALL_Lightf( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_Lightfv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLfloat * params; - - params = (const GLfloat *) (pc + 8); - - CALL_Lightfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_Lighti(GLbyte * pc) -{ - CALL_Lighti( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLint *)(pc + 8) - ) ); -} - -void __glXDisp_Lightiv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLint * params; - - params = (const GLint *) (pc + 8); - - CALL_Lightiv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_LightModelf(GLbyte * pc) -{ - CALL_LightModelf( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_LightModelfv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 0); - const GLfloat * params; - - params = (const GLfloat *) (pc + 4); - - CALL_LightModelfv( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDisp_LightModeli(GLbyte * pc) -{ - CALL_LightModeli( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4) - ) ); -} - -void __glXDisp_LightModeliv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 0); - const GLint * params; - - params = (const GLint *) (pc + 4); - - CALL_LightModeliv( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDisp_LineStipple(GLbyte * pc) -{ - CALL_LineStipple( GET_DISPATCH(), ( - *(GLint *)(pc + 0), - *(GLushort *)(pc + 4) - ) ); -} - -void __glXDisp_LineWidth(GLbyte * pc) -{ - CALL_LineWidth( GET_DISPATCH(), ( - *(GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_Materialf(GLbyte * pc) -{ - CALL_Materialf( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_Materialfv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLfloat * params; - - params = (const GLfloat *) (pc + 8); - - CALL_Materialfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_Materiali(GLbyte * pc) -{ - CALL_Materiali( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLint *)(pc + 8) - ) ); -} - -void __glXDisp_Materialiv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLint * params; - - params = (const GLint *) (pc + 8); - - CALL_Materialiv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_PointSize(GLbyte * pc) -{ - CALL_PointSize( GET_DISPATCH(), ( - *(GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_PolygonMode(GLbyte * pc) -{ - CALL_PolygonMode( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4) - ) ); -} - -void __glXDisp_PolygonStipple(GLbyte * pc) -{ - const GLubyte * const mask = (const GLubyte *) (pc + 20); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_PolygonStipple( GET_DISPATCH(), ( - mask - ) ); -} - -void __glXDisp_Scissor(GLbyte * pc) -{ - CALL_Scissor( GET_DISPATCH(), ( - *(GLint *)(pc + 0), - *(GLint *)(pc + 4), - *(GLsizei *)(pc + 8), - *(GLsizei *)(pc + 12) - ) ); -} - -void __glXDisp_ShadeModel(GLbyte * pc) -{ - CALL_ShadeModel( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_TexParameterf(GLbyte * pc) -{ - CALL_TexParameterf( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_TexParameterfv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLfloat * params; - - params = (const GLfloat *) (pc + 8); - - CALL_TexParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_TexParameteri(GLbyte * pc) -{ - CALL_TexParameteri( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLint *)(pc + 8) - ) ); -} - -void __glXDisp_TexParameteriv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLint * params; - - params = (const GLint *) (pc + 8); - - CALL_TexParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_TexImage1D(GLbyte * pc) -{ - const GLvoid * const pixels = (const GLvoid *) (pc + 52); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_TexImage1D( GET_DISPATCH(), ( - *(GLenum *)(pc + 20), - *(GLint *)(pc + 24), - *(GLint *)(pc + 28), - *(GLsizei *)(pc + 32), - *(GLint *)(pc + 40), - *(GLenum *)(pc + 44), - *(GLenum *)(pc + 48), - pixels - ) ); -} - -void __glXDisp_TexImage2D(GLbyte * pc) -{ - const GLvoid * const pixels = (const GLvoid *) (pc + 52); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_TexImage2D( GET_DISPATCH(), ( - *(GLenum *)(pc + 20), - *(GLint *)(pc + 24), - *(GLint *)(pc + 28), - *(GLsizei *)(pc + 32), - *(GLsizei *)(pc + 36), - *(GLint *)(pc + 40), - *(GLenum *)(pc + 44), - *(GLenum *)(pc + 48), - pixels - ) ); -} - -void __glXDisp_TexEnvf(GLbyte * pc) -{ - CALL_TexEnvf( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_TexEnvfv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLfloat * params; - - params = (const GLfloat *) (pc + 8); - - CALL_TexEnvfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_TexEnvi(GLbyte * pc) -{ - CALL_TexEnvi( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLint *)(pc + 8) - ) ); -} - -void __glXDisp_TexEnviv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLint * params; - - params = (const GLint *) (pc + 8); - - CALL_TexEnviv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_TexGend(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_TexGend( GET_DISPATCH(), ( - *(GLenum *)(pc + 8), - *(GLenum *)(pc + 12), - *(GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_TexGendv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLdouble * params; - -#ifdef __GLX_ALIGN64 - const GLuint compsize = __glTexGendv_size(pname); - const GLuint cmdlen = 12 + __GLX_PAD((compsize * 8)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - params = (const GLdouble *) (pc + 8); - - CALL_TexGendv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_TexGenf(GLbyte * pc) -{ - CALL_TexGenf( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_TexGenfv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLfloat * params; - - params = (const GLfloat *) (pc + 8); - - CALL_TexGenfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_TexGeni(GLbyte * pc) -{ - CALL_TexGeni( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLint *)(pc + 8) - ) ); -} - -void __glXDisp_TexGeniv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLint * params; - - params = (const GLint *) (pc + 8); - - CALL_TexGeniv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_InitNames(GLbyte * pc) -{ - CALL_InitNames( GET_DISPATCH(), () ); -} - -void __glXDisp_LoadName(GLbyte * pc) -{ - CALL_LoadName( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); -} - -void __glXDisp_PassThrough(GLbyte * pc) -{ - CALL_PassThrough( GET_DISPATCH(), ( - *(GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_PopName(GLbyte * pc) -{ - CALL_PopName( GET_DISPATCH(), () ); -} - -void __glXDisp_PushName(GLbyte * pc) -{ - CALL_PushName( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); -} - -void __glXDisp_DrawBuffer(GLbyte * pc) -{ - CALL_DrawBuffer( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_Clear(GLbyte * pc) -{ - CALL_Clear( GET_DISPATCH(), ( - *(GLbitfield *)(pc + 0) - ) ); -} - -void __glXDisp_ClearAccum(GLbyte * pc) -{ - CALL_ClearAccum( GET_DISPATCH(), ( - *(GLfloat *)(pc + 0), - *(GLfloat *)(pc + 4), - *(GLfloat *)(pc + 8), - *(GLfloat *)(pc + 12) - ) ); -} - -void __glXDisp_ClearIndex(GLbyte * pc) -{ - CALL_ClearIndex( GET_DISPATCH(), ( - *(GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_ClearColor(GLbyte * pc) -{ - CALL_ClearColor( GET_DISPATCH(), ( - *(GLclampf *)(pc + 0), - *(GLclampf *)(pc + 4), - *(GLclampf *)(pc + 8), - *(GLclampf *)(pc + 12) - ) ); -} - -void __glXDisp_ClearStencil(GLbyte * pc) -{ - CALL_ClearStencil( GET_DISPATCH(), ( - *(GLint *)(pc + 0) - ) ); -} - -void __glXDisp_ClearDepth(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 8); - pc -= 4; - } -#endif - - CALL_ClearDepth( GET_DISPATCH(), ( - *(GLclampd *)(pc + 0) - ) ); -} - -void __glXDisp_StencilMask(GLbyte * pc) -{ - CALL_StencilMask( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); -} - -void __glXDisp_ColorMask(GLbyte * pc) -{ - CALL_ColorMask( GET_DISPATCH(), ( - *(GLboolean *)(pc + 0), - *(GLboolean *)(pc + 1), - *(GLboolean *)(pc + 2), - *(GLboolean *)(pc + 3) - ) ); -} - -void __glXDisp_DepthMask(GLbyte * pc) -{ - CALL_DepthMask( GET_DISPATCH(), ( - *(GLboolean *)(pc + 0) - ) ); -} - -void __glXDisp_IndexMask(GLbyte * pc) -{ - CALL_IndexMask( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); -} - -void __glXDisp_Accum(GLbyte * pc) -{ - CALL_Accum( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_Disable(GLbyte * pc) -{ - CALL_Disable( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_Enable(GLbyte * pc) -{ - CALL_Enable( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_PopAttrib(GLbyte * pc) -{ - CALL_PopAttrib( GET_DISPATCH(), () ); -} - -void __glXDisp_PushAttrib(GLbyte * pc) -{ - CALL_PushAttrib( GET_DISPATCH(), ( - *(GLbitfield *)(pc + 0) - ) ); -} - -void __glXDisp_MapGrid1d(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 20); - pc -= 4; - } -#endif - - CALL_MapGrid1d( GET_DISPATCH(), ( - *(GLint *)(pc + 16), - *(GLdouble *)(pc + 0), - *(GLdouble *)(pc + 8) - ) ); -} - -void __glXDisp_MapGrid1f(GLbyte * pc) -{ - CALL_MapGrid1f( GET_DISPATCH(), ( - *(GLint *)(pc + 0), - *(GLfloat *)(pc + 4), - *(GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_MapGrid2d(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 40); - pc -= 4; - } -#endif - - CALL_MapGrid2d( GET_DISPATCH(), ( - *(GLint *)(pc + 32), - *(GLdouble *)(pc + 0), - *(GLdouble *)(pc + 8), - *(GLint *)(pc + 36), - *(GLdouble *)(pc + 16), - *(GLdouble *)(pc + 24) - ) ); -} - -void __glXDisp_MapGrid2f(GLbyte * pc) -{ - CALL_MapGrid2f( GET_DISPATCH(), ( - *(GLint *)(pc + 0), - *(GLfloat *)(pc + 4), - *(GLfloat *)(pc + 8), - *(GLint *)(pc + 12), - *(GLfloat *)(pc + 16), - *(GLfloat *)(pc + 20) - ) ); -} - -void __glXDisp_EvalCoord1dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 8); - pc -= 4; - } -#endif - - CALL_EvalCoord1dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_EvalCoord1fv(GLbyte * pc) -{ - CALL_EvalCoord1fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_EvalCoord2dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_EvalCoord2dv( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_EvalCoord2fv(GLbyte * pc) -{ - CALL_EvalCoord2fv( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_EvalMesh1(GLbyte * pc) -{ - CALL_EvalMesh1( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLint *)(pc + 8) - ) ); -} - -void __glXDisp_EvalPoint1(GLbyte * pc) -{ - CALL_EvalPoint1( GET_DISPATCH(), ( - *(GLint *)(pc + 0) - ) ); -} - -void __glXDisp_EvalMesh2(GLbyte * pc) -{ - CALL_EvalMesh2( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLint *)(pc + 8), - *(GLint *)(pc + 12), - *(GLint *)(pc + 16) - ) ); -} - -void __glXDisp_EvalPoint2(GLbyte * pc) -{ - CALL_EvalPoint2( GET_DISPATCH(), ( - *(GLint *)(pc + 0), - *(GLint *)(pc + 4) - ) ); -} - -void __glXDisp_AlphaFunc(GLbyte * pc) -{ - CALL_AlphaFunc( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLclampf *)(pc + 4) - ) ); -} - -void __glXDisp_BlendFunc(GLbyte * pc) -{ - CALL_BlendFunc( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4) - ) ); -} - -void __glXDisp_LogicOp(GLbyte * pc) -{ - CALL_LogicOp( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_StencilFunc(GLbyte * pc) -{ - CALL_StencilFunc( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLuint *)(pc + 8) - ) ); -} - -void __glXDisp_StencilOp(GLbyte * pc) -{ - CALL_StencilOp( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLenum *)(pc + 8) - ) ); -} - -void __glXDisp_DepthFunc(GLbyte * pc) -{ - CALL_DepthFunc( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_PixelZoom(GLbyte * pc) -{ - CALL_PixelZoom( GET_DISPATCH(), ( - *(GLfloat *)(pc + 0), - *(GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_PixelTransferf(GLbyte * pc) -{ - CALL_PixelTransferf( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_PixelTransferi(GLbyte * pc) -{ - CALL_PixelTransferi( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4) - ) ); -} - -int __glXDisp_PixelStoref(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - CALL_PixelStoref( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLfloat *)(pc + 4) - ) ); - error = Success; - } - - return error; -} - -int __glXDisp_PixelStorei(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - CALL_PixelStorei( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4) - ) ); - error = Success; - } - - return error; -} - -void __glXDisp_PixelMapfv(GLbyte * pc) -{ - const GLsizei mapsize = *(GLsizei *)(pc + 4); - - CALL_PixelMapfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - mapsize, - (const GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_PixelMapuiv(GLbyte * pc) -{ - const GLsizei mapsize = *(GLsizei *)(pc + 4); - - CALL_PixelMapuiv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - mapsize, - (const GLuint *)(pc + 8) - ) ); -} - -void __glXDisp_PixelMapusv(GLbyte * pc) -{ - const GLsizei mapsize = *(GLsizei *)(pc + 4); - - CALL_PixelMapusv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - mapsize, - (const GLushort *)(pc + 8) - ) ); -} - -void __glXDisp_ReadBuffer(GLbyte * pc) -{ - CALL_ReadBuffer( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_CopyPixels(GLbyte * pc) -{ - CALL_CopyPixels( GET_DISPATCH(), ( - *(GLint *)(pc + 0), - *(GLint *)(pc + 4), - *(GLsizei *)(pc + 8), - *(GLsizei *)(pc + 12), - *(GLenum *)(pc + 16) - ) ); -} - -void __glXDisp_DrawPixels(GLbyte * pc) -{ - const GLvoid * const pixels = (const GLvoid *) (pc + 36); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_DrawPixels( GET_DISPATCH(), ( - *(GLsizei *)(pc + 20), - *(GLsizei *)(pc + 24), - *(GLenum *)(pc + 28), - *(GLenum *)(pc + 32), - pixels - ) ); -} - -int __glXDisp_GetBooleanv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 0); - - const GLuint compsize = __glGetBooleanv_size(pname); - GLboolean answerBuffer[200]; - GLboolean * params = __glXGetAnswerBuffer(cl, compsize, answerBuffer, sizeof(answerBuffer), 1); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetBooleanv( GET_DISPATCH(), ( - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 1, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetClipPlane(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLdouble equation[4]; - CALL_GetClipPlane( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - equation - ) ); - __glXSendReply(cl->client, equation, 4, 8, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetDoublev(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 0); - - const GLuint compsize = __glGetDoublev_size(pname); - GLdouble answerBuffer[200]; - GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetDoublev( GET_DISPATCH(), ( - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetError(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLenum retval; - retval = CALL_GetError( GET_DISPATCH(), () ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -int __glXDisp_GetFloatv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 0); - - const GLuint compsize = __glGetFloatv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetFloatv( GET_DISPATCH(), ( - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetIntegerv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 0); - - const GLuint compsize = __glGetIntegerv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetIntegerv( GET_DISPATCH(), ( - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetLightfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetLightfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetLightfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetLightiv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetLightiv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetLightiv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetMapdv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum target = *(GLenum *)(pc + 0); - const GLenum query = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetMapdv_size(target,query); - GLdouble answerBuffer[200]; - GLdouble * v = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8); - - if (v == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMapdv( GET_DISPATCH(), ( - target, - query, - v - ) ); - __glXSendReply(cl->client, v, compsize, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetMapfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum target = *(GLenum *)(pc + 0); - const GLenum query = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetMapfv_size(target,query); - GLfloat answerBuffer[200]; - GLfloat * v = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (v == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMapfv( GET_DISPATCH(), ( - target, - query, - v - ) ); - __glXSendReply(cl->client, v, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetMapiv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum target = *(GLenum *)(pc + 0); - const GLenum query = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetMapiv_size(target,query); - GLint answerBuffer[200]; - GLint * v = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (v == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMapiv( GET_DISPATCH(), ( - target, - query, - v - ) ); - __glXSendReply(cl->client, v, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetMaterialfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetMaterialfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMaterialfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetMaterialiv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetMaterialiv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMaterialiv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetPixelMapfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum map = *(GLenum *)(pc + 0); - - const GLuint compsize = __glGetPixelMapfv_size(map); - GLfloat answerBuffer[200]; - GLfloat * values = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (values == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetPixelMapfv( GET_DISPATCH(), ( - map, - values - ) ); - __glXSendReply(cl->client, values, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetPixelMapuiv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum map = *(GLenum *)(pc + 0); - - const GLuint compsize = __glGetPixelMapuiv_size(map); - GLuint answerBuffer[200]; - GLuint * values = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (values == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetPixelMapuiv( GET_DISPATCH(), ( - map, - values - ) ); - __glXSendReply(cl->client, values, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetPixelMapusv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum map = *(GLenum *)(pc + 0); - - const GLuint compsize = __glGetPixelMapusv_size(map); - GLushort answerBuffer[200]; - GLushort * values = __glXGetAnswerBuffer(cl, compsize * 2, answerBuffer, sizeof(answerBuffer), 2); - - if (values == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetPixelMapusv( GET_DISPATCH(), ( - map, - values - ) ); - __glXSendReply(cl->client, values, compsize, 2, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetTexEnvfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetTexEnvfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexEnvfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetTexEnviv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetTexEnviv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexEnviv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetTexGendv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetTexGendv_size(pname); - GLdouble answerBuffer[200]; - GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexGendv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetTexGenfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetTexGenfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexGenfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetTexGeniv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetTexGeniv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexGeniv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetTexParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetTexParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetTexParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetTexParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetTexLevelParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 8); - - const GLuint compsize = __glGetTexLevelParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexLevelParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetTexLevelParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 8); - - const GLuint compsize = __glGetTexLevelParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexLevelParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_IsEnabled(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsEnabled( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -int __glXDisp_IsList(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsList( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDisp_DepthRange(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_DepthRange( GET_DISPATCH(), ( - *(GLclampd *)(pc + 0), - *(GLclampd *)(pc + 8) - ) ); -} - -void __glXDisp_Frustum(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 48); - pc -= 4; - } -#endif - - CALL_Frustum( GET_DISPATCH(), ( - *(GLdouble *)(pc + 0), - *(GLdouble *)(pc + 8), - *(GLdouble *)(pc + 16), - *(GLdouble *)(pc + 24), - *(GLdouble *)(pc + 32), - *(GLdouble *)(pc + 40) - ) ); -} - -void __glXDisp_LoadIdentity(GLbyte * pc) -{ - CALL_LoadIdentity( GET_DISPATCH(), () ); -} - -void __glXDisp_LoadMatrixf(GLbyte * pc) -{ - CALL_LoadMatrixf( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_LoadMatrixd(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 128); - pc -= 4; - } -#endif - - CALL_LoadMatrixd( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_MatrixMode(GLbyte * pc) -{ - CALL_MatrixMode( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_MultMatrixf(GLbyte * pc) -{ - CALL_MultMatrixf( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_MultMatrixd(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 128); - pc -= 4; - } -#endif - - CALL_MultMatrixd( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_Ortho(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 48); - pc -= 4; - } -#endif - - CALL_Ortho( GET_DISPATCH(), ( - *(GLdouble *)(pc + 0), - *(GLdouble *)(pc + 8), - *(GLdouble *)(pc + 16), - *(GLdouble *)(pc + 24), - *(GLdouble *)(pc + 32), - *(GLdouble *)(pc + 40) - ) ); -} - -void __glXDisp_PopMatrix(GLbyte * pc) -{ - CALL_PopMatrix( GET_DISPATCH(), () ); -} - -void __glXDisp_PushMatrix(GLbyte * pc) -{ - CALL_PushMatrix( GET_DISPATCH(), () ); -} - -void __glXDisp_Rotated(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_Rotated( GET_DISPATCH(), ( - *(GLdouble *)(pc + 0), - *(GLdouble *)(pc + 8), - *(GLdouble *)(pc + 16), - *(GLdouble *)(pc + 24) - ) ); -} - -void __glXDisp_Rotatef(GLbyte * pc) -{ - CALL_Rotatef( GET_DISPATCH(), ( - *(GLfloat *)(pc + 0), - *(GLfloat *)(pc + 4), - *(GLfloat *)(pc + 8), - *(GLfloat *)(pc + 12) - ) ); -} - -void __glXDisp_Scaled(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_Scaled( GET_DISPATCH(), ( - *(GLdouble *)(pc + 0), - *(GLdouble *)(pc + 8), - *(GLdouble *)(pc + 16) - ) ); -} - -void __glXDisp_Scalef(GLbyte * pc) -{ - CALL_Scalef( GET_DISPATCH(), ( - *(GLfloat *)(pc + 0), - *(GLfloat *)(pc + 4), - *(GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_Translated(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_Translated( GET_DISPATCH(), ( - *(GLdouble *)(pc + 0), - *(GLdouble *)(pc + 8), - *(GLdouble *)(pc + 16) - ) ); -} - -void __glXDisp_Translatef(GLbyte * pc) -{ - CALL_Translatef( GET_DISPATCH(), ( - *(GLfloat *)(pc + 0), - *(GLfloat *)(pc + 4), - *(GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_Viewport(GLbyte * pc) -{ - CALL_Viewport( GET_DISPATCH(), ( - *(GLint *)(pc + 0), - *(GLint *)(pc + 4), - *(GLsizei *)(pc + 8), - *(GLsizei *)(pc + 12) - ) ); -} - -void __glXDisp_BindTexture(GLbyte * pc) -{ - CALL_BindTexture( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4) - ) ); -} - -void __glXDisp_Indexubv(GLbyte * pc) -{ - CALL_Indexubv( GET_DISPATCH(), ( - (const GLubyte *)(pc + 0) - ) ); -} - -void __glXDisp_PolygonOffset(GLbyte * pc) -{ - CALL_PolygonOffset( GET_DISPATCH(), ( - *(GLfloat *)(pc + 0), - *(GLfloat *)(pc + 4) - ) ); -} - -int __glXDisp_AreTexturesResident(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - GLboolean retval; - GLboolean answerBuffer[200]; - GLboolean * residences = __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1); - retval = CALL_AreTexturesResident( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4), - residences - ) ); - __glXSendReply(cl->client, residences, n, 1, GL_TRUE, retval); - error = Success; - } - - return error; -} - -int __glXDisp_AreTexturesResidentEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - GLboolean retval; - GLboolean answerBuffer[200]; - GLboolean * residences = __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1); - retval = CALL_AreTexturesResident( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4), - residences - ) ); - __glXSendReply(cl->client, residences, n, 1, GL_TRUE, retval); - error = Success; - } - - return error; -} - -void __glXDisp_CopyTexImage1D(GLbyte * pc) -{ - CALL_CopyTexImage1D( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLint *)(pc + 12), - *(GLint *)(pc + 16), - *(GLsizei *)(pc + 20), - *(GLint *)(pc + 24) - ) ); -} - -void __glXDisp_CopyTexImage2D(GLbyte * pc) -{ - CALL_CopyTexImage2D( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLint *)(pc + 12), - *(GLint *)(pc + 16), - *(GLsizei *)(pc + 20), - *(GLsizei *)(pc + 24), - *(GLint *)(pc + 28) - ) ); -} - -void __glXDisp_CopyTexSubImage1D(GLbyte * pc) -{ - CALL_CopyTexSubImage1D( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLint *)(pc + 8), - *(GLint *)(pc + 12), - *(GLint *)(pc + 16), - *(GLsizei *)(pc + 20) - ) ); -} - -void __glXDisp_CopyTexSubImage2D(GLbyte * pc) -{ - CALL_CopyTexSubImage2D( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLint *)(pc + 8), - *(GLint *)(pc + 12), - *(GLint *)(pc + 16), - *(GLint *)(pc + 20), - *(GLsizei *)(pc + 24), - *(GLsizei *)(pc + 28) - ) ); -} - -int __glXDisp_DeleteTextures(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - CALL_DeleteTextures( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4) - ) ); - error = Success; - } - - return error; -} - -int __glXDisp_DeleteTexturesEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - CALL_DeleteTextures( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4) - ) ); - error = Success; - } - - return error; -} - -int __glXDisp_GenTextures(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - GLuint answerBuffer[200]; - GLuint * textures = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenTextures( GET_DISPATCH(), ( - n, - textures - ) ); - __glXSendReply(cl->client, textures, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GenTexturesEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - GLuint answerBuffer[200]; - GLuint * textures = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenTextures( GET_DISPATCH(), ( - n, - textures - ) ); - __glXSendReply(cl->client, textures, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_IsTexture(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsTexture( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -int __glXDisp_IsTextureEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsTexture( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDisp_PrioritizeTextures(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 0); - - CALL_PrioritizeTextures( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4), - (const GLclampf *)(pc + 4) - ) ); -} - -void __glXDisp_TexSubImage1D(GLbyte * pc) -{ - const CARD32 ptr_is_null = *(CARD32 *)(pc + 52); - const GLvoid * const pixels = (const GLvoid *) (ptr_is_null != 0) ? NULL : (pc + 56); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_TexSubImage1D( GET_DISPATCH(), ( - *(GLenum *)(pc + 20), - *(GLint *)(pc + 24), - *(GLint *)(pc + 28), - *(GLsizei *)(pc + 36), - *(GLenum *)(pc + 44), - *(GLenum *)(pc + 48), - pixels - ) ); -} - -void __glXDisp_TexSubImage2D(GLbyte * pc) -{ - const CARD32 ptr_is_null = *(CARD32 *)(pc + 52); - const GLvoid * const pixels = (const GLvoid *) (ptr_is_null != 0) ? NULL : (pc + 56); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_TexSubImage2D( GET_DISPATCH(), ( - *(GLenum *)(pc + 20), - *(GLint *)(pc + 24), - *(GLint *)(pc + 28), - *(GLint *)(pc + 32), - *(GLsizei *)(pc + 36), - *(GLsizei *)(pc + 40), - *(GLenum *)(pc + 44), - *(GLenum *)(pc + 48), - pixels - ) ); -} - -void __glXDisp_BlendColor(GLbyte * pc) -{ - CALL_BlendColor( GET_DISPATCH(), ( - *(GLclampf *)(pc + 0), - *(GLclampf *)(pc + 4), - *(GLclampf *)(pc + 8), - *(GLclampf *)(pc + 12) - ) ); -} - -void __glXDisp_BlendEquation(GLbyte * pc) -{ - CALL_BlendEquation( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_ColorTable(GLbyte * pc) -{ - const GLvoid * const table = (const GLvoid *) (pc + 40); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_ColorTable( GET_DISPATCH(), ( - *(GLenum *)(pc + 20), - *(GLenum *)(pc + 24), - *(GLsizei *)(pc + 28), - *(GLenum *)(pc + 32), - *(GLenum *)(pc + 36), - table - ) ); -} - -void __glXDisp_ColorTableParameterfv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLfloat * params; - - params = (const GLfloat *) (pc + 8); - - CALL_ColorTableParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_ColorTableParameteriv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLint * params; - - params = (const GLint *) (pc + 8); - - CALL_ColorTableParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_CopyColorTable(GLbyte * pc) -{ - CALL_CopyColorTable( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLint *)(pc + 8), - *(GLint *)(pc + 12), - *(GLsizei *)(pc + 16) - ) ); -} - -int __glXDisp_GetColorTableParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetColorTableParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetColorTableParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetColorTableParameterfvSGI(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetColorTableParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetColorTableParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetColorTableParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetColorTableParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetColorTableParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetColorTableParameterivSGI(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetColorTableParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetColorTableParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -void __glXDisp_ColorSubTable(GLbyte * pc) -{ - const GLvoid * const data = (const GLvoid *) (pc + 40); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_ColorSubTable( GET_DISPATCH(), ( - *(GLenum *)(pc + 20), - *(GLsizei *)(pc + 24), - *(GLsizei *)(pc + 28), - *(GLenum *)(pc + 32), - *(GLenum *)(pc + 36), - data - ) ); -} - -void __glXDisp_CopyColorSubTable(GLbyte * pc) -{ - CALL_CopyColorSubTable( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLsizei *)(pc + 4), - *(GLint *)(pc + 8), - *(GLint *)(pc + 12), - *(GLsizei *)(pc + 16) - ) ); -} - -void __glXDisp_ConvolutionFilter1D(GLbyte * pc) -{ - const GLvoid * const image = (const GLvoid *) (pc + 44); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_ConvolutionFilter1D( GET_DISPATCH(), ( - *(GLenum *)(pc + 20), - *(GLenum *)(pc + 24), - *(GLsizei *)(pc + 28), - *(GLenum *)(pc + 36), - *(GLenum *)(pc + 40), - image - ) ); -} - -void __glXDisp_ConvolutionFilter2D(GLbyte * pc) -{ - const GLvoid * const image = (const GLvoid *) (pc + 44); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_ConvolutionFilter2D( GET_DISPATCH(), ( - *(GLenum *)(pc + 20), - *(GLenum *)(pc + 24), - *(GLsizei *)(pc + 28), - *(GLsizei *)(pc + 32), - *(GLenum *)(pc + 36), - *(GLenum *)(pc + 40), - image - ) ); -} - -void __glXDisp_ConvolutionParameterf(GLbyte * pc) -{ - CALL_ConvolutionParameterf( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_ConvolutionParameterfv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLfloat * params; - - params = (const GLfloat *) (pc + 8); - - CALL_ConvolutionParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_ConvolutionParameteri(GLbyte * pc) -{ - CALL_ConvolutionParameteri( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLint *)(pc + 8) - ) ); -} - -void __glXDisp_ConvolutionParameteriv(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 4); - const GLint * params; - - params = (const GLint *) (pc + 8); - - CALL_ConvolutionParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); -} - -void __glXDisp_CopyConvolutionFilter1D(GLbyte * pc) -{ - CALL_CopyConvolutionFilter1D( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLint *)(pc + 8), - *(GLint *)(pc + 12), - *(GLsizei *)(pc + 16) - ) ); -} - -void __glXDisp_CopyConvolutionFilter2D(GLbyte * pc) -{ - CALL_CopyConvolutionFilter2D( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLint *)(pc + 8), - *(GLint *)(pc + 12), - *(GLsizei *)(pc + 16), - *(GLsizei *)(pc + 20) - ) ); -} - -int __glXDisp_GetConvolutionParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetConvolutionParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetConvolutionParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetConvolutionParameterfvEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetConvolutionParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetConvolutionParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetConvolutionParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetConvolutionParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetConvolutionParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetConvolutionParameterivEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetConvolutionParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetConvolutionParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetHistogramParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetHistogramParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetHistogramParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetHistogramParameterfvEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetHistogramParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetHistogramParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetHistogramParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetHistogramParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetHistogramParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetHistogramParameterivEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetHistogramParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetHistogramParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetMinmaxParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetMinmaxParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMinmaxParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetMinmaxParameterfvEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetMinmaxParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMinmaxParameterfv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetMinmaxParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetMinmaxParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMinmaxParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetMinmaxParameterivEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetMinmaxParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMinmaxParameteriv( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -void __glXDisp_Histogram(GLbyte * pc) -{ - CALL_Histogram( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLsizei *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLboolean *)(pc + 12) - ) ); -} - -void __glXDisp_Minmax(GLbyte * pc) -{ - CALL_Minmax( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLboolean *)(pc + 8) - ) ); -} - -void __glXDisp_ResetHistogram(GLbyte * pc) -{ - CALL_ResetHistogram( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_ResetMinmax(GLbyte * pc) -{ - CALL_ResetMinmax( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_TexImage3D(GLbyte * pc) -{ - const CARD32 ptr_is_null = *(CARD32 *)(pc + 76); - const GLvoid * const pixels = (const GLvoid *) (ptr_is_null != 0) ? NULL : (pc + 80); - __GLXpixel3DHeader * const hdr = (__GLXpixel3DHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_IMAGE_HEIGHT, (GLint) hdr->imageHeight) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_IMAGES, (GLint) hdr->skipImages) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_TexImage3D( GET_DISPATCH(), ( - *(GLenum *)(pc + 36), - *(GLint *)(pc + 40), - *(GLint *)(pc + 44), - *(GLsizei *)(pc + 48), - *(GLsizei *)(pc + 52), - *(GLsizei *)(pc + 56), - *(GLint *)(pc + 64), - *(GLenum *)(pc + 68), - *(GLenum *)(pc + 72), - pixels - ) ); -} - -void __glXDisp_TexSubImage3D(GLbyte * pc) -{ - const CARD32 ptr_is_null = *(CARD32 *)(pc + 84); - const GLvoid * const pixels = (const GLvoid *) (ptr_is_null != 0) ? NULL : (pc + 88); - __GLXpixel3DHeader * const hdr = (__GLXpixel3DHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_IMAGE_HEIGHT, (GLint) hdr->imageHeight) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_IMAGES, (GLint) hdr->skipImages) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment) ); - - CALL_TexSubImage3D( GET_DISPATCH(), ( - *(GLenum *)(pc + 36), - *(GLint *)(pc + 40), - *(GLint *)(pc + 44), - *(GLint *)(pc + 48), - *(GLint *)(pc + 52), - *(GLsizei *)(pc + 60), - *(GLsizei *)(pc + 64), - *(GLsizei *)(pc + 68), - *(GLenum *)(pc + 76), - *(GLenum *)(pc + 80), - pixels - ) ); -} - -void __glXDisp_CopyTexSubImage3D(GLbyte * pc) -{ - CALL_CopyTexSubImage3D( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLint *)(pc + 8), - *(GLint *)(pc + 12), - *(GLint *)(pc + 16), - *(GLint *)(pc + 20), - *(GLint *)(pc + 24), - *(GLsizei *)(pc + 28), - *(GLsizei *)(pc + 32) - ) ); -} - -void __glXDisp_ActiveTextureARB(GLbyte * pc) -{ - CALL_ActiveTextureARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_MultiTexCoord1dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 12); - pc -= 4; - } -#endif - - CALL_MultiTexCoord1dvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 8), - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_MultiTexCoord1fvARB(GLbyte * pc) -{ - CALL_MultiTexCoord1fvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord1ivARB(GLbyte * pc) -{ - CALL_MultiTexCoord1ivARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLint *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord1svARB(GLbyte * pc) -{ - CALL_MultiTexCoord1svARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord2dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 20); - pc -= 4; - } -#endif - - CALL_MultiTexCoord2dvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 16), - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_MultiTexCoord2fvARB(GLbyte * pc) -{ - CALL_MultiTexCoord2fvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord2ivARB(GLbyte * pc) -{ - CALL_MultiTexCoord2ivARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLint *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord2svARB(GLbyte * pc) -{ - CALL_MultiTexCoord2svARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord3dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 28); - pc -= 4; - } -#endif - - CALL_MultiTexCoord3dvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 24), - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_MultiTexCoord3fvARB(GLbyte * pc) -{ - CALL_MultiTexCoord3fvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord3ivARB(GLbyte * pc) -{ - CALL_MultiTexCoord3ivARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLint *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord3svARB(GLbyte * pc) -{ - CALL_MultiTexCoord3svARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord4dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 36); - pc -= 4; - } -#endif - - CALL_MultiTexCoord4dvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 32), - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_MultiTexCoord4fvARB(GLbyte * pc) -{ - CALL_MultiTexCoord4fvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord4ivARB(GLbyte * pc) -{ - CALL_MultiTexCoord4ivARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLint *)(pc + 4) - ) ); -} - -void __glXDisp_MultiTexCoord4svARB(GLbyte * pc) -{ - CALL_MultiTexCoord4svARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_SampleCoverageARB(GLbyte * pc) -{ - CALL_SampleCoverageARB( GET_DISPATCH(), ( - *(GLclampf *)(pc + 0), - *(GLboolean *)(pc + 4) - ) ); -} - -void __glXDisp_CompressedTexImage1DARB(GLbyte * pc) -{ - const GLsizei imageSize = *(GLsizei *)(pc + 20); - - CALL_CompressedTexImage1DARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLsizei *)(pc + 12), - *(GLint *)(pc + 16), - imageSize, - (const GLvoid *)(pc + 24) - ) ); -} - -void __glXDisp_CompressedTexImage2DARB(GLbyte * pc) -{ - const GLsizei imageSize = *(GLsizei *)(pc + 24); - - CALL_CompressedTexImage2DARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLsizei *)(pc + 12), - *(GLsizei *)(pc + 16), - *(GLint *)(pc + 20), - imageSize, - (const GLvoid *)(pc + 28) - ) ); -} - -void __glXDisp_CompressedTexImage3DARB(GLbyte * pc) -{ - const GLsizei imageSize = *(GLsizei *)(pc + 28); - - CALL_CompressedTexImage3DARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLsizei *)(pc + 12), - *(GLsizei *)(pc + 16), - *(GLsizei *)(pc + 20), - *(GLint *)(pc + 24), - imageSize, - (const GLvoid *)(pc + 32) - ) ); -} - -void __glXDisp_CompressedTexSubImage1DARB(GLbyte * pc) -{ - const GLsizei imageSize = *(GLsizei *)(pc + 20); - - CALL_CompressedTexSubImage1DARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLint *)(pc + 8), - *(GLsizei *)(pc + 12), - *(GLenum *)(pc + 16), - imageSize, - (const GLvoid *)(pc + 24) - ) ); -} - -void __glXDisp_CompressedTexSubImage2DARB(GLbyte * pc) -{ - const GLsizei imageSize = *(GLsizei *)(pc + 28); - - CALL_CompressedTexSubImage2DARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLint *)(pc + 8), - *(GLint *)(pc + 12), - *(GLsizei *)(pc + 16), - *(GLsizei *)(pc + 20), - *(GLenum *)(pc + 24), - imageSize, - (const GLvoid *)(pc + 32) - ) ); -} - -void __glXDisp_CompressedTexSubImage3DARB(GLbyte * pc) -{ - const GLsizei imageSize = *(GLsizei *)(pc + 36); - - CALL_CompressedTexSubImage3DARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4), - *(GLint *)(pc + 8), - *(GLint *)(pc + 12), - *(GLint *)(pc + 16), - *(GLsizei *)(pc + 20), - *(GLsizei *)(pc + 24), - *(GLsizei *)(pc + 28), - *(GLenum *)(pc + 32), - imageSize, - (const GLvoid *)(pc + 40) - ) ); -} - -int __glXDisp_GetProgramEnvParameterdvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLdouble params[4]; - CALL_GetProgramEnvParameterdvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - params - ) ); - __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetProgramEnvParameterfvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLfloat params[4]; - CALL_GetProgramEnvParameterfvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - params - ) ); - __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetProgramLocalParameterdvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLdouble params[4]; - CALL_GetProgramLocalParameterdvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - params - ) ); - __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetProgramLocalParameterfvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLfloat params[4]; - CALL_GetProgramLocalParameterfvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - params - ) ); - __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetProgramivARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetProgramivARB_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetProgramivARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetVertexAttribdvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetVertexAttribdvARB_size(pname); - GLdouble answerBuffer[200]; - GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribdvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetVertexAttribfvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetVertexAttribfvARB_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribfvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetVertexAttribivARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetVertexAttribivARB_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribivARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -void __glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 40); - pc -= 4; - } -#endif - - CALL_ProgramEnvParameter4dvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - (const GLdouble *)(pc + 8) - ) ); -} - -void __glXDisp_ProgramEnvParameter4fvARB(GLbyte * pc) -{ - CALL_ProgramEnvParameter4fvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - (const GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_ProgramLocalParameter4dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 40); - pc -= 4; - } -#endif - - CALL_ProgramLocalParameter4dvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - (const GLdouble *)(pc + 8) - ) ); -} - -void __glXDisp_ProgramLocalParameter4fvARB(GLbyte * pc) -{ - CALL_ProgramLocalParameter4fvARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - (const GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_ProgramStringARB(GLbyte * pc) -{ - const GLsizei len = *(GLsizei *)(pc + 8); - - CALL_ProgramStringARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - len, - (const GLvoid *)(pc + 12) - ) ); -} - -void __glXDisp_VertexAttrib1dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 12); - pc -= 4; - } -#endif - - CALL_VertexAttrib1dvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLdouble *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib1fvARB(GLbyte * pc) -{ - CALL_VertexAttrib1fvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib1svARB(GLbyte * pc) -{ - CALL_VertexAttrib1svARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib2dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 20); - pc -= 4; - } -#endif - - CALL_VertexAttrib2dvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLdouble *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib2fvARB(GLbyte * pc) -{ - CALL_VertexAttrib2fvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib2svARB(GLbyte * pc) -{ - CALL_VertexAttrib2svARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib3dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 28); - pc -= 4; - } -#endif - - CALL_VertexAttrib3dvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLdouble *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib3fvARB(GLbyte * pc) -{ - CALL_VertexAttrib3fvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib3svARB(GLbyte * pc) -{ - CALL_VertexAttrib3svARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4NbvARB(GLbyte * pc) -{ - CALL_VertexAttrib4NbvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLbyte *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4NivARB(GLbyte * pc) -{ - CALL_VertexAttrib4NivARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLint *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4NsvARB(GLbyte * pc) -{ - CALL_VertexAttrib4NsvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4NubvARB(GLbyte * pc) -{ - CALL_VertexAttrib4NubvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLubyte *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4NuivARB(GLbyte * pc) -{ - CALL_VertexAttrib4NuivARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLuint *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4NusvARB(GLbyte * pc) -{ - CALL_VertexAttrib4NusvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLushort *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4bvARB(GLbyte * pc) -{ - CALL_VertexAttrib4bvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLbyte *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 36); - pc -= 4; - } -#endif - - CALL_VertexAttrib4dvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLdouble *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4fvARB(GLbyte * pc) -{ - CALL_VertexAttrib4fvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4ivARB(GLbyte * pc) -{ - CALL_VertexAttrib4ivARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLint *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4svARB(GLbyte * pc) -{ - CALL_VertexAttrib4svARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4ubvARB(GLbyte * pc) -{ - CALL_VertexAttrib4ubvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLubyte *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4uivARB(GLbyte * pc) -{ - CALL_VertexAttrib4uivARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLuint *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4usvARB(GLbyte * pc) -{ - CALL_VertexAttrib4usvARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLushort *)(pc + 4) - ) ); -} - -void __glXDisp_BeginQueryARB(GLbyte * pc) -{ - CALL_BeginQueryARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4) - ) ); -} - -int __glXDisp_DeleteQueriesARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - CALL_DeleteQueriesARB( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4) - ) ); - error = Success; - } - - return error; -} - -void __glXDisp_EndQueryARB(GLbyte * pc) -{ - CALL_EndQueryARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -int __glXDisp_GenQueriesARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - GLuint answerBuffer[200]; - GLuint * ids = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenQueriesARB( GET_DISPATCH(), ( - n, - ids - ) ); - __glXSendReply(cl->client, ids, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetQueryObjectivARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetQueryObjectivARB_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetQueryObjectivARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetQueryObjectuivARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetQueryObjectuivARB_size(pname); - GLuint answerBuffer[200]; - GLuint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetQueryObjectuivARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetQueryivARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetQueryivARB_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetQueryivARB( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_IsQueryARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsQueryARB( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDisp_DrawBuffersARB(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 0); - - CALL_DrawBuffersARB( GET_DISPATCH(), ( - n, - (const GLenum *)(pc + 4) - ) ); -} - -void __glXDisp_SampleMaskSGIS(GLbyte * pc) -{ - CALL_SampleMaskSGIS( GET_DISPATCH(), ( - *(GLclampf *)(pc + 0), - *(GLboolean *)(pc + 4) - ) ); -} - -void __glXDisp_SamplePatternSGIS(GLbyte * pc) -{ - CALL_SamplePatternSGIS( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -void __glXDisp_PointParameterfEXT(GLbyte * pc) -{ - CALL_PointParameterfEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_PointParameterfvEXT(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 0); - const GLfloat * params; - - params = (const GLfloat *) (pc + 4); - - CALL_PointParameterfvEXT( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDisp_SecondaryColor3bvEXT(GLbyte * pc) -{ - CALL_SecondaryColor3bvEXT( GET_DISPATCH(), ( - (const GLbyte *)(pc + 0) - ) ); -} - -void __glXDisp_SecondaryColor3dvEXT(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_SecondaryColor3dvEXT( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_SecondaryColor3fvEXT(GLbyte * pc) -{ - CALL_SecondaryColor3fvEXT( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_SecondaryColor3ivEXT(GLbyte * pc) -{ - CALL_SecondaryColor3ivEXT( GET_DISPATCH(), ( - (const GLint *)(pc + 0) - ) ); -} - -void __glXDisp_SecondaryColor3svEXT(GLbyte * pc) -{ - CALL_SecondaryColor3svEXT( GET_DISPATCH(), ( - (const GLshort *)(pc + 0) - ) ); -} - -void __glXDisp_SecondaryColor3ubvEXT(GLbyte * pc) -{ - CALL_SecondaryColor3ubvEXT( GET_DISPATCH(), ( - (const GLubyte *)(pc + 0) - ) ); -} - -void __glXDisp_SecondaryColor3uivEXT(GLbyte * pc) -{ - CALL_SecondaryColor3uivEXT( GET_DISPATCH(), ( - (const GLuint *)(pc + 0) - ) ); -} - -void __glXDisp_SecondaryColor3usvEXT(GLbyte * pc) -{ - CALL_SecondaryColor3usvEXT( GET_DISPATCH(), ( - (const GLushort *)(pc + 0) - ) ); -} - -void __glXDisp_FogCoorddvEXT(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 8); - pc -= 4; - } -#endif - - CALL_FogCoorddvEXT( GET_DISPATCH(), ( - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_FogCoordfvEXT(GLbyte * pc) -{ - CALL_FogCoordfvEXT( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -void __glXDisp_BlendFuncSeparateEXT(GLbyte * pc) -{ - CALL_BlendFuncSeparateEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLenum *)(pc + 12) - ) ); -} - -void __glXDisp_WindowPos3fvMESA(GLbyte * pc) -{ - CALL_WindowPos3fvMESA( GET_DISPATCH(), ( - (const GLfloat *)(pc + 0) - ) ); -} - -int __glXDisp_AreProgramsResidentNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - GLboolean retval; - GLboolean answerBuffer[200]; - GLboolean * residences = __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1); - retval = CALL_AreProgramsResidentNV( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4), - residences - ) ); - __glXSendReply(cl->client, residences, n, 1, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDisp_BindProgramNV(GLbyte * pc) -{ - CALL_BindProgramNV( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4) - ) ); -} - -int __glXDisp_DeleteProgramsNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - CALL_DeleteProgramsNV( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4) - ) ); - error = Success; - } - - return error; -} - -void __glXDisp_ExecuteProgramNV(GLbyte * pc) -{ - CALL_ExecuteProgramNV( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - (const GLfloat *)(pc + 8) - ) ); -} - -int __glXDisp_GenProgramsNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - GLuint answerBuffer[200]; - GLuint * programs = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenProgramsNV( GET_DISPATCH(), ( - n, - programs - ) ); - __glXSendReply(cl->client, programs, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetProgramParameterdvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLdouble params[4]; - CALL_GetProgramParameterdvNV( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - *(GLenum *)(pc + 8), - params - ) ); - __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetProgramParameterfvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLfloat params[4]; - CALL_GetProgramParameterfvNV( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - *(GLenum *)(pc + 8), - params - ) ); - __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetProgramivNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetProgramivNV_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetProgramivNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetTrackMatrixivNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLint params[1]; - CALL_GetTrackMatrixivNV( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - *(GLenum *)(pc + 8), - params - ) ); - __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetVertexAttribdvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetVertexAttribdvNV_size(pname); - GLdouble answerBuffer[200]; - GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribdvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetVertexAttribfvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetVertexAttribfvNV_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribfvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetVertexAttribivNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = *(GLenum *)(pc + 4); - - const GLuint compsize = __glGetVertexAttribivNV_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribivNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - pname, - params - ) ); - __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_IsProgramNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsProgramNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDisp_LoadProgramNV(GLbyte * pc) -{ - const GLsizei len = *(GLsizei *)(pc + 8); - - CALL_LoadProgramNV( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - len, - (const GLubyte *)(pc + 12) - ) ); -} - -void __glXDisp_ProgramParameters4dvNV(GLbyte * pc) -{ - const GLuint num = *(GLuint *)(pc + 8); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 16 + __GLX_PAD((num * 32)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_ProgramParameters4dvNV( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - num, - (const GLdouble *)(pc + 12) - ) ); -} - -void __glXDisp_ProgramParameters4fvNV(GLbyte * pc) -{ - const GLuint num = *(GLuint *)(pc + 8); - - CALL_ProgramParameters4fvNV( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - num, - (const GLfloat *)(pc + 12) - ) ); -} - -void __glXDisp_RequestResidentProgramsNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 0); - - CALL_RequestResidentProgramsNV( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4) - ) ); -} - -void __glXDisp_TrackMatrixNV(GLbyte * pc) -{ - CALL_TrackMatrixNV( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLenum *)(pc + 12) - ) ); -} - -void __glXDisp_VertexAttrib1dvNV(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 12); - pc -= 4; - } -#endif - - CALL_VertexAttrib1dvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLdouble *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib1fvNV(GLbyte * pc) -{ - CALL_VertexAttrib1fvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib1svNV(GLbyte * pc) -{ - CALL_VertexAttrib1svNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib2dvNV(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 20); - pc -= 4; - } -#endif - - CALL_VertexAttrib2dvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLdouble *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib2fvNV(GLbyte * pc) -{ - CALL_VertexAttrib2fvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib2svNV(GLbyte * pc) -{ - CALL_VertexAttrib2svNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib3dvNV(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 28); - pc -= 4; - } -#endif - - CALL_VertexAttrib3dvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLdouble *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib3fvNV(GLbyte * pc) -{ - CALL_VertexAttrib3fvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib3svNV(GLbyte * pc) -{ - CALL_VertexAttrib3svNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4dvNV(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 36); - pc -= 4; - } -#endif - - CALL_VertexAttrib4dvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLdouble *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4fvNV(GLbyte * pc) -{ - CALL_VertexAttrib4fvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLfloat *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4svNV(GLbyte * pc) -{ - CALL_VertexAttrib4svNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLshort *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttrib4ubvNV(GLbyte * pc) -{ - CALL_VertexAttrib4ubvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - (const GLubyte *)(pc + 4) - ) ); -} - -void __glXDisp_VertexAttribs1dvNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 12 + __GLX_PAD((n * 8)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_VertexAttribs1dvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLdouble *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs1fvNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - - CALL_VertexAttribs1fvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs1svNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - - CALL_VertexAttribs1svNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLshort *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs2dvNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 12 + __GLX_PAD((n * 16)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_VertexAttribs2dvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLdouble *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs2fvNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - - CALL_VertexAttribs2fvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs2svNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - - CALL_VertexAttribs2svNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLshort *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs3dvNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 12 + __GLX_PAD((n * 24)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_VertexAttribs3dvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLdouble *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs3fvNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - - CALL_VertexAttribs3fvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs3svNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - - CALL_VertexAttribs3svNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLshort *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs4dvNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 12 + __GLX_PAD((n * 32)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_VertexAttribs4dvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLdouble *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs4fvNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - - CALL_VertexAttribs4fvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs4svNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - - CALL_VertexAttribs4svNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLshort *)(pc + 8) - ) ); -} - -void __glXDisp_VertexAttribs4ubvNV(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 4); - - CALL_VertexAttribs4ubvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - n, - (const GLubyte *)(pc + 8) - ) ); -} - -void __glXDisp_PointParameteriNV(GLbyte * pc) -{ - CALL_PointParameteriNV( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLint *)(pc + 4) - ) ); -} - -void __glXDisp_PointParameterivNV(GLbyte * pc) -{ - const GLenum pname = *(GLenum *)(pc + 0); - const GLint * params; - - params = (const GLint *) (pc + 4); - - CALL_PointParameterivNV( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDisp_ActiveStencilFaceEXT(GLbyte * pc) -{ - CALL_ActiveStencilFaceEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -int __glXDisp_GetProgramNamedParameterdvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei len = *(GLsizei *)(pc + 4); - - GLdouble params[4]; - CALL_GetProgramNamedParameterdvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - len, - (const GLubyte *)(pc + 8), - params - ) ); - __glXSendReply(cl->client, params, 4, 8, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetProgramNamedParameterfvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei len = *(GLsizei *)(pc + 4); - - GLfloat params[4]; - CALL_GetProgramNamedParameterfvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - len, - (const GLubyte *)(pc + 8), - params - ) ); - __glXSendReply(cl->client, params, 4, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -void __glXDisp_ProgramNamedParameter4dvNV(GLbyte * pc) -{ - const GLsizei len = *(GLsizei *)(pc + 36); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 44 + __GLX_PAD(len) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_ProgramNamedParameter4dvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 32), - len, - (const GLubyte *)(pc + 40), - (const GLdouble *)(pc + 0) - ) ); -} - -void __glXDisp_ProgramNamedParameter4fvNV(GLbyte * pc) -{ - const GLsizei len = *(GLsizei *)(pc + 4); - - CALL_ProgramNamedParameter4fvNV( GET_DISPATCH(), ( - *(GLuint *)(pc + 0), - len, - (const GLubyte *)(pc + 24), - (const GLfloat *)(pc + 8) - ) ); -} - -void __glXDisp_BlendEquationSeparateEXT(GLbyte * pc) -{ - CALL_BlendEquationSeparateEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4) - ) ); -} - -void __glXDisp_BindFramebufferEXT(GLbyte * pc) -{ - CALL_BindFramebufferEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4) - ) ); -} - -void __glXDisp_BindRenderbufferEXT(GLbyte * pc) -{ - CALL_BindRenderbufferEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLuint *)(pc + 4) - ) ); -} - -int __glXDisp_CheckFramebufferStatusEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLenum retval; - retval = CALL_CheckFramebufferStatusEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDisp_DeleteFramebuffersEXT(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 0); - - CALL_DeleteFramebuffersEXT( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4) - ) ); -} - -void __glXDisp_DeleteRenderbuffersEXT(GLbyte * pc) -{ - const GLsizei n = *(GLsizei *)(pc + 0); - - CALL_DeleteRenderbuffersEXT( GET_DISPATCH(), ( - n, - (const GLuint *)(pc + 4) - ) ); -} - -void __glXDisp_FramebufferRenderbufferEXT(GLbyte * pc) -{ - CALL_FramebufferRenderbufferEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLuint *)(pc + 12) - ) ); -} - -void __glXDisp_FramebufferTexture1DEXT(GLbyte * pc) -{ - CALL_FramebufferTexture1DEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLuint *)(pc + 12), - *(GLint *)(pc + 16) - ) ); -} - -void __glXDisp_FramebufferTexture2DEXT(GLbyte * pc) -{ - CALL_FramebufferTexture2DEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLuint *)(pc + 12), - *(GLint *)(pc + 16) - ) ); -} - -void __glXDisp_FramebufferTexture3DEXT(GLbyte * pc) -{ - CALL_FramebufferTexture3DEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLenum *)(pc + 8), - *(GLuint *)(pc + 12), - *(GLint *)(pc + 16), - *(GLint *)(pc + 20) - ) ); -} - -int __glXDisp_GenFramebuffersEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - GLuint answerBuffer[200]; - GLuint * framebuffers = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenFramebuffersEXT( GET_DISPATCH(), ( - n, - framebuffers - ) ); - __glXSendReply(cl->client, framebuffers, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GenRenderbuffersEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = *(GLsizei *)(pc + 0); - - GLuint answerBuffer[200]; - GLuint * renderbuffers = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenRenderbuffersEXT( GET_DISPATCH(), ( - n, - renderbuffers - ) ); - __glXSendReply(cl->client, renderbuffers, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -void __glXDisp_GenerateMipmapEXT(GLbyte * pc) -{ - CALL_GenerateMipmapEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0) - ) ); -} - -int __glXDisp_GetFramebufferAttachmentParameterivEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLint params[1]; - CALL_GetFramebufferAttachmentParameterivEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLenum *)(pc + 8), - params - ) ); - __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_GetRenderbufferParameterivEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLint params[1]; - CALL_GetRenderbufferParameterivEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - params - ) ); - __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDisp_IsFramebufferEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsFramebufferEXT( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -int __glXDisp_IsRenderbufferEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsRenderbufferEXT( GET_DISPATCH(), ( - *(GLuint *)(pc + 0) - ) ); - __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDisp_RenderbufferStorageEXT(GLbyte * pc) -{ - CALL_RenderbufferStorageEXT( GET_DISPATCH(), ( - *(GLenum *)(pc + 0), - *(GLenum *)(pc + 4), - *(GLsizei *)(pc + 8), - *(GLsizei *)(pc + 12) - ) ); -} - diff --git a/GL/glx/indirect_dispatch.h b/GL/glx/indirect_dispatch.h deleted file mode 100644 index e81c382f0..000000000 --- a/GL/glx/indirect_dispatch.h +++ /dev/null @@ -1,1047 +0,0 @@ -/* DO NOT EDIT - This file generated automatically by glX_proto_recv.py (from Mesa) script */ - -/* - * (C) Copyright IBM Corporation 2005 - * All Rights Reserved. - * - * 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, sub license, - * and/or 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 (including the next - * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM, - * AND/OR THEIR SUPPLIERS 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. - */ - -#if !defined( _INDIRECT_DISPATCH_H_ ) -# define _INDIRECT_DISPATCH_H_ - -# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) -# define HIDDEN __attribute__((visibility("hidden"))) -# else -# define HIDDEN -# endif -struct __GLXclientStateRec; - -extern HIDDEN void __glXDisp_MapGrid1d(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MapGrid1d(GLbyte * pc); -extern HIDDEN void __glXDisp_MapGrid1f(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MapGrid1f(GLbyte * pc); -extern HIDDEN int __glXDisp_NewList(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_NewList(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_LoadIdentity(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LoadIdentity(GLbyte * pc); -extern HIDDEN void __glXDisp_SampleCoverageARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SampleCoverageARB(GLbyte * pc); -extern HIDDEN void __glXDisp_ConvolutionFilter1D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ConvolutionFilter1D(GLbyte * pc); -extern HIDDEN void __glXDisp_BeginQueryARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_BeginQueryARB(GLbyte * pc); -extern HIDDEN void __glXDisp_RasterPos3dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos3dv(GLbyte * pc); -extern HIDDEN void __glXDisp_PointParameteriNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PointParameteriNV(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord1iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord1iv(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord4sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord4sv(GLbyte * pc); -extern HIDDEN void __glXDisp_ActiveTextureARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ActiveTextureARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4ubvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4ubvNV(GLbyte * pc); -extern HIDDEN int __glXDisp_GetProgramNamedParameterdvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramNamedParameterdvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Histogram(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Histogram(GLbyte * pc); -extern HIDDEN int __glXDisp_GetMapfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMapfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_RasterPos4dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos4dv(GLbyte * pc); -extern HIDDEN void __glXDisp_PolygonStipple(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PolygonStipple(GLbyte * pc); -extern HIDDEN void __glXDisp_BlendEquationSeparateEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_BlendEquationSeparateEXT(GLbyte * pc); -extern HIDDEN int __glXDisp_GetPixelMapfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetPixelMapfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Color3uiv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color3uiv(GLbyte * pc); -extern HIDDEN int __glXDisp_IsEnabled(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_IsEnabled(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttrib4svNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4svNV(GLbyte * pc); -extern HIDDEN void __glXDisp_EvalCoord2fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_EvalCoord2fv(GLbyte * pc); -extern HIDDEN int __glXDisp_DestroyPixmap(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DestroyPixmap(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetMapiv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMapiv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_SwapBuffers(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_SwapBuffers(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Indexubv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Indexubv(GLbyte * pc); -extern HIDDEN int __glXDisp_Render(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_Render(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetQueryivARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetQueryivARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_TexImage3D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexImage3D(GLbyte * pc); -extern HIDDEN int __glXDisp_MakeContextCurrent(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_MakeContextCurrent(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetFBConfigs(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetFBConfigs(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Color3ubv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color3ubv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetQueryObjectivARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetQueryObjectivARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Vertex3dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex3dv(GLbyte * pc); -extern HIDDEN void __glXDisp_CompressedTexSubImage2DARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CompressedTexSubImage2DARB(GLbyte * pc); -extern HIDDEN void __glXDisp_LightModeliv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LightModeliv(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib1svARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib1svARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttribs1dvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs1dvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_Normal3bv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Normal3bv(GLbyte * pc); -extern HIDDEN int __glXDisp_VendorPrivate(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_VendorPrivate(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_CreateGLXPixmapWithConfigSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CreateGLXPixmapWithConfigSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttrib1fvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib1fvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_Vertex3iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex3iv(GLbyte * pc); -extern HIDDEN void __glXDisp_CopyConvolutionFilter1D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CopyConvolutionFilter1D(GLbyte * pc); -extern HIDDEN void __glXDisp_BlendColor(GLbyte * pc); -extern HIDDEN void __glXDispSwap_BlendColor(GLbyte * pc); -extern HIDDEN void __glXDisp_Scalef(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Scalef(GLbyte * pc); -extern HIDDEN void __glXDisp_Normal3iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Normal3iv(GLbyte * pc); -extern HIDDEN void __glXDisp_PassThrough(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PassThrough(GLbyte * pc); -extern HIDDEN void __glXDisp_Viewport(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Viewport(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4NusvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4NusvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_CopyTexSubImage2D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CopyTexSubImage2D(GLbyte * pc); -extern HIDDEN void __glXDisp_DepthRange(GLbyte * pc); -extern HIDDEN void __glXDispSwap_DepthRange(GLbyte * pc); -extern HIDDEN void __glXDisp_ResetHistogram(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ResetHistogram(GLbyte * pc); -extern HIDDEN int __glXDisp_GetProgramNamedParameterfvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramNamedParameterfvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_PointParameterfEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PointParameterfEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord2sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord2sv(GLbyte * pc); -extern HIDDEN void __glXDisp_Vertex4dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex4dv(GLbyte * pc); -extern HIDDEN void __glXDisp_CompressedTexImage3DARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CompressedTexImage3DARB(GLbyte * pc); -extern HIDDEN void __glXDisp_Color3sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color3sv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetConvolutionParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetConvolutionParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetConvolutionParameterivEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetConvolutionParameterivEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Vertex2dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex2dv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetVisualConfigs(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetVisualConfigs(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_MultiTexCoord1fvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord1fvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord3iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord3iv(GLbyte * pc); -extern HIDDEN int __glXDisp_CopyContext(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CopyContext(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Color3fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color3fv(GLbyte * pc); -extern HIDDEN void __glXDisp_PointSize(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PointSize(GLbyte * pc); -extern HIDDEN void __glXDisp_PopName(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PopName(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4NbvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4NbvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_Vertex4sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex4sv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetTexEnvfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTexEnvfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_LineStipple(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LineStipple(GLbyte * pc); -extern HIDDEN void __glXDisp_TexEnvi(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexEnvi(GLbyte * pc); -extern HIDDEN int __glXDisp_GetClipPlane(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetClipPlane(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttribs3dvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs3dvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_LightModeli(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LightModeli(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttribs4fvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs4fvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_Scaled(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Scaled(GLbyte * pc); -extern HIDDEN void __glXDisp_CallLists(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CallLists(GLbyte * pc); -extern HIDDEN void __glXDisp_AlphaFunc(GLbyte * pc); -extern HIDDEN void __glXDispSwap_AlphaFunc(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord2iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord2iv(GLbyte * pc); -extern HIDDEN void __glXDisp_CompressedTexImage1DARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CompressedTexImage1DARB(GLbyte * pc); -extern HIDDEN void __glXDisp_Rotated(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Rotated(GLbyte * pc); -extern HIDDEN int __glXDisp_ReadPixels(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_ReadPixels(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_EdgeFlagv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_EdgeFlagv(GLbyte * pc); -extern HIDDEN void __glXDisp_TexParameterf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexParameterf(GLbyte * pc); -extern HIDDEN void __glXDisp_TexParameteri(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexParameteri(GLbyte * pc); -extern HIDDEN int __glXDisp_DestroyContext(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DestroyContext(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_DrawPixels(GLbyte * pc); -extern HIDDEN void __glXDispSwap_DrawPixels(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord2svARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord2svARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttribs3fvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs3fvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_GenerateMipmapEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_GenerateMipmapEXT(GLbyte * pc); -extern HIDDEN int __glXDisp_GenLists(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GenLists(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_MapGrid2d(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MapGrid2d(GLbyte * pc); -extern HIDDEN void __glXDisp_MapGrid2f(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MapGrid2f(GLbyte * pc); -extern HIDDEN void __glXDisp_Scissor(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Scissor(GLbyte * pc); -extern HIDDEN void __glXDisp_Fogf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Fogf(GLbyte * pc); -extern HIDDEN void __glXDisp_TexSubImage1D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexSubImage1D(GLbyte * pc); -extern HIDDEN void __glXDisp_Color4usv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color4usv(GLbyte * pc); -extern HIDDEN void __glXDisp_Fogi(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Fogi(GLbyte * pc); -extern HIDDEN void __glXDisp_RasterPos3iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos3iv(GLbyte * pc); -extern HIDDEN void __glXDisp_PixelMapfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PixelMapfv(GLbyte * pc); -extern HIDDEN void __glXDisp_Color3usv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color3usv(GLbyte * pc); -extern HIDDEN int __glXDisp_AreTexturesResident(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_AreTexturesResident(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_AreTexturesResidentEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_AreTexturesResidentEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_IsRenderbufferEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_IsRenderbufferEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_PointParameterfvEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PointParameterfvEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_Color3bv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color3bv(GLbyte * pc); -extern HIDDEN void __glXDisp_SecondaryColor3bvEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SecondaryColor3bvEXT(GLbyte * pc); -extern HIDDEN int __glXDisp_GetProgramLocalParameterfvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramLocalParameterfvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_RenderbufferStorageEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RenderbufferStorageEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_ColorTable(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ColorTable(GLbyte * pc); -extern HIDDEN void __glXDisp_Accum(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Accum(GLbyte * pc); -extern HIDDEN int __glXDisp_GetTexImage(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTexImage(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_ConvolutionFilter2D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ConvolutionFilter2D(GLbyte * pc); -extern HIDDEN int __glXDisp_Finish(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_Finish(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_ClearStencil(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ClearStencil(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib3dvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib3dvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttribs4ubvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs4ubvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_ConvolutionParameteriv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ConvolutionParameteriv(GLbyte * pc); -extern HIDDEN void __glXDisp_RasterPos2fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos2fv(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord1fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord1fv(GLbyte * pc); -extern HIDDEN void __glXDisp_ProgramEnvParameter4fvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ProgramEnvParameter4fvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_RasterPos4fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos4fv(GLbyte * pc); -extern HIDDEN void __glXDisp_ClearIndex(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ClearIndex(GLbyte * pc); -extern HIDDEN void __glXDisp_LoadMatrixd(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LoadMatrixd(GLbyte * pc); -extern HIDDEN void __glXDisp_PushMatrix(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PushMatrix(GLbyte * pc); -extern HIDDEN void __glXDisp_ConvolutionParameterfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ConvolutionParameterfv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetTexGendv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTexGendv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_LoadProgramNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LoadProgramNV(GLbyte * pc); -extern HIDDEN int __glXDisp_EndList(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_EndList(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttrib4fvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4fvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_EvalCoord1fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_EvalCoord1fv(GLbyte * pc); -extern HIDDEN void __glXDisp_EvalMesh2(GLbyte * pc); -extern HIDDEN void __glXDispSwap_EvalMesh2(GLbyte * pc); -extern HIDDEN void __glXDisp_Vertex4fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex4fv(GLbyte * pc); -extern HIDDEN int __glXDisp_CheckFramebufferStatusEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CheckFramebufferStatusEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetVertexAttribivARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetVertexAttribivARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetFBConfigsSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetFBConfigsSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_CreateNewContext(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CreateNewContext(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetMinmax(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMinmax(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetMinmaxEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMinmaxEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetVertexAttribdvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetVertexAttribdvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Normal3fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Normal3fv(GLbyte * pc); -extern HIDDEN void __glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4ivARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4ivARB(GLbyte * pc); -extern HIDDEN void __glXDisp_End(GLbyte * pc); -extern HIDDEN void __glXDispSwap_End(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttribs2dvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs2dvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord3fvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord3fvARB(GLbyte * pc); -extern HIDDEN int __glXDisp_GetProgramParameterfvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramParameterfvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_BindTexture(GLbyte * pc); -extern HIDDEN void __glXDispSwap_BindTexture(GLbyte * pc); -extern HIDDEN void __glXDisp_TexSubImage2D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexSubImage2D(GLbyte * pc); -extern HIDDEN void __glXDisp_DeleteRenderbuffersEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_DeleteRenderbuffersEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_TexGenfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexGenfv(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4bvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4bvARB(GLbyte * pc); -extern HIDDEN int __glXDisp_CreateContextWithConfigSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CreateContextWithConfigSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_FramebufferTexture3DEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_FramebufferTexture3DEXT(GLbyte * pc); -extern HIDDEN int __glXDisp_CopySubBufferMESA(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CopySubBufferMESA(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_BlendEquation(GLbyte * pc); -extern HIDDEN void __glXDispSwap_BlendEquation(GLbyte * pc); -extern HIDDEN int __glXDisp_GetError(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetError(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_TexCoord3dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord3dv(GLbyte * pc); -extern HIDDEN void __glXDisp_Indexdv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Indexdv(GLbyte * pc); -extern HIDDEN void __glXDisp_PushName(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PushName(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord2dvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord2dvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_ProgramNamedParameter4fvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ProgramNamedParameter4fvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4fvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4fvARB(GLbyte * pc); -extern HIDDEN int __glXDisp_CreateGLXPbufferSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CreateGLXPbufferSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_MultiTexCoord1svARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord1svARB(GLbyte * pc); -extern HIDDEN void __glXDisp_EndQueryARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_EndQueryARB(GLbyte * pc); -extern HIDDEN void __glXDisp_DepthMask(GLbyte * pc); -extern HIDDEN void __glXDispSwap_DepthMask(GLbyte * pc); -extern HIDDEN void __glXDisp_Color4iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color4iv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetMaterialiv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMaterialiv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_StencilOp(GLbyte * pc); -extern HIDDEN void __glXDispSwap_StencilOp(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord3svARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord3svARB(GLbyte * pc); -extern HIDDEN void __glXDisp_TexEnvfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexEnvfv(GLbyte * pc); -extern HIDDEN int __glXDisp_QueryServerString(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_QueryServerString(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_LoadMatrixf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LoadMatrixf(GLbyte * pc); -extern HIDDEN void __glXDisp_Color4bv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color4bv(GLbyte * pc); -extern HIDDEN void __glXDisp_SecondaryColor3usvEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SecondaryColor3usvEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib2fvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib2fvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_ProgramLocalParameter4dvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ProgramLocalParameter4dvARB(GLbyte * pc); -extern HIDDEN int __glXDisp_DeleteLists(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DeleteLists(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_LogicOp(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LogicOp(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord4fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord4fv(GLbyte * pc); -extern HIDDEN int __glXDisp_WaitX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_WaitX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_SecondaryColor3uivEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SecondaryColor3uivEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_FramebufferRenderbufferEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_FramebufferRenderbufferEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib1dvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib1dvNV(GLbyte * pc); -extern HIDDEN int __glXDisp_GenTextures(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GenTextures(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GenTexturesEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GenTexturesEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_FramebufferTexture1DEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_FramebufferTexture1DEXT(GLbyte * pc); -extern HIDDEN int __glXDisp_GetDrawableAttributes(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetDrawableAttributes(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_RasterPos2sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos2sv(GLbyte * pc); -extern HIDDEN void __glXDisp_Color4ubv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color4ubv(GLbyte * pc); -extern HIDDEN void __glXDisp_DrawBuffer(GLbyte * pc); -extern HIDDEN void __glXDispSwap_DrawBuffer(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord2fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord2fv(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord1sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord1sv(GLbyte * pc); -extern HIDDEN void __glXDisp_TexGeniv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexGeniv(GLbyte * pc); -extern HIDDEN void __glXDisp_DepthFunc(GLbyte * pc); -extern HIDDEN void __glXDispSwap_DepthFunc(GLbyte * pc); -extern HIDDEN void __glXDisp_PixelMapusv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PixelMapusv(GLbyte * pc); -extern HIDDEN void __glXDisp_PointParameterivNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PointParameterivNV(GLbyte * pc); -extern HIDDEN void __glXDisp_BlendFunc(GLbyte * pc); -extern HIDDEN void __glXDispSwap_BlendFunc(GLbyte * pc); -extern HIDDEN int __glXDisp_WaitGL(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_WaitGL(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_MultiTexCoord3dvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord3dvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_ProgramNamedParameter4dvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ProgramNamedParameter4dvNV(GLbyte * pc); -extern HIDDEN int __glXDisp_Flush(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_Flush(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Color4uiv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color4uiv(GLbyte * pc); -extern HIDDEN void __glXDisp_RasterPos3sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos3sv(GLbyte * pc); -extern HIDDEN void __glXDisp_BindFramebufferEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_BindFramebufferEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_PushAttrib(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PushAttrib(GLbyte * pc); -extern HIDDEN int __glXDisp_DestroyPbuffer(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DestroyPbuffer(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_TexParameteriv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexParameteriv(GLbyte * pc); -extern HIDDEN void __glXDisp_WindowPos3fvMESA(GLbyte * pc); -extern HIDDEN void __glXDispSwap_WindowPos3fvMESA(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib1svNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib1svNV(GLbyte * pc); -extern HIDDEN int __glXDisp_QueryExtensionsString(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_QueryExtensionsString(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_RasterPos3fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos3fv(GLbyte * pc); -extern HIDDEN void __glXDisp_CopyTexSubImage3D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CopyTexSubImage3D(GLbyte * pc); -extern HIDDEN int __glXDisp_GetColorTable(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetColorTable(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetColorTableSGI(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetColorTableSGI(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Indexiv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Indexiv(GLbyte * pc); -extern HIDDEN int __glXDisp_CreateContext(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CreateContext(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_CopyColorTable(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CopyColorTable(GLbyte * pc); -extern HIDDEN int __glXDisp_GetHistogramParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetHistogramParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetHistogramParameterfvEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetHistogramParameterfvEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Frustum(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Frustum(GLbyte * pc); -extern HIDDEN int __glXDisp_GetString(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetString(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_CreateGLXPixmap(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CreateGLXPixmap(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_TexEnvf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexEnvf(GLbyte * pc); -extern HIDDEN int __glXDisp_GetProgramStringARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramStringARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_MultiTexCoord3ivARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord3ivARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib1dvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib1dvARB(GLbyte * pc); -extern HIDDEN int __glXDisp_DeleteTextures(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DeleteTextures(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_DeleteTexturesEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DeleteTexturesEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetTexLevelParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTexLevelParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_ClearAccum(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ClearAccum(GLbyte * pc); -extern HIDDEN int __glXDisp_QueryVersion(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_QueryVersion(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetVertexAttribfvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetVertexAttribfvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_SecondaryColor3ivEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SecondaryColor3ivEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord4iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord4iv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetDrawableAttributesSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetDrawableAttributesSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_SampleMaskSGIS(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SampleMaskSGIS(GLbyte * pc); -extern HIDDEN void __glXDisp_ColorTableParameteriv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ColorTableParameteriv(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4ubvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4ubvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_CopyTexImage2D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CopyTexImage2D(GLbyte * pc); -extern HIDDEN void __glXDisp_Lightfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Lightfv(GLbyte * pc); -extern HIDDEN void __glXDisp_ClearDepth(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ClearDepth(GLbyte * pc); -extern HIDDEN void __glXDisp_ColorSubTable(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ColorSubTable(GLbyte * pc); -extern HIDDEN void __glXDisp_Color4fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color4fv(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord4ivARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord4ivARB(GLbyte * pc); -extern HIDDEN int __glXDisp_CreatePixmap(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CreatePixmap(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Lightiv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Lightiv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetQueryObjectuivARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetQueryObjectuivARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetTexParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTexParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GenRenderbuffersEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GenRenderbuffersEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttrib2dvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib2dvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttribs2svNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs2svNV(GLbyte * pc); -extern HIDDEN void __glXDisp_Rectdv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Rectdv(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4NivARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4NivARB(GLbyte * pc); -extern HIDDEN void __glXDisp_Materialiv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Materialiv(GLbyte * pc); -extern HIDDEN void __glXDisp_SecondaryColor3fvEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SecondaryColor3fvEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_PolygonMode(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PolygonMode(GLbyte * pc); -extern HIDDEN void __glXDisp_CompressedTexSubImage1DARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CompressedTexSubImage1DARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib2dvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc); -extern HIDDEN int __glXDisp_GetVertexAttribivNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetVertexAttribivNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_IsQueryARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_IsQueryARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_TexGeni(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexGeni(GLbyte * pc); -extern HIDDEN void __glXDisp_TexGenf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexGenf(GLbyte * pc); -extern HIDDEN void __glXDisp_TexGend(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexGend(GLbyte * pc); -extern HIDDEN int __glXDisp_GetPolygonStipple(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetPolygonStipple(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetVertexAttribfvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetVertexAttribfvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttrib2svNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib2svNV(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttribs1fvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs1fvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4NuivARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4NuivARB(GLbyte * pc); -extern HIDDEN int __glXDisp_DestroyWindow(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DestroyWindow(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Color4sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color4sv(GLbyte * pc); -extern HIDDEN int __glXDisp_IsProgramNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_IsProgramNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_PixelZoom(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PixelZoom(GLbyte * pc); -extern HIDDEN void __glXDisp_ColorTableParameterfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ColorTableParameterfv(GLbyte * pc); -extern HIDDEN void __glXDisp_PixelMapuiv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PixelMapuiv(GLbyte * pc); -extern HIDDEN void __glXDisp_Color3dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color3dv(GLbyte * pc); -extern HIDDEN int __glXDisp_IsTexture(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_IsTexture(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_IsTextureEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_IsTextureEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_DeleteQueriesARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DeleteQueriesARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetMapdv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMapdv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_DestroyGLXPixmap(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DestroyGLXPixmap(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_SamplePatternSGIS(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SamplePatternSGIS(GLbyte * pc); -extern HIDDEN int __glXDisp_PixelStoref(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_PixelStoref(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_PrioritizeTextures(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PrioritizeTextures(GLbyte * pc); -extern HIDDEN int __glXDisp_PixelStorei(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_PixelStorei(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttrib4usvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4usvARB(GLbyte * pc); -extern HIDDEN int __glXDisp_DestroyGLXPbufferSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DestroyGLXPbufferSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_EvalCoord2dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_EvalCoord2dv(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib3svARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib3svARB(GLbyte * pc); -extern HIDDEN void __glXDisp_ColorMaterial(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ColorMaterial(GLbyte * pc); -extern HIDDEN void __glXDisp_CompressedTexSubImage3DARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CompressedTexSubImage3DARB(GLbyte * pc); -extern HIDDEN int __glXDisp_IsFramebufferEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_IsFramebufferEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetVertexAttribdvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetVertexAttribdvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetSeparableFilter(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetSeparableFilter(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetSeparableFilterEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetSeparableFilterEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_RequestResidentProgramsNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RequestResidentProgramsNV(GLbyte * pc); -extern HIDDEN int __glXDisp_FeedbackBuffer(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_FeedbackBuffer(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_RasterPos2iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos2iv(GLbyte * pc); -extern HIDDEN void __glXDisp_TexImage1D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexImage1D(GLbyte * pc); -extern HIDDEN void __glXDisp_FrontFace(GLbyte * pc); -extern HIDDEN void __glXDispSwap_FrontFace(GLbyte * pc); -extern HIDDEN int __glXDisp_RenderLarge(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_RenderLarge(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttrib4dvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4dvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_PolygonOffset(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PolygonOffset(GLbyte * pc); -extern HIDDEN void __glXDisp_ExecuteProgramNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ExecuteProgramNV(GLbyte * pc); -extern HIDDEN void __glXDisp_Normal3dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Normal3dv(GLbyte * pc); -extern HIDDEN void __glXDisp_Lightf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Lightf(GLbyte * pc); -extern HIDDEN void __glXDisp_MatrixMode(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MatrixMode(GLbyte * pc); -extern HIDDEN void __glXDisp_FramebufferTexture2DEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_FramebufferTexture2DEXT(GLbyte * pc); -extern HIDDEN int __glXDisp_GetPixelMapusv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetPixelMapusv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Lighti(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Lighti(GLbyte * pc); -extern HIDDEN int __glXDisp_GetFramebufferAttachmentParameterivEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetFramebufferAttachmentParameterivEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_ChangeDrawableAttributesSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_ChangeDrawableAttributesSGIX(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_MultiTexCoord4dvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord4dvARB(GLbyte * pc); -extern HIDDEN int __glXDisp_CreatePbuffer(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CreatePbuffer(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetDoublev(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetDoublev(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_MultMatrixd(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultMatrixd(GLbyte * pc); -extern HIDDEN void __glXDisp_MultMatrixf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultMatrixf(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord4fvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord4fvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_TrackMatrixNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TrackMatrixNV(GLbyte * pc); -extern HIDDEN void __glXDisp_RasterPos4sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos4sv(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4NsvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4NsvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib3fvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib3fvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_ClearColor(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ClearColor(GLbyte * pc); -extern HIDDEN int __glXDisp_IsDirect(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_IsDirect(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_DeleteFramebuffersEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_DeleteFramebuffersEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_TexEnviv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexEnviv(GLbyte * pc); -extern HIDDEN void __glXDisp_TexSubImage3D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexSubImage3D(GLbyte * pc); -extern HIDDEN int __glXDisp_SwapIntervalSGI(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_SwapIntervalSGI(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetColorTableParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetColorTableParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetColorTableParameterfvSGI(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetColorTableParameterfvSGI(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Bitmap(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Bitmap(GLbyte * pc); -extern HIDDEN int __glXDisp_GetTexLevelParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTexLevelParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GenFramebuffersEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GenFramebuffersEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetProgramParameterdvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramParameterdvNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Vertex2sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex2sv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetIntegerv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetIntegerv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetProgramEnvParameterfvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramEnvParameterfvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetTrackMatrixivNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTrackMatrixivNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttrib3svNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib3svNV(GLbyte * pc); -extern HIDDEN int __glXDisp_GetTexEnviv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTexEnviv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_VendorPrivateWithReply(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_VendorPrivateWithReply(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_SeparableFilter2D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SeparableFilter2D(GLbyte * pc); -extern HIDDEN void __glXDisp_Map1d(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Map1d(GLbyte * pc); -extern HIDDEN void __glXDisp_Map1f(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Map1f(GLbyte * pc); -extern HIDDEN void __glXDisp_CompressedTexImage2DARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CompressedTexImage2DARB(GLbyte * pc); -extern HIDDEN void __glXDisp_TexImage2D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexImage2D(GLbyte * pc); -extern HIDDEN void __glXDisp_ProgramParameters4fvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ProgramParameters4fvNV(GLbyte * pc); -extern HIDDEN int __glXDisp_GetProgramivNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramivNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_ChangeDrawableAttributes(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_ChangeDrawableAttributes(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetMinmaxParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMinmaxParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetMinmaxParameterivEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMinmaxParameterivEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_PixelTransferf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PixelTransferf(GLbyte * pc); -extern HIDDEN void __glXDisp_CopyTexImage1D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CopyTexImage1D(GLbyte * pc); -extern HIDDEN void __glXDisp_RasterPos2dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos2dv(GLbyte * pc); -extern HIDDEN void __glXDisp_Fogiv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Fogiv(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord1dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord1dv(GLbyte * pc); -extern HIDDEN void __glXDisp_PixelTransferi(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PixelTransferi(GLbyte * pc); -extern HIDDEN void __glXDisp_SecondaryColor3ubvEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SecondaryColor3ubvEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib3fvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib3fvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_Clear(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Clear(GLbyte * pc); -extern HIDDEN void __glXDisp_ReadBuffer(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ReadBuffer(GLbyte * pc); -extern HIDDEN void __glXDisp_ConvolutionParameteri(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ConvolutionParameteri(GLbyte * pc); -extern HIDDEN void __glXDisp_Ortho(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Ortho(GLbyte * pc); -extern HIDDEN void __glXDisp_ListBase(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ListBase(GLbyte * pc); -extern HIDDEN void __glXDisp_ConvolutionParameterf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ConvolutionParameterf(GLbyte * pc); -extern HIDDEN int __glXDisp_GetColorTableParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetColorTableParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetColorTableParameterivSGI(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetColorTableParameterivSGI(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_ReleaseTexImageEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_ReleaseTexImageEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_CallList(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CallList(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttribs2fvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs2fvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_Rectiv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Rectiv(GLbyte * pc); -extern HIDDEN void __glXDisp_SecondaryColor3dvEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SecondaryColor3dvEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_Vertex2fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex2fv(GLbyte * pc); -extern HIDDEN void __glXDisp_BindRenderbufferEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_BindRenderbufferEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_Vertex3sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex3sv(GLbyte * pc); -extern HIDDEN int __glXDisp_BindTexImageEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_BindTexImageEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_ProgramLocalParameter4fvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ProgramLocalParameter4fvARB(GLbyte * pc); -extern HIDDEN int __glXDisp_DeleteProgramsNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_DeleteProgramsNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_EvalMesh1(GLbyte * pc); -extern HIDDEN void __glXDispSwap_EvalMesh1(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord1dvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord1dvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_Vertex2iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex2iv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetProgramStringNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramStringNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_LineWidth(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LineWidth(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib2fvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib2fvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_TexGendv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexGendv(GLbyte * pc); -extern HIDDEN void __glXDisp_ResetMinmax(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ResetMinmax(GLbyte * pc); -extern HIDDEN int __glXDisp_GetConvolutionParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetConvolutionParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetConvolutionParameterfvEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetConvolutionParameterfvEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttribs4dvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc); -extern HIDDEN int __glXDisp_GetMaterialfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMaterialfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_UseXFont(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_UseXFont(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_ShadeModel(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ShadeModel(GLbyte * pc); -extern HIDDEN void __glXDisp_Materialfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Materialfv(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord3fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord3fv(GLbyte * pc); -extern HIDDEN void __glXDisp_FogCoordfvEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_FogCoordfvEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord1ivARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord1ivARB(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord2ivARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord2ivARB(GLbyte * pc); -extern HIDDEN void __glXDisp_DrawArrays(GLbyte * pc); -extern HIDDEN void __glXDispSwap_DrawArrays(GLbyte * pc); -extern HIDDEN void __glXDisp_Color3iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color3iv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetProgramLocalParameterdvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramLocalParameterdvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetHistogramParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetHistogramParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetHistogramParameterivEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetHistogramParameterivEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Rotatef(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Rotatef(GLbyte * pc); -extern HIDDEN int __glXDisp_GetProgramivARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramivARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_BlendFuncSeparateEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_BlendFuncSeparateEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_ProgramParameters4dvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ProgramParameters4dvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_EvalPoint2(GLbyte * pc); -extern HIDDEN void __glXDispSwap_EvalPoint2(GLbyte * pc); -extern HIDDEN void __glXDisp_EvalPoint1(GLbyte * pc); -extern HIDDEN void __glXDispSwap_EvalPoint1(GLbyte * pc); -extern HIDDEN void __glXDisp_PopMatrix(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PopMatrix(GLbyte * pc); -extern HIDDEN int __glXDisp_MakeCurrentReadSGI(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_MakeCurrentReadSGI(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetTexGeniv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTexGeniv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_MakeCurrent(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_MakeCurrent(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Map2d(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Map2d(GLbyte * pc); -extern HIDDEN void __glXDisp_Map2f(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Map2f(GLbyte * pc); -extern HIDDEN void __glXDisp_ProgramStringARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ProgramStringARB(GLbyte * pc); -extern HIDDEN int __glXDisp_GetConvolutionFilter(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetConvolutionFilter(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetConvolutionFilterEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetConvolutionFilterEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetCompressedTexImageARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetTexGenfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTexGenfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetHistogram(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetHistogram(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetHistogramEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetHistogramEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_ActiveStencilFaceEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ActiveStencilFaceEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_Materialf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Materialf(GLbyte * pc); -extern HIDDEN void __glXDisp_Materiali(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Materiali(GLbyte * pc); -extern HIDDEN void __glXDisp_Indexsv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Indexsv(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord4svARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord4svARB(GLbyte * pc); -extern HIDDEN void __glXDisp_LightModelfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LightModelfv(GLbyte * pc); -extern HIDDEN void __glXDisp_TexCoord2dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord2dv(GLbyte * pc); -extern HIDDEN int __glXDisp_GenQueriesARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GenQueriesARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_EvalCoord1dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_EvalCoord1dv(GLbyte * pc); -extern HIDDEN void __glXDisp_Translated(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Translated(GLbyte * pc); -extern HIDDEN void __glXDisp_Translatef(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Translatef(GLbyte * pc); -extern HIDDEN void __glXDisp_StencilMask(GLbyte * pc); -extern HIDDEN void __glXDispSwap_StencilMask(GLbyte * pc); -extern HIDDEN int __glXDisp_CreateWindow(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_CreateWindow(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetLightiv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetLightiv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_IsList(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_IsList(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_RenderMode(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_RenderMode(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_DrawBuffersARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_DrawBuffersARB(GLbyte * pc); -extern HIDDEN void __glXDisp_LoadName(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LoadName(GLbyte * pc); -extern HIDDEN void __glXDisp_CopyTexSubImage1D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CopyTexSubImage1D(GLbyte * pc); -extern HIDDEN void __glXDisp_CullFace(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CullFace(GLbyte * pc); -extern HIDDEN int __glXDisp_QueryContextInfoEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_QueryContextInfoEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttribs3svNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs3svNV(GLbyte * pc); -extern HIDDEN void __glXDisp_StencilFunc(GLbyte * pc); -extern HIDDEN void __glXDispSwap_StencilFunc(GLbyte * pc); -extern HIDDEN void __glXDisp_CopyPixels(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CopyPixels(GLbyte * pc); -extern HIDDEN void __glXDisp_Rectsv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Rectsv(GLbyte * pc); -extern HIDDEN void __glXDisp_CopyConvolutionFilter2D(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CopyConvolutionFilter2D(GLbyte * pc); -extern HIDDEN void __glXDisp_TexParameterfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexParameterfv(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4uivARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4uivARB(GLbyte * pc); -extern HIDDEN void __glXDisp_ClipPlane(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ClipPlane(GLbyte * pc); -extern HIDDEN int __glXDisp_GetPixelMapuiv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetPixelMapuiv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Indexfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Indexfv(GLbyte * pc); -extern HIDDEN int __glXDisp_QueryContext(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_QueryContext(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_SecondaryColor3svEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_SecondaryColor3svEXT(GLbyte * pc); -extern HIDDEN void __glXDisp_IndexMask(GLbyte * pc); -extern HIDDEN void __glXDispSwap_IndexMask(GLbyte * pc); -extern HIDDEN void __glXDisp_BindProgramNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_BindProgramNV(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4svARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4svARB(GLbyte * pc); -extern HIDDEN int __glXDisp_GetFloatv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetFloatv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_TexCoord3sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord3sv(GLbyte * pc); -extern HIDDEN void __glXDisp_PopAttrib(GLbyte * pc); -extern HIDDEN void __glXDispSwap_PopAttrib(GLbyte * pc); -extern HIDDEN void __glXDisp_Fogfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Fogfv(GLbyte * pc); -extern HIDDEN void __glXDisp_InitNames(GLbyte * pc); -extern HIDDEN void __glXDispSwap_InitNames(GLbyte * pc); -extern HIDDEN void __glXDisp_Normal3sv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Normal3sv(GLbyte * pc); -extern HIDDEN void __glXDisp_Minmax(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Minmax(GLbyte * pc); -extern HIDDEN void __glXDisp_FogCoorddvEXT(GLbyte * pc); -extern HIDDEN void __glXDispSwap_FogCoorddvEXT(GLbyte * pc); -extern HIDDEN int __glXDisp_GetBooleanv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetBooleanv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Hint(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Hint(GLbyte * pc); -extern HIDDEN void __glXDisp_Color4dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Color4dv(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib2svARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib2svARB(GLbyte * pc); -extern HIDDEN int __glXDisp_AreProgramsResidentNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_AreProgramsResidentNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_CopyColorSubTable(GLbyte * pc); -extern HIDDEN void __glXDispSwap_CopyColorSubTable(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib4NubvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4NubvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttrib3dvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib3dvNV(GLbyte * pc); -extern HIDDEN void __glXDisp_Vertex4iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex4iv(GLbyte * pc); -extern HIDDEN int __glXDisp_GetProgramEnvParameterdvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetProgramEnvParameterdvARB(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_TexCoord4dv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_TexCoord4dv(GLbyte * pc); -extern HIDDEN void __glXDisp_Begin(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Begin(GLbyte * pc); -extern HIDDEN int __glXDisp_ClientInfo(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_ClientInfo(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Rectfv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Rectfv(GLbyte * pc); -extern HIDDEN void __glXDisp_LightModelf(GLbyte * pc); -extern HIDDEN void __glXDispSwap_LightModelf(GLbyte * pc); -extern HIDDEN int __glXDisp_GetTexParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetTexParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetLightfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetLightfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_Disable(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Disable(GLbyte * pc); -extern HIDDEN void __glXDisp_MultiTexCoord2fvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_MultiTexCoord2fvARB(GLbyte * pc); -extern HIDDEN int __glXDisp_GetRenderbufferParameterivEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetRenderbufferParameterivEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_SelectBuffer(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_SelectBuffer(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_ColorMask(GLbyte * pc); -extern HIDDEN void __glXDispSwap_ColorMask(GLbyte * pc); -extern HIDDEN void __glXDisp_RasterPos4iv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_RasterPos4iv(GLbyte * pc); -extern HIDDEN void __glXDisp_Enable(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Enable(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttribs4svNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs4svNV(GLbyte * pc); -extern HIDDEN int __glXDisp_GetMinmaxParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMinmaxParameterfv(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDisp_GetMinmaxParameterfvEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GetMinmaxParameterfvEXT(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttrib1fvARB(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib1fvARB(GLbyte * pc); -extern HIDDEN void __glXDisp_VertexAttribs1svNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttribs1svNV(GLbyte * pc); -extern HIDDEN void __glXDisp_Vertex3fv(GLbyte * pc); -extern HIDDEN void __glXDispSwap_Vertex3fv(GLbyte * pc); -extern HIDDEN int __glXDisp_GenProgramsNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN int __glXDispSwap_GenProgramsNV(struct __GLXclientStateRec *, GLbyte *); -extern HIDDEN void __glXDisp_VertexAttrib4dvNV(GLbyte * pc); -extern HIDDEN void __glXDispSwap_VertexAttrib4dvNV(GLbyte * pc); - -# undef HIDDEN - -#endif /* !defined( _INDIRECT_DISPATCH_H_ ) */ diff --git a/GL/glx/indirect_dispatch_swap.c b/GL/glx/indirect_dispatch_swap.c deleted file mode 100644 index f137cbe98..000000000 --- a/GL/glx/indirect_dispatch_swap.c +++ /dev/null @@ -1,6051 +0,0 @@ -/* DO NOT EDIT - This file generated automatically by glX_proto_recv.py (from Mesa) script */ - -/* - * (C) Copyright IBM Corporation 2005 - * All Rights Reserved. - * - * 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, sub license, - * and/or 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 (including the next - * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM, - * AND/OR THEIR SUPPLIERS 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. - */ - -#include -#include -#include -#include -#include "indirect_size.h" -#include "indirect_size_get.h" -#include "indirect_dispatch.h" -#include "glxserver.h" -#include "glxbyteorder.h" -#include "indirect_util.h" -#include "singlesize.h" -#include "glapitable.h" -#include "glapi.h" -#include "glthread.h" -#include "dispatch.h" - -#define __GLX_PAD(x) (((x) + 3) & ~3) - -typedef struct { - __GLX_PIXEL_3D_HDR; -} __GLXpixel3DHeader; - -extern GLboolean __glXErrorOccured( void ); -extern void __glXClearErrorOccured( void ); - -static const unsigned dummy_answer[2] = {0, 0}; - -static GLsizei -bswap_CARD32( const void * src ) -{ - union { uint32_t dst; GLsizei ret; } x; - x.dst = bswap_32( *(uint32_t *) src ); - return x.ret; -} - -static GLshort -bswap_CARD16( const void * src ) -{ - union { uint16_t dst; GLshort ret; } x; - x.dst = bswap_16( *(uint16_t *) src ); - return x.ret; -} - -static GLenum -bswap_ENUM( const void * src ) -{ - union { uint32_t dst; GLenum ret; } x; - x.dst = bswap_32( *(uint32_t *) src ); - return x.ret; -} - -static GLdouble -bswap_FLOAT64( const void * src ) -{ - union { uint64_t dst; GLdouble ret; } x; - x.dst = bswap_64( *(uint64_t *) src ); - return x.ret; -} - -static GLfloat -bswap_FLOAT32( const void * src ) -{ - union { uint32_t dst; GLfloat ret; } x; - x.dst = bswap_32( *(uint32_t *) src ); - return x.ret; -} - -static void * -bswap_16_array( uint16_t * src, unsigned count ) -{ - unsigned i; - - for ( i = 0 ; i < count ; i++ ) { - uint16_t temp = bswap_16( src[i] ); - src[i] = temp; - } - - return src; -} - -static void * -bswap_32_array( uint32_t * src, unsigned count ) -{ - unsigned i; - - for ( i = 0 ; i < count ; i++ ) { - uint32_t temp = bswap_32( src[i] ); - src[i] = temp; - } - - return src; -} - -static void * -bswap_64_array( uint64_t * src, unsigned count ) -{ - unsigned i; - - for ( i = 0 ; i < count ; i++ ) { - uint64_t temp = bswap_64( src[i] ); - src[i] = temp; - } - - return src; -} - -int __glXDispSwap_NewList(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - CALL_NewList( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ) - ) ); - error = Success; - } - - return error; -} - -int __glXDispSwap_EndList(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - CALL_EndList( GET_DISPATCH(), () ); - error = Success; - } - - return error; -} - -void __glXDispSwap_CallList(GLbyte * pc) -{ - CALL_CallList( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); -} - -void __glXDispSwap_CallLists(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - const GLenum type = (GLenum )bswap_ENUM ( pc + 4 ); - const GLvoid * lists; - - switch(type) { - case GL_BYTE: - case GL_UNSIGNED_BYTE: - case GL_2_BYTES: - case GL_3_BYTES: - case GL_4_BYTES: - lists = (const GLvoid *) (pc + 8); break; - case GL_SHORT: - case GL_UNSIGNED_SHORT: - lists = (const GLvoid *) bswap_16_array( (uint16_t *) (pc + 8), n ); break; - case GL_INT: - case GL_UNSIGNED_INT: - case GL_FLOAT: - lists = (const GLvoid *) bswap_32_array( (uint32_t *) (pc + 8), n ); break; - default: - return; - } - - CALL_CallLists( GET_DISPATCH(), ( - n, - type, - lists - ) ); -} - -int __glXDispSwap_DeleteLists(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - CALL_DeleteLists( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (GLsizei )bswap_CARD32 ( pc + 4 ) - ) ); - error = Success; - } - - return error; -} - -int __glXDispSwap_GenLists(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLuint retval; - retval = CALL_GenLists( GET_DISPATCH(), ( - (GLsizei )bswap_CARD32 ( pc + 0 ) - ) ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDispSwap_ListBase(GLbyte * pc) -{ - CALL_ListBase( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); -} - -void __glXDispSwap_Begin(GLbyte * pc) -{ - CALL_Begin( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_Bitmap(GLbyte * pc) -{ - const GLubyte * const bitmap = (const GLubyte *) (pc + 44); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_Bitmap( GET_DISPATCH(), ( - (GLsizei )bswap_CARD32 ( pc + 20 ), - (GLsizei )bswap_CARD32 ( pc + 24 ), - (GLfloat )bswap_FLOAT32( pc + 28 ), - (GLfloat )bswap_FLOAT32( pc + 32 ), - (GLfloat )bswap_FLOAT32( pc + 36 ), - (GLfloat )bswap_FLOAT32( pc + 40 ), - bitmap - ) ); -} - -void __glXDispSwap_Color3bv(GLbyte * pc) -{ - CALL_Color3bv( GET_DISPATCH(), ( - (const GLbyte *)(pc + 0) - ) ); -} - -void __glXDispSwap_Color3dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_Color3dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Color3fv(GLbyte * pc) -{ - CALL_Color3fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Color3iv(GLbyte * pc) -{ - CALL_Color3iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Color3sv(GLbyte * pc) -{ - CALL_Color3sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Color3ubv(GLbyte * pc) -{ - CALL_Color3ubv( GET_DISPATCH(), ( - (const GLubyte *)(pc + 0) - ) ); -} - -void __glXDispSwap_Color3uiv(GLbyte * pc) -{ - CALL_Color3uiv( GET_DISPATCH(), ( - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Color3usv(GLbyte * pc) -{ - CALL_Color3usv( GET_DISPATCH(), ( - (const GLushort *)bswap_16_array( (uint16_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Color4bv(GLbyte * pc) -{ - CALL_Color4bv( GET_DISPATCH(), ( - (const GLbyte *)(pc + 0) - ) ); -} - -void __glXDispSwap_Color4dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_Color4dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_Color4fv(GLbyte * pc) -{ - CALL_Color4fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_Color4iv(GLbyte * pc) -{ - CALL_Color4iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_Color4sv(GLbyte * pc) -{ - CALL_Color4sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_Color4ubv(GLbyte * pc) -{ - CALL_Color4ubv( GET_DISPATCH(), ( - (const GLubyte *)(pc + 0) - ) ); -} - -void __glXDispSwap_Color4uiv(GLbyte * pc) -{ - CALL_Color4uiv( GET_DISPATCH(), ( - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_Color4usv(GLbyte * pc) -{ - CALL_Color4usv( GET_DISPATCH(), ( - (const GLushort *)bswap_16_array( (uint16_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_EdgeFlagv(GLbyte * pc) -{ - CALL_EdgeFlagv( GET_DISPATCH(), ( - (const GLboolean *)(pc + 0) - ) ); -} - -void __glXDispSwap_End(GLbyte * pc) -{ - CALL_End( GET_DISPATCH(), () ); -} - -void __glXDispSwap_Indexdv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 8); - pc -= 4; - } -#endif - - CALL_Indexdv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_Indexfv(GLbyte * pc) -{ - CALL_Indexfv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_Indexiv(GLbyte * pc) -{ - CALL_Indexiv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_Indexsv(GLbyte * pc) -{ - CALL_Indexsv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_Normal3bv(GLbyte * pc) -{ - CALL_Normal3bv( GET_DISPATCH(), ( - (const GLbyte *)(pc + 0) - ) ); -} - -void __glXDispSwap_Normal3dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_Normal3dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Normal3fv(GLbyte * pc) -{ - CALL_Normal3fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Normal3iv(GLbyte * pc) -{ - CALL_Normal3iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Normal3sv(GLbyte * pc) -{ - CALL_Normal3sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_RasterPos2dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_RasterPos2dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_RasterPos2fv(GLbyte * pc) -{ - CALL_RasterPos2fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_RasterPos2iv(GLbyte * pc) -{ - CALL_RasterPos2iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_RasterPos2sv(GLbyte * pc) -{ - CALL_RasterPos2sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_RasterPos3dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_RasterPos3dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_RasterPos3fv(GLbyte * pc) -{ - CALL_RasterPos3fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_RasterPos3iv(GLbyte * pc) -{ - CALL_RasterPos3iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_RasterPos3sv(GLbyte * pc) -{ - CALL_RasterPos3sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_RasterPos4dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_RasterPos4dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_RasterPos4fv(GLbyte * pc) -{ - CALL_RasterPos4fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_RasterPos4iv(GLbyte * pc) -{ - CALL_RasterPos4iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_RasterPos4sv(GLbyte * pc) -{ - CALL_RasterPos4sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_Rectdv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_Rectdv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 2 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 16), 2 ) - ) ); -} - -void __glXDispSwap_Rectfv(GLbyte * pc) -{ - CALL_Rectfv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 2 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 2 ) - ) ); -} - -void __glXDispSwap_Rectiv(GLbyte * pc) -{ - CALL_Rectiv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 2 ), - (const GLint *)bswap_32_array( (uint32_t *) (pc + 8), 2 ) - ) ); -} - -void __glXDispSwap_Rectsv(GLbyte * pc) -{ - CALL_Rectsv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 2 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 2 ) - ) ); -} - -void __glXDispSwap_TexCoord1dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 8); - pc -= 4; - } -#endif - - CALL_TexCoord1dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_TexCoord1fv(GLbyte * pc) -{ - CALL_TexCoord1fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_TexCoord1iv(GLbyte * pc) -{ - CALL_TexCoord1iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_TexCoord1sv(GLbyte * pc) -{ - CALL_TexCoord1sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_TexCoord2dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_TexCoord2dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_TexCoord2fv(GLbyte * pc) -{ - CALL_TexCoord2fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_TexCoord2iv(GLbyte * pc) -{ - CALL_TexCoord2iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_TexCoord2sv(GLbyte * pc) -{ - CALL_TexCoord2sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_TexCoord3dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_TexCoord3dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_TexCoord3fv(GLbyte * pc) -{ - CALL_TexCoord3fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_TexCoord3iv(GLbyte * pc) -{ - CALL_TexCoord3iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_TexCoord3sv(GLbyte * pc) -{ - CALL_TexCoord3sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_TexCoord4dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_TexCoord4dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_TexCoord4fv(GLbyte * pc) -{ - CALL_TexCoord4fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_TexCoord4iv(GLbyte * pc) -{ - CALL_TexCoord4iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_TexCoord4sv(GLbyte * pc) -{ - CALL_TexCoord4sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_Vertex2dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_Vertex2dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_Vertex2fv(GLbyte * pc) -{ - CALL_Vertex2fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_Vertex2iv(GLbyte * pc) -{ - CALL_Vertex2iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_Vertex2sv(GLbyte * pc) -{ - CALL_Vertex2sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_Vertex3dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_Vertex3dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Vertex3fv(GLbyte * pc) -{ - CALL_Vertex3fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Vertex3iv(GLbyte * pc) -{ - CALL_Vertex3iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Vertex3sv(GLbyte * pc) -{ - CALL_Vertex3sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_Vertex4dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_Vertex4dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_Vertex4fv(GLbyte * pc) -{ - CALL_Vertex4fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_Vertex4iv(GLbyte * pc) -{ - CALL_Vertex4iv( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_Vertex4sv(GLbyte * pc) -{ - CALL_Vertex4sv( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_ClipPlane(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 36); - pc -= 4; - } -#endif - - CALL_ClipPlane( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 32 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_ColorMaterial(GLbyte * pc) -{ - CALL_ColorMaterial( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ) - ) ); -} - -void __glXDispSwap_CullFace(GLbyte * pc) -{ - CALL_CullFace( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_Fogf(GLbyte * pc) -{ - CALL_Fogf( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ) - ) ); -} - -void __glXDispSwap_Fogfv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 ); - const GLfloat * params; - - params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 4), __glFogfv_size(pname) ); - - CALL_Fogfv( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDispSwap_Fogi(GLbyte * pc) -{ - CALL_Fogi( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ) - ) ); -} - -void __glXDispSwap_Fogiv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 ); - const GLint * params; - - params = (const GLint *) bswap_32_array( (uint32_t *) (pc + 4), __glFogiv_size(pname) ); - - CALL_Fogiv( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDispSwap_FrontFace(GLbyte * pc) -{ - CALL_FrontFace( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_Hint(GLbyte * pc) -{ - CALL_Hint( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ) - ) ); -} - -void __glXDispSwap_Lightf(GLbyte * pc) -{ - CALL_Lightf( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ) - ) ); -} - -void __glXDispSwap_Lightfv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLfloat * params; - - params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 8), __glLightfv_size(pname) ); - - CALL_Lightfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_Lighti(GLbyte * pc) -{ - CALL_Lighti( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ) - ) ); -} - -void __glXDispSwap_Lightiv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLint * params; - - params = (const GLint *) bswap_32_array( (uint32_t *) (pc + 8), __glLightiv_size(pname) ); - - CALL_Lightiv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_LightModelf(GLbyte * pc) -{ - CALL_LightModelf( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ) - ) ); -} - -void __glXDispSwap_LightModelfv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 ); - const GLfloat * params; - - params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 4), __glLightModelfv_size(pname) ); - - CALL_LightModelfv( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDispSwap_LightModeli(GLbyte * pc) -{ - CALL_LightModeli( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ) - ) ); -} - -void __glXDispSwap_LightModeliv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 ); - const GLint * params; - - params = (const GLint *) bswap_32_array( (uint32_t *) (pc + 4), __glLightModeliv_size(pname) ); - - CALL_LightModeliv( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDispSwap_LineStipple(GLbyte * pc) -{ - CALL_LineStipple( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 0 ), - (GLushort)bswap_CARD16 ( pc + 4 ) - ) ); -} - -void __glXDispSwap_LineWidth(GLbyte * pc) -{ - CALL_LineWidth( GET_DISPATCH(), ( - (GLfloat )bswap_FLOAT32( pc + 0 ) - ) ); -} - -void __glXDispSwap_Materialf(GLbyte * pc) -{ - CALL_Materialf( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ) - ) ); -} - -void __glXDispSwap_Materialfv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLfloat * params; - - params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 8), __glMaterialfv_size(pname) ); - - CALL_Materialfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_Materiali(GLbyte * pc) -{ - CALL_Materiali( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ) - ) ); -} - -void __glXDispSwap_Materialiv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLint * params; - - params = (const GLint *) bswap_32_array( (uint32_t *) (pc + 8), __glMaterialiv_size(pname) ); - - CALL_Materialiv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_PointSize(GLbyte * pc) -{ - CALL_PointSize( GET_DISPATCH(), ( - (GLfloat )bswap_FLOAT32( pc + 0 ) - ) ); -} - -void __glXDispSwap_PolygonMode(GLbyte * pc) -{ - CALL_PolygonMode( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ) - ) ); -} - -void __glXDispSwap_PolygonStipple(GLbyte * pc) -{ - const GLubyte * const mask = (const GLubyte *) (pc + 20); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_PolygonStipple( GET_DISPATCH(), ( - mask - ) ); -} - -void __glXDispSwap_Scissor(GLbyte * pc) -{ - CALL_Scissor( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLsizei )bswap_CARD32 ( pc + 8 ), - (GLsizei )bswap_CARD32 ( pc + 12 ) - ) ); -} - -void __glXDispSwap_ShadeModel(GLbyte * pc) -{ - CALL_ShadeModel( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_TexParameterf(GLbyte * pc) -{ - CALL_TexParameterf( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ) - ) ); -} - -void __glXDispSwap_TexParameterfv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLfloat * params; - - params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 8), __glTexParameterfv_size(pname) ); - - CALL_TexParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_TexParameteri(GLbyte * pc) -{ - CALL_TexParameteri( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ) - ) ); -} - -void __glXDispSwap_TexParameteriv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLint * params; - - params = (const GLint *) bswap_32_array( (uint32_t *) (pc + 8), __glTexParameteriv_size(pname) ); - - CALL_TexParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_TexImage1D(GLbyte * pc) -{ - const GLvoid * const pixels = (const GLvoid *) (pc + 52); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_TexImage1D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 20 ), - (GLint )bswap_CARD32 ( pc + 24 ), - (GLint )bswap_CARD32 ( pc + 28 ), - (GLsizei )bswap_CARD32 ( pc + 32 ), - (GLint )bswap_CARD32 ( pc + 40 ), - (GLenum )bswap_ENUM ( pc + 44 ), - (GLenum )bswap_ENUM ( pc + 48 ), - pixels - ) ); -} - -void __glXDispSwap_TexImage2D(GLbyte * pc) -{ - const GLvoid * const pixels = (const GLvoid *) (pc + 52); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_TexImage2D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 20 ), - (GLint )bswap_CARD32 ( pc + 24 ), - (GLint )bswap_CARD32 ( pc + 28 ), - (GLsizei )bswap_CARD32 ( pc + 32 ), - (GLsizei )bswap_CARD32 ( pc + 36 ), - (GLint )bswap_CARD32 ( pc + 40 ), - (GLenum )bswap_ENUM ( pc + 44 ), - (GLenum )bswap_ENUM ( pc + 48 ), - pixels - ) ); -} - -void __glXDispSwap_TexEnvf(GLbyte * pc) -{ - CALL_TexEnvf( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ) - ) ); -} - -void __glXDispSwap_TexEnvfv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLfloat * params; - - params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 8), __glTexEnvfv_size(pname) ); - - CALL_TexEnvfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_TexEnvi(GLbyte * pc) -{ - CALL_TexEnvi( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ) - ) ); -} - -void __glXDispSwap_TexEnviv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLint * params; - - params = (const GLint *) bswap_32_array( (uint32_t *) (pc + 8), __glTexEnviv_size(pname) ); - - CALL_TexEnviv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_TexGend(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_TexGend( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 8 ), - (GLenum )bswap_ENUM ( pc + 12 ), - (GLdouble)bswap_FLOAT64( pc + 0 ) - ) ); -} - -void __glXDispSwap_TexGendv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLdouble * params; - -#ifdef __GLX_ALIGN64 - const GLuint compsize = __glTexGendv_size(pname); - const GLuint cmdlen = 12 + __GLX_PAD((compsize * 8)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - params = (const GLdouble *) bswap_64_array( (uint64_t *) (pc + 8), __glTexGendv_size(pname) ); - - CALL_TexGendv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_TexGenf(GLbyte * pc) -{ - CALL_TexGenf( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ) - ) ); -} - -void __glXDispSwap_TexGenfv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLfloat * params; - - params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 8), __glTexGenfv_size(pname) ); - - CALL_TexGenfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_TexGeni(GLbyte * pc) -{ - CALL_TexGeni( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ) - ) ); -} - -void __glXDispSwap_TexGeniv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLint * params; - - params = (const GLint *) bswap_32_array( (uint32_t *) (pc + 8), __glTexGeniv_size(pname) ); - - CALL_TexGeniv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_InitNames(GLbyte * pc) -{ - CALL_InitNames( GET_DISPATCH(), () ); -} - -void __glXDispSwap_LoadName(GLbyte * pc) -{ - CALL_LoadName( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); -} - -void __glXDispSwap_PassThrough(GLbyte * pc) -{ - CALL_PassThrough( GET_DISPATCH(), ( - (GLfloat )bswap_FLOAT32( pc + 0 ) - ) ); -} - -void __glXDispSwap_PopName(GLbyte * pc) -{ - CALL_PopName( GET_DISPATCH(), () ); -} - -void __glXDispSwap_PushName(GLbyte * pc) -{ - CALL_PushName( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); -} - -void __glXDispSwap_DrawBuffer(GLbyte * pc) -{ - CALL_DrawBuffer( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_Clear(GLbyte * pc) -{ - CALL_Clear( GET_DISPATCH(), ( - (GLbitfield)bswap_CARD32 ( pc + 0 ) - ) ); -} - -void __glXDispSwap_ClearAccum(GLbyte * pc) -{ - CALL_ClearAccum( GET_DISPATCH(), ( - (GLfloat )bswap_FLOAT32( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ), - (GLfloat )bswap_FLOAT32( pc + 12 ) - ) ); -} - -void __glXDispSwap_ClearIndex(GLbyte * pc) -{ - CALL_ClearIndex( GET_DISPATCH(), ( - (GLfloat )bswap_FLOAT32( pc + 0 ) - ) ); -} - -void __glXDispSwap_ClearColor(GLbyte * pc) -{ - CALL_ClearColor( GET_DISPATCH(), ( - (GLclampf)bswap_FLOAT32( pc + 0 ), - (GLclampf)bswap_FLOAT32( pc + 4 ), - (GLclampf)bswap_FLOAT32( pc + 8 ), - (GLclampf)bswap_FLOAT32( pc + 12 ) - ) ); -} - -void __glXDispSwap_ClearStencil(GLbyte * pc) -{ - CALL_ClearStencil( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 0 ) - ) ); -} - -void __glXDispSwap_ClearDepth(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 8); - pc -= 4; - } -#endif - - CALL_ClearDepth( GET_DISPATCH(), ( - (GLclampd)bswap_FLOAT64( pc + 0 ) - ) ); -} - -void __glXDispSwap_StencilMask(GLbyte * pc) -{ - CALL_StencilMask( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); -} - -void __glXDispSwap_ColorMask(GLbyte * pc) -{ - CALL_ColorMask( GET_DISPATCH(), ( - *(GLboolean *)(pc + 0), - *(GLboolean *)(pc + 1), - *(GLboolean *)(pc + 2), - *(GLboolean *)(pc + 3) - ) ); -} - -void __glXDispSwap_DepthMask(GLbyte * pc) -{ - CALL_DepthMask( GET_DISPATCH(), ( - *(GLboolean *)(pc + 0) - ) ); -} - -void __glXDispSwap_IndexMask(GLbyte * pc) -{ - CALL_IndexMask( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); -} - -void __glXDispSwap_Accum(GLbyte * pc) -{ - CALL_Accum( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ) - ) ); -} - -void __glXDispSwap_Disable(GLbyte * pc) -{ - CALL_Disable( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_Enable(GLbyte * pc) -{ - CALL_Enable( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_PopAttrib(GLbyte * pc) -{ - CALL_PopAttrib( GET_DISPATCH(), () ); -} - -void __glXDispSwap_PushAttrib(GLbyte * pc) -{ - CALL_PushAttrib( GET_DISPATCH(), ( - (GLbitfield)bswap_CARD32 ( pc + 0 ) - ) ); -} - -void __glXDispSwap_MapGrid1d(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 20); - pc -= 4; - } -#endif - - CALL_MapGrid1d( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 16 ), - (GLdouble)bswap_FLOAT64( pc + 0 ), - (GLdouble)bswap_FLOAT64( pc + 8 ) - ) ); -} - -void __glXDispSwap_MapGrid1f(GLbyte * pc) -{ - CALL_MapGrid1f( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ) - ) ); -} - -void __glXDispSwap_MapGrid2d(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 40); - pc -= 4; - } -#endif - - CALL_MapGrid2d( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 32 ), - (GLdouble)bswap_FLOAT64( pc + 0 ), - (GLdouble)bswap_FLOAT64( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 36 ), - (GLdouble)bswap_FLOAT64( pc + 16 ), - (GLdouble)bswap_FLOAT64( pc + 24 ) - ) ); -} - -void __glXDispSwap_MapGrid2f(GLbyte * pc) -{ - CALL_MapGrid2f( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLfloat )bswap_FLOAT32( pc + 16 ), - (GLfloat )bswap_FLOAT32( pc + 20 ) - ) ); -} - -void __glXDispSwap_EvalCoord1dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 8); - pc -= 4; - } -#endif - - CALL_EvalCoord1dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_EvalCoord1fv(GLbyte * pc) -{ - CALL_EvalCoord1fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_EvalCoord2dv(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_EvalCoord2dv( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_EvalCoord2fv(GLbyte * pc) -{ - CALL_EvalCoord2fv( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_EvalMesh1(GLbyte * pc) -{ - CALL_EvalMesh1( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ) - ) ); -} - -void __glXDispSwap_EvalPoint1(GLbyte * pc) -{ - CALL_EvalPoint1( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 0 ) - ) ); -} - -void __glXDispSwap_EvalMesh2(GLbyte * pc) -{ - CALL_EvalMesh2( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ) - ) ); -} - -void __glXDispSwap_EvalPoint2(GLbyte * pc) -{ - CALL_EvalPoint2( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ) - ) ); -} - -void __glXDispSwap_AlphaFunc(GLbyte * pc) -{ - CALL_AlphaFunc( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLclampf)bswap_FLOAT32( pc + 4 ) - ) ); -} - -void __glXDispSwap_BlendFunc(GLbyte * pc) -{ - CALL_BlendFunc( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ) - ) ); -} - -void __glXDispSwap_LogicOp(GLbyte * pc) -{ - CALL_LogicOp( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_StencilFunc(GLbyte * pc) -{ - CALL_StencilFunc( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLuint )bswap_CARD32 ( pc + 8 ) - ) ); -} - -void __glXDispSwap_StencilOp(GLbyte * pc) -{ - CALL_StencilOp( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ) - ) ); -} - -void __glXDispSwap_DepthFunc(GLbyte * pc) -{ - CALL_DepthFunc( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_PixelZoom(GLbyte * pc) -{ - CALL_PixelZoom( GET_DISPATCH(), ( - (GLfloat )bswap_FLOAT32( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ) - ) ); -} - -void __glXDispSwap_PixelTransferf(GLbyte * pc) -{ - CALL_PixelTransferf( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ) - ) ); -} - -void __glXDispSwap_PixelTransferi(GLbyte * pc) -{ - CALL_PixelTransferi( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ) - ) ); -} - -int __glXDispSwap_PixelStoref(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - CALL_PixelStoref( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ) - ) ); - error = Success; - } - - return error; -} - -int __glXDispSwap_PixelStorei(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - CALL_PixelStorei( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ) - ) ); - error = Success; - } - - return error; -} - -void __glXDispSwap_PixelMapfv(GLbyte * pc) -{ - const GLsizei mapsize = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_PixelMapfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - mapsize, - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_PixelMapuiv(GLbyte * pc) -{ - const GLsizei mapsize = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_PixelMapuiv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - mapsize, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_PixelMapusv(GLbyte * pc) -{ - const GLsizei mapsize = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_PixelMapusv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - mapsize, - (const GLushort *)bswap_16_array( (uint16_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_ReadBuffer(GLbyte * pc) -{ - CALL_ReadBuffer( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_CopyPixels(GLbyte * pc) -{ - CALL_CopyPixels( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLsizei )bswap_CARD32 ( pc + 8 ), - (GLsizei )bswap_CARD32 ( pc + 12 ), - (GLenum )bswap_ENUM ( pc + 16 ) - ) ); -} - -void __glXDispSwap_DrawPixels(GLbyte * pc) -{ - const GLvoid * const pixels = (const GLvoid *) (pc + 36); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_DrawPixels( GET_DISPATCH(), ( - (GLsizei )bswap_CARD32 ( pc + 20 ), - (GLsizei )bswap_CARD32 ( pc + 24 ), - (GLenum )bswap_ENUM ( pc + 28 ), - (GLenum )bswap_ENUM ( pc + 32 ), - pixels - ) ); -} - -int __glXDispSwap_GetBooleanv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 ); - - const GLuint compsize = __glGetBooleanv_size(pname); - GLboolean answerBuffer[200]; - GLboolean * params = __glXGetAnswerBuffer(cl, compsize, answerBuffer, sizeof(answerBuffer), 1); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetBooleanv( GET_DISPATCH(), ( - pname, - params - ) ); - __glXSendReplySwap(cl->client, params, compsize, 1, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetClipPlane(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLdouble equation[4]; - CALL_GetClipPlane( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - equation - ) ); - (void) bswap_64_array( (uint64_t *) equation, 4 ); - __glXSendReplySwap(cl->client, equation, 4, 8, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetDoublev(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 ); - - const GLuint compsize = __glGetDoublev_size(pname); - GLdouble answerBuffer[200]; - GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetDoublev( GET_DISPATCH(), ( - pname, - params - ) ); - (void) bswap_64_array( (uint64_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetError(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLenum retval; - retval = CALL_GetError( GET_DISPATCH(), () ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetFloatv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 ); - - const GLuint compsize = __glGetFloatv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetFloatv( GET_DISPATCH(), ( - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetIntegerv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 ); - - const GLuint compsize = __glGetIntegerv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetIntegerv( GET_DISPATCH(), ( - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetLightfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetLightfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetLightfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetLightiv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetLightiv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetLightiv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetMapdv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum target = (GLenum )bswap_ENUM ( pc + 0 ); - const GLenum query = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetMapdv_size(target,query); - GLdouble answerBuffer[200]; - GLdouble * v = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8); - - if (v == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMapdv( GET_DISPATCH(), ( - target, - query, - v - ) ); - (void) bswap_64_array( (uint64_t *) v, compsize ); - __glXSendReplySwap(cl->client, v, compsize, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetMapfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum target = (GLenum )bswap_ENUM ( pc + 0 ); - const GLenum query = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetMapfv_size(target,query); - GLfloat answerBuffer[200]; - GLfloat * v = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (v == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMapfv( GET_DISPATCH(), ( - target, - query, - v - ) ); - (void) bswap_32_array( (uint32_t *) v, compsize ); - __glXSendReplySwap(cl->client, v, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetMapiv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum target = (GLenum )bswap_ENUM ( pc + 0 ); - const GLenum query = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetMapiv_size(target,query); - GLint answerBuffer[200]; - GLint * v = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (v == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMapiv( GET_DISPATCH(), ( - target, - query, - v - ) ); - (void) bswap_32_array( (uint32_t *) v, compsize ); - __glXSendReplySwap(cl->client, v, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetMaterialfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetMaterialfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMaterialfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetMaterialiv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetMaterialiv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMaterialiv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetPixelMapfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum map = (GLenum )bswap_ENUM ( pc + 0 ); - - const GLuint compsize = __glGetPixelMapfv_size(map); - GLfloat answerBuffer[200]; - GLfloat * values = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (values == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetPixelMapfv( GET_DISPATCH(), ( - map, - values - ) ); - (void) bswap_32_array( (uint32_t *) values, compsize ); - __glXSendReplySwap(cl->client, values, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetPixelMapuiv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum map = (GLenum )bswap_ENUM ( pc + 0 ); - - const GLuint compsize = __glGetPixelMapuiv_size(map); - GLuint answerBuffer[200]; - GLuint * values = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (values == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetPixelMapuiv( GET_DISPATCH(), ( - map, - values - ) ); - (void) bswap_32_array( (uint32_t *) values, compsize ); - __glXSendReplySwap(cl->client, values, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetPixelMapusv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum map = (GLenum )bswap_ENUM ( pc + 0 ); - - const GLuint compsize = __glGetPixelMapusv_size(map); - GLushort answerBuffer[200]; - GLushort * values = __glXGetAnswerBuffer(cl, compsize * 2, answerBuffer, sizeof(answerBuffer), 2); - - if (values == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetPixelMapusv( GET_DISPATCH(), ( - map, - values - ) ); - (void) bswap_16_array( (uint16_t *) values, compsize ); - __glXSendReplySwap(cl->client, values, compsize, 2, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetTexEnvfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetTexEnvfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexEnvfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetTexEnviv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetTexEnviv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexEnviv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetTexGendv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetTexGendv_size(pname); - GLdouble answerBuffer[200]; - GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexGendv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_64_array( (uint64_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetTexGenfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetTexGenfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexGenfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetTexGeniv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetTexGeniv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexGeniv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetTexParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetTexParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetTexParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetTexParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetTexLevelParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 8 ); - - const GLuint compsize = __glGetTexLevelParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexLevelParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetTexLevelParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 8 ); - - const GLuint compsize = __glGetTexLevelParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetTexLevelParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_IsEnabled(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsEnabled( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -int __glXDispSwap_IsList(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsList( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDispSwap_DepthRange(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 16); - pc -= 4; - } -#endif - - CALL_DepthRange( GET_DISPATCH(), ( - (GLclampd)bswap_FLOAT64( pc + 0 ), - (GLclampd)bswap_FLOAT64( pc + 8 ) - ) ); -} - -void __glXDispSwap_Frustum(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 48); - pc -= 4; - } -#endif - - CALL_Frustum( GET_DISPATCH(), ( - (GLdouble)bswap_FLOAT64( pc + 0 ), - (GLdouble)bswap_FLOAT64( pc + 8 ), - (GLdouble)bswap_FLOAT64( pc + 16 ), - (GLdouble)bswap_FLOAT64( pc + 24 ), - (GLdouble)bswap_FLOAT64( pc + 32 ), - (GLdouble)bswap_FLOAT64( pc + 40 ) - ) ); -} - -void __glXDispSwap_LoadIdentity(GLbyte * pc) -{ - CALL_LoadIdentity( GET_DISPATCH(), () ); -} - -void __glXDispSwap_LoadMatrixf(GLbyte * pc) -{ - CALL_LoadMatrixf( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 16 ) - ) ); -} - -void __glXDispSwap_LoadMatrixd(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 128); - pc -= 4; - } -#endif - - CALL_LoadMatrixd( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 16 ) - ) ); -} - -void __glXDispSwap_MatrixMode(GLbyte * pc) -{ - CALL_MatrixMode( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_MultMatrixf(GLbyte * pc) -{ - CALL_MultMatrixf( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 16 ) - ) ); -} - -void __glXDispSwap_MultMatrixd(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 128); - pc -= 4; - } -#endif - - CALL_MultMatrixd( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 16 ) - ) ); -} - -void __glXDispSwap_Ortho(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 48); - pc -= 4; - } -#endif - - CALL_Ortho( GET_DISPATCH(), ( - (GLdouble)bswap_FLOAT64( pc + 0 ), - (GLdouble)bswap_FLOAT64( pc + 8 ), - (GLdouble)bswap_FLOAT64( pc + 16 ), - (GLdouble)bswap_FLOAT64( pc + 24 ), - (GLdouble)bswap_FLOAT64( pc + 32 ), - (GLdouble)bswap_FLOAT64( pc + 40 ) - ) ); -} - -void __glXDispSwap_PopMatrix(GLbyte * pc) -{ - CALL_PopMatrix( GET_DISPATCH(), () ); -} - -void __glXDispSwap_PushMatrix(GLbyte * pc) -{ - CALL_PushMatrix( GET_DISPATCH(), () ); -} - -void __glXDispSwap_Rotated(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 32); - pc -= 4; - } -#endif - - CALL_Rotated( GET_DISPATCH(), ( - (GLdouble)bswap_FLOAT64( pc + 0 ), - (GLdouble)bswap_FLOAT64( pc + 8 ), - (GLdouble)bswap_FLOAT64( pc + 16 ), - (GLdouble)bswap_FLOAT64( pc + 24 ) - ) ); -} - -void __glXDispSwap_Rotatef(GLbyte * pc) -{ - CALL_Rotatef( GET_DISPATCH(), ( - (GLfloat )bswap_FLOAT32( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ), - (GLfloat )bswap_FLOAT32( pc + 12 ) - ) ); -} - -void __glXDispSwap_Scaled(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_Scaled( GET_DISPATCH(), ( - (GLdouble)bswap_FLOAT64( pc + 0 ), - (GLdouble)bswap_FLOAT64( pc + 8 ), - (GLdouble)bswap_FLOAT64( pc + 16 ) - ) ); -} - -void __glXDispSwap_Scalef(GLbyte * pc) -{ - CALL_Scalef( GET_DISPATCH(), ( - (GLfloat )bswap_FLOAT32( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ) - ) ); -} - -void __glXDispSwap_Translated(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_Translated( GET_DISPATCH(), ( - (GLdouble)bswap_FLOAT64( pc + 0 ), - (GLdouble)bswap_FLOAT64( pc + 8 ), - (GLdouble)bswap_FLOAT64( pc + 16 ) - ) ); -} - -void __glXDispSwap_Translatef(GLbyte * pc) -{ - CALL_Translatef( GET_DISPATCH(), ( - (GLfloat )bswap_FLOAT32( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ) - ) ); -} - -void __glXDispSwap_Viewport(GLbyte * pc) -{ - CALL_Viewport( GET_DISPATCH(), ( - (GLint )bswap_CARD32 ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLsizei )bswap_CARD32 ( pc + 8 ), - (GLsizei )bswap_CARD32 ( pc + 12 ) - ) ); -} - -void __glXDispSwap_BindTexture(GLbyte * pc) -{ - CALL_BindTexture( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ) - ) ); -} - -void __glXDispSwap_Indexubv(GLbyte * pc) -{ - CALL_Indexubv( GET_DISPATCH(), ( - (const GLubyte *)(pc + 0) - ) ); -} - -void __glXDispSwap_PolygonOffset(GLbyte * pc) -{ - CALL_PolygonOffset( GET_DISPATCH(), ( - (GLfloat )bswap_FLOAT32( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ) - ) ); -} - -int __glXDispSwap_AreTexturesResident(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - GLboolean retval; - GLboolean answerBuffer[200]; - GLboolean * residences = __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1); - retval = CALL_AreTexturesResident( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ), - residences - ) ); - __glXSendReplySwap(cl->client, residences, n, 1, GL_TRUE, retval); - error = Success; - } - - return error; -} - -int __glXDispSwap_AreTexturesResidentEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - GLboolean retval; - GLboolean answerBuffer[200]; - GLboolean * residences = __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1); - retval = CALL_AreTexturesResident( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ), - residences - ) ); - __glXSendReplySwap(cl->client, residences, n, 1, GL_TRUE, retval); - error = Success; - } - - return error; -} - -void __glXDispSwap_CopyTexImage1D(GLbyte * pc) -{ - CALL_CopyTexImage1D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ), - (GLsizei )bswap_CARD32 ( pc + 20 ), - (GLint )bswap_CARD32 ( pc + 24 ) - ) ); -} - -void __glXDispSwap_CopyTexImage2D(GLbyte * pc) -{ - CALL_CopyTexImage2D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ), - (GLsizei )bswap_CARD32 ( pc + 20 ), - (GLsizei )bswap_CARD32 ( pc + 24 ), - (GLint )bswap_CARD32 ( pc + 28 ) - ) ); -} - -void __glXDispSwap_CopyTexSubImage1D(GLbyte * pc) -{ - CALL_CopyTexSubImage1D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ), - (GLsizei )bswap_CARD32 ( pc + 20 ) - ) ); -} - -void __glXDispSwap_CopyTexSubImage2D(GLbyte * pc) -{ - CALL_CopyTexSubImage2D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ), - (GLint )bswap_CARD32 ( pc + 20 ), - (GLsizei )bswap_CARD32 ( pc + 24 ), - (GLsizei )bswap_CARD32 ( pc + 28 ) - ) ); -} - -int __glXDispSwap_DeleteTextures(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - CALL_DeleteTextures( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ) - ) ); - error = Success; - } - - return error; -} - -int __glXDispSwap_DeleteTexturesEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - CALL_DeleteTextures( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ) - ) ); - error = Success; - } - - return error; -} - -int __glXDispSwap_GenTextures(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - GLuint answerBuffer[200]; - GLuint * textures = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenTextures( GET_DISPATCH(), ( - n, - textures - ) ); - (void) bswap_32_array( (uint32_t *) textures, n ); - __glXSendReplySwap(cl->client, textures, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GenTexturesEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - GLuint answerBuffer[200]; - GLuint * textures = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenTextures( GET_DISPATCH(), ( - n, - textures - ) ); - (void) bswap_32_array( (uint32_t *) textures, n ); - __glXSendReplySwap(cl->client, textures, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_IsTexture(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsTexture( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -int __glXDispSwap_IsTextureEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsTexture( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDispSwap_PrioritizeTextures(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - CALL_PrioritizeTextures( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ), - (const GLclampf *)bswap_32_array( (uint32_t *) (pc + 4), 0 ) - ) ); -} - -void __glXDispSwap_TexSubImage1D(GLbyte * pc) -{ - const CARD32 ptr_is_null = *(CARD32 *)(pc + 52); - const GLvoid * const pixels = (const GLvoid *) (ptr_is_null != 0) ? NULL : (pc + 56); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_TexSubImage1D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 20 ), - (GLint )bswap_CARD32 ( pc + 24 ), - (GLint )bswap_CARD32 ( pc + 28 ), - (GLsizei )bswap_CARD32 ( pc + 36 ), - (GLenum )bswap_ENUM ( pc + 44 ), - (GLenum )bswap_ENUM ( pc + 48 ), - pixels - ) ); -} - -void __glXDispSwap_TexSubImage2D(GLbyte * pc) -{ - const CARD32 ptr_is_null = *(CARD32 *)(pc + 52); - const GLvoid * const pixels = (const GLvoid *) (ptr_is_null != 0) ? NULL : (pc + 56); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_TexSubImage2D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 20 ), - (GLint )bswap_CARD32 ( pc + 24 ), - (GLint )bswap_CARD32 ( pc + 28 ), - (GLint )bswap_CARD32 ( pc + 32 ), - (GLsizei )bswap_CARD32 ( pc + 36 ), - (GLsizei )bswap_CARD32 ( pc + 40 ), - (GLenum )bswap_ENUM ( pc + 44 ), - (GLenum )bswap_ENUM ( pc + 48 ), - pixels - ) ); -} - -void __glXDispSwap_BlendColor(GLbyte * pc) -{ - CALL_BlendColor( GET_DISPATCH(), ( - (GLclampf)bswap_FLOAT32( pc + 0 ), - (GLclampf)bswap_FLOAT32( pc + 4 ), - (GLclampf)bswap_FLOAT32( pc + 8 ), - (GLclampf)bswap_FLOAT32( pc + 12 ) - ) ); -} - -void __glXDispSwap_BlendEquation(GLbyte * pc) -{ - CALL_BlendEquation( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_ColorTable(GLbyte * pc) -{ - const GLvoid * const table = (const GLvoid *) (pc + 40); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_ColorTable( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 20 ), - (GLenum )bswap_ENUM ( pc + 24 ), - (GLsizei )bswap_CARD32 ( pc + 28 ), - (GLenum )bswap_ENUM ( pc + 32 ), - (GLenum )bswap_ENUM ( pc + 36 ), - table - ) ); -} - -void __glXDispSwap_ColorTableParameterfv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLfloat * params; - - params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 8), __glColorTableParameterfv_size(pname) ); - - CALL_ColorTableParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_ColorTableParameteriv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLint * params; - - params = (const GLint *) bswap_32_array( (uint32_t *) (pc + 8), __glColorTableParameteriv_size(pname) ); - - CALL_ColorTableParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_CopyColorTable(GLbyte * pc) -{ - CALL_CopyColorTable( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLsizei )bswap_CARD32 ( pc + 16 ) - ) ); -} - -int __glXDispSwap_GetColorTableParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetColorTableParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetColorTableParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetColorTableParameterfvSGI(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetColorTableParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetColorTableParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetColorTableParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetColorTableParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetColorTableParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetColorTableParameterivSGI(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetColorTableParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetColorTableParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -void __glXDispSwap_ColorSubTable(GLbyte * pc) -{ - const GLvoid * const data = (const GLvoid *) (pc + 40); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_ColorSubTable( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 20 ), - (GLsizei )bswap_CARD32 ( pc + 24 ), - (GLsizei )bswap_CARD32 ( pc + 28 ), - (GLenum )bswap_ENUM ( pc + 32 ), - (GLenum )bswap_ENUM ( pc + 36 ), - data - ) ); -} - -void __glXDispSwap_CopyColorSubTable(GLbyte * pc) -{ - CALL_CopyColorSubTable( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLsizei )bswap_CARD32 ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLsizei )bswap_CARD32 ( pc + 16 ) - ) ); -} - -void __glXDispSwap_ConvolutionFilter1D(GLbyte * pc) -{ - const GLvoid * const image = (const GLvoid *) (pc + 44); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_ConvolutionFilter1D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 20 ), - (GLenum )bswap_ENUM ( pc + 24 ), - (GLsizei )bswap_CARD32 ( pc + 28 ), - (GLenum )bswap_ENUM ( pc + 36 ), - (GLenum )bswap_ENUM ( pc + 40 ), - image - ) ); -} - -void __glXDispSwap_ConvolutionFilter2D(GLbyte * pc) -{ - const GLvoid * const image = (const GLvoid *) (pc + 44); - __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_ConvolutionFilter2D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 20 ), - (GLenum )bswap_ENUM ( pc + 24 ), - (GLsizei )bswap_CARD32 ( pc + 28 ), - (GLsizei )bswap_CARD32 ( pc + 32 ), - (GLenum )bswap_ENUM ( pc + 36 ), - (GLenum )bswap_ENUM ( pc + 40 ), - image - ) ); -} - -void __glXDispSwap_ConvolutionParameterf(GLbyte * pc) -{ - CALL_ConvolutionParameterf( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLfloat )bswap_FLOAT32( pc + 8 ) - ) ); -} - -void __glXDispSwap_ConvolutionParameterfv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLfloat * params; - - params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 8), __glConvolutionParameterfv_size(pname) ); - - CALL_ConvolutionParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_ConvolutionParameteri(GLbyte * pc) -{ - CALL_ConvolutionParameteri( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ) - ) ); -} - -void __glXDispSwap_ConvolutionParameteriv(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - const GLint * params; - - params = (const GLint *) bswap_32_array( (uint32_t *) (pc + 8), __glConvolutionParameteriv_size(pname) ); - - CALL_ConvolutionParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); -} - -void __glXDispSwap_CopyConvolutionFilter1D(GLbyte * pc) -{ - CALL_CopyConvolutionFilter1D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLsizei )bswap_CARD32 ( pc + 16 ) - ) ); -} - -void __glXDispSwap_CopyConvolutionFilter2D(GLbyte * pc) -{ - CALL_CopyConvolutionFilter2D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLsizei )bswap_CARD32 ( pc + 16 ), - (GLsizei )bswap_CARD32 ( pc + 20 ) - ) ); -} - -int __glXDispSwap_GetConvolutionParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetConvolutionParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetConvolutionParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetConvolutionParameterfvEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetConvolutionParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetConvolutionParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetConvolutionParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetConvolutionParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetConvolutionParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetConvolutionParameterivEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetConvolutionParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetConvolutionParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetHistogramParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetHistogramParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetHistogramParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetHistogramParameterfvEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetHistogramParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetHistogramParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetHistogramParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetHistogramParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetHistogramParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetHistogramParameterivEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetHistogramParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetHistogramParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetMinmaxParameterfv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetMinmaxParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMinmaxParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetMinmaxParameterfvEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetMinmaxParameterfv_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMinmaxParameterfv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetMinmaxParameteriv(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetMinmaxParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMinmaxParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetMinmaxParameterivEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetMinmaxParameteriv_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetMinmaxParameteriv( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -void __glXDispSwap_Histogram(GLbyte * pc) -{ - CALL_Histogram( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLsizei )bswap_CARD32 ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - *(GLboolean *)(pc + 12) - ) ); -} - -void __glXDispSwap_Minmax(GLbyte * pc) -{ - CALL_Minmax( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - *(GLboolean *)(pc + 8) - ) ); -} - -void __glXDispSwap_ResetHistogram(GLbyte * pc) -{ - CALL_ResetHistogram( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_ResetMinmax(GLbyte * pc) -{ - CALL_ResetMinmax( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_TexImage3D(GLbyte * pc) -{ - const CARD32 ptr_is_null = *(CARD32 *)(pc + 76); - const GLvoid * const pixels = (const GLvoid *) (ptr_is_null != 0) ? NULL : (pc + 80); - __GLXpixel3DHeader * const hdr = (__GLXpixel3DHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_IMAGE_HEIGHT, (GLint) bswap_CARD32( & hdr->imageHeight )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_IMAGES, (GLint) bswap_CARD32( & hdr->skipImages )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_TexImage3D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 36 ), - (GLint )bswap_CARD32 ( pc + 40 ), - (GLint )bswap_CARD32 ( pc + 44 ), - (GLsizei )bswap_CARD32 ( pc + 48 ), - (GLsizei )bswap_CARD32 ( pc + 52 ), - (GLsizei )bswap_CARD32 ( pc + 56 ), - (GLint )bswap_CARD32 ( pc + 64 ), - (GLenum )bswap_ENUM ( pc + 68 ), - (GLenum )bswap_ENUM ( pc + 72 ), - pixels - ) ); -} - -void __glXDispSwap_TexSubImage3D(GLbyte * pc) -{ - const CARD32 ptr_is_null = *(CARD32 *)(pc + 84); - const GLvoid * const pixels = (const GLvoid *) (ptr_is_null != 0) ? NULL : (pc + 88); - __GLXpixel3DHeader * const hdr = (__GLXpixel3DHeader *)(pc); - - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32( & hdr->rowLength )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_IMAGE_HEIGHT, (GLint) bswap_CARD32( & hdr->imageHeight )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32( & hdr->skipRows )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_IMAGES, (GLint) bswap_CARD32( & hdr->skipImages )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, (GLint) bswap_CARD32( & hdr->skipPixels )) ); - CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32( & hdr->alignment )) ); - - CALL_TexSubImage3D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 36 ), - (GLint )bswap_CARD32 ( pc + 40 ), - (GLint )bswap_CARD32 ( pc + 44 ), - (GLint )bswap_CARD32 ( pc + 48 ), - (GLint )bswap_CARD32 ( pc + 52 ), - (GLsizei )bswap_CARD32 ( pc + 60 ), - (GLsizei )bswap_CARD32 ( pc + 64 ), - (GLsizei )bswap_CARD32 ( pc + 68 ), - (GLenum )bswap_ENUM ( pc + 76 ), - (GLenum )bswap_ENUM ( pc + 80 ), - pixels - ) ); -} - -void __glXDispSwap_CopyTexSubImage3D(GLbyte * pc) -{ - CALL_CopyTexSubImage3D( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ), - (GLint )bswap_CARD32 ( pc + 20 ), - (GLint )bswap_CARD32 ( pc + 24 ), - (GLsizei )bswap_CARD32 ( pc + 28 ), - (GLsizei )bswap_CARD32 ( pc + 32 ) - ) ); -} - -void __glXDispSwap_ActiveTextureARB(GLbyte * pc) -{ - CALL_ActiveTextureARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord1dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 12); - pc -= 4; - } -#endif - - CALL_MultiTexCoord1dvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 8 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord1fvARB(GLbyte * pc) -{ - CALL_MultiTexCoord1fvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 1 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord1ivARB(GLbyte * pc) -{ - CALL_MultiTexCoord1ivARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLint *)bswap_32_array( (uint32_t *) (pc + 4), 1 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord1svARB(GLbyte * pc) -{ - CALL_MultiTexCoord1svARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 1 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord2dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 20); - pc -= 4; - } -#endif - - CALL_MultiTexCoord2dvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 16 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 2 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord2fvARB(GLbyte * pc) -{ - CALL_MultiTexCoord2fvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 2 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord2ivARB(GLbyte * pc) -{ - CALL_MultiTexCoord2ivARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLint *)bswap_32_array( (uint32_t *) (pc + 4), 2 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord2svARB(GLbyte * pc) -{ - CALL_MultiTexCoord2svARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 2 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord3dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 28); - pc -= 4; - } -#endif - - CALL_MultiTexCoord3dvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 24 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord3fvARB(GLbyte * pc) -{ - CALL_MultiTexCoord3fvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 3 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord3ivARB(GLbyte * pc) -{ - CALL_MultiTexCoord3ivARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLint *)bswap_32_array( (uint32_t *) (pc + 4), 3 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord3svARB(GLbyte * pc) -{ - CALL_MultiTexCoord3svARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 3 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord4dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 36); - pc -= 4; - } -#endif - - CALL_MultiTexCoord4dvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 32 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord4fvARB(GLbyte * pc) -{ - CALL_MultiTexCoord4fvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord4ivARB(GLbyte * pc) -{ - CALL_MultiTexCoord4ivARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLint *)bswap_32_array( (uint32_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_MultiTexCoord4svARB(GLbyte * pc) -{ - CALL_MultiTexCoord4svARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_SampleCoverageARB(GLbyte * pc) -{ - CALL_SampleCoverageARB( GET_DISPATCH(), ( - (GLclampf)bswap_FLOAT32( pc + 0 ), - *(GLboolean *)(pc + 4) - ) ); -} - -void __glXDispSwap_CompressedTexImage1DARB(GLbyte * pc) -{ - const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 20 ); - - CALL_CompressedTexImage1DARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLsizei )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ), - imageSize, - (const GLvoid *)(pc + 24) - ) ); -} - -void __glXDispSwap_CompressedTexImage2DARB(GLbyte * pc) -{ - const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 24 ); - - CALL_CompressedTexImage2DARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLsizei )bswap_CARD32 ( pc + 12 ), - (GLsizei )bswap_CARD32 ( pc + 16 ), - (GLint )bswap_CARD32 ( pc + 20 ), - imageSize, - (const GLvoid *)(pc + 28) - ) ); -} - -void __glXDispSwap_CompressedTexImage3DARB(GLbyte * pc) -{ - const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 28 ); - - CALL_CompressedTexImage3DARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLsizei )bswap_CARD32 ( pc + 12 ), - (GLsizei )bswap_CARD32 ( pc + 16 ), - (GLsizei )bswap_CARD32 ( pc + 20 ), - (GLint )bswap_CARD32 ( pc + 24 ), - imageSize, - (const GLvoid *)(pc + 32) - ) ); -} - -void __glXDispSwap_CompressedTexSubImage1DARB(GLbyte * pc) -{ - const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 20 ); - - CALL_CompressedTexSubImage1DARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLsizei )bswap_CARD32 ( pc + 12 ), - (GLenum )bswap_ENUM ( pc + 16 ), - imageSize, - (const GLvoid *)(pc + 24) - ) ); -} - -void __glXDispSwap_CompressedTexSubImage2DARB(GLbyte * pc) -{ - const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 28 ); - - CALL_CompressedTexSubImage2DARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLsizei )bswap_CARD32 ( pc + 16 ), - (GLsizei )bswap_CARD32 ( pc + 20 ), - (GLenum )bswap_ENUM ( pc + 24 ), - imageSize, - (const GLvoid *)(pc + 32) - ) ); -} - -void __glXDispSwap_CompressedTexSubImage3DARB(GLbyte * pc) -{ - const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 36 ); - - CALL_CompressedTexSubImage3DARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ), - (GLint )bswap_CARD32 ( pc + 8 ), - (GLint )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ), - (GLsizei )bswap_CARD32 ( pc + 20 ), - (GLsizei )bswap_CARD32 ( pc + 24 ), - (GLsizei )bswap_CARD32 ( pc + 28 ), - (GLenum )bswap_ENUM ( pc + 32 ), - imageSize, - (const GLvoid *)(pc + 40) - ) ); -} - -int __glXDispSwap_GetProgramEnvParameterdvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLdouble params[4]; - CALL_GetProgramEnvParameterdvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - params - ) ); - (void) bswap_64_array( (uint64_t *) params, 4 ); - __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetProgramEnvParameterfvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLfloat params[4]; - CALL_GetProgramEnvParameterfvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - params - ) ); - (void) bswap_32_array( (uint32_t *) params, 4 ); - __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetProgramLocalParameterdvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLdouble params[4]; - CALL_GetProgramLocalParameterdvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - params - ) ); - (void) bswap_64_array( (uint64_t *) params, 4 ); - __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetProgramLocalParameterfvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLfloat params[4]; - CALL_GetProgramLocalParameterfvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - params - ) ); - (void) bswap_32_array( (uint32_t *) params, 4 ); - __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetProgramivARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetProgramivARB_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetProgramivARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetVertexAttribdvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetVertexAttribdvARB_size(pname); - GLdouble answerBuffer[200]; - GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribdvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - pname, - params - ) ); - (void) bswap_64_array( (uint64_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetVertexAttribfvARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetVertexAttribfvARB_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribfvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetVertexAttribivARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetVertexAttribivARB_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribivARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -void __glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 40); - pc -= 4; - } -#endif - - CALL_ProgramEnvParameter4dvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 8), 4 ) - ) ); -} - -void __glXDispSwap_ProgramEnvParameter4fvARB(GLbyte * pc) -{ - CALL_ProgramEnvParameter4fvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 4 ) - ) ); -} - -void __glXDispSwap_ProgramLocalParameter4dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 40); - pc -= 4; - } -#endif - - CALL_ProgramLocalParameter4dvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 8), 4 ) - ) ); -} - -void __glXDispSwap_ProgramLocalParameter4fvARB(GLbyte * pc) -{ - CALL_ProgramLocalParameter4fvARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 4 ) - ) ); -} - -void __glXDispSwap_ProgramStringARB(GLbyte * pc) -{ - const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 8 ); - - CALL_ProgramStringARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - len, - (const GLvoid *)(pc + 12) - ) ); -} - -void __glXDispSwap_VertexAttrib1dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 12); - pc -= 4; - } -#endif - - CALL_VertexAttrib1dvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 1 ) - ) ); -} - -void __glXDispSwap_VertexAttrib1fvARB(GLbyte * pc) -{ - CALL_VertexAttrib1fvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 1 ) - ) ); -} - -void __glXDispSwap_VertexAttrib1svARB(GLbyte * pc) -{ - CALL_VertexAttrib1svARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 1 ) - ) ); -} - -void __glXDispSwap_VertexAttrib2dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 20); - pc -= 4; - } -#endif - - CALL_VertexAttrib2dvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 2 ) - ) ); -} - -void __glXDispSwap_VertexAttrib2fvARB(GLbyte * pc) -{ - CALL_VertexAttrib2fvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 2 ) - ) ); -} - -void __glXDispSwap_VertexAttrib2svARB(GLbyte * pc) -{ - CALL_VertexAttrib2svARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 2 ) - ) ); -} - -void __glXDispSwap_VertexAttrib3dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 28); - pc -= 4; - } -#endif - - CALL_VertexAttrib3dvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 3 ) - ) ); -} - -void __glXDispSwap_VertexAttrib3fvARB(GLbyte * pc) -{ - CALL_VertexAttrib3fvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 3 ) - ) ); -} - -void __glXDispSwap_VertexAttrib3svARB(GLbyte * pc) -{ - CALL_VertexAttrib3svARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 3 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4NbvARB(GLbyte * pc) -{ - CALL_VertexAttrib4NbvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLbyte *)(pc + 4) - ) ); -} - -void __glXDispSwap_VertexAttrib4NivARB(GLbyte * pc) -{ - CALL_VertexAttrib4NivARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLint *)bswap_32_array( (uint32_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4NsvARB(GLbyte * pc) -{ - CALL_VertexAttrib4NsvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4NubvARB(GLbyte * pc) -{ - CALL_VertexAttrib4NubvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLubyte *)(pc + 4) - ) ); -} - -void __glXDispSwap_VertexAttrib4NuivARB(GLbyte * pc) -{ - CALL_VertexAttrib4NuivARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4NusvARB(GLbyte * pc) -{ - CALL_VertexAttrib4NusvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLushort *)bswap_16_array( (uint16_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4bvARB(GLbyte * pc) -{ - CALL_VertexAttrib4bvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLbyte *)(pc + 4) - ) ); -} - -void __glXDispSwap_VertexAttrib4dvARB(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 36); - pc -= 4; - } -#endif - - CALL_VertexAttrib4dvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4fvARB(GLbyte * pc) -{ - CALL_VertexAttrib4fvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4ivARB(GLbyte * pc) -{ - CALL_VertexAttrib4ivARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLint *)bswap_32_array( (uint32_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4svARB(GLbyte * pc) -{ - CALL_VertexAttrib4svARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4ubvARB(GLbyte * pc) -{ - CALL_VertexAttrib4ubvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLubyte *)(pc + 4) - ) ); -} - -void __glXDispSwap_VertexAttrib4uivARB(GLbyte * pc) -{ - CALL_VertexAttrib4uivARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4usvARB(GLbyte * pc) -{ - CALL_VertexAttrib4usvARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLushort *)bswap_16_array( (uint16_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_BeginQueryARB(GLbyte * pc) -{ - CALL_BeginQueryARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ) - ) ); -} - -int __glXDispSwap_DeleteQueriesARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - CALL_DeleteQueriesARB( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ) - ) ); - error = Success; - } - - return error; -} - -void __glXDispSwap_EndQueryARB(GLbyte * pc) -{ - CALL_EndQueryARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -int __glXDispSwap_GenQueriesARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - GLuint answerBuffer[200]; - GLuint * ids = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenQueriesARB( GET_DISPATCH(), ( - n, - ids - ) ); - (void) bswap_32_array( (uint32_t *) ids, n ); - __glXSendReplySwap(cl->client, ids, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetQueryObjectivARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetQueryObjectivARB_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetQueryObjectivARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetQueryObjectuivARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetQueryObjectuivARB_size(pname); - GLuint answerBuffer[200]; - GLuint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetQueryObjectuivARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetQueryivARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetQueryivARB_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetQueryivARB( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_IsQueryARB(__GLXclientState *cl, GLbyte *pc) -{ - xGLXSingleReq * const req = (xGLXSingleReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_SINGLE_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsQueryARB( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDispSwap_DrawBuffersARB(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - CALL_DrawBuffersARB( GET_DISPATCH(), ( - n, - (const GLenum *)bswap_32_array( (uint32_t *) (pc + 4), 0 ) - ) ); -} - -void __glXDispSwap_SampleMaskSGIS(GLbyte * pc) -{ - CALL_SampleMaskSGIS( GET_DISPATCH(), ( - (GLclampf)bswap_FLOAT32( pc + 0 ), - *(GLboolean *)(pc + 4) - ) ); -} - -void __glXDispSwap_SamplePatternSGIS(GLbyte * pc) -{ - CALL_SamplePatternSGIS( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -void __glXDispSwap_PointParameterfEXT(GLbyte * pc) -{ - CALL_PointParameterfEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLfloat )bswap_FLOAT32( pc + 4 ) - ) ); -} - -void __glXDispSwap_PointParameterfvEXT(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 ); - const GLfloat * params; - - params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 4), __glPointParameterfvEXT_size(pname) ); - - CALL_PointParameterfvEXT( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDispSwap_SecondaryColor3bvEXT(GLbyte * pc) -{ - CALL_SecondaryColor3bvEXT( GET_DISPATCH(), ( - (const GLbyte *)(pc + 0) - ) ); -} - -void __glXDispSwap_SecondaryColor3dvEXT(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 24); - pc -= 4; - } -#endif - - CALL_SecondaryColor3dvEXT( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_SecondaryColor3fvEXT(GLbyte * pc) -{ - CALL_SecondaryColor3fvEXT( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_SecondaryColor3ivEXT(GLbyte * pc) -{ - CALL_SecondaryColor3ivEXT( GET_DISPATCH(), ( - (const GLint *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_SecondaryColor3svEXT(GLbyte * pc) -{ - CALL_SecondaryColor3svEXT( GET_DISPATCH(), ( - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_SecondaryColor3ubvEXT(GLbyte * pc) -{ - CALL_SecondaryColor3ubvEXT( GET_DISPATCH(), ( - (const GLubyte *)(pc + 0) - ) ); -} - -void __glXDispSwap_SecondaryColor3uivEXT(GLbyte * pc) -{ - CALL_SecondaryColor3uivEXT( GET_DISPATCH(), ( - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_SecondaryColor3usvEXT(GLbyte * pc) -{ - CALL_SecondaryColor3usvEXT( GET_DISPATCH(), ( - (const GLushort *)bswap_16_array( (uint16_t *) (pc + 0), 3 ) - ) ); -} - -void __glXDispSwap_FogCoorddvEXT(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 8); - pc -= 4; - } -#endif - - CALL_FogCoorddvEXT( GET_DISPATCH(), ( - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_FogCoordfvEXT(GLbyte * pc) -{ - CALL_FogCoordfvEXT( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 1 ) - ) ); -} - -void __glXDispSwap_BlendFuncSeparateEXT(GLbyte * pc) -{ - CALL_BlendFuncSeparateEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLenum )bswap_ENUM ( pc + 12 ) - ) ); -} - -void __glXDispSwap_WindowPos3fvMESA(GLbyte * pc) -{ - CALL_WindowPos3fvMESA( GET_DISPATCH(), ( - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 3 ) - ) ); -} - -int __glXDispSwap_AreProgramsResidentNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - GLboolean retval; - GLboolean answerBuffer[200]; - GLboolean * residences = __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1); - retval = CALL_AreProgramsResidentNV( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ), - residences - ) ); - __glXSendReplySwap(cl->client, residences, n, 1, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDispSwap_BindProgramNV(GLbyte * pc) -{ - CALL_BindProgramNV( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ) - ) ); -} - -int __glXDispSwap_DeleteProgramsNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - CALL_DeleteProgramsNV( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ) - ) ); - error = Success; - } - - return error; -} - -void __glXDispSwap_ExecuteProgramNV(GLbyte * pc) -{ - CALL_ExecuteProgramNV( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 4 ) - ) ); -} - -int __glXDispSwap_GenProgramsNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - GLuint answerBuffer[200]; - GLuint * programs = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenProgramsNV( GET_DISPATCH(), ( - n, - programs - ) ); - (void) bswap_32_array( (uint32_t *) programs, n ); - __glXSendReplySwap(cl->client, programs, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetProgramParameterdvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLdouble params[4]; - CALL_GetProgramParameterdvNV( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - params - ) ); - (void) bswap_64_array( (uint64_t *) params, 4 ); - __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetProgramParameterfvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLfloat params[4]; - CALL_GetProgramParameterfvNV( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - params - ) ); - (void) bswap_32_array( (uint32_t *) params, 4 ); - __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetProgramivNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetProgramivNV_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetProgramivNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetTrackMatrixivNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLint params[1]; - CALL_GetTrackMatrixivNV( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - params - ) ); - (void) bswap_32_array( (uint32_t *) params, 1 ); - __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetVertexAttribdvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetVertexAttribdvNV_size(pname); - GLdouble answerBuffer[200]; - GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribdvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - pname, - params - ) ); - (void) bswap_64_array( (uint64_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 8, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetVertexAttribfvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetVertexAttribfvNV_size(pname); - GLfloat answerBuffer[200]; - GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribfvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetVertexAttribivNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 ); - - const GLuint compsize = __glGetVertexAttribivNV_size(pname); - GLint answerBuffer[200]; - GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4); - - if (params == NULL) return BadAlloc; - __glXClearErrorOccured(); - - CALL_GetVertexAttribivNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - pname, - params - ) ); - (void) bswap_32_array( (uint32_t *) params, compsize ); - __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_IsProgramNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsProgramNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDispSwap_LoadProgramNV(GLbyte * pc) -{ - const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 8 ); - - CALL_LoadProgramNV( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - len, - (const GLubyte *)(pc + 12) - ) ); -} - -void __glXDispSwap_ProgramParameters4dvNV(GLbyte * pc) -{ - const GLuint num = (GLuint )bswap_CARD32 ( pc + 8 ); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 16 + __GLX_PAD((num * 32)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_ProgramParameters4dvNV( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - num, - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 12), 0 ) - ) ); -} - -void __glXDispSwap_ProgramParameters4fvNV(GLbyte * pc) -{ - const GLuint num = (GLuint )bswap_CARD32 ( pc + 8 ); - - CALL_ProgramParameters4fvNV( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - num, - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 12), 0 ) - ) ); -} - -void __glXDispSwap_RequestResidentProgramsNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - CALL_RequestResidentProgramsNV( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ) - ) ); -} - -void __glXDispSwap_TrackMatrixNV(GLbyte * pc) -{ - CALL_TrackMatrixNV( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLenum )bswap_ENUM ( pc + 12 ) - ) ); -} - -void __glXDispSwap_VertexAttrib1dvNV(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 12); - pc -= 4; - } -#endif - - CALL_VertexAttrib1dvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 1 ) - ) ); -} - -void __glXDispSwap_VertexAttrib1fvNV(GLbyte * pc) -{ - CALL_VertexAttrib1fvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 1 ) - ) ); -} - -void __glXDispSwap_VertexAttrib1svNV(GLbyte * pc) -{ - CALL_VertexAttrib1svNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 1 ) - ) ); -} - -void __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 20); - pc -= 4; - } -#endif - - CALL_VertexAttrib2dvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 2 ) - ) ); -} - -void __glXDispSwap_VertexAttrib2fvNV(GLbyte * pc) -{ - CALL_VertexAttrib2fvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 2 ) - ) ); -} - -void __glXDispSwap_VertexAttrib2svNV(GLbyte * pc) -{ - CALL_VertexAttrib2svNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 2 ) - ) ); -} - -void __glXDispSwap_VertexAttrib3dvNV(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 28); - pc -= 4; - } -#endif - - CALL_VertexAttrib3dvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 3 ) - ) ); -} - -void __glXDispSwap_VertexAttrib3fvNV(GLbyte * pc) -{ - CALL_VertexAttrib3fvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 3 ) - ) ); -} - -void __glXDispSwap_VertexAttrib3svNV(GLbyte * pc) -{ - CALL_VertexAttrib3svNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 3 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4dvNV(GLbyte * pc) -{ -#ifdef __GLX_ALIGN64 - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, 36); - pc -= 4; - } -#endif - - CALL_VertexAttrib4dvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4fvNV(GLbyte * pc) -{ - CALL_VertexAttrib4fvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4svNV(GLbyte * pc) -{ - CALL_VertexAttrib4svNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 4 ) - ) ); -} - -void __glXDispSwap_VertexAttrib4ubvNV(GLbyte * pc) -{ - CALL_VertexAttrib4ubvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - (const GLubyte *)(pc + 4) - ) ); -} - -void __glXDispSwap_VertexAttribs1dvNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 12 + __GLX_PAD((n * 8)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_VertexAttribs1dvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs1fvNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_VertexAttribs1fvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs1svNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_VertexAttribs1svNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs2dvNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 12 + __GLX_PAD((n * 16)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_VertexAttribs2dvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs2fvNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_VertexAttribs2fvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs2svNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_VertexAttribs2svNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs3dvNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 12 + __GLX_PAD((n * 24)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_VertexAttribs3dvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs3fvNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_VertexAttribs3fvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs3svNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_VertexAttribs3svNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 12 + __GLX_PAD((n * 32)) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_VertexAttribs4dvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs4fvNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_VertexAttribs4fvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs4svNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_VertexAttribs4svNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLshort *)bswap_16_array( (uint16_t *) (pc + 8), 0 ) - ) ); -} - -void __glXDispSwap_VertexAttribs4ubvNV(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_VertexAttribs4ubvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - n, - (const GLubyte *)(pc + 8) - ) ); -} - -void __glXDispSwap_PointParameteriNV(GLbyte * pc) -{ - CALL_PointParameteriNV( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLint )bswap_CARD32 ( pc + 4 ) - ) ); -} - -void __glXDispSwap_PointParameterivNV(GLbyte * pc) -{ - const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 ); - const GLint * params; - - params = (const GLint *) bswap_32_array( (uint32_t *) (pc + 4), __glPointParameterivNV_size(pname) ); - - CALL_PointParameterivNV( GET_DISPATCH(), ( - pname, - params - ) ); -} - -void __glXDispSwap_ActiveStencilFaceEXT(GLbyte * pc) -{ - CALL_ActiveStencilFaceEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -int __glXDispSwap_GetProgramNamedParameterdvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 4 ); - - GLdouble params[4]; - CALL_GetProgramNamedParameterdvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - len, - (const GLubyte *)(pc + 8), - params - ) ); - (void) bswap_64_array( (uint64_t *) params, 4 ); - __glXSendReplySwap(cl->client, params, 4, 8, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetProgramNamedParameterfvNV(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 4 ); - - GLfloat params[4]; - CALL_GetProgramNamedParameterfvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - len, - (const GLubyte *)(pc + 8), - params - ) ); - (void) bswap_32_array( (uint32_t *) params, 4 ); - __glXSendReplySwap(cl->client, params, 4, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -void __glXDispSwap_ProgramNamedParameter4dvNV(GLbyte * pc) -{ - const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 36 ); - -#ifdef __GLX_ALIGN64 - const GLuint cmdlen = 44 + __GLX_PAD(len) - 4; - if ((unsigned long)(pc) & 7) { - (void) memmove(pc-4, pc, cmdlen); - pc -= 4; - } -#endif - - CALL_ProgramNamedParameter4dvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 32 ), - len, - (const GLubyte *)(pc + 40), - (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 4 ) - ) ); -} - -void __glXDispSwap_ProgramNamedParameter4fvNV(GLbyte * pc) -{ - const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 4 ); - - CALL_ProgramNamedParameter4fvNV( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ), - len, - (const GLubyte *)(pc + 24), - (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 4 ) - ) ); -} - -void __glXDispSwap_BlendEquationSeparateEXT(GLbyte * pc) -{ - CALL_BlendEquationSeparateEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ) - ) ); -} - -void __glXDispSwap_BindFramebufferEXT(GLbyte * pc) -{ - CALL_BindFramebufferEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ) - ) ); -} - -void __glXDispSwap_BindRenderbufferEXT(GLbyte * pc) -{ - CALL_BindRenderbufferEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLuint )bswap_CARD32 ( pc + 4 ) - ) ); -} - -int __glXDispSwap_CheckFramebufferStatusEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLenum retval; - retval = CALL_CheckFramebufferStatusEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDispSwap_DeleteFramebuffersEXT(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - CALL_DeleteFramebuffersEXT( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ) - ) ); -} - -void __glXDispSwap_DeleteRenderbuffersEXT(GLbyte * pc) -{ - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - CALL_DeleteRenderbuffersEXT( GET_DISPATCH(), ( - n, - (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ) - ) ); -} - -void __glXDispSwap_FramebufferRenderbufferEXT(GLbyte * pc) -{ - CALL_FramebufferRenderbufferEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLuint )bswap_CARD32 ( pc + 12 ) - ) ); -} - -void __glXDispSwap_FramebufferTexture1DEXT(GLbyte * pc) -{ - CALL_FramebufferTexture1DEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLuint )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ) - ) ); -} - -void __glXDispSwap_FramebufferTexture2DEXT(GLbyte * pc) -{ - CALL_FramebufferTexture2DEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLuint )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ) - ) ); -} - -void __glXDispSwap_FramebufferTexture3DEXT(GLbyte * pc) -{ - CALL_FramebufferTexture3DEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - (GLuint )bswap_CARD32 ( pc + 12 ), - (GLint )bswap_CARD32 ( pc + 16 ), - (GLint )bswap_CARD32 ( pc + 20 ) - ) ); -} - -int __glXDispSwap_GenFramebuffersEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - GLuint answerBuffer[200]; - GLuint * framebuffers = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenFramebuffersEXT( GET_DISPATCH(), ( - n, - framebuffers - ) ); - (void) bswap_32_array( (uint32_t *) framebuffers, n ); - __glXSendReplySwap(cl->client, framebuffers, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GenRenderbuffersEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 ); - - GLuint answerBuffer[200]; - GLuint * renderbuffers = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4); - CALL_GenRenderbuffersEXT( GET_DISPATCH(), ( - n, - renderbuffers - ) ); - (void) bswap_32_array( (uint32_t *) renderbuffers, n ); - __glXSendReplySwap(cl->client, renderbuffers, n, 4, GL_TRUE, 0); - error = Success; - } - - return error; -} - -void __glXDispSwap_GenerateMipmapEXT(GLbyte * pc) -{ - CALL_GenerateMipmapEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ) - ) ); -} - -int __glXDispSwap_GetFramebufferAttachmentParameterivEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLint params[1]; - CALL_GetFramebufferAttachmentParameterivEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLenum )bswap_ENUM ( pc + 8 ), - params - ) ); - (void) bswap_32_array( (uint32_t *) params, 1 ); - __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_GetRenderbufferParameterivEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLint params[1]; - CALL_GetRenderbufferParameterivEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - params - ) ); - (void) bswap_32_array( (uint32_t *) params, 1 ); - __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0); - error = Success; - } - - return error; -} - -int __glXDispSwap_IsFramebufferEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsFramebufferEXT( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -int __glXDispSwap_IsRenderbufferEXT(__GLXclientState *cl, GLbyte *pc) -{ - xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc; - int error; - __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error); - - pc += __GLX_VENDPRIV_HDR_SIZE; - if ( cx != NULL ) { - GLboolean retval; - retval = CALL_IsRenderbufferEXT( GET_DISPATCH(), ( - (GLuint )bswap_CARD32 ( pc + 0 ) - ) ); - __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval); - error = Success; - } - - return error; -} - -void __glXDispSwap_RenderbufferStorageEXT(GLbyte * pc) -{ - CALL_RenderbufferStorageEXT( GET_DISPATCH(), ( - (GLenum )bswap_ENUM ( pc + 0 ), - (GLenum )bswap_ENUM ( pc + 4 ), - (GLsizei )bswap_CARD32 ( pc + 8 ), - (GLsizei )bswap_CARD32 ( pc + 12 ) - ) ); -} - diff --git a/GL/glx/indirect_reqsize.c b/GL/glx/indirect_reqsize.c deleted file mode 100644 index 954eecd97..000000000 --- a/GL/glx/indirect_reqsize.c +++ /dev/null @@ -1,832 +0,0 @@ -/* DO NOT EDIT - This file generated automatically by glX_proto_size.py (from Mesa) script */ - -/* - * (C) Copyright IBM Corporation 2005 - * All Rights Reserved. - * - * 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, sub license, - * and/or 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 (including the next - * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM, - * AND/OR THEIR SUPPLIERS 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. - */ - - -#include -#include "glxserver.h" -#include "glxbyteorder.h" -#include "indirect_size.h" -#include "indirect_reqsize.h" - -#define __GLX_PAD(x) (((x) + 3) & ~3) - -#if defined(__CYGWIN__) || defined(__MINGW32__) -# undef HAVE_ALIAS -#endif -#ifdef HAVE_ALIAS -# define ALIAS2(from,to) \ - GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \ - __attribute__ ((alias( # to ))); -# define ALIAS(from,to) ALIAS2( from, __glX ## to ## ReqSize ) -#else -# define ALIAS(from,to) \ - GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \ - { return __glX ## to ## ReqSize( pc, swap ); } -#endif - - -int -__glXCallListsReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei n = *(GLsizei *) (pc + 0); - GLenum type = *(GLenum *) (pc + 4); - GLsizei compsize; - - if (swap) { - n = bswap_32(n); - type = bswap_32(type); - } - - compsize = __glCallLists_size(type); - return __GLX_PAD((compsize * n)); -} - -int -__glXBitmapReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - GLsizei width = *(GLsizei *) (pc + 20); - GLsizei height = *(GLsizei *) (pc + 24); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - width = bswap_32(width); - height = bswap_32(height); - } - - return __glXImageSize(GL_COLOR_INDEX, GL_BITMAP, 0, width, height, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXFogfvReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 0); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glFogfv_size(pname); - return __GLX_PAD((compsize * 4)); -} - -int -__glXLightfvReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 4); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glLightfv_size(pname); - return __GLX_PAD((compsize * 4)); -} - -int -__glXLightModelfvReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 0); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glLightModelfv_size(pname); - return __GLX_PAD((compsize * 4)); -} - -int -__glXMaterialfvReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 4); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glMaterialfv_size(pname); - return __GLX_PAD((compsize * 4)); -} - -int -__glXPolygonStippleReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - } - - return __glXImageSize(GL_COLOR_INDEX, GL_BITMAP, 0, 32, 32, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXTexParameterfvReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 4); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glTexParameterfv_size(pname); - return __GLX_PAD((compsize * 4)); -} - -int -__glXTexImage1DReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - GLenum target = *(GLenum *) (pc + 20); - GLsizei width = *(GLsizei *) (pc + 32); - GLenum format = *(GLenum *) (pc + 44); - GLenum type = *(GLenum *) (pc + 48); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - target = bswap_32(target); - width = bswap_32(width); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, target, width, 1, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXTexImage2DReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - GLenum target = *(GLenum *) (pc + 20); - GLsizei width = *(GLsizei *) (pc + 32); - GLsizei height = *(GLsizei *) (pc + 36); - GLenum format = *(GLenum *) (pc + 44); - GLenum type = *(GLenum *) (pc + 48); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - target = bswap_32(target); - width = bswap_32(width); - height = bswap_32(height); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, target, width, height, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXTexEnvfvReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 4); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glTexEnvfv_size(pname); - return __GLX_PAD((compsize * 4)); -} - -int -__glXTexGendvReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 4); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glTexGendv_size(pname); - return __GLX_PAD((compsize * 8)); -} - -int -__glXTexGenfvReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 4); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glTexGenfv_size(pname); - return __GLX_PAD((compsize * 4)); -} - -int -__glXPixelMapfvReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei mapsize = *(GLsizei *) (pc + 4); - - if (swap) { - mapsize = bswap_32(mapsize); - } - - return __GLX_PAD((mapsize * 4)); -} - -int -__glXPixelMapusvReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei mapsize = *(GLsizei *) (pc + 4); - - if (swap) { - mapsize = bswap_32(mapsize); - } - - return __GLX_PAD((mapsize * 2)); -} - -int -__glXDrawPixelsReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - GLsizei width = *(GLsizei *) (pc + 20); - GLsizei height = *(GLsizei *) (pc + 24); - GLenum format = *(GLenum *) (pc + 28); - GLenum type = *(GLenum *) (pc + 32); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - width = bswap_32(width); - height = bswap_32(height); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, 0, width, height, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXPrioritizeTexturesReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei n = *(GLsizei *) (pc + 0); - - if (swap) { - n = bswap_32(n); - } - - return __GLX_PAD((n * 4) + (n * 4)); -} - -int -__glXTexSubImage1DReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - GLenum target = *(GLenum *) (pc + 20); - GLsizei width = *(GLsizei *) (pc + 36); - GLenum format = *(GLenum *) (pc + 44); - GLenum type = *(GLenum *) (pc + 48); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - target = bswap_32(target); - width = bswap_32(width); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, target, width, 1, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXTexSubImage2DReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - GLenum target = *(GLenum *) (pc + 20); - GLsizei width = *(GLsizei *) (pc + 36); - GLsizei height = *(GLsizei *) (pc + 40); - GLenum format = *(GLenum *) (pc + 44); - GLenum type = *(GLenum *) (pc + 48); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - target = bswap_32(target); - width = bswap_32(width); - height = bswap_32(height); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, target, width, height, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXColorTableReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - GLenum target = *(GLenum *) (pc + 20); - GLsizei width = *(GLsizei *) (pc + 28); - GLenum format = *(GLenum *) (pc + 32); - GLenum type = *(GLenum *) (pc + 36); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - target = bswap_32(target); - width = bswap_32(width); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, target, width, 1, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXColorTableParameterfvReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 4); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glColorTableParameterfv_size(pname); - return __GLX_PAD((compsize * 4)); -} - -int -__glXColorSubTableReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - GLenum target = *(GLenum *) (pc + 20); - GLsizei count = *(GLsizei *) (pc + 28); - GLenum format = *(GLenum *) (pc + 32); - GLenum type = *(GLenum *) (pc + 36); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - target = bswap_32(target); - count = bswap_32(count); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, target, count, 1, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXConvolutionFilter1DReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - GLenum target = *(GLenum *) (pc + 20); - GLsizei width = *(GLsizei *) (pc + 28); - GLenum format = *(GLenum *) (pc + 36); - GLenum type = *(GLenum *) (pc + 40); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - target = bswap_32(target); - width = bswap_32(width); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, target, width, 1, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXConvolutionFilter2DReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = 0; - GLint skip_images = 0; - GLint skip_rows = *(GLint *) (pc + 8); - GLint alignment = *(GLint *) (pc + 16); - GLenum target = *(GLenum *) (pc + 20); - GLsizei width = *(GLsizei *) (pc + 28); - GLsizei height = *(GLsizei *) (pc + 32); - GLenum format = *(GLenum *) (pc + 36); - GLenum type = *(GLenum *) (pc + 40); - - if (swap) { - row_length = bswap_32(row_length); - skip_rows = bswap_32(skip_rows); - alignment = bswap_32(alignment); - target = bswap_32(target); - width = bswap_32(width); - height = bswap_32(height); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, target, width, height, 1, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXConvolutionParameterfvReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 4); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glConvolutionParameterfv_size(pname); - return __GLX_PAD((compsize * 4)); -} - -int -__glXTexImage3DReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = *(GLint *) (pc + 8); - GLint skip_rows = *(GLint *) (pc + 16); - GLint skip_images = *(GLint *) (pc + 20); - GLint alignment = *(GLint *) (pc + 32); - GLenum target = *(GLenum *) (pc + 36); - GLsizei width = *(GLsizei *) (pc + 48); - GLsizei height = *(GLsizei *) (pc + 52); - GLsizei depth = *(GLsizei *) (pc + 56); - GLenum format = *(GLenum *) (pc + 68); - GLenum type = *(GLenum *) (pc + 72); - - if (swap) { - row_length = bswap_32(row_length); - image_height = bswap_32(image_height); - skip_rows = bswap_32(skip_rows); - skip_images = bswap_32(skip_images); - alignment = bswap_32(alignment); - target = bswap_32(target); - width = bswap_32(width); - height = bswap_32(height); - depth = bswap_32(depth); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, target, width, height, depth, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXTexSubImage3DReqSize(const GLbyte *pc, Bool swap) -{ - GLint row_length = *(GLint *) (pc + 4); - GLint image_height = *(GLint *) (pc + 8); - GLint skip_rows = *(GLint *) (pc + 16); - GLint skip_images = *(GLint *) (pc + 20); - GLint alignment = *(GLint *) (pc + 32); - GLenum target = *(GLenum *) (pc + 36); - GLsizei width = *(GLsizei *) (pc + 60); - GLsizei height = *(GLsizei *) (pc + 64); - GLsizei depth = *(GLsizei *) (pc + 68); - GLenum format = *(GLenum *) (pc + 76); - GLenum type = *(GLenum *) (pc + 80); - - if (swap) { - row_length = bswap_32(row_length); - image_height = bswap_32(image_height); - skip_rows = bswap_32(skip_rows); - skip_images = bswap_32(skip_images); - alignment = bswap_32(alignment); - target = bswap_32(target); - width = bswap_32(width); - height = bswap_32(height); - depth = bswap_32(depth); - format = bswap_32(format); - type = bswap_32(type); - } - - return __glXImageSize(format, type, target, width, height, depth, - image_height, row_length, skip_images, - skip_rows, alignment); -} - -int -__glXCompressedTexImage1DARBReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei imageSize = *(GLsizei *) (pc + 20); - - if (swap) { - imageSize = bswap_32(imageSize); - } - - return __GLX_PAD(imageSize); -} - -int -__glXCompressedTexImage2DARBReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei imageSize = *(GLsizei *) (pc + 24); - - if (swap) { - imageSize = bswap_32(imageSize); - } - - return __GLX_PAD(imageSize); -} - -int -__glXCompressedTexImage3DARBReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei imageSize = *(GLsizei *) (pc + 28); - - if (swap) { - imageSize = bswap_32(imageSize); - } - - return __GLX_PAD(imageSize); -} - -int -__glXCompressedTexSubImage3DARBReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei imageSize = *(GLsizei *) (pc + 36); - - if (swap) { - imageSize = bswap_32(imageSize); - } - - return __GLX_PAD(imageSize); -} - -int -__glXProgramStringARBReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei len = *(GLsizei *) (pc + 8); - - if (swap) { - len = bswap_32(len); - } - - return __GLX_PAD(len); -} - -int -__glXDrawBuffersARBReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei n = *(GLsizei *) (pc + 0); - - if (swap) { - n = bswap_32(n); - } - - return __GLX_PAD((n * 4)); -} - -int -__glXPointParameterfvEXTReqSize(const GLbyte *pc, Bool swap) -{ - GLenum pname = *(GLenum *) (pc + 0); - GLsizei compsize; - - if (swap) { - pname = bswap_32(pname); - } - - compsize = __glPointParameterfvEXT_size(pname); - return __GLX_PAD((compsize * 4)); -} - -int -__glXProgramParameters4dvNVReqSize(const GLbyte *pc, Bool swap) -{ - GLuint num = *(GLuint *) (pc + 8); - - if (swap) { - num = bswap_32(num); - } - - return __GLX_PAD((num * 32)); -} - -int -__glXProgramParameters4fvNVReqSize(const GLbyte *pc, Bool swap) -{ - GLuint num = *(GLuint *) (pc + 8); - - if (swap) { - num = bswap_32(num); - } - - return __GLX_PAD((num * 16)); -} - -int -__glXVertexAttribs1dvNVReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei n = *(GLsizei *) (pc + 4); - - if (swap) { - n = bswap_32(n); - } - - return __GLX_PAD((n * 8)); -} - -int -__glXVertexAttribs2dvNVReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei n = *(GLsizei *) (pc + 4); - - if (swap) { - n = bswap_32(n); - } - - return __GLX_PAD((n * 16)); -} - -int -__glXVertexAttribs3dvNVReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei n = *(GLsizei *) (pc + 4); - - if (swap) { - n = bswap_32(n); - } - - return __GLX_PAD((n * 24)); -} - -int -__glXVertexAttribs3fvNVReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei n = *(GLsizei *) (pc + 4); - - if (swap) { - n = bswap_32(n); - } - - return __GLX_PAD((n * 12)); -} - -int -__glXVertexAttribs3svNVReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei n = *(GLsizei *) (pc + 4); - - if (swap) { - n = bswap_32(n); - } - - return __GLX_PAD((n * 6)); -} - -int -__glXVertexAttribs4dvNVReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei n = *(GLsizei *) (pc + 4); - - if (swap) { - n = bswap_32(n); - } - - return __GLX_PAD((n * 32)); -} - -int -__glXProgramNamedParameter4fvNVReqSize(const GLbyte *pc, Bool swap) -{ - GLsizei len = *(GLsizei *) (pc + 4); - - if (swap) { - len = bswap_32(len); - } - - return __GLX_PAD(len); -} - -ALIAS(Fogiv, Fogfv) - ALIAS(Lightiv, Lightfv) - ALIAS(LightModeliv, LightModelfv) - ALIAS(Materialiv, Materialfv) - ALIAS(TexParameteriv, TexParameterfv) - ALIAS(TexEnviv, TexEnvfv) - ALIAS(TexGeniv, TexGenfv) - ALIAS(PixelMapuiv, PixelMapfv) - ALIAS(ColorTableParameteriv, ColorTableParameterfv) - ALIAS(ConvolutionParameteriv, ConvolutionParameterfv) - ALIAS(CompressedTexSubImage1DARB, CompressedTexImage1DARB) - ALIAS(CompressedTexSubImage2DARB, CompressedTexImage3DARB) - ALIAS(LoadProgramNV, ProgramStringARB) - ALIAS(RequestResidentProgramsNV, DrawBuffersARB) - ALIAS(VertexAttribs1fvNV, PixelMapfv) - ALIAS(VertexAttribs1svNV, PixelMapusv) - ALIAS(VertexAttribs2fvNV, VertexAttribs1dvNV) - ALIAS(VertexAttribs2svNV, PixelMapfv) - ALIAS(VertexAttribs4fvNV, VertexAttribs2dvNV) - ALIAS(VertexAttribs4svNV, VertexAttribs1dvNV) - ALIAS(VertexAttribs4ubvNV, PixelMapfv) - ALIAS(PointParameterivNV, PointParameterfvEXT) - ALIAS(ProgramNamedParameter4dvNV, CompressedTexSubImage3DARB) - ALIAS(DeleteFramebuffersEXT, DrawBuffersARB) - ALIAS(DeleteRenderbuffersEXT, DrawBuffersARB) diff --git a/GL/glx/indirect_reqsize.h b/GL/glx/indirect_reqsize.h deleted file mode 100644 index 26211ee5c..000000000 --- a/GL/glx/indirect_reqsize.h +++ /dev/null @@ -1,121 +0,0 @@ -/* DO NOT EDIT - This file generated automatically by glX_proto_size.py (from Mesa) script */ - -/* - * (C) Copyright IBM Corporation 2005 - * All Rights Reserved. - * - * 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, sub license, - * and/or 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 (including the next - * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM, - * AND/OR THEIR SUPPLIERS 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. - */ - -#if !defined( _INDIRECT_REQSIZE_H_ ) -# define _INDIRECT_REQSIZE_H_ - -# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) -# define HIDDEN __attribute__((visibility("hidden"))) -# else -# define HIDDEN -# endif - -# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) -# define PURE __attribute__((pure)) -# else -# define PURE -# endif - -extern PURE HIDDEN int __glXCallListsReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXBitmapReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXFogfvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXFogivReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXLightfvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXLightivReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXLightModelfvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXLightModelivReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXMaterialfvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXMaterialivReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXPolygonStippleReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexParameterfvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexParameterivReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexImage1DReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexImage2DReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexEnvfvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexEnvivReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexGendvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexGenfvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexGenivReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXMap1dReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXMap1fReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXMap2dReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXMap2fReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXPixelMapfvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXPixelMapuivReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXPixelMapusvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXDrawPixelsReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXDrawArraysReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXPrioritizeTexturesReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexSubImage1DReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexSubImage2DReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXColorTableReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXColorTableParameterfvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXColorTableParameterivReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXColorSubTableReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXConvolutionFilter1DReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXConvolutionFilter2DReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXConvolutionParameterfvReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXConvolutionParameterivReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXSeparableFilter2DReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexImage3DReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXTexSubImage3DReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXCompressedTexImage1DARBReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXCompressedTexImage2DARBReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXCompressedTexImage3DARBReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXCompressedTexSubImage1DARBReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXCompressedTexSubImage2DARBReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXCompressedTexSubImage3DARBReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXProgramStringARBReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXDrawBuffersARBReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXPointParameterfvEXTReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXLoadProgramNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXProgramParameters4dvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXProgramParameters4fvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXRequestResidentProgramsNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs1dvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs1fvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs1svNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs2dvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs2fvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs2svNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs3dvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs3fvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs3svNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs4dvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs4fvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs4svNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXVertexAttribs4ubvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXPointParameterivNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXProgramNamedParameter4dvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXProgramNamedParameter4fvNVReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXDeleteFramebuffersEXTReqSize(const GLbyte *pc, Bool swap); -extern PURE HIDDEN int __glXDeleteRenderbuffersEXTReqSize(const GLbyte *pc, Bool swap); - -# undef HIDDEN -# undef PURE - -#endif /* !defined( _INDIRECT_REQSIZE_H_ ) */ diff --git a/GL/glx/indirect_size_get.c b/GL/glx/indirect_size_get.c deleted file mode 100644 index e7eaf97cb..000000000 --- a/GL/glx/indirect_size_get.c +++ /dev/null @@ -1,1206 +0,0 @@ -/* DO NOT EDIT - This file generated automatically by glX_proto_size.py (from Mesa) script */ - -/* - * (C) Copyright IBM Corporation 2004 - * All Rights Reserved. - * - * 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, sub license, - * and/or 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 (including the next - * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM, - * AND/OR THEIR SUPPLIERS 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. - */ - - -#include -#include "indirect_size_get.h" -#include "glxserver.h" -#include "indirect_util.h" -#include "indirect_size.h" - -# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) -# define PURE __attribute__((pure)) -# else -# define PURE -# endif - -# if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__) -# define FASTCALL __attribute__((fastcall)) -# else -# define FASTCALL -# endif - -# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) -# define INTERNAL __attribute__((visibility("internal"))) -# else -# define INTERNAL -# endif - - -#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__APPLE__) -# undef HAVE_ALIAS -#endif -#ifdef HAVE_ALIAS -# define ALIAS2(from,to) \ - INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \ - __attribute__ ((alias( # to ))); -# define ALIAS(from,to) ALIAS2( from, __gl ## to ## _size ) -#else -# define ALIAS(from,to) \ - INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \ - { return __gl ## to ## _size( e ); } -#endif - - -INTERNAL PURE FASTCALL GLint -__glCallLists_size(GLenum e) -{ - switch (e) { - case GL_BYTE: - case GL_UNSIGNED_BYTE: - return 1; - case GL_SHORT: - case GL_UNSIGNED_SHORT: - case GL_2_BYTES: - return 2; - case GL_3_BYTES: - return 3; - case GL_INT: - case GL_UNSIGNED_INT: - case GL_FLOAT: - case GL_4_BYTES: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glFogfv_size(GLenum e) -{ - switch (e) { - case GL_FOG_INDEX: - case GL_FOG_DENSITY: - case GL_FOG_START: - case GL_FOG_END: - case GL_FOG_MODE: - case GL_FOG_OFFSET_VALUE_SGIX: - case GL_FOG_DISTANCE_MODE_NV: - return 1; - case GL_FOG_COLOR: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glLightfv_size(GLenum e) -{ - switch (e) { - case GL_SPOT_EXPONENT: - case GL_SPOT_CUTOFF: - case GL_CONSTANT_ATTENUATION: - case GL_LINEAR_ATTENUATION: - case GL_QUADRATIC_ATTENUATION: - return 1; - case GL_SPOT_DIRECTION: - return 3; - case GL_AMBIENT: - case GL_DIFFUSE: - case GL_SPECULAR: - case GL_POSITION: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glLightModelfv_size(GLenum e) -{ - switch (e) { - case GL_LIGHT_MODEL_LOCAL_VIEWER: - case GL_LIGHT_MODEL_TWO_SIDE: - case GL_LIGHT_MODEL_COLOR_CONTROL: -/* case GL_LIGHT_MODEL_COLOR_CONTROL_EXT:*/ - return 1; - case GL_LIGHT_MODEL_AMBIENT: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glMaterialfv_size(GLenum e) -{ - switch (e) { - case GL_SHININESS: - return 1; - case GL_COLOR_INDEXES: - return 3; - case GL_AMBIENT: - case GL_DIFFUSE: - case GL_SPECULAR: - case GL_EMISSION: - case GL_AMBIENT_AND_DIFFUSE: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glTexParameterfv_size(GLenum e) -{ - switch (e) { - case GL_TEXTURE_MAG_FILTER: - case GL_TEXTURE_MIN_FILTER: - case GL_TEXTURE_WRAP_S: - case GL_TEXTURE_WRAP_T: - case GL_TEXTURE_PRIORITY: - case GL_TEXTURE_WRAP_R: - case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB: -/* case GL_SHADOW_AMBIENT_SGIX:*/ - case GL_TEXTURE_MIN_LOD: - case GL_TEXTURE_MAX_LOD: - case GL_TEXTURE_BASE_LEVEL: - case GL_TEXTURE_MAX_LEVEL: - case GL_TEXTURE_CLIPMAP_FRAME_SGIX: - case GL_TEXTURE_LOD_BIAS_S_SGIX: - case GL_TEXTURE_LOD_BIAS_T_SGIX: - case GL_TEXTURE_LOD_BIAS_R_SGIX: - case GL_GENERATE_MIPMAP: -/* case GL_GENERATE_MIPMAP_SGIS:*/ - case GL_TEXTURE_COMPARE_SGIX: - case GL_TEXTURE_COMPARE_OPERATOR_SGIX: - case GL_TEXTURE_MAX_CLAMP_S_SGIX: - case GL_TEXTURE_MAX_CLAMP_T_SGIX: - case GL_TEXTURE_MAX_CLAMP_R_SGIX: - case GL_TEXTURE_MAX_ANISOTROPY_EXT: - case GL_TEXTURE_LOD_BIAS: -/* case GL_TEXTURE_LOD_BIAS_EXT:*/ - case GL_DEPTH_TEXTURE_MODE: -/* case GL_DEPTH_TEXTURE_MODE_ARB:*/ - case GL_TEXTURE_COMPARE_MODE: -/* case GL_TEXTURE_COMPARE_MODE_ARB:*/ - case GL_TEXTURE_COMPARE_FUNC: -/* case GL_TEXTURE_COMPARE_FUNC_ARB:*/ - case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV: - return 1; - case GL_TEXTURE_CLIPMAP_CENTER_SGIX: - case GL_TEXTURE_CLIPMAP_OFFSET_SGIX: - return 2; - case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX: - return 3; - case GL_TEXTURE_BORDER_COLOR: - case GL_POST_TEXTURE_FILTER_BIAS_SGIX: - case GL_POST_TEXTURE_FILTER_SCALE_SGIX: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glTexEnvfv_size(GLenum e) -{ - switch (e) { - case GL_ALPHA_SCALE: - case GL_TEXTURE_ENV_MODE: - case GL_TEXTURE_LOD_BIAS: - case GL_COMBINE_RGB: - case GL_COMBINE_ALPHA: - case GL_RGB_SCALE: - case GL_SOURCE0_RGB: - case GL_SOURCE1_RGB: - case GL_SOURCE2_RGB: - case GL_SOURCE3_RGB_NV: - case GL_SOURCE0_ALPHA: - case GL_SOURCE1_ALPHA: - case GL_SOURCE2_ALPHA: - case GL_SOURCE3_ALPHA_NV: - case GL_OPERAND0_RGB: - case GL_OPERAND1_RGB: - case GL_OPERAND2_RGB: - case GL_OPERAND3_RGB_NV: - case GL_OPERAND0_ALPHA: - case GL_OPERAND1_ALPHA: - case GL_OPERAND2_ALPHA: - case GL_OPERAND3_ALPHA_NV: - case GL_COORD_REPLACE_ARB: -/* case GL_COORD_REPLACE_NV:*/ - return 1; - case GL_TEXTURE_ENV_COLOR: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glTexGendv_size(GLenum e) -{ - switch (e) { - case GL_TEXTURE_GEN_MODE: - return 1; - case GL_OBJECT_PLANE: - case GL_EYE_PLANE: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glMap1d_size(GLenum e) -{ - switch (e) { - case GL_MAP1_INDEX: - case GL_MAP1_TEXTURE_COORD_1: - return 1; - case GL_MAP1_TEXTURE_COORD_2: - return 2; - case GL_MAP1_NORMAL: - case GL_MAP1_TEXTURE_COORD_3: - case GL_MAP1_VERTEX_3: - return 3; - case GL_MAP1_COLOR_4: - case GL_MAP1_TEXTURE_COORD_4: - case GL_MAP1_VERTEX_4: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glMap2d_size(GLenum e) -{ - switch (e) { - case GL_MAP2_INDEX: - case GL_MAP2_TEXTURE_COORD_1: - return 1; - case GL_MAP2_TEXTURE_COORD_2: - return 2; - case GL_MAP2_NORMAL: - case GL_MAP2_TEXTURE_COORD_3: - case GL_MAP2_VERTEX_3: - return 3; - case GL_MAP2_COLOR_4: - case GL_MAP2_TEXTURE_COORD_4: - case GL_MAP2_VERTEX_4: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetBooleanv_size(GLenum e) -{ - switch (e) { - case GL_CURRENT_INDEX: - case GL_CURRENT_RASTER_INDEX: - case GL_CURRENT_RASTER_POSITION_VALID: - case GL_CURRENT_RASTER_DISTANCE: - case GL_POINT_SMOOTH: - case GL_POINT_SIZE: - case GL_SMOOTH_POINT_SIZE_GRANULARITY: - case GL_LINE_SMOOTH: - case GL_LINE_WIDTH: - case GL_LINE_WIDTH_GRANULARITY: - case GL_LINE_STIPPLE: - case GL_LINE_STIPPLE_PATTERN: - case GL_LINE_STIPPLE_REPEAT: - case GL_LIST_MODE: - case GL_MAX_LIST_NESTING: - case GL_LIST_BASE: - case GL_LIST_INDEX: - case GL_POLYGON_SMOOTH: - case GL_POLYGON_STIPPLE: - case GL_EDGE_FLAG: - case GL_CULL_FACE: - case GL_CULL_FACE_MODE: - case GL_FRONT_FACE: - case GL_LIGHTING: - case GL_LIGHT_MODEL_LOCAL_VIEWER: - case GL_LIGHT_MODEL_TWO_SIDE: - case GL_SHADE_MODEL: - case GL_COLOR_MATERIAL_FACE: - case GL_COLOR_MATERIAL_PARAMETER: - case GL_COLOR_MATERIAL: - case GL_FOG: - case GL_FOG_INDEX: - case GL_FOG_DENSITY: - case GL_FOG_START: - case GL_FOG_END: - case GL_FOG_MODE: - case GL_DEPTH_TEST: - case GL_DEPTH_WRITEMASK: - case GL_DEPTH_CLEAR_VALUE: - case GL_DEPTH_FUNC: - case GL_STENCIL_TEST: - case GL_STENCIL_CLEAR_VALUE: - case GL_STENCIL_FUNC: - case GL_STENCIL_VALUE_MASK: - case GL_STENCIL_FAIL: - case GL_STENCIL_PASS_DEPTH_FAIL: - case GL_STENCIL_PASS_DEPTH_PASS: - case GL_STENCIL_REF: - case GL_STENCIL_WRITEMASK: - case GL_MATRIX_MODE: - case GL_NORMALIZE: - case GL_MODELVIEW_STACK_DEPTH: - case GL_PROJECTION_STACK_DEPTH: - case GL_TEXTURE_STACK_DEPTH: - case GL_ATTRIB_STACK_DEPTH: - case GL_CLIENT_ATTRIB_STACK_DEPTH: - case GL_ALPHA_TEST: - case GL_ALPHA_TEST_FUNC: - case GL_ALPHA_TEST_REF: - case GL_DITHER: - case GL_BLEND_DST: - case GL_BLEND_SRC: - case GL_BLEND: - case GL_LOGIC_OP_MODE: - case GL_LOGIC_OP: - case GL_AUX_BUFFERS: - case GL_DRAW_BUFFER: - case GL_READ_BUFFER: - case GL_SCISSOR_TEST: - case GL_INDEX_CLEAR_VALUE: - case GL_INDEX_WRITEMASK: - case GL_INDEX_MODE: - case GL_RGBA_MODE: - case GL_DOUBLEBUFFER: - case GL_STEREO: - case GL_RENDER_MODE: - case GL_PERSPECTIVE_CORRECTION_HINT: - case GL_POINT_SMOOTH_HINT: - case GL_LINE_SMOOTH_HINT: - case GL_POLYGON_SMOOTH_HINT: - case GL_FOG_HINT: - case GL_TEXTURE_GEN_S: - case GL_TEXTURE_GEN_T: - case GL_TEXTURE_GEN_R: - case GL_TEXTURE_GEN_Q: - case GL_PIXEL_MAP_I_TO_I: - case GL_PIXEL_MAP_I_TO_I_SIZE: - case GL_PIXEL_MAP_S_TO_S_SIZE: - case GL_PIXEL_MAP_I_TO_R_SIZE: - case GL_PIXEL_MAP_I_TO_G_SIZE: - case GL_PIXEL_MAP_I_TO_B_SIZE: - case GL_PIXEL_MAP_I_TO_A_SIZE: - case GL_PIXEL_MAP_R_TO_R_SIZE: - case GL_PIXEL_MAP_G_TO_G_SIZE: - case GL_PIXEL_MAP_B_TO_B_SIZE: - case GL_PIXEL_MAP_A_TO_A_SIZE: - case GL_UNPACK_SWAP_BYTES: - case GL_UNPACK_LSB_FIRST: - case GL_UNPACK_ROW_LENGTH: - case GL_UNPACK_SKIP_ROWS: - case GL_UNPACK_SKIP_PIXELS: - case GL_UNPACK_ALIGNMENT: - case GL_PACK_SWAP_BYTES: - case GL_PACK_LSB_FIRST: - case GL_PACK_ROW_LENGTH: - case GL_PACK_SKIP_ROWS: - case GL_PACK_SKIP_PIXELS: - case GL_PACK_ALIGNMENT: - case GL_MAP_COLOR: - case GL_MAP_STENCIL: - case GL_INDEX_SHIFT: - case GL_INDEX_OFFSET: - case GL_RED_SCALE: - case GL_RED_BIAS: - case GL_ZOOM_X: - case GL_ZOOM_Y: - case GL_GREEN_SCALE: - case GL_GREEN_BIAS: - case GL_BLUE_SCALE: - case GL_BLUE_BIAS: - case GL_ALPHA_SCALE: - case GL_ALPHA_BIAS: - case GL_DEPTH_SCALE: - case GL_DEPTH_BIAS: - case GL_MAX_EVAL_ORDER: - case GL_MAX_LIGHTS: - case GL_MAX_CLIP_PLANES: - case GL_MAX_TEXTURE_SIZE: - case GL_MAX_PIXEL_MAP_TABLE: - case GL_MAX_ATTRIB_STACK_DEPTH: - case GL_MAX_MODELVIEW_STACK_DEPTH: - case GL_MAX_NAME_STACK_DEPTH: - case GL_MAX_PROJECTION_STACK_DEPTH: - case GL_MAX_TEXTURE_STACK_DEPTH: - case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: - case GL_SUBPIXEL_BITS: - case GL_INDEX_BITS: - case GL_RED_BITS: - case GL_GREEN_BITS: - case GL_BLUE_BITS: - case GL_ALPHA_BITS: - case GL_DEPTH_BITS: - case GL_STENCIL_BITS: - case GL_ACCUM_RED_BITS: - case GL_ACCUM_GREEN_BITS: - case GL_ACCUM_BLUE_BITS: - case GL_ACCUM_ALPHA_BITS: - case GL_NAME_STACK_DEPTH: - case GL_AUTO_NORMAL: - case GL_MAP1_COLOR_4: - case GL_MAP1_INDEX: - case GL_MAP1_NORMAL: - case GL_MAP1_TEXTURE_COORD_1: - case GL_MAP1_TEXTURE_COORD_2: - case GL_MAP1_TEXTURE_COORD_3: - case GL_MAP1_TEXTURE_COORD_4: - case GL_MAP1_VERTEX_3: - case GL_MAP1_VERTEX_4: - case GL_MAP2_COLOR_4: - case GL_MAP2_INDEX: - case GL_MAP2_NORMAL: - case GL_MAP2_TEXTURE_COORD_1: - case GL_MAP2_TEXTURE_COORD_2: - case GL_MAP2_TEXTURE_COORD_3: - case GL_MAP2_TEXTURE_COORD_4: - case GL_MAP2_VERTEX_3: - case GL_MAP2_VERTEX_4: - case GL_MAP1_GRID_SEGMENTS: - case GL_TEXTURE_1D: - case GL_TEXTURE_2D: - case GL_POLYGON_OFFSET_UNITS: - case GL_CLIP_PLANE0: - case GL_CLIP_PLANE1: - case GL_CLIP_PLANE2: - case GL_CLIP_PLANE3: - case GL_CLIP_PLANE4: - case GL_CLIP_PLANE5: - case GL_LIGHT0: - case GL_LIGHT1: - case GL_LIGHT2: - case GL_LIGHT3: - case GL_LIGHT4: - case GL_LIGHT5: - case GL_LIGHT6: - case GL_LIGHT7: - case GL_BLEND_EQUATION: -/* case GL_BLEND_EQUATION_EXT:*/ - case GL_CONVOLUTION_1D: - case GL_CONVOLUTION_2D: - case GL_SEPARABLE_2D: - case GL_MAX_CONVOLUTION_WIDTH: -/* case GL_MAX_CONVOLUTION_WIDTH_EXT:*/ - case GL_MAX_CONVOLUTION_HEIGHT: -/* case GL_MAX_CONVOLUTION_HEIGHT_EXT:*/ - case GL_POST_CONVOLUTION_RED_SCALE: -/* case GL_POST_CONVOLUTION_RED_SCALE_EXT:*/ - case GL_POST_CONVOLUTION_GREEN_SCALE: -/* case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:*/ - case GL_POST_CONVOLUTION_BLUE_SCALE: -/* case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:*/ - case GL_POST_CONVOLUTION_ALPHA_SCALE: -/* case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:*/ - case GL_POST_CONVOLUTION_RED_BIAS: -/* case GL_POST_CONVOLUTION_RED_BIAS_EXT:*/ - case GL_POST_CONVOLUTION_GREEN_BIAS: -/* case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:*/ - case GL_POST_CONVOLUTION_BLUE_BIAS: -/* case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:*/ - case GL_POST_CONVOLUTION_ALPHA_BIAS: -/* case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:*/ - case GL_HISTOGRAM: - case GL_MINMAX: - case GL_POLYGON_OFFSET_FACTOR: - case GL_RESCALE_NORMAL: -/* case GL_RESCALE_NORMAL_EXT:*/ - case GL_TEXTURE_BINDING_1D: - case GL_TEXTURE_BINDING_2D: - case GL_TEXTURE_BINDING_3D: - case GL_PACK_SKIP_IMAGES: - case GL_PACK_IMAGE_HEIGHT: - case GL_UNPACK_SKIP_IMAGES: - case GL_UNPACK_IMAGE_HEIGHT: - case GL_TEXTURE_3D: - case GL_MAX_3D_TEXTURE_SIZE: - case GL_VERTEX_ARRAY: - case GL_NORMAL_ARRAY: - case GL_COLOR_ARRAY: - case GL_INDEX_ARRAY: - case GL_TEXTURE_COORD_ARRAY: - case GL_EDGE_FLAG_ARRAY: - case GL_VERTEX_ARRAY_SIZE: - case GL_VERTEX_ARRAY_TYPE: - case GL_VERTEX_ARRAY_STRIDE: - case GL_NORMAL_ARRAY_TYPE: - case GL_NORMAL_ARRAY_STRIDE: - case GL_COLOR_ARRAY_SIZE: - case GL_COLOR_ARRAY_TYPE: - case GL_COLOR_ARRAY_STRIDE: - case GL_INDEX_ARRAY_TYPE: - case GL_INDEX_ARRAY_STRIDE: - case GL_TEXTURE_COORD_ARRAY_SIZE: - case GL_TEXTURE_COORD_ARRAY_TYPE: - case GL_TEXTURE_COORD_ARRAY_STRIDE: - case GL_EDGE_FLAG_ARRAY_STRIDE: - case GL_MULTISAMPLE: -/* case GL_MULTISAMPLE_ARB:*/ - case GL_SAMPLE_ALPHA_TO_COVERAGE: -/* case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:*/ - case GL_SAMPLE_ALPHA_TO_ONE: -/* case GL_SAMPLE_ALPHA_TO_ONE_ARB:*/ - case GL_SAMPLE_COVERAGE: -/* case GL_SAMPLE_COVERAGE_ARB:*/ - case GL_SAMPLE_BUFFERS: -/* case GL_SAMPLE_BUFFERS_ARB:*/ - case GL_SAMPLES: -/* case GL_SAMPLES_ARB:*/ - case GL_SAMPLE_COVERAGE_VALUE: -/* case GL_SAMPLE_COVERAGE_VALUE_ARB:*/ - case GL_SAMPLE_COVERAGE_INVERT: -/* case GL_SAMPLE_COVERAGE_INVERT_ARB:*/ - case GL_COLOR_MATRIX_STACK_DEPTH: - case GL_MAX_COLOR_MATRIX_STACK_DEPTH: - case GL_POST_COLOR_MATRIX_RED_SCALE: - case GL_POST_COLOR_MATRIX_GREEN_SCALE: - case GL_POST_COLOR_MATRIX_BLUE_SCALE: - case GL_POST_COLOR_MATRIX_ALPHA_SCALE: - case GL_POST_COLOR_MATRIX_RED_BIAS: - case GL_POST_COLOR_MATRIX_GREEN_BIAS: - case GL_POST_COLOR_MATRIX_BLUE_BIAS: - case GL_POST_COLOR_MATRIX_ALPHA_BIAS: - case GL_BLEND_DST_RGB: - case GL_BLEND_SRC_RGB: - case GL_BLEND_DST_ALPHA: - case GL_BLEND_SRC_ALPHA: - case GL_COLOR_TABLE: - case GL_POST_CONVOLUTION_COLOR_TABLE: - case GL_POST_COLOR_MATRIX_COLOR_TABLE: - case GL_MAX_ELEMENTS_VERTICES: - case GL_MAX_ELEMENTS_INDICES: - case GL_CLIP_VOLUME_CLIPPING_HINT_EXT: - case GL_OCCLUSION_TEST_HP: - case GL_OCCLUSION_TEST_RESULT_HP: - case GL_LIGHT_MODEL_COLOR_CONTROL: - case GL_CURRENT_FOG_COORD: - case GL_FOG_COORDINATE_ARRAY_TYPE: - case GL_FOG_COORDINATE_ARRAY_STRIDE: - case GL_FOG_COORD_ARRAY: - case GL_COLOR_SUM_ARB: - case GL_SECONDARY_COLOR_ARRAY_SIZE: - case GL_SECONDARY_COLOR_ARRAY_TYPE: - case GL_SECONDARY_COLOR_ARRAY_STRIDE: - case GL_SECONDARY_COLOR_ARRAY: - case GL_ACTIVE_TEXTURE: -/* case GL_ACTIVE_TEXTURE_ARB:*/ - case GL_CLIENT_ACTIVE_TEXTURE: -/* case GL_CLIENT_ACTIVE_TEXTURE_ARB:*/ - case GL_MAX_TEXTURE_UNITS: -/* case GL_MAX_TEXTURE_UNITS_ARB:*/ - case GL_MAX_RENDERBUFFER_SIZE_EXT: - case GL_TEXTURE_COMPRESSION_HINT: -/* case GL_TEXTURE_COMPRESSION_HINT_ARB:*/ - case GL_TEXTURE_RECTANGLE_ARB: -/* case GL_TEXTURE_RECTANGLE_NV:*/ - case GL_TEXTURE_BINDING_RECTANGLE_ARB: -/* case GL_TEXTURE_BINDING_RECTANGLE_NV:*/ - case GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB: -/* case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:*/ - case GL_MAX_TEXTURE_LOD_BIAS: - case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: - case GL_MAX_SHININESS_NV: - case GL_MAX_SPOT_EXPONENT_NV: - case GL_TEXTURE_CUBE_MAP: -/* case GL_TEXTURE_CUBE_MAP_ARB:*/ - case GL_TEXTURE_BINDING_CUBE_MAP: -/* case GL_TEXTURE_BINDING_CUBE_MAP_ARB:*/ - case GL_MAX_CUBE_MAP_TEXTURE_SIZE: -/* case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:*/ - case GL_MULTISAMPLE_FILTER_HINT_NV: - case GL_FOG_DISTANCE_MODE_NV: - case GL_VERTEX_PROGRAM_ARB: - case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB: - case GL_MAX_PROGRAM_MATRICES_ARB: - case GL_CURRENT_MATRIX_STACK_DEPTH_ARB: - case GL_VERTEX_PROGRAM_POINT_SIZE_ARB: - case GL_VERTEX_PROGRAM_TWO_SIDE_ARB: - case GL_PROGRAM_ERROR_POSITION_ARB: - case GL_DEPTH_CLAMP_NV: - case GL_NUM_COMPRESSED_TEXTURE_FORMATS: -/* case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:*/ - case GL_MAX_VERTEX_UNITS_ARB: - case GL_ACTIVE_VERTEX_UNITS_ARB: - case GL_WEIGHT_SUM_UNITY_ARB: - case GL_VERTEX_BLEND_ARB: - case GL_CURRENT_WEIGHT_ARB: - case GL_WEIGHT_ARRAY_TYPE_ARB: - case GL_WEIGHT_ARRAY_STRIDE_ARB: - case GL_WEIGHT_ARRAY_SIZE_ARB: - case GL_WEIGHT_ARRAY_ARB: - case GL_PACK_INVERT_MESA: - case GL_STENCIL_BACK_FUNC_ATI: - case GL_STENCIL_BACK_FAIL_ATI: - case GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI: - case GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI: - case GL_FRAGMENT_PROGRAM_ARB: - case GL_MAX_DRAW_BUFFERS_ARB: -/* case GL_MAX_DRAW_BUFFERS_ATI:*/ - case GL_DRAW_BUFFER0_ARB: -/* case GL_DRAW_BUFFER0_ATI:*/ - case GL_DRAW_BUFFER1_ARB: -/* case GL_DRAW_BUFFER1_ATI:*/ - case GL_DRAW_BUFFER2_ARB: -/* case GL_DRAW_BUFFER2_ATI:*/ - case GL_DRAW_BUFFER3_ARB: -/* case GL_DRAW_BUFFER3_ATI:*/ - case GL_DRAW_BUFFER4_ARB: -/* case GL_DRAW_BUFFER4_ATI:*/ - case GL_DRAW_BUFFER5_ARB: -/* case GL_DRAW_BUFFER5_ATI:*/ - case GL_DRAW_BUFFER6_ARB: -/* case GL_DRAW_BUFFER6_ATI:*/ - case GL_DRAW_BUFFER7_ARB: -/* case GL_DRAW_BUFFER7_ATI:*/ - case GL_DRAW_BUFFER8_ARB: -/* case GL_DRAW_BUFFER8_ATI:*/ - case GL_DRAW_BUFFER9_ARB: -/* case GL_DRAW_BUFFER9_ATI:*/ - case GL_DRAW_BUFFER10_ARB: -/* case GL_DRAW_BUFFER10_ATI:*/ - case GL_DRAW_BUFFER11_ARB: -/* case GL_DRAW_BUFFER11_ATI:*/ - case GL_DRAW_BUFFER12_ARB: -/* case GL_DRAW_BUFFER12_ATI:*/ - case GL_DRAW_BUFFER13_ARB: -/* case GL_DRAW_BUFFER13_ATI:*/ - case GL_DRAW_BUFFER14_ARB: -/* case GL_DRAW_BUFFER14_ATI:*/ - case GL_DRAW_BUFFER15_ARB: -/* case GL_DRAW_BUFFER15_ATI:*/ - case GL_BLEND_EQUATION_ALPHA_EXT: - case GL_MATRIX_PALETTE_ARB: - case GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB: - case GL_MAX_PALETTE_MATRICES_ARB: - case GL_CURRENT_PALETTE_MATRIX_ARB: - case GL_MATRIX_INDEX_ARRAY_ARB: - case GL_CURRENT_MATRIX_INDEX_ARB: - case GL_MATRIX_INDEX_ARRAY_SIZE_ARB: - case GL_MATRIX_INDEX_ARRAY_TYPE_ARB: - case GL_MATRIX_INDEX_ARRAY_STRIDE_ARB: - case GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT: - case GL_POINT_SPRITE_ARB: -/* case GL_POINT_SPRITE_NV:*/ - case GL_POINT_SPRITE_R_MODE_NV: - case GL_MAX_VERTEX_ATTRIBS_ARB: - case GL_MAX_TEXTURE_COORDS_ARB: - case GL_MAX_TEXTURE_IMAGE_UNITS_ARB: - case GL_DEPTH_BOUNDS_TEST_EXT: - case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT: - case GL_STENCIL_TEST_TWO_SIDE_EXT: - case GL_ACTIVE_STENCIL_FACE_EXT: - case GL_TEXTURE_BINDING_1D_ARRAY_EXT: - case GL_TEXTURE_BINDING_2D_ARRAY_EXT: - case GL_DRAW_FRAMEBUFFER_BINDING_EXT: - case GL_RENDERBUFFER_BINDING_EXT: - case GL_READ_FRAMEBUFFER_BINDING_EXT: - case GL_MAX_COLOR_ATTACHMENTS_EXT: - case GL_RASTER_POSITION_UNCLIPPED_IBM: - return 1; - case GL_SMOOTH_POINT_SIZE_RANGE: - case GL_LINE_WIDTH_RANGE: - case GL_POLYGON_MODE: - case GL_DEPTH_RANGE: - case GL_MAX_VIEWPORT_DIMS: - case GL_MAP1_GRID_DOMAIN: - case GL_MAP2_GRID_SEGMENTS: - case GL_ALIASED_POINT_SIZE_RANGE: - case GL_ALIASED_LINE_WIDTH_RANGE: - case GL_DEPTH_BOUNDS_EXT: - return 2; - case GL_CURRENT_NORMAL: - return 3; - case GL_CURRENT_COLOR: - case GL_CURRENT_TEXTURE_COORDS: - case GL_CURRENT_RASTER_COLOR: - case GL_CURRENT_RASTER_TEXTURE_COORDS: - case GL_CURRENT_RASTER_POSITION: - case GL_LIGHT_MODEL_AMBIENT: - case GL_FOG_COLOR: - case GL_ACCUM_CLEAR_VALUE: - case GL_VIEWPORT: - case GL_SCISSOR_BOX: - case GL_COLOR_CLEAR_VALUE: - case GL_COLOR_WRITEMASK: - case GL_MAP2_GRID_DOMAIN: - case GL_BLEND_COLOR: -/* case GL_BLEND_COLOR_EXT:*/ - case GL_CURRENT_SECONDARY_COLOR: - return 4; - case GL_MODELVIEW_MATRIX: - case GL_PROJECTION_MATRIX: - case GL_TEXTURE_MATRIX: - case GL_MODELVIEW0_ARB: - case GL_COLOR_MATRIX: - case GL_MODELVIEW1_ARB: - case GL_CURRENT_MATRIX_ARB: - case GL_MODELVIEW2_ARB: - case GL_MODELVIEW3_ARB: - case GL_MODELVIEW4_ARB: - case GL_MODELVIEW5_ARB: - case GL_MODELVIEW6_ARB: - case GL_MODELVIEW7_ARB: - case GL_MODELVIEW8_ARB: - case GL_MODELVIEW9_ARB: - case GL_MODELVIEW10_ARB: - case GL_MODELVIEW11_ARB: - case GL_MODELVIEW12_ARB: - case GL_MODELVIEW13_ARB: - case GL_MODELVIEW14_ARB: - case GL_MODELVIEW15_ARB: - case GL_MODELVIEW16_ARB: - case GL_MODELVIEW17_ARB: - case GL_MODELVIEW18_ARB: - case GL_MODELVIEW19_ARB: - case GL_MODELVIEW20_ARB: - case GL_MODELVIEW21_ARB: - case GL_MODELVIEW22_ARB: - case GL_MODELVIEW23_ARB: - case GL_MODELVIEW24_ARB: - case GL_MODELVIEW25_ARB: - case GL_MODELVIEW26_ARB: - case GL_MODELVIEW27_ARB: - case GL_MODELVIEW28_ARB: - case GL_MODELVIEW29_ARB: - case GL_MODELVIEW30_ARB: - case GL_MODELVIEW31_ARB: - case GL_TRANSPOSE_CURRENT_MATRIX_ARB: - return 16; - case GL_FOG_COORDINATE_SOURCE: - case GL_COMPRESSED_TEXTURE_FORMATS: - return __glGetBooleanv_variable_size(e); - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetTexParameterfv_size(GLenum e) -{ - switch (e) { - case GL_TEXTURE_MAG_FILTER: - case GL_TEXTURE_MIN_FILTER: - case GL_TEXTURE_WRAP_S: - case GL_TEXTURE_WRAP_T: - case GL_TEXTURE_PRIORITY: - case GL_TEXTURE_RESIDENT: - case GL_TEXTURE_WRAP_R: - case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB: -/* case GL_SHADOW_AMBIENT_SGIX:*/ - case GL_TEXTURE_MIN_LOD: - case GL_TEXTURE_MAX_LOD: - case GL_TEXTURE_BASE_LEVEL: - case GL_TEXTURE_MAX_LEVEL: - case GL_TEXTURE_CLIPMAP_FRAME_SGIX: - case GL_TEXTURE_LOD_BIAS_S_SGIX: - case GL_TEXTURE_LOD_BIAS_T_SGIX: - case GL_TEXTURE_LOD_BIAS_R_SGIX: - case GL_GENERATE_MIPMAP: -/* case GL_GENERATE_MIPMAP_SGIS:*/ - case GL_TEXTURE_COMPARE_SGIX: - case GL_TEXTURE_COMPARE_OPERATOR_SGIX: - case GL_TEXTURE_MAX_CLAMP_S_SGIX: - case GL_TEXTURE_MAX_CLAMP_T_SGIX: - case GL_TEXTURE_MAX_CLAMP_R_SGIX: - case GL_TEXTURE_MAX_ANISOTROPY_EXT: - case GL_TEXTURE_LOD_BIAS: -/* case GL_TEXTURE_LOD_BIAS_EXT:*/ - case GL_DEPTH_TEXTURE_MODE: -/* case GL_DEPTH_TEXTURE_MODE_ARB:*/ - case GL_TEXTURE_COMPARE_MODE: -/* case GL_TEXTURE_COMPARE_MODE_ARB:*/ - case GL_TEXTURE_COMPARE_FUNC: -/* case GL_TEXTURE_COMPARE_FUNC_ARB:*/ - case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV: - return 1; - case GL_TEXTURE_CLIPMAP_CENTER_SGIX: - case GL_TEXTURE_CLIPMAP_OFFSET_SGIX: - return 2; - case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX: - return 3; - case GL_TEXTURE_BORDER_COLOR: - case GL_POST_TEXTURE_FILTER_BIAS_SGIX: - case GL_POST_TEXTURE_FILTER_SCALE_SGIX: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetTexLevelParameterfv_size(GLenum e) -{ - switch (e) { - case GL_TEXTURE_WIDTH: - case GL_TEXTURE_HEIGHT: - case GL_TEXTURE_COMPONENTS: - case GL_TEXTURE_BORDER: - case GL_TEXTURE_RED_SIZE: -/* case GL_TEXTURE_RED_SIZE_EXT:*/ - case GL_TEXTURE_GREEN_SIZE: -/* case GL_TEXTURE_GREEN_SIZE_EXT:*/ - case GL_TEXTURE_BLUE_SIZE: -/* case GL_TEXTURE_BLUE_SIZE_EXT:*/ - case GL_TEXTURE_ALPHA_SIZE: -/* case GL_TEXTURE_ALPHA_SIZE_EXT:*/ - case GL_TEXTURE_LUMINANCE_SIZE: -/* case GL_TEXTURE_LUMINANCE_SIZE_EXT:*/ - case GL_TEXTURE_INTENSITY_SIZE: -/* case GL_TEXTURE_INTENSITY_SIZE_EXT:*/ - case GL_TEXTURE_DEPTH: - case GL_TEXTURE_INDEX_SIZE_EXT: - case GL_TEXTURE_COMPRESSED_IMAGE_SIZE: -/* case GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB:*/ - case GL_TEXTURE_COMPRESSED: -/* case GL_TEXTURE_COMPRESSED_ARB:*/ - case GL_TEXTURE_DEPTH_SIZE: -/* case GL_TEXTURE_DEPTH_SIZE_ARB:*/ - return 1; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glColorTableParameterfv_size(GLenum e) -{ - switch (e) { - case GL_COLOR_TABLE_SCALE: - case GL_COLOR_TABLE_BIAS: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetColorTableParameterfv_size(GLenum e) -{ - switch (e) { - case GL_COLOR_TABLE_FORMAT: -/* case GL_COLOR_TABLE_FORMAT_EXT:*/ - case GL_COLOR_TABLE_WIDTH: -/* case GL_COLOR_TABLE_WIDTH_EXT:*/ - case GL_COLOR_TABLE_RED_SIZE: -/* case GL_COLOR_TABLE_RED_SIZE_EXT:*/ - case GL_COLOR_TABLE_GREEN_SIZE: -/* case GL_COLOR_TABLE_GREEN_SIZE_EXT:*/ - case GL_COLOR_TABLE_BLUE_SIZE: -/* case GL_COLOR_TABLE_BLUE_SIZE_EXT:*/ - case GL_COLOR_TABLE_ALPHA_SIZE: -/* case GL_COLOR_TABLE_ALPHA_SIZE_EXT:*/ - case GL_COLOR_TABLE_LUMINANCE_SIZE: -/* case GL_COLOR_TABLE_LUMINANCE_SIZE_EXT:*/ - case GL_COLOR_TABLE_INTENSITY_SIZE: -/* case GL_COLOR_TABLE_INTENSITY_SIZE_EXT:*/ - return 1; - case GL_COLOR_TABLE_SCALE: - case GL_COLOR_TABLE_BIAS: - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glConvolutionParameterfv_size(GLenum e) -{ - switch (e) { - case GL_CONVOLUTION_BORDER_MODE: -/* case GL_CONVOLUTION_BORDER_MODE_EXT:*/ - return 1; - case GL_CONVOLUTION_FILTER_SCALE: -/* case GL_CONVOLUTION_FILTER_SCALE_EXT:*/ - case GL_CONVOLUTION_FILTER_BIAS: -/* case GL_CONVOLUTION_FILTER_BIAS_EXT:*/ - case GL_CONVOLUTION_BORDER_COLOR: -/* case GL_CONVOLUTION_BORDER_COLOR_HP:*/ - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetConvolutionParameterfv_size(GLenum e) -{ - switch (e) { - case GL_CONVOLUTION_BORDER_MODE: -/* case GL_CONVOLUTION_BORDER_MODE_EXT:*/ - case GL_CONVOLUTION_FORMAT: -/* case GL_CONVOLUTION_FORMAT_EXT:*/ - case GL_CONVOLUTION_WIDTH: -/* case GL_CONVOLUTION_WIDTH_EXT:*/ - case GL_CONVOLUTION_HEIGHT: -/* case GL_CONVOLUTION_HEIGHT_EXT:*/ - case GL_MAX_CONVOLUTION_WIDTH: -/* case GL_MAX_CONVOLUTION_WIDTH_EXT:*/ - case GL_MAX_CONVOLUTION_HEIGHT: -/* case GL_MAX_CONVOLUTION_HEIGHT_EXT:*/ - return 1; - case GL_CONVOLUTION_FILTER_SCALE: -/* case GL_CONVOLUTION_FILTER_SCALE_EXT:*/ - case GL_CONVOLUTION_FILTER_BIAS: -/* case GL_CONVOLUTION_FILTER_BIAS_EXT:*/ - case GL_CONVOLUTION_BORDER_COLOR: -/* case GL_CONVOLUTION_BORDER_COLOR_HP:*/ - return 4; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetHistogramParameterfv_size(GLenum e) -{ - switch (e) { - case GL_HISTOGRAM_WIDTH: - case GL_HISTOGRAM_FORMAT: - case GL_HISTOGRAM_RED_SIZE: - case GL_HISTOGRAM_GREEN_SIZE: - case GL_HISTOGRAM_BLUE_SIZE: - case GL_HISTOGRAM_ALPHA_SIZE: - case GL_HISTOGRAM_LUMINANCE_SIZE: - case GL_HISTOGRAM_SINK: - return 1; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetMinmaxParameterfv_size(GLenum e) -{ - switch (e) { - case GL_MINMAX_FORMAT: - case GL_MINMAX_SINK: - return 1; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetProgramivARB_size(GLenum e) -{ - switch (e) { - case GL_PROGRAM_LENGTH_ARB: - case GL_PROGRAM_BINDING_ARB: - case GL_PROGRAM_ALU_INSTRUCTIONS_ARB: - case GL_PROGRAM_TEX_INSTRUCTIONS_ARB: - case GL_PROGRAM_TEX_INDIRECTIONS_ARB: - case GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB: - case GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB: - case GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB: - case GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB: - case GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB: - case GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB: - case GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB: - case GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB: - case GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB: - case GL_PROGRAM_FORMAT_ARB: - case GL_PROGRAM_INSTRUCTIONS_ARB: - case GL_MAX_PROGRAM_INSTRUCTIONS_ARB: - case GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB: - case GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB: - case GL_PROGRAM_TEMPORARIES_ARB: - case GL_MAX_PROGRAM_TEMPORARIES_ARB: - case GL_PROGRAM_NATIVE_TEMPORARIES_ARB: - case GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB: - case GL_PROGRAM_PARAMETERS_ARB: - case GL_MAX_PROGRAM_PARAMETERS_ARB: - case GL_PROGRAM_NATIVE_PARAMETERS_ARB: - case GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB: - case GL_PROGRAM_ATTRIBS_ARB: - case GL_MAX_PROGRAM_ATTRIBS_ARB: - case GL_PROGRAM_NATIVE_ATTRIBS_ARB: - case GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB: - case GL_PROGRAM_ADDRESS_REGISTERS_ARB: - case GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB: - case GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB: - case GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB: - case GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB: - case GL_MAX_PROGRAM_ENV_PARAMETERS_ARB: - case GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB: - case GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV: - case GL_MAX_PROGRAM_CALL_DEPTH_NV: - case GL_MAX_PROGRAM_IF_DEPTH_NV: - case GL_MAX_PROGRAM_LOOP_DEPTH_NV: - case GL_MAX_PROGRAM_LOOP_COUNT_NV: - return 1; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetVertexAttribdvARB_size(GLenum e) -{ - switch (e) { - case GL_VERTEX_PROGRAM_ARB: - case GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB: - case GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB: - case GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB: - case GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB: - case GL_CURRENT_VERTEX_ATTRIB_ARB: - return 1; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetQueryObjectivARB_size(GLenum e) -{ - switch (e) { - case GL_QUERY_RESULT_ARB: - case GL_QUERY_RESULT_AVAILABLE_ARB: - return 1; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetQueryivARB_size(GLenum e) -{ - switch (e) { - case GL_QUERY_COUNTER_BITS_ARB: - case GL_CURRENT_QUERY_ARB: - return 1; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glPointParameterfvEXT_size(GLenum e) -{ - switch (e) { - case GL_POINT_SIZE_MIN: -/* case GL_POINT_SIZE_MIN_ARB:*/ -/* case GL_POINT_SIZE_MIN_SGIS:*/ - case GL_POINT_SIZE_MAX: -/* case GL_POINT_SIZE_MAX_ARB:*/ -/* case GL_POINT_SIZE_MAX_SGIS:*/ - case GL_POINT_FADE_THRESHOLD_SIZE: -/* case GL_POINT_FADE_THRESHOLD_SIZE_ARB:*/ -/* case GL_POINT_FADE_THRESHOLD_SIZE_SGIS:*/ - case GL_POINT_SPRITE_R_MODE_NV: - case GL_POINT_SPRITE_COORD_ORIGIN: - return 1; - case GL_POINT_DISTANCE_ATTENUATION: -/* case GL_POINT_DISTANCE_ATTENUATION_ARB:*/ -/* case GL_POINT_DISTANCE_ATTENUATION_SGIS:*/ - return 3; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetProgramivNV_size(GLenum e) -{ - switch (e) { - case GL_PROGRAM_LENGTH_NV: - case GL_PROGRAM_TARGET_NV: - case GL_PROGRAM_RESIDENT_NV: - return 1; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetVertexAttribdvNV_size(GLenum e) -{ - switch (e) { - case GL_ATTRIB_ARRAY_SIZE_NV: - case GL_ATTRIB_ARRAY_STRIDE_NV: - case GL_ATTRIB_ARRAY_TYPE_NV: - case GL_CURRENT_ATTRIB_NV: - return 1; - default: - return 0; - } -} - -INTERNAL PURE FASTCALL GLint -__glGetFramebufferAttachmentParameterivEXT_size(GLenum e) -{ - switch (e) { - case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT: - case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT: - case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT: - case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT: - case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT: - return 1; - default: - return 0; - } -} - -ALIAS(Fogiv, Fogfv) - ALIAS(Lightiv, Lightfv) - ALIAS(LightModeliv, LightModelfv) - ALIAS(Materialiv, Materialfv) - ALIAS(TexParameteriv, TexParameterfv) - ALIAS(TexEnviv, TexEnvfv) - ALIAS(TexGenfv, TexGendv) - ALIAS(TexGeniv, TexGendv) - ALIAS(Map1f, Map1d) - ALIAS(Map2f, Map2d) - ALIAS(GetDoublev, GetBooleanv) - ALIAS(GetFloatv, GetBooleanv) - ALIAS(GetIntegerv, GetBooleanv) - ALIAS(GetLightfv, Lightfv) - ALIAS(GetLightiv, Lightfv) - ALIAS(GetMaterialfv, Materialfv) - ALIAS(GetMaterialiv, Materialfv) - ALIAS(GetTexEnvfv, TexEnvfv) - ALIAS(GetTexEnviv, TexEnvfv) - ALIAS(GetTexGendv, TexGendv) - ALIAS(GetTexGenfv, TexGendv) - ALIAS(GetTexGeniv, TexGendv) - ALIAS(GetTexParameteriv, GetTexParameterfv) - ALIAS(GetTexLevelParameteriv, GetTexLevelParameterfv) - ALIAS(ColorTableParameteriv, ColorTableParameterfv) - ALIAS(GetColorTableParameteriv, GetColorTableParameterfv) - ALIAS(ConvolutionParameteriv, ConvolutionParameterfv) - ALIAS(GetConvolutionParameteriv, GetConvolutionParameterfv) - ALIAS(GetHistogramParameteriv, GetHistogramParameterfv) - ALIAS(GetMinmaxParameteriv, GetMinmaxParameterfv) - ALIAS(GetVertexAttribfvARB, GetVertexAttribdvARB) - ALIAS(GetVertexAttribivARB, GetVertexAttribdvARB) - ALIAS(GetQueryObjectuivARB, GetQueryObjectivARB) - ALIAS(GetVertexAttribfvNV, GetVertexAttribdvNV) - ALIAS(GetVertexAttribivNV, GetVertexAttribdvNV) - ALIAS(PointParameterivNV, PointParameterfvEXT) -# undef PURE -# undef FASTCALL -# undef INTERNAL diff --git a/GL/glx/indirect_size_get.h b/GL/glx/indirect_size_get.h deleted file mode 100644 index 4fcb55b4e..000000000 --- a/GL/glx/indirect_size_get.h +++ /dev/null @@ -1,102 +0,0 @@ -/* DO NOT EDIT - This file generated automatically by glX_proto_size.py (from Mesa) script */ - -/* - * (C) Copyright IBM Corporation 2004 - * All Rights Reserved. - * - * 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, sub license, - * and/or 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 (including the next - * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM, - * AND/OR THEIR SUPPLIERS 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. - */ - -#if !defined( _INDIRECT_SIZE_GET_H_ ) -# define _INDIRECT_SIZE_GET_H_ - -/** - * \file - * Prototypes for functions used to determine the number of data elements in - * various GLX protocol messages. - * - * \author Ian Romanick - */ - -# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) -# define PURE __attribute__((pure)) -# else -# define PURE -# endif - -# if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__) -# define FASTCALL __attribute__((fastcall)) -# else -# define FASTCALL -# endif - -# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) -# define INTERNAL __attribute__((visibility("internal"))) -# else -# define INTERNAL -# endif - -extern INTERNAL PURE FASTCALL GLint __glGetBooleanv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetDoublev_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetFloatv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetIntegerv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetLightfv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetLightiv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetMaterialfv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetMaterialiv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetTexEnvfv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetTexEnviv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetTexGendv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetTexGenfv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetTexGeniv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetTexParameterfv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetTexParameteriv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetTexLevelParameterfv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetTexLevelParameteriv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetColorTableParameterfv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetColorTableParameteriv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint -__glGetConvolutionParameterfv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint -__glGetConvolutionParameteriv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetHistogramParameterfv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetHistogramParameteriv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetMinmaxParameterfv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetMinmaxParameteriv_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetProgramivARB_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribdvARB_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribfvARB_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribivARB_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetQueryObjectivARB_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetQueryObjectuivARB_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetQueryivARB_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetProgramivNV_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribdvNV_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribfvNV_size(GLenum); -extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribivNV_size(GLenum); -extern INTERNAL PURE FASTCALL GLint -__glGetFramebufferAttachmentParameterivEXT_size(GLenum); - -# undef PURE -# undef FASTCALL -# undef INTERNAL - -#endif /* !defined( _INDIRECT_SIZE_GET_H_ ) */ diff --git a/GL/glx/indirect_table.c b/GL/glx/indirect_table.c deleted file mode 100644 index cb3202605..000000000 --- a/GL/glx/indirect_table.c +++ /dev/null @@ -1,1596 +0,0 @@ -/* DO NOT EDIT - This file generated automatically by glX_server_table.py (from Mesa) script */ - -/* - * (C) Copyright IBM Corporation 2005, 2006 - * All Rights Reserved. - * - * 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, sub license, - * and/or 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 (including the next - * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM, - * AND/OR THEIR SUPPLIERS 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. - */ - -#include -#include "glxserver.h" -#include "glxext.h" -#include "indirect_dispatch.h" -#include "indirect_reqsize.h" -#include "g_disptab.h" -#include "indirect_table.h" - -/*****************************************************************/ -/* tree depth = 3 */ -static const int_fast16_t Single_dispatch_tree[24] = { - /* [0] -> opcode range [0, 256], node depth 1 */ - 2, - 5, - 13, - 16, - EMPTY_LEAF, - - /* [5] -> opcode range [0, 64], node depth 2 */ - 2, - LEAF(0), - LEAF(16), - 10, - EMPTY_LEAF, - - /* [10] -> opcode range [32, 48], node depth 3 */ - 1, - LEAF(32), - EMPTY_LEAF, - - /* [13] -> opcode range [64, 128], node depth 2 */ - 1, - EMPTY_LEAF, - LEAF(40), - - /* [16] -> opcode range [128, 192], node depth 2 */ - 2, - LEAF(72), - LEAF(88), - 21, - EMPTY_LEAF, - - /* [21] -> opcode range [160, 176], node depth 3 */ - 1, - LEAF(104), - EMPTY_LEAF, - -}; - -static const void *Single_function_table[112][2] = { - /* [ 0] = 0 */ {NULL, NULL}, - /* [ 1] = 1 */ {__glXDisp_Render, __glXDispSwap_Render}, - /* [ 2] = 2 */ {__glXDisp_RenderLarge, __glXDispSwap_RenderLarge}, - /* [ 3] = 3 */ {__glXDisp_CreateContext, __glXDispSwap_CreateContext}, - /* [ 4] = 4 */ {__glXDisp_DestroyContext, __glXDispSwap_DestroyContext}, - /* [ 5] = 5 */ {__glXDisp_MakeCurrent, __glXDispSwap_MakeCurrent}, - /* [ 6] = 6 */ {__glXDisp_IsDirect, __glXDispSwap_IsDirect}, - /* [ 7] = 7 */ {__glXDisp_QueryVersion, __glXDispSwap_QueryVersion}, - /* [ 8] = 8 */ {__glXDisp_WaitGL, __glXDispSwap_WaitGL}, - /* [ 9] = 9 */ {__glXDisp_WaitX, __glXDispSwap_WaitX}, - /* [ 10] = 10 */ {__glXDisp_CopyContext, __glXDispSwap_CopyContext}, - /* [ 11] = 11 */ {__glXDisp_SwapBuffers, __glXDispSwap_SwapBuffers}, - /* [ 12] = 12 */ {__glXDisp_UseXFont, __glXDispSwap_UseXFont}, - /* [ 13] = 13 */ {__glXDisp_CreateGLXPixmap, __glXDispSwap_CreateGLXPixmap}, - /* [ 14] = 14 */ {__glXDisp_GetVisualConfigs, __glXDispSwap_GetVisualConfigs}, - /* [ 15] = 15 */ {__glXDisp_DestroyGLXPixmap, __glXDispSwap_DestroyGLXPixmap}, - /* [ 16] = 16 */ {__glXDisp_VendorPrivate, __glXDispSwap_VendorPrivate}, - /* [ 17] = 17 */ {__glXDisp_VendorPrivateWithReply, __glXDispSwap_VendorPrivateWithReply}, - /* [ 18] = 18 */ {__glXDisp_QueryExtensionsString, __glXDispSwap_QueryExtensionsString}, - /* [ 19] = 19 */ {__glXDisp_QueryServerString, __glXDispSwap_QueryServerString}, - /* [ 20] = 20 */ {__glXDisp_ClientInfo, __glXDispSwap_ClientInfo}, - /* [ 21] = 21 */ {__glXDisp_GetFBConfigs, __glXDispSwap_GetFBConfigs}, - /* [ 22] = 22 */ {__glXDisp_CreatePixmap, __glXDispSwap_CreatePixmap}, - /* [ 23] = 23 */ {__glXDisp_DestroyPixmap, __glXDispSwap_DestroyPixmap}, - /* [ 24] = 24 */ {__glXDisp_CreateNewContext, __glXDispSwap_CreateNewContext}, - /* [ 25] = 25 */ {__glXDisp_QueryContext, __glXDispSwap_QueryContext}, - /* [ 26] = 26 */ {__glXDisp_MakeContextCurrent, __glXDispSwap_MakeContextCurrent}, - /* [ 27] = 27 */ {__glXDisp_CreatePbuffer, __glXDispSwap_CreatePbuffer}, - /* [ 28] = 28 */ {__glXDisp_DestroyPbuffer, __glXDispSwap_DestroyPbuffer}, - /* [ 29] = 29 */ {__glXDisp_GetDrawableAttributes, __glXDispSwap_GetDrawableAttributes}, - /* [ 30] = 30 */ {__glXDisp_ChangeDrawableAttributes, __glXDispSwap_ChangeDrawableAttributes}, - /* [ 31] = 31 */ {__glXDisp_CreateWindow, __glXDispSwap_CreateWindow}, - /* [ 32] = 32 */ {__glXDisp_DestroyWindow, __glXDispSwap_DestroyWindow}, - /* [ 33] = 33 */ {NULL, NULL}, - /* [ 34] = 34 */ {NULL, NULL}, - /* [ 35] = 35 */ {NULL, NULL}, - /* [ 36] = 36 */ {NULL, NULL}, - /* [ 37] = 37 */ {NULL, NULL}, - /* [ 38] = 38 */ {NULL, NULL}, - /* [ 39] = 39 */ {NULL, NULL}, - /* [ 40] = 96 */ {NULL, NULL}, - /* [ 41] = 97 */ {NULL, NULL}, - /* [ 42] = 98 */ {NULL, NULL}, - /* [ 43] = 99 */ {NULL, NULL}, - /* [ 44] = 100 */ {NULL, NULL}, - /* [ 45] = 101 */ {__glXDisp_NewList, __glXDispSwap_NewList}, - /* [ 46] = 102 */ {__glXDisp_EndList, __glXDispSwap_EndList}, - /* [ 47] = 103 */ {__glXDisp_DeleteLists, __glXDispSwap_DeleteLists}, - /* [ 48] = 104 */ {__glXDisp_GenLists, __glXDispSwap_GenLists}, - /* [ 49] = 105 */ {__glXDisp_FeedbackBuffer, __glXDispSwap_FeedbackBuffer}, - /* [ 50] = 106 */ {__glXDisp_SelectBuffer, __glXDispSwap_SelectBuffer}, - /* [ 51] = 107 */ {__glXDisp_RenderMode, __glXDispSwap_RenderMode}, - /* [ 52] = 108 */ {__glXDisp_Finish, __glXDispSwap_Finish}, - /* [ 53] = 109 */ {__glXDisp_PixelStoref, __glXDispSwap_PixelStoref}, - /* [ 54] = 110 */ {__glXDisp_PixelStorei, __glXDispSwap_PixelStorei}, - /* [ 55] = 111 */ {__glXDisp_ReadPixels, __glXDispSwap_ReadPixels}, - /* [ 56] = 112 */ {__glXDisp_GetBooleanv, __glXDispSwap_GetBooleanv}, - /* [ 57] = 113 */ {__glXDisp_GetClipPlane, __glXDispSwap_GetClipPlane}, - /* [ 58] = 114 */ {__glXDisp_GetDoublev, __glXDispSwap_GetDoublev}, - /* [ 59] = 115 */ {__glXDisp_GetError, __glXDispSwap_GetError}, - /* [ 60] = 116 */ {__glXDisp_GetFloatv, __glXDispSwap_GetFloatv}, - /* [ 61] = 117 */ {__glXDisp_GetIntegerv, __glXDispSwap_GetIntegerv}, - /* [ 62] = 118 */ {__glXDisp_GetLightfv, __glXDispSwap_GetLightfv}, - /* [ 63] = 119 */ {__glXDisp_GetLightiv, __glXDispSwap_GetLightiv}, - /* [ 64] = 120 */ {__glXDisp_GetMapdv, __glXDispSwap_GetMapdv}, - /* [ 65] = 121 */ {__glXDisp_GetMapfv, __glXDispSwap_GetMapfv}, - /* [ 66] = 122 */ {__glXDisp_GetMapiv, __glXDispSwap_GetMapiv}, - /* [ 67] = 123 */ {__glXDisp_GetMaterialfv, __glXDispSwap_GetMaterialfv}, - /* [ 68] = 124 */ {__glXDisp_GetMaterialiv, __glXDispSwap_GetMaterialiv}, - /* [ 69] = 125 */ {__glXDisp_GetPixelMapfv, __glXDispSwap_GetPixelMapfv}, - /* [ 70] = 126 */ {__glXDisp_GetPixelMapuiv, __glXDispSwap_GetPixelMapuiv}, - /* [ 71] = 127 */ {__glXDisp_GetPixelMapusv, __glXDispSwap_GetPixelMapusv}, - /* [ 72] = 128 */ {__glXDisp_GetPolygonStipple, __glXDispSwap_GetPolygonStipple}, - /* [ 73] = 129 */ {__glXDisp_GetString, __glXDispSwap_GetString}, - /* [ 74] = 130 */ {__glXDisp_GetTexEnvfv, __glXDispSwap_GetTexEnvfv}, - /* [ 75] = 131 */ {__glXDisp_GetTexEnviv, __glXDispSwap_GetTexEnviv}, - /* [ 76] = 132 */ {__glXDisp_GetTexGendv, __glXDispSwap_GetTexGendv}, - /* [ 77] = 133 */ {__glXDisp_GetTexGenfv, __glXDispSwap_GetTexGenfv}, - /* [ 78] = 134 */ {__glXDisp_GetTexGeniv, __glXDispSwap_GetTexGeniv}, - /* [ 79] = 135 */ {__glXDisp_GetTexImage, __glXDispSwap_GetTexImage}, - /* [ 80] = 136 */ {__glXDisp_GetTexParameterfv, __glXDispSwap_GetTexParameterfv}, - /* [ 81] = 137 */ {__glXDisp_GetTexParameteriv, __glXDispSwap_GetTexParameteriv}, - /* [ 82] = 138 */ {__glXDisp_GetTexLevelParameterfv, __glXDispSwap_GetTexLevelParameterfv}, - /* [ 83] = 139 */ {__glXDisp_GetTexLevelParameteriv, __glXDispSwap_GetTexLevelParameteriv}, - /* [ 84] = 140 */ {__glXDisp_IsEnabled, __glXDispSwap_IsEnabled}, - /* [ 85] = 141 */ {__glXDisp_IsList, __glXDispSwap_IsList}, - /* [ 86] = 142 */ {__glXDisp_Flush, __glXDispSwap_Flush}, - /* [ 87] = 143 */ {__glXDisp_AreTexturesResident, __glXDispSwap_AreTexturesResident}, - /* [ 88] = 144 */ {__glXDisp_DeleteTextures, __glXDispSwap_DeleteTextures}, - /* [ 89] = 145 */ {__glXDisp_GenTextures, __glXDispSwap_GenTextures}, - /* [ 90] = 146 */ {__glXDisp_IsTexture, __glXDispSwap_IsTexture}, - /* [ 91] = 147 */ {__glXDisp_GetColorTable, __glXDispSwap_GetColorTable}, - /* [ 92] = 148 */ {__glXDisp_GetColorTableParameterfv, __glXDispSwap_GetColorTableParameterfv}, - /* [ 93] = 149 */ {__glXDisp_GetColorTableParameteriv, __glXDispSwap_GetColorTableParameteriv}, - /* [ 94] = 150 */ {__glXDisp_GetConvolutionFilter, __glXDispSwap_GetConvolutionFilter}, - /* [ 95] = 151 */ {__glXDisp_GetConvolutionParameterfv, __glXDispSwap_GetConvolutionParameterfv}, - /* [ 96] = 152 */ {__glXDisp_GetConvolutionParameteriv, __glXDispSwap_GetConvolutionParameteriv}, - /* [ 97] = 153 */ {__glXDisp_GetSeparableFilter, __glXDispSwap_GetSeparableFilter}, - /* [ 98] = 154 */ {__glXDisp_GetHistogram, __glXDispSwap_GetHistogram}, - /* [ 99] = 155 */ {__glXDisp_GetHistogramParameterfv, __glXDispSwap_GetHistogramParameterfv}, - /* [ 100] = 156 */ {__glXDisp_GetHistogramParameteriv, __glXDispSwap_GetHistogramParameteriv}, - /* [ 101] = 157 */ {__glXDisp_GetMinmax, __glXDispSwap_GetMinmax}, - /* [ 102] = 158 */ {__glXDisp_GetMinmaxParameterfv, __glXDispSwap_GetMinmaxParameterfv}, - /* [ 103] = 159 */ {__glXDisp_GetMinmaxParameteriv, __glXDispSwap_GetMinmaxParameteriv}, - /* [ 104] = 160 */ {__glXDisp_GetCompressedTexImageARB, __glXDispSwap_GetCompressedTexImageARB}, - /* [ 105] = 161 */ {__glXDisp_DeleteQueriesARB, __glXDispSwap_DeleteQueriesARB}, - /* [ 106] = 162 */ {__glXDisp_GenQueriesARB, __glXDispSwap_GenQueriesARB}, - /* [ 107] = 163 */ {__glXDisp_IsQueryARB, __glXDispSwap_IsQueryARB}, - /* [ 108] = 164 */ {__glXDisp_GetQueryivARB, __glXDispSwap_GetQueryivARB}, - /* [ 109] = 165 */ {__glXDisp_GetQueryObjectivARB, __glXDispSwap_GetQueryObjectivARB}, - /* [ 110] = 166 */ {__glXDisp_GetQueryObjectuivARB, __glXDispSwap_GetQueryObjectuivARB}, - /* [ 111] = 167 */ {NULL, NULL}, -}; - -const struct __glXDispatchInfo Single_dispatch_info = { - 8, - Single_dispatch_tree, - Single_function_table, - NULL, - NULL -}; - -/*****************************************************************/ -/* tree depth = 8 */ -static const int_fast16_t Render_dispatch_tree[95] = { - /* [0] -> opcode range [0, 8192], node depth 1 */ - 2, - 5, - 31, - 54, - EMPTY_LEAF, - - /* [5] -> opcode range [0, 2048], node depth 2 */ - 1, - 8, - EMPTY_LEAF, - - /* [8] -> opcode range [0, 1024], node depth 3 */ - 1, - 11, - EMPTY_LEAF, - - /* [11] -> opcode range [0, 512], node depth 4 */ - 1, - 14, - EMPTY_LEAF, - - /* [14] -> opcode range [0, 256], node depth 5 */ - 4, - LEAF(0), - LEAF(16), - LEAF(32), - LEAF(48), - LEAF(64), - LEAF(80), - LEAF(96), - LEAF(112), - LEAF(128), - LEAF(144), - LEAF(160), - LEAF(176), - LEAF(192), - LEAF(208), - LEAF(224), - EMPTY_LEAF, - - /* [31] -> opcode range [2048, 4096], node depth 2 */ - 1, - 34, - EMPTY_LEAF, - - /* [34] -> opcode range [2048, 3072], node depth 3 */ - 1, - 37, - EMPTY_LEAF, - - /* [37] -> opcode range [2048, 2560], node depth 4 */ - 1, - 40, - EMPTY_LEAF, - - /* [40] -> opcode range [2048, 2304], node depth 5 */ - 1, - 43, - EMPTY_LEAF, - - /* [43] -> opcode range [2048, 2176], node depth 6 */ - 1, - 46, - EMPTY_LEAF, - - /* [46] -> opcode range [2048, 2112], node depth 7 */ - 1, - 49, - EMPTY_LEAF, - - /* [49] -> opcode range [2048, 2080], node depth 8 */ - 2, - LEAF(240), - LEAF(248), - LEAF(256), - EMPTY_LEAF, - - /* [54] -> opcode range [4096, 6144], node depth 2 */ - 1, - 57, - EMPTY_LEAF, - - /* [57] -> opcode range [4096, 5120], node depth 3 */ - 1, - 60, - EMPTY_LEAF, - - /* [60] -> opcode range [4096, 4608], node depth 4 */ - 1, - 63, - EMPTY_LEAF, - - /* [63] -> opcode range [4096, 4352], node depth 5 */ - 4, - LEAF(264), - LEAF(280), - 80, - EMPTY_LEAF, - EMPTY_LEAF, - LEAF(296), - LEAF(312), - LEAF(328), - LEAF(344), - EMPTY_LEAF, - 83, - 86, - EMPTY_LEAF, - 89, - 92, - EMPTY_LEAF, - - /* [80] -> opcode range [4128, 4144], node depth 6 */ - 1, - LEAF(360), - EMPTY_LEAF, - - /* [83] -> opcode range [4256, 4272], node depth 6 */ - 1, - EMPTY_LEAF, - LEAF(368), - - /* [86] -> opcode range [4272, 4288], node depth 6 */ - 1, - LEAF(376), - EMPTY_LEAF, - - /* [89] -> opcode range [4304, 4320], node depth 6 */ - 1, - EMPTY_LEAF, - LEAF(384), - - /* [92] -> opcode range [4320, 4336], node depth 6 */ - 1, - LEAF(392), - EMPTY_LEAF, - -}; - -static const void *Render_function_table[400][2] = { - /* [ 0] = 0 */ {NULL, NULL}, - /* [ 1] = 1 */ {__glXDisp_CallList, __glXDispSwap_CallList}, - /* [ 2] = 2 */ {__glXDisp_CallLists, __glXDispSwap_CallLists}, - /* [ 3] = 3 */ {__glXDisp_ListBase, __glXDispSwap_ListBase}, - /* [ 4] = 4 */ {__glXDisp_Begin, __glXDispSwap_Begin}, - /* [ 5] = 5 */ {__glXDisp_Bitmap, __glXDispSwap_Bitmap}, - /* [ 6] = 6 */ {__glXDisp_Color3bv, __glXDispSwap_Color3bv}, - /* [ 7] = 7 */ {__glXDisp_Color3dv, __glXDispSwap_Color3dv}, - /* [ 8] = 8 */ {__glXDisp_Color3fv, __glXDispSwap_Color3fv}, - /* [ 9] = 9 */ {__glXDisp_Color3iv, __glXDispSwap_Color3iv}, - /* [ 10] = 10 */ {__glXDisp_Color3sv, __glXDispSwap_Color3sv}, - /* [ 11] = 11 */ {__glXDisp_Color3ubv, __glXDispSwap_Color3ubv}, - /* [ 12] = 12 */ {__glXDisp_Color3uiv, __glXDispSwap_Color3uiv}, - /* [ 13] = 13 */ {__glXDisp_Color3usv, __glXDispSwap_Color3usv}, - /* [ 14] = 14 */ {__glXDisp_Color4bv, __glXDispSwap_Color4bv}, - /* [ 15] = 15 */ {__glXDisp_Color4dv, __glXDispSwap_Color4dv}, - /* [ 16] = 16 */ {__glXDisp_Color4fv, __glXDispSwap_Color4fv}, - /* [ 17] = 17 */ {__glXDisp_Color4iv, __glXDispSwap_Color4iv}, - /* [ 18] = 18 */ {__glXDisp_Color4sv, __glXDispSwap_Color4sv}, - /* [ 19] = 19 */ {__glXDisp_Color4ubv, __glXDispSwap_Color4ubv}, - /* [ 20] = 20 */ {__glXDisp_Color4uiv, __glXDispSwap_Color4uiv}, - /* [ 21] = 21 */ {__glXDisp_Color4usv, __glXDispSwap_Color4usv}, - /* [ 22] = 22 */ {__glXDisp_EdgeFlagv, __glXDispSwap_EdgeFlagv}, - /* [ 23] = 23 */ {__glXDisp_End, __glXDispSwap_End}, - /* [ 24] = 24 */ {__glXDisp_Indexdv, __glXDispSwap_Indexdv}, - /* [ 25] = 25 */ {__glXDisp_Indexfv, __glXDispSwap_Indexfv}, - /* [ 26] = 26 */ {__glXDisp_Indexiv, __glXDispSwap_Indexiv}, - /* [ 27] = 27 */ {__glXDisp_Indexsv, __glXDispSwap_Indexsv}, - /* [ 28] = 28 */ {__glXDisp_Normal3bv, __glXDispSwap_Normal3bv}, - /* [ 29] = 29 */ {__glXDisp_Normal3dv, __glXDispSwap_Normal3dv}, - /* [ 30] = 30 */ {__glXDisp_Normal3fv, __glXDispSwap_Normal3fv}, - /* [ 31] = 31 */ {__glXDisp_Normal3iv, __glXDispSwap_Normal3iv}, - /* [ 32] = 32 */ {__glXDisp_Normal3sv, __glXDispSwap_Normal3sv}, - /* [ 33] = 33 */ {__glXDisp_RasterPos2dv, __glXDispSwap_RasterPos2dv}, - /* [ 34] = 34 */ {__glXDisp_RasterPos2fv, __glXDispSwap_RasterPos2fv}, - /* [ 35] = 35 */ {__glXDisp_RasterPos2iv, __glXDispSwap_RasterPos2iv}, - /* [ 36] = 36 */ {__glXDisp_RasterPos2sv, __glXDispSwap_RasterPos2sv}, - /* [ 37] = 37 */ {__glXDisp_RasterPos3dv, __glXDispSwap_RasterPos3dv}, - /* [ 38] = 38 */ {__glXDisp_RasterPos3fv, __glXDispSwap_RasterPos3fv}, - /* [ 39] = 39 */ {__glXDisp_RasterPos3iv, __glXDispSwap_RasterPos3iv}, - /* [ 40] = 40 */ {__glXDisp_RasterPos3sv, __glXDispSwap_RasterPos3sv}, - /* [ 41] = 41 */ {__glXDisp_RasterPos4dv, __glXDispSwap_RasterPos4dv}, - /* [ 42] = 42 */ {__glXDisp_RasterPos4fv, __glXDispSwap_RasterPos4fv}, - /* [ 43] = 43 */ {__glXDisp_RasterPos4iv, __glXDispSwap_RasterPos4iv}, - /* [ 44] = 44 */ {__glXDisp_RasterPos4sv, __glXDispSwap_RasterPos4sv}, - /* [ 45] = 45 */ {__glXDisp_Rectdv, __glXDispSwap_Rectdv}, - /* [ 46] = 46 */ {__glXDisp_Rectfv, __glXDispSwap_Rectfv}, - /* [ 47] = 47 */ {__glXDisp_Rectiv, __glXDispSwap_Rectiv}, - /* [ 48] = 48 */ {__glXDisp_Rectsv, __glXDispSwap_Rectsv}, - /* [ 49] = 49 */ {__glXDisp_TexCoord1dv, __glXDispSwap_TexCoord1dv}, - /* [ 50] = 50 */ {__glXDisp_TexCoord1fv, __glXDispSwap_TexCoord1fv}, - /* [ 51] = 51 */ {__glXDisp_TexCoord1iv, __glXDispSwap_TexCoord1iv}, - /* [ 52] = 52 */ {__glXDisp_TexCoord1sv, __glXDispSwap_TexCoord1sv}, - /* [ 53] = 53 */ {__glXDisp_TexCoord2dv, __glXDispSwap_TexCoord2dv}, - /* [ 54] = 54 */ {__glXDisp_TexCoord2fv, __glXDispSwap_TexCoord2fv}, - /* [ 55] = 55 */ {__glXDisp_TexCoord2iv, __glXDispSwap_TexCoord2iv}, - /* [ 56] = 56 */ {__glXDisp_TexCoord2sv, __glXDispSwap_TexCoord2sv}, - /* [ 57] = 57 */ {__glXDisp_TexCoord3dv, __glXDispSwap_TexCoord3dv}, - /* [ 58] = 58 */ {__glXDisp_TexCoord3fv, __glXDispSwap_TexCoord3fv}, - /* [ 59] = 59 */ {__glXDisp_TexCoord3iv, __glXDispSwap_TexCoord3iv}, - /* [ 60] = 60 */ {__glXDisp_TexCoord3sv, __glXDispSwap_TexCoord3sv}, - /* [ 61] = 61 */ {__glXDisp_TexCoord4dv, __glXDispSwap_TexCoord4dv}, - /* [ 62] = 62 */ {__glXDisp_TexCoord4fv, __glXDispSwap_TexCoord4fv}, - /* [ 63] = 63 */ {__glXDisp_TexCoord4iv, __glXDispSwap_TexCoord4iv}, - /* [ 64] = 64 */ {__glXDisp_TexCoord4sv, __glXDispSwap_TexCoord4sv}, - /* [ 65] = 65 */ {__glXDisp_Vertex2dv, __glXDispSwap_Vertex2dv}, - /* [ 66] = 66 */ {__glXDisp_Vertex2fv, __glXDispSwap_Vertex2fv}, - /* [ 67] = 67 */ {__glXDisp_Vertex2iv, __glXDispSwap_Vertex2iv}, - /* [ 68] = 68 */ {__glXDisp_Vertex2sv, __glXDispSwap_Vertex2sv}, - /* [ 69] = 69 */ {__glXDisp_Vertex3dv, __glXDispSwap_Vertex3dv}, - /* [ 70] = 70 */ {__glXDisp_Vertex3fv, __glXDispSwap_Vertex3fv}, - /* [ 71] = 71 */ {__glXDisp_Vertex3iv, __glXDispSwap_Vertex3iv}, - /* [ 72] = 72 */ {__glXDisp_Vertex3sv, __glXDispSwap_Vertex3sv}, - /* [ 73] = 73 */ {__glXDisp_Vertex4dv, __glXDispSwap_Vertex4dv}, - /* [ 74] = 74 */ {__glXDisp_Vertex4fv, __glXDispSwap_Vertex4fv}, - /* [ 75] = 75 */ {__glXDisp_Vertex4iv, __glXDispSwap_Vertex4iv}, - /* [ 76] = 76 */ {__glXDisp_Vertex4sv, __glXDispSwap_Vertex4sv}, - /* [ 77] = 77 */ {__glXDisp_ClipPlane, __glXDispSwap_ClipPlane}, - /* [ 78] = 78 */ {__glXDisp_ColorMaterial, __glXDispSwap_ColorMaterial}, - /* [ 79] = 79 */ {__glXDisp_CullFace, __glXDispSwap_CullFace}, - /* [ 80] = 80 */ {__glXDisp_Fogf, __glXDispSwap_Fogf}, - /* [ 81] = 81 */ {__glXDisp_Fogfv, __glXDispSwap_Fogfv}, - /* [ 82] = 82 */ {__glXDisp_Fogi, __glXDispSwap_Fogi}, - /* [ 83] = 83 */ {__glXDisp_Fogiv, __glXDispSwap_Fogiv}, - /* [ 84] = 84 */ {__glXDisp_FrontFace, __glXDispSwap_FrontFace}, - /* [ 85] = 85 */ {__glXDisp_Hint, __glXDispSwap_Hint}, - /* [ 86] = 86 */ {__glXDisp_Lightf, __glXDispSwap_Lightf}, - /* [ 87] = 87 */ {__glXDisp_Lightfv, __glXDispSwap_Lightfv}, - /* [ 88] = 88 */ {__glXDisp_Lighti, __glXDispSwap_Lighti}, - /* [ 89] = 89 */ {__glXDisp_Lightiv, __glXDispSwap_Lightiv}, - /* [ 90] = 90 */ {__glXDisp_LightModelf, __glXDispSwap_LightModelf}, - /* [ 91] = 91 */ {__glXDisp_LightModelfv, __glXDispSwap_LightModelfv}, - /* [ 92] = 92 */ {__glXDisp_LightModeli, __glXDispSwap_LightModeli}, - /* [ 93] = 93 */ {__glXDisp_LightModeliv, __glXDispSwap_LightModeliv}, - /* [ 94] = 94 */ {__glXDisp_LineStipple, __glXDispSwap_LineStipple}, - /* [ 95] = 95 */ {__glXDisp_LineWidth, __glXDispSwap_LineWidth}, - /* [ 96] = 96 */ {__glXDisp_Materialf, __glXDispSwap_Materialf}, - /* [ 97] = 97 */ {__glXDisp_Materialfv, __glXDispSwap_Materialfv}, - /* [ 98] = 98 */ {__glXDisp_Materiali, __glXDispSwap_Materiali}, - /* [ 99] = 99 */ {__glXDisp_Materialiv, __glXDispSwap_Materialiv}, - /* [ 100] = 100 */ {__glXDisp_PointSize, __glXDispSwap_PointSize}, - /* [ 101] = 101 */ {__glXDisp_PolygonMode, __glXDispSwap_PolygonMode}, - /* [ 102] = 102 */ {__glXDisp_PolygonStipple, __glXDispSwap_PolygonStipple}, - /* [ 103] = 103 */ {__glXDisp_Scissor, __glXDispSwap_Scissor}, - /* [ 104] = 104 */ {__glXDisp_ShadeModel, __glXDispSwap_ShadeModel}, - /* [ 105] = 105 */ {__glXDisp_TexParameterf, __glXDispSwap_TexParameterf}, - /* [ 106] = 106 */ {__glXDisp_TexParameterfv, __glXDispSwap_TexParameterfv}, - /* [ 107] = 107 */ {__glXDisp_TexParameteri, __glXDispSwap_TexParameteri}, - /* [ 108] = 108 */ {__glXDisp_TexParameteriv, __glXDispSwap_TexParameteriv}, - /* [ 109] = 109 */ {__glXDisp_TexImage1D, __glXDispSwap_TexImage1D}, - /* [ 110] = 110 */ {__glXDisp_TexImage2D, __glXDispSwap_TexImage2D}, - /* [ 111] = 111 */ {__glXDisp_TexEnvf, __glXDispSwap_TexEnvf}, - /* [ 112] = 112 */ {__glXDisp_TexEnvfv, __glXDispSwap_TexEnvfv}, - /* [ 113] = 113 */ {__glXDisp_TexEnvi, __glXDispSwap_TexEnvi}, - /* [ 114] = 114 */ {__glXDisp_TexEnviv, __glXDispSwap_TexEnviv}, - /* [ 115] = 115 */ {__glXDisp_TexGend, __glXDispSwap_TexGend}, - /* [ 116] = 116 */ {__glXDisp_TexGendv, __glXDispSwap_TexGendv}, - /* [ 117] = 117 */ {__glXDisp_TexGenf, __glXDispSwap_TexGenf}, - /* [ 118] = 118 */ {__glXDisp_TexGenfv, __glXDispSwap_TexGenfv}, - /* [ 119] = 119 */ {__glXDisp_TexGeni, __glXDispSwap_TexGeni}, - /* [ 120] = 120 */ {__glXDisp_TexGeniv, __glXDispSwap_TexGeniv}, - /* [ 121] = 121 */ {__glXDisp_InitNames, __glXDispSwap_InitNames}, - /* [ 122] = 122 */ {__glXDisp_LoadName, __glXDispSwap_LoadName}, - /* [ 123] = 123 */ {__glXDisp_PassThrough, __glXDispSwap_PassThrough}, - /* [ 124] = 124 */ {__glXDisp_PopName, __glXDispSwap_PopName}, - /* [ 125] = 125 */ {__glXDisp_PushName, __glXDispSwap_PushName}, - /* [ 126] = 126 */ {__glXDisp_DrawBuffer, __glXDispSwap_DrawBuffer}, - /* [ 127] = 127 */ {__glXDisp_Clear, __glXDispSwap_Clear}, - /* [ 128] = 128 */ {__glXDisp_ClearAccum, __glXDispSwap_ClearAccum}, - /* [ 129] = 129 */ {__glXDisp_ClearIndex, __glXDispSwap_ClearIndex}, - /* [ 130] = 130 */ {__glXDisp_ClearColor, __glXDispSwap_ClearColor}, - /* [ 131] = 131 */ {__glXDisp_ClearStencil, __glXDispSwap_ClearStencil}, - /* [ 132] = 132 */ {__glXDisp_ClearDepth, __glXDispSwap_ClearDepth}, - /* [ 133] = 133 */ {__glXDisp_StencilMask, __glXDispSwap_StencilMask}, - /* [ 134] = 134 */ {__glXDisp_ColorMask, __glXDispSwap_ColorMask}, - /* [ 135] = 135 */ {__glXDisp_DepthMask, __glXDispSwap_DepthMask}, - /* [ 136] = 136 */ {__glXDisp_IndexMask, __glXDispSwap_IndexMask}, - /* [ 137] = 137 */ {__glXDisp_Accum, __glXDispSwap_Accum}, - /* [ 138] = 138 */ {__glXDisp_Disable, __glXDispSwap_Disable}, - /* [ 139] = 139 */ {__glXDisp_Enable, __glXDispSwap_Enable}, - /* [ 140] = 140 */ {NULL, NULL}, - /* [ 141] = 141 */ {__glXDisp_PopAttrib, __glXDispSwap_PopAttrib}, - /* [ 142] = 142 */ {__glXDisp_PushAttrib, __glXDispSwap_PushAttrib}, - /* [ 143] = 143 */ {__glXDisp_Map1d, __glXDispSwap_Map1d}, - /* [ 144] = 144 */ {__glXDisp_Map1f, __glXDispSwap_Map1f}, - /* [ 145] = 145 */ {__glXDisp_Map2d, __glXDispSwap_Map2d}, - /* [ 146] = 146 */ {__glXDisp_Map2f, __glXDispSwap_Map2f}, - /* [ 147] = 147 */ {__glXDisp_MapGrid1d, __glXDispSwap_MapGrid1d}, - /* [ 148] = 148 */ {__glXDisp_MapGrid1f, __glXDispSwap_MapGrid1f}, - /* [ 149] = 149 */ {__glXDisp_MapGrid2d, __glXDispSwap_MapGrid2d}, - /* [ 150] = 150 */ {__glXDisp_MapGrid2f, __glXDispSwap_MapGrid2f}, - /* [ 151] = 151 */ {__glXDisp_EvalCoord1dv, __glXDispSwap_EvalCoord1dv}, - /* [ 152] = 152 */ {__glXDisp_EvalCoord1fv, __glXDispSwap_EvalCoord1fv}, - /* [ 153] = 153 */ {__glXDisp_EvalCoord2dv, __glXDispSwap_EvalCoord2dv}, - /* [ 154] = 154 */ {__glXDisp_EvalCoord2fv, __glXDispSwap_EvalCoord2fv}, - /* [ 155] = 155 */ {__glXDisp_EvalMesh1, __glXDispSwap_EvalMesh1}, - /* [ 156] = 156 */ {__glXDisp_EvalPoint1, __glXDispSwap_EvalPoint1}, - /* [ 157] = 157 */ {__glXDisp_EvalMesh2, __glXDispSwap_EvalMesh2}, - /* [ 158] = 158 */ {__glXDisp_EvalPoint2, __glXDispSwap_EvalPoint2}, - /* [ 159] = 159 */ {__glXDisp_AlphaFunc, __glXDispSwap_AlphaFunc}, - /* [ 160] = 160 */ {__glXDisp_BlendFunc, __glXDispSwap_BlendFunc}, - /* [ 161] = 161 */ {__glXDisp_LogicOp, __glXDispSwap_LogicOp}, - /* [ 162] = 162 */ {__glXDisp_StencilFunc, __glXDispSwap_StencilFunc}, - /* [ 163] = 163 */ {__glXDisp_StencilOp, __glXDispSwap_StencilOp}, - /* [ 164] = 164 */ {__glXDisp_DepthFunc, __glXDispSwap_DepthFunc}, - /* [ 165] = 165 */ {__glXDisp_PixelZoom, __glXDispSwap_PixelZoom}, - /* [ 166] = 166 */ {__glXDisp_PixelTransferf, __glXDispSwap_PixelTransferf}, - /* [ 167] = 167 */ {__glXDisp_PixelTransferi, __glXDispSwap_PixelTransferi}, - /* [ 168] = 168 */ {__glXDisp_PixelMapfv, __glXDispSwap_PixelMapfv}, - /* [ 169] = 169 */ {__glXDisp_PixelMapuiv, __glXDispSwap_PixelMapuiv}, - /* [ 170] = 170 */ {__glXDisp_PixelMapusv, __glXDispSwap_PixelMapusv}, - /* [ 171] = 171 */ {__glXDisp_ReadBuffer, __glXDispSwap_ReadBuffer}, - /* [ 172] = 172 */ {__glXDisp_CopyPixels, __glXDispSwap_CopyPixels}, - /* [ 173] = 173 */ {__glXDisp_DrawPixels, __glXDispSwap_DrawPixels}, - /* [ 174] = 174 */ {__glXDisp_DepthRange, __glXDispSwap_DepthRange}, - /* [ 175] = 175 */ {__glXDisp_Frustum, __glXDispSwap_Frustum}, - /* [ 176] = 176 */ {__glXDisp_LoadIdentity, __glXDispSwap_LoadIdentity}, - /* [ 177] = 177 */ {__glXDisp_LoadMatrixf, __glXDispSwap_LoadMatrixf}, - /* [ 178] = 178 */ {__glXDisp_LoadMatrixd, __glXDispSwap_LoadMatrixd}, - /* [ 179] = 179 */ {__glXDisp_MatrixMode, __glXDispSwap_MatrixMode}, - /* [ 180] = 180 */ {__glXDisp_MultMatrixf, __glXDispSwap_MultMatrixf}, - /* [ 181] = 181 */ {__glXDisp_MultMatrixd, __glXDispSwap_MultMatrixd}, - /* [ 182] = 182 */ {__glXDisp_Ortho, __glXDispSwap_Ortho}, - /* [ 183] = 183 */ {__glXDisp_PopMatrix, __glXDispSwap_PopMatrix}, - /* [ 184] = 184 */ {__glXDisp_PushMatrix, __glXDispSwap_PushMatrix}, - /* [ 185] = 185 */ {__glXDisp_Rotated, __glXDispSwap_Rotated}, - /* [ 186] = 186 */ {__glXDisp_Rotatef, __glXDispSwap_Rotatef}, - /* [ 187] = 187 */ {__glXDisp_Scaled, __glXDispSwap_Scaled}, - /* [ 188] = 188 */ {__glXDisp_Scalef, __glXDispSwap_Scalef}, - /* [ 189] = 189 */ {__glXDisp_Translated, __glXDispSwap_Translated}, - /* [ 190] = 190 */ {__glXDisp_Translatef, __glXDispSwap_Translatef}, - /* [ 191] = 191 */ {__glXDisp_Viewport, __glXDispSwap_Viewport}, - /* [ 192] = 192 */ {__glXDisp_PolygonOffset, __glXDispSwap_PolygonOffset}, - /* [ 193] = 193 */ {__glXDisp_DrawArrays, __glXDispSwap_DrawArrays}, - /* [ 194] = 194 */ {__glXDisp_Indexubv, __glXDispSwap_Indexubv}, - /* [ 195] = 195 */ {__glXDisp_ColorSubTable, __glXDispSwap_ColorSubTable}, - /* [ 196] = 196 */ {__glXDisp_CopyColorSubTable, __glXDispSwap_CopyColorSubTable}, - /* [ 197] = 197 */ {__glXDisp_ActiveTextureARB, __glXDispSwap_ActiveTextureARB}, - /* [ 198] = 198 */ {__glXDisp_MultiTexCoord1dvARB, __glXDispSwap_MultiTexCoord1dvARB}, - /* [ 199] = 199 */ {__glXDisp_MultiTexCoord1fvARB, __glXDispSwap_MultiTexCoord1fvARB}, - /* [ 200] = 200 */ {__glXDisp_MultiTexCoord1ivARB, __glXDispSwap_MultiTexCoord1ivARB}, - /* [ 201] = 201 */ {__glXDisp_MultiTexCoord1svARB, __glXDispSwap_MultiTexCoord1svARB}, - /* [ 202] = 202 */ {__glXDisp_MultiTexCoord2dvARB, __glXDispSwap_MultiTexCoord2dvARB}, - /* [ 203] = 203 */ {__glXDisp_MultiTexCoord2fvARB, __glXDispSwap_MultiTexCoord2fvARB}, - /* [ 204] = 204 */ {__glXDisp_MultiTexCoord2ivARB, __glXDispSwap_MultiTexCoord2ivARB}, - /* [ 205] = 205 */ {__glXDisp_MultiTexCoord2svARB, __glXDispSwap_MultiTexCoord2svARB}, - /* [ 206] = 206 */ {__glXDisp_MultiTexCoord3dvARB, __glXDispSwap_MultiTexCoord3dvARB}, - /* [ 207] = 207 */ {__glXDisp_MultiTexCoord3fvARB, __glXDispSwap_MultiTexCoord3fvARB}, - /* [ 208] = 208 */ {__glXDisp_MultiTexCoord3ivARB, __glXDispSwap_MultiTexCoord3ivARB}, - /* [ 209] = 209 */ {__glXDisp_MultiTexCoord3svARB, __glXDispSwap_MultiTexCoord3svARB}, - /* [ 210] = 210 */ {__glXDisp_MultiTexCoord4dvARB, __glXDispSwap_MultiTexCoord4dvARB}, - /* [ 211] = 211 */ {__glXDisp_MultiTexCoord4fvARB, __glXDispSwap_MultiTexCoord4fvARB}, - /* [ 212] = 212 */ {__glXDisp_MultiTexCoord4ivARB, __glXDispSwap_MultiTexCoord4ivARB}, - /* [ 213] = 213 */ {__glXDisp_MultiTexCoord4svARB, __glXDispSwap_MultiTexCoord4svARB}, - /* [ 214] = 214 */ {__glXDisp_CompressedTexImage1DARB, __glXDispSwap_CompressedTexImage1DARB}, - /* [ 215] = 215 */ {__glXDisp_CompressedTexImage2DARB, __glXDispSwap_CompressedTexImage2DARB}, - /* [ 216] = 216 */ {__glXDisp_CompressedTexImage3DARB, __glXDispSwap_CompressedTexImage3DARB}, - /* [ 217] = 217 */ {__glXDisp_CompressedTexSubImage1DARB, __glXDispSwap_CompressedTexSubImage1DARB}, - /* [ 218] = 218 */ {__glXDisp_CompressedTexSubImage2DARB, __glXDispSwap_CompressedTexSubImage2DARB}, - /* [ 219] = 219 */ {__glXDisp_CompressedTexSubImage3DARB, __glXDispSwap_CompressedTexSubImage3DARB}, - /* [ 220] = 220 */ {NULL, NULL}, - /* [ 221] = 221 */ {NULL, NULL}, - /* [ 222] = 222 */ {NULL, NULL}, - /* [ 223] = 223 */ {NULL, NULL}, - /* [ 224] = 224 */ {NULL, NULL}, - /* [ 225] = 225 */ {NULL, NULL}, - /* [ 226] = 226 */ {NULL, NULL}, - /* [ 227] = 227 */ {NULL, NULL}, - /* [ 228] = 228 */ {NULL, NULL}, - /* [ 229] = 229 */ {__glXDisp_SampleCoverageARB, __glXDispSwap_SampleCoverageARB}, - /* [ 230] = 230 */ {__glXDisp_WindowPos3fvMESA, __glXDispSwap_WindowPos3fvMESA}, - /* [ 231] = 231 */ {__glXDisp_BeginQueryARB, __glXDispSwap_BeginQueryARB}, - /* [ 232] = 232 */ {__glXDisp_EndQueryARB, __glXDispSwap_EndQueryARB}, - /* [ 233] = 233 */ {__glXDisp_DrawBuffersARB, __glXDispSwap_DrawBuffersARB}, - /* [ 234] = 234 */ {NULL, NULL}, - /* [ 235] = 235 */ {NULL, NULL}, - /* [ 236] = 236 */ {NULL, NULL}, - /* [ 237] = 237 */ {NULL, NULL}, - /* [ 238] = 238 */ {NULL, NULL}, - /* [ 239] = 239 */ {NULL, NULL}, - /* [ 240] = 2048 */ {__glXDisp_SampleMaskSGIS, __glXDispSwap_SampleMaskSGIS}, - /* [ 241] = 2049 */ {__glXDisp_SamplePatternSGIS, __glXDispSwap_SamplePatternSGIS}, - /* [ 242] = 2050 */ {NULL, NULL}, - /* [ 243] = 2051 */ {NULL, NULL}, - /* [ 244] = 2052 */ {NULL, NULL}, - /* [ 245] = 2053 */ {__glXDisp_ColorTable, __glXDispSwap_ColorTable}, - /* [ 246] = 2054 */ {__glXDisp_ColorTableParameterfv, __glXDispSwap_ColorTableParameterfv}, - /* [ 247] = 2055 */ {__glXDisp_ColorTableParameteriv, __glXDispSwap_ColorTableParameteriv}, - /* [ 248] = 2056 */ {__glXDisp_CopyColorTable, __glXDispSwap_CopyColorTable}, - /* [ 249] = 2057 */ {NULL, NULL}, - /* [ 250] = 2058 */ {NULL, NULL}, - /* [ 251] = 2059 */ {NULL, NULL}, - /* [ 252] = 2060 */ {NULL, NULL}, - /* [ 253] = 2061 */ {NULL, NULL}, - /* [ 254] = 2062 */ {NULL, NULL}, - /* [ 255] = 2063 */ {NULL, NULL}, - /* [ 256] = 2064 */ {NULL, NULL}, - /* [ 257] = 2065 */ {__glXDisp_PointParameterfEXT, __glXDispSwap_PointParameterfEXT}, - /* [ 258] = 2066 */ {__glXDisp_PointParameterfvEXT, __glXDispSwap_PointParameterfvEXT}, - /* [ 259] = 2067 */ {NULL, NULL}, - /* [ 260] = 2068 */ {NULL, NULL}, - /* [ 261] = 2069 */ {NULL, NULL}, - /* [ 262] = 2070 */ {NULL, NULL}, - /* [ 263] = 2071 */ {NULL, NULL}, - /* [ 264] = 4096 */ {__glXDisp_BlendColor, __glXDispSwap_BlendColor}, - /* [ 265] = 4097 */ {__glXDisp_BlendEquation, __glXDispSwap_BlendEquation}, - /* [ 266] = 4098 */ {NULL, NULL}, - /* [ 267] = 4099 */ {__glXDisp_TexSubImage1D, __glXDispSwap_TexSubImage1D}, - /* [ 268] = 4100 */ {__glXDisp_TexSubImage2D, __glXDispSwap_TexSubImage2D}, - /* [ 269] = 4101 */ {__glXDisp_ConvolutionFilter1D, __glXDispSwap_ConvolutionFilter1D}, - /* [ 270] = 4102 */ {__glXDisp_ConvolutionFilter2D, __glXDispSwap_ConvolutionFilter2D}, - /* [ 271] = 4103 */ {__glXDisp_ConvolutionParameterf, __glXDispSwap_ConvolutionParameterf}, - /* [ 272] = 4104 */ {__glXDisp_ConvolutionParameterfv, __glXDispSwap_ConvolutionParameterfv}, - /* [ 273] = 4105 */ {__glXDisp_ConvolutionParameteri, __glXDispSwap_ConvolutionParameteri}, - /* [ 274] = 4106 */ {__glXDisp_ConvolutionParameteriv, __glXDispSwap_ConvolutionParameteriv}, - /* [ 275] = 4107 */ {__glXDisp_CopyConvolutionFilter1D, __glXDispSwap_CopyConvolutionFilter1D}, - /* [ 276] = 4108 */ {__glXDisp_CopyConvolutionFilter2D, __glXDispSwap_CopyConvolutionFilter2D}, - /* [ 277] = 4109 */ {__glXDisp_SeparableFilter2D, __glXDispSwap_SeparableFilter2D}, - /* [ 278] = 4110 */ {__glXDisp_Histogram, __glXDispSwap_Histogram}, - /* [ 279] = 4111 */ {__glXDisp_Minmax, __glXDispSwap_Minmax}, - /* [ 280] = 4112 */ {__glXDisp_ResetHistogram, __glXDispSwap_ResetHistogram}, - /* [ 281] = 4113 */ {__glXDisp_ResetMinmax, __glXDispSwap_ResetMinmax}, - /* [ 282] = 4114 */ {__glXDisp_TexImage3D, __glXDispSwap_TexImage3D}, - /* [ 283] = 4115 */ {__glXDisp_TexSubImage3D, __glXDispSwap_TexSubImage3D}, - /* [ 284] = 4116 */ {NULL, NULL}, - /* [ 285] = 4117 */ {__glXDisp_BindTexture, __glXDispSwap_BindTexture}, - /* [ 286] = 4118 */ {__glXDisp_PrioritizeTextures, __glXDispSwap_PrioritizeTextures}, - /* [ 287] = 4119 */ {__glXDisp_CopyTexImage1D, __glXDispSwap_CopyTexImage1D}, - /* [ 288] = 4120 */ {__glXDisp_CopyTexImage2D, __glXDispSwap_CopyTexImage2D}, - /* [ 289] = 4121 */ {__glXDisp_CopyTexSubImage1D, __glXDispSwap_CopyTexSubImage1D}, - /* [ 290] = 4122 */ {__glXDisp_CopyTexSubImage2D, __glXDispSwap_CopyTexSubImage2D}, - /* [ 291] = 4123 */ {__glXDisp_CopyTexSubImage3D, __glXDispSwap_CopyTexSubImage3D}, - /* [ 292] = 4124 */ {__glXDisp_FogCoordfvEXT, __glXDispSwap_FogCoordfvEXT}, - /* [ 293] = 4125 */ {__glXDisp_FogCoorddvEXT, __glXDispSwap_FogCoorddvEXT}, - /* [ 294] = 4126 */ {__glXDisp_SecondaryColor3bvEXT, __glXDispSwap_SecondaryColor3bvEXT}, - /* [ 295] = 4127 */ {__glXDisp_SecondaryColor3svEXT, __glXDispSwap_SecondaryColor3svEXT}, - /* [ 296] = 4176 */ {NULL, NULL}, - /* [ 297] = 4177 */ {NULL, NULL}, - /* [ 298] = 4178 */ {NULL, NULL}, - /* [ 299] = 4179 */ {NULL, NULL}, - /* [ 300] = 4180 */ {__glXDisp_BindProgramNV, __glXDispSwap_BindProgramNV}, - /* [ 301] = 4181 */ {__glXDisp_ExecuteProgramNV, __glXDispSwap_ExecuteProgramNV}, - /* [ 302] = 4182 */ {__glXDisp_RequestResidentProgramsNV, __glXDispSwap_RequestResidentProgramsNV}, - /* [ 303] = 4183 */ {__glXDisp_LoadProgramNV, __glXDispSwap_LoadProgramNV}, - /* [ 304] = 4184 */ {__glXDisp_ProgramEnvParameter4fvARB, __glXDispSwap_ProgramEnvParameter4fvARB}, - /* [ 305] = 4185 */ {__glXDisp_ProgramEnvParameter4dvARB, __glXDispSwap_ProgramEnvParameter4dvARB}, - /* [ 306] = 4186 */ {__glXDisp_ProgramParameters4fvNV, __glXDispSwap_ProgramParameters4fvNV}, - /* [ 307] = 4187 */ {__glXDisp_ProgramParameters4dvNV, __glXDispSwap_ProgramParameters4dvNV}, - /* [ 308] = 4188 */ {__glXDisp_TrackMatrixNV, __glXDispSwap_TrackMatrixNV}, - /* [ 309] = 4189 */ {__glXDisp_VertexAttrib1svARB, __glXDispSwap_VertexAttrib1svARB}, - /* [ 310] = 4190 */ {__glXDisp_VertexAttrib2svARB, __glXDispSwap_VertexAttrib2svARB}, - /* [ 311] = 4191 */ {__glXDisp_VertexAttrib3svARB, __glXDispSwap_VertexAttrib3svARB}, - /* [ 312] = 4192 */ {__glXDisp_VertexAttrib4svARB, __glXDispSwap_VertexAttrib4svARB}, - /* [ 313] = 4193 */ {__glXDisp_VertexAttrib1fvARB, __glXDispSwap_VertexAttrib1fvARB}, - /* [ 314] = 4194 */ {__glXDisp_VertexAttrib2fvARB, __glXDispSwap_VertexAttrib2fvARB}, - /* [ 315] = 4195 */ {__glXDisp_VertexAttrib3fvARB, __glXDispSwap_VertexAttrib3fvARB}, - /* [ 316] = 4196 */ {__glXDisp_VertexAttrib4fvARB, __glXDispSwap_VertexAttrib4fvARB}, - /* [ 317] = 4197 */ {__glXDisp_VertexAttrib1dvARB, __glXDispSwap_VertexAttrib1dvARB}, - /* [ 318] = 4198 */ {__glXDisp_VertexAttrib2dvARB, __glXDispSwap_VertexAttrib2dvARB}, - /* [ 319] = 4199 */ {__glXDisp_VertexAttrib3dvARB, __glXDispSwap_VertexAttrib3dvARB}, - /* [ 320] = 4200 */ {__glXDisp_VertexAttrib4dvARB, __glXDispSwap_VertexAttrib4dvARB}, - /* [ 321] = 4201 */ {__glXDisp_VertexAttrib4NubvARB, __glXDispSwap_VertexAttrib4NubvARB}, - /* [ 322] = 4202 */ {__glXDisp_VertexAttribs1svNV, __glXDispSwap_VertexAttribs1svNV}, - /* [ 323] = 4203 */ {__glXDisp_VertexAttribs2svNV, __glXDispSwap_VertexAttribs2svNV}, - /* [ 324] = 4204 */ {__glXDisp_VertexAttribs3svNV, __glXDispSwap_VertexAttribs3svNV}, - /* [ 325] = 4205 */ {__glXDisp_VertexAttribs4svNV, __glXDispSwap_VertexAttribs4svNV}, - /* [ 326] = 4206 */ {__glXDisp_VertexAttribs1fvNV, __glXDispSwap_VertexAttribs1fvNV}, - /* [ 327] = 4207 */ {__glXDisp_VertexAttribs2fvNV, __glXDispSwap_VertexAttribs2fvNV}, - /* [ 328] = 4208 */ {__glXDisp_VertexAttribs3fvNV, __glXDispSwap_VertexAttribs3fvNV}, - /* [ 329] = 4209 */ {__glXDisp_VertexAttribs4fvNV, __glXDispSwap_VertexAttribs4fvNV}, - /* [ 330] = 4210 */ {__glXDisp_VertexAttribs1dvNV, __glXDispSwap_VertexAttribs1dvNV}, - /* [ 331] = 4211 */ {__glXDisp_VertexAttribs2dvNV, __glXDispSwap_VertexAttribs2dvNV}, - /* [ 332] = 4212 */ {__glXDisp_VertexAttribs3dvNV, __glXDispSwap_VertexAttribs3dvNV}, - /* [ 333] = 4213 */ {__glXDisp_VertexAttribs4dvNV, __glXDispSwap_VertexAttribs4dvNV}, - /* [ 334] = 4214 */ {__glXDisp_VertexAttribs4ubvNV, __glXDispSwap_VertexAttribs4ubvNV}, - /* [ 335] = 4215 */ {__glXDisp_ProgramLocalParameter4fvARB, __glXDispSwap_ProgramLocalParameter4fvARB}, - /* [ 336] = 4216 */ {__glXDisp_ProgramLocalParameter4dvARB, __glXDispSwap_ProgramLocalParameter4dvARB}, - /* [ 337] = 4217 */ {__glXDisp_ProgramStringARB, __glXDispSwap_ProgramStringARB}, - /* [ 338] = 4218 */ {__glXDisp_ProgramNamedParameter4fvNV, __glXDispSwap_ProgramNamedParameter4fvNV}, - /* [ 339] = 4219 */ {__glXDisp_ProgramNamedParameter4dvNV, __glXDispSwap_ProgramNamedParameter4dvNV}, - /* [ 340] = 4220 */ {__glXDisp_ActiveStencilFaceEXT, __glXDispSwap_ActiveStencilFaceEXT}, - /* [ 341] = 4221 */ {__glXDisp_PointParameteriNV, __glXDispSwap_PointParameteriNV}, - /* [ 342] = 4222 */ {__glXDisp_PointParameterivNV, __glXDispSwap_PointParameterivNV}, - /* [ 343] = 4223 */ {NULL, NULL}, - /* [ 344] = 4224 */ {NULL, NULL}, - /* [ 345] = 4225 */ {NULL, NULL}, - /* [ 346] = 4226 */ {NULL, NULL}, - /* [ 347] = 4227 */ {NULL, NULL}, - /* [ 348] = 4228 */ {__glXDisp_BlendEquationSeparateEXT, __glXDispSwap_BlendEquationSeparateEXT}, - /* [ 349] = 4229 */ {NULL, NULL}, - /* [ 350] = 4230 */ {__glXDisp_VertexAttrib4bvARB, __glXDispSwap_VertexAttrib4bvARB}, - /* [ 351] = 4231 */ {__glXDisp_VertexAttrib4ivARB, __glXDispSwap_VertexAttrib4ivARB}, - /* [ 352] = 4232 */ {__glXDisp_VertexAttrib4ubvARB, __glXDispSwap_VertexAttrib4ubvARB}, - /* [ 353] = 4233 */ {__glXDisp_VertexAttrib4usvARB, __glXDispSwap_VertexAttrib4usvARB}, - /* [ 354] = 4234 */ {__glXDisp_VertexAttrib4uivARB, __glXDispSwap_VertexAttrib4uivARB}, - /* [ 355] = 4235 */ {__glXDisp_VertexAttrib4NbvARB, __glXDispSwap_VertexAttrib4NbvARB}, - /* [ 356] = 4236 */ {__glXDisp_VertexAttrib4NsvARB, __glXDispSwap_VertexAttrib4NsvARB}, - /* [ 357] = 4237 */ {__glXDisp_VertexAttrib4NivARB, __glXDispSwap_VertexAttrib4NivARB}, - /* [ 358] = 4238 */ {__glXDisp_VertexAttrib4NusvARB, __glXDispSwap_VertexAttrib4NusvARB}, - /* [ 359] = 4239 */ {__glXDisp_VertexAttrib4NuivARB, __glXDispSwap_VertexAttrib4NuivARB}, - /* [ 360] = 4128 */ {__glXDisp_SecondaryColor3ivEXT, __glXDispSwap_SecondaryColor3ivEXT}, - /* [ 361] = 4129 */ {__glXDisp_SecondaryColor3fvEXT, __glXDispSwap_SecondaryColor3fvEXT}, - /* [ 362] = 4130 */ {__glXDisp_SecondaryColor3dvEXT, __glXDispSwap_SecondaryColor3dvEXT}, - /* [ 363] = 4131 */ {__glXDisp_SecondaryColor3ubvEXT, __glXDispSwap_SecondaryColor3ubvEXT}, - /* [ 364] = 4132 */ {__glXDisp_SecondaryColor3usvEXT, __glXDispSwap_SecondaryColor3usvEXT}, - /* [ 365] = 4133 */ {__glXDisp_SecondaryColor3uivEXT, __glXDispSwap_SecondaryColor3uivEXT}, - /* [ 366] = 4134 */ {__glXDisp_BlendFuncSeparateEXT, __glXDispSwap_BlendFuncSeparateEXT}, - /* [ 367] = 4135 */ {NULL, NULL}, - /* [ 368] = 4264 */ {NULL, NULL}, - /* [ 369] = 4265 */ {__glXDisp_VertexAttrib1svNV, __glXDispSwap_VertexAttrib1svNV}, - /* [ 370] = 4266 */ {__glXDisp_VertexAttrib2svNV, __glXDispSwap_VertexAttrib2svNV}, - /* [ 371] = 4267 */ {__glXDisp_VertexAttrib3svNV, __glXDispSwap_VertexAttrib3svNV}, - /* [ 372] = 4268 */ {__glXDisp_VertexAttrib4svNV, __glXDispSwap_VertexAttrib4svNV}, - /* [ 373] = 4269 */ {__glXDisp_VertexAttrib1fvNV, __glXDispSwap_VertexAttrib1fvNV}, - /* [ 374] = 4270 */ {__glXDisp_VertexAttrib2fvNV, __glXDispSwap_VertexAttrib2fvNV}, - /* [ 375] = 4271 */ {__glXDisp_VertexAttrib3fvNV, __glXDispSwap_VertexAttrib3fvNV}, - /* [ 376] = 4272 */ {__glXDisp_VertexAttrib4fvNV, __glXDispSwap_VertexAttrib4fvNV}, - /* [ 377] = 4273 */ {__glXDisp_VertexAttrib1dvNV, __glXDispSwap_VertexAttrib1dvNV}, - /* [ 378] = 4274 */ {__glXDisp_VertexAttrib2dvNV, __glXDispSwap_VertexAttrib2dvNV}, - /* [ 379] = 4275 */ {__glXDisp_VertexAttrib3dvNV, __glXDispSwap_VertexAttrib3dvNV}, - /* [ 380] = 4276 */ {__glXDisp_VertexAttrib4dvNV, __glXDispSwap_VertexAttrib4dvNV}, - /* [ 381] = 4277 */ {__glXDisp_VertexAttrib4ubvNV, __glXDispSwap_VertexAttrib4ubvNV}, - /* [ 382] = 4278 */ {NULL, NULL}, - /* [ 383] = 4279 */ {NULL, NULL}, - /* [ 384] = 4312 */ {NULL, NULL}, - /* [ 385] = 4313 */ {NULL, NULL}, - /* [ 386] = 4314 */ {NULL, NULL}, - /* [ 387] = 4315 */ {NULL, NULL}, - /* [ 388] = 4316 */ {__glXDisp_BindRenderbufferEXT, __glXDispSwap_BindRenderbufferEXT}, - /* [ 389] = 4317 */ {__glXDisp_DeleteRenderbuffersEXT, __glXDispSwap_DeleteRenderbuffersEXT}, - /* [ 390] = 4318 */ {__glXDisp_RenderbufferStorageEXT, __glXDispSwap_RenderbufferStorageEXT}, - /* [ 391] = 4319 */ {__glXDisp_BindFramebufferEXT, __glXDispSwap_BindFramebufferEXT}, - /* [ 392] = 4320 */ {__glXDisp_DeleteFramebuffersEXT, __glXDispSwap_DeleteFramebuffersEXT}, - /* [ 393] = 4321 */ {__glXDisp_FramebufferTexture1DEXT, __glXDispSwap_FramebufferTexture1DEXT}, - /* [ 394] = 4322 */ {__glXDisp_FramebufferTexture2DEXT, __glXDispSwap_FramebufferTexture2DEXT}, - /* [ 395] = 4323 */ {__glXDisp_FramebufferTexture3DEXT, __glXDispSwap_FramebufferTexture3DEXT}, - /* [ 396] = 4324 */ {__glXDisp_FramebufferRenderbufferEXT, __glXDispSwap_FramebufferRenderbufferEXT}, - /* [ 397] = 4325 */ {__glXDisp_GenerateMipmapEXT, __glXDispSwap_GenerateMipmapEXT}, - /* [ 398] = 4326 */ {NULL, NULL}, - /* [ 399] = 4327 */ {NULL, NULL}, -}; - -static const int_fast16_t Render_size_table[400][2] = { - /* [ 0] = 0 */ { 0, ~0}, - /* [ 1] = 1 */ { 8, ~0}, - /* [ 2] = 2 */ { 12, 0}, - /* [ 3] = 3 */ { 8, ~0}, - /* [ 4] = 4 */ { 8, ~0}, - /* [ 5] = 5 */ { 48, 1}, - /* [ 6] = 6 */ { 8, ~0}, - /* [ 7] = 7 */ { 28, ~0}, - /* [ 8] = 8 */ { 16, ~0}, - /* [ 9] = 9 */ { 16, ~0}, - /* [ 10] = 10 */ { 12, ~0}, - /* [ 11] = 11 */ { 8, ~0}, - /* [ 12] = 12 */ { 16, ~0}, - /* [ 13] = 13 */ { 12, ~0}, - /* [ 14] = 14 */ { 8, ~0}, - /* [ 15] = 15 */ { 36, ~0}, - /* [ 16] = 16 */ { 20, ~0}, - /* [ 17] = 17 */ { 20, ~0}, - /* [ 18] = 18 */ { 12, ~0}, - /* [ 19] = 19 */ { 8, ~0}, - /* [ 20] = 20 */ { 20, ~0}, - /* [ 21] = 21 */ { 12, ~0}, - /* [ 22] = 22 */ { 8, ~0}, - /* [ 23] = 23 */ { 4, ~0}, - /* [ 24] = 24 */ { 12, ~0}, - /* [ 25] = 25 */ { 8, ~0}, - /* [ 26] = 26 */ { 8, ~0}, - /* [ 27] = 27 */ { 8, ~0}, - /* [ 28] = 28 */ { 8, ~0}, - /* [ 29] = 29 */ { 28, ~0}, - /* [ 30] = 30 */ { 16, ~0}, - /* [ 31] = 31 */ { 16, ~0}, - /* [ 32] = 32 */ { 12, ~0}, - /* [ 33] = 33 */ { 20, ~0}, - /* [ 34] = 34 */ { 12, ~0}, - /* [ 35] = 35 */ { 12, ~0}, - /* [ 36] = 36 */ { 8, ~0}, - /* [ 37] = 37 */ { 28, ~0}, - /* [ 38] = 38 */ { 16, ~0}, - /* [ 39] = 39 */ { 16, ~0}, - /* [ 40] = 40 */ { 12, ~0}, - /* [ 41] = 41 */ { 36, ~0}, - /* [ 42] = 42 */ { 20, ~0}, - /* [ 43] = 43 */ { 20, ~0}, - /* [ 44] = 44 */ { 12, ~0}, - /* [ 45] = 45 */ { 36, ~0}, - /* [ 46] = 46 */ { 20, ~0}, - /* [ 47] = 47 */ { 20, ~0}, - /* [ 48] = 48 */ { 12, ~0}, - /* [ 49] = 49 */ { 12, ~0}, - /* [ 50] = 50 */ { 8, ~0}, - /* [ 51] = 51 */ { 8, ~0}, - /* [ 52] = 52 */ { 8, ~0}, - /* [ 53] = 53 */ { 20, ~0}, - /* [ 54] = 54 */ { 12, ~0}, - /* [ 55] = 55 */ { 12, ~0}, - /* [ 56] = 56 */ { 8, ~0}, - /* [ 57] = 57 */ { 28, ~0}, - /* [ 58] = 58 */ { 16, ~0}, - /* [ 59] = 59 */ { 16, ~0}, - /* [ 60] = 60 */ { 12, ~0}, - /* [ 61] = 61 */ { 36, ~0}, - /* [ 62] = 62 */ { 20, ~0}, - /* [ 63] = 63 */ { 20, ~0}, - /* [ 64] = 64 */ { 12, ~0}, - /* [ 65] = 65 */ { 20, ~0}, - /* [ 66] = 66 */ { 12, ~0}, - /* [ 67] = 67 */ { 12, ~0}, - /* [ 68] = 68 */ { 8, ~0}, - /* [ 69] = 69 */ { 28, ~0}, - /* [ 70] = 70 */ { 16, ~0}, - /* [ 71] = 71 */ { 16, ~0}, - /* [ 72] = 72 */ { 12, ~0}, - /* [ 73] = 73 */ { 36, ~0}, - /* [ 74] = 74 */ { 20, ~0}, - /* [ 75] = 75 */ { 20, ~0}, - /* [ 76] = 76 */ { 12, ~0}, - /* [ 77] = 77 */ { 40, ~0}, - /* [ 78] = 78 */ { 12, ~0}, - /* [ 79] = 79 */ { 8, ~0}, - /* [ 80] = 80 */ { 12, ~0}, - /* [ 81] = 81 */ { 8, 2}, - /* [ 82] = 82 */ { 12, ~0}, - /* [ 83] = 83 */ { 8, 3}, - /* [ 84] = 84 */ { 8, ~0}, - /* [ 85] = 85 */ { 12, ~0}, - /* [ 86] = 86 */ { 16, ~0}, - /* [ 87] = 87 */ { 12, 4}, - /* [ 88] = 88 */ { 16, ~0}, - /* [ 89] = 89 */ { 12, 5}, - /* [ 90] = 90 */ { 12, ~0}, - /* [ 91] = 91 */ { 8, 6}, - /* [ 92] = 92 */ { 12, ~0}, - /* [ 93] = 93 */ { 8, 7}, - /* [ 94] = 94 */ { 12, ~0}, - /* [ 95] = 95 */ { 8, ~0}, - /* [ 96] = 96 */ { 16, ~0}, - /* [ 97] = 97 */ { 12, 8}, - /* [ 98] = 98 */ { 16, ~0}, - /* [ 99] = 99 */ { 12, 9}, - /* [100] = 100 */ { 8, ~0}, - /* [101] = 101 */ { 12, ~0}, - /* [102] = 102 */ { 24, 10}, - /* [103] = 103 */ { 20, ~0}, - /* [104] = 104 */ { 8, ~0}, - /* [105] = 105 */ { 16, ~0}, - /* [106] = 106 */ { 12, 11}, - /* [107] = 107 */ { 16, ~0}, - /* [108] = 108 */ { 12, 12}, - /* [109] = 109 */ { 56, 13}, - /* [110] = 110 */ { 56, 14}, - /* [111] = 111 */ { 16, ~0}, - /* [112] = 112 */ { 12, 15}, - /* [113] = 113 */ { 16, ~0}, - /* [114] = 114 */ { 12, 16}, - /* [115] = 115 */ { 20, ~0}, - /* [116] = 116 */ { 12, 17}, - /* [117] = 117 */ { 16, ~0}, - /* [118] = 118 */ { 12, 18}, - /* [119] = 119 */ { 16, ~0}, - /* [120] = 120 */ { 12, 19}, - /* [121] = 121 */ { 4, ~0}, - /* [122] = 122 */ { 8, ~0}, - /* [123] = 123 */ { 8, ~0}, - /* [124] = 124 */ { 4, ~0}, - /* [125] = 125 */ { 8, ~0}, - /* [126] = 126 */ { 8, ~0}, - /* [127] = 127 */ { 8, ~0}, - /* [128] = 128 */ { 20, ~0}, - /* [129] = 129 */ { 8, ~0}, - /* [130] = 130 */ { 20, ~0}, - /* [131] = 131 */ { 8, ~0}, - /* [132] = 132 */ { 12, ~0}, - /* [133] = 133 */ { 8, ~0}, - /* [134] = 134 */ { 8, ~0}, - /* [135] = 135 */ { 8, ~0}, - /* [136] = 136 */ { 8, ~0}, - /* [137] = 137 */ { 12, ~0}, - /* [138] = 138 */ { 8, ~0}, - /* [139] = 139 */ { 8, ~0}, - /* [140] = 140 */ { 0, ~0}, - /* [141] = 141 */ { 4, ~0}, - /* [142] = 142 */ { 8, ~0}, - /* [143] = 143 */ { 28, 20}, - /* [144] = 144 */ { 20, 21}, - /* [145] = 145 */ { 48, 22}, - /* [146] = 146 */ { 32, 23}, - /* [147] = 147 */ { 24, ~0}, - /* [148] = 148 */ { 16, ~0}, - /* [149] = 149 */ { 44, ~0}, - /* [150] = 150 */ { 28, ~0}, - /* [151] = 151 */ { 12, ~0}, - /* [152] = 152 */ { 8, ~0}, - /* [153] = 153 */ { 20, ~0}, - /* [154] = 154 */ { 12, ~0}, - /* [155] = 155 */ { 16, ~0}, - /* [156] = 156 */ { 8, ~0}, - /* [157] = 157 */ { 24, ~0}, - /* [158] = 158 */ { 12, ~0}, - /* [159] = 159 */ { 12, ~0}, - /* [160] = 160 */ { 12, ~0}, - /* [161] = 161 */ { 8, ~0}, - /* [162] = 162 */ { 16, ~0}, - /* [163] = 163 */ { 16, ~0}, - /* [164] = 164 */ { 8, ~0}, - /* [165] = 165 */ { 12, ~0}, - /* [166] = 166 */ { 12, ~0}, - /* [167] = 167 */ { 12, ~0}, - /* [168] = 168 */ { 12, 24}, - /* [169] = 169 */ { 12, 25}, - /* [170] = 170 */ { 12, 26}, - /* [171] = 171 */ { 8, ~0}, - /* [172] = 172 */ { 24, ~0}, - /* [173] = 173 */ { 40, 27}, - /* [174] = 174 */ { 20, ~0}, - /* [175] = 175 */ { 52, ~0}, - /* [176] = 176 */ { 4, ~0}, - /* [177] = 177 */ { 68, ~0}, - /* [178] = 178 */ {132, ~0}, - /* [179] = 179 */ { 8, ~0}, - /* [180] = 180 */ { 68, ~0}, - /* [181] = 181 */ {132, ~0}, - /* [182] = 182 */ { 52, ~0}, - /* [183] = 183 */ { 4, ~0}, - /* [184] = 184 */ { 4, ~0}, - /* [185] = 185 */ { 36, ~0}, - /* [186] = 186 */ { 20, ~0}, - /* [187] = 187 */ { 28, ~0}, - /* [188] = 188 */ { 16, ~0}, - /* [189] = 189 */ { 28, ~0}, - /* [190] = 190 */ { 16, ~0}, - /* [191] = 191 */ { 20, ~0}, - /* [192] = 192 */ { 12, ~0}, - /* [193] = 193 */ { 16, 28}, - /* [194] = 194 */ { 8, ~0}, - /* [195] = 195 */ { 44, 29}, - /* [196] = 196 */ { 24, ~0}, - /* [197] = 197 */ { 8, ~0}, - /* [198] = 198 */ { 16, ~0}, - /* [199] = 199 */ { 12, ~0}, - /* [200] = 200 */ { 12, ~0}, - /* [201] = 201 */ { 12, ~0}, - /* [202] = 202 */ { 24, ~0}, - /* [203] = 203 */ { 16, ~0}, - /* [204] = 204 */ { 16, ~0}, - /* [205] = 205 */ { 12, ~0}, - /* [206] = 206 */ { 32, ~0}, - /* [207] = 207 */ { 20, ~0}, - /* [208] = 208 */ { 20, ~0}, - /* [209] = 209 */ { 16, ~0}, - /* [210] = 210 */ { 40, ~0}, - /* [211] = 211 */ { 24, ~0}, - /* [212] = 212 */ { 24, ~0}, - /* [213] = 213 */ { 16, ~0}, - /* [214] = 214 */ { 28, 30}, - /* [215] = 215 */ { 32, 31}, - /* [216] = 216 */ { 36, 32}, - /* [217] = 217 */ { 28, 33}, - /* [218] = 218 */ { 36, 34}, - /* [219] = 219 */ { 44, 35}, - /* [220] = 220 */ { 0, ~0}, - /* [221] = 221 */ { 0, ~0}, - /* [222] = 222 */ { 0, ~0}, - /* [223] = 223 */ { 0, ~0}, - /* [224] = 224 */ { 0, ~0}, - /* [225] = 225 */ { 0, ~0}, - /* [226] = 226 */ { 0, ~0}, - /* [227] = 227 */ { 0, ~0}, - /* [228] = 228 */ { 0, ~0}, - /* [229] = 229 */ { 12, ~0}, - /* [230] = 230 */ { 16, ~0}, - /* [231] = 231 */ { 12, ~0}, - /* [232] = 232 */ { 8, ~0}, - /* [233] = 233 */ { 8, 36}, - /* [234] = 234 */ { 0, ~0}, - /* [235] = 235 */ { 0, ~0}, - /* [236] = 236 */ { 0, ~0}, - /* [237] = 237 */ { 0, ~0}, - /* [238] = 238 */ { 0, ~0}, - /* [239] = 239 */ { 0, ~0}, - /* [240] = 2048 */ { 12, ~0}, - /* [241] = 2049 */ { 8, ~0}, - /* [242] = 2050 */ { 0, ~0}, - /* [243] = 2051 */ { 0, ~0}, - /* [244] = 2052 */ { 0, ~0}, - /* [245] = 2053 */ { 44, 37}, - /* [246] = 2054 */ { 12, 38}, - /* [247] = 2055 */ { 12, 39}, - /* [248] = 2056 */ { 24, ~0}, - /* [249] = 2057 */ { 0, ~0}, - /* [250] = 2058 */ { 0, ~0}, - /* [251] = 2059 */ { 0, ~0}, - /* [252] = 2060 */ { 0, ~0}, - /* [253] = 2061 */ { 0, ~0}, - /* [254] = 2062 */ { 0, ~0}, - /* [255] = 2063 */ { 0, ~0}, - /* [256] = 2064 */ { 0, ~0}, - /* [257] = 2065 */ { 12, ~0}, - /* [258] = 2066 */ { 8, 40}, - /* [259] = 2067 */ { 0, ~0}, - /* [260] = 2068 */ { 0, ~0}, - /* [261] = 2069 */ { 0, ~0}, - /* [262] = 2070 */ { 0, ~0}, - /* [263] = 2071 */ { 0, ~0}, - /* [264] = 4096 */ { 20, ~0}, - /* [265] = 4097 */ { 8, ~0}, - /* [266] = 4098 */ { 0, ~0}, - /* [267] = 4099 */ { 60, 41}, - /* [268] = 4100 */ { 60, 42}, - /* [269] = 4101 */ { 48, 43}, - /* [270] = 4102 */ { 48, 44}, - /* [271] = 4103 */ { 16, ~0}, - /* [272] = 4104 */ { 12, 45}, - /* [273] = 4105 */ { 16, ~0}, - /* [274] = 4106 */ { 12, 46}, - /* [275] = 4107 */ { 24, ~0}, - /* [276] = 4108 */ { 28, ~0}, - /* [277] = 4109 */ { 32, 47}, - /* [278] = 4110 */ { 20, ~0}, - /* [279] = 4111 */ { 16, ~0}, - /* [280] = 4112 */ { 8, ~0}, - /* [281] = 4113 */ { 8, ~0}, - /* [282] = 4114 */ { 84, 48}, - /* [283] = 4115 */ { 92, 49}, - /* [284] = 4116 */ { 0, ~0}, - /* [285] = 4117 */ { 12, ~0}, - /* [286] = 4118 */ { 8, 50}, - /* [287] = 4119 */ { 32, ~0}, - /* [288] = 4120 */ { 36, ~0}, - /* [289] = 4121 */ { 28, ~0}, - /* [290] = 4122 */ { 36, ~0}, - /* [291] = 4123 */ { 40, ~0}, - /* [292] = 4124 */ { 8, ~0}, - /* [293] = 4125 */ { 12, ~0}, - /* [294] = 4126 */ { 8, ~0}, - /* [295] = 4127 */ { 12, ~0}, - /* [296] = 4176 */ { 0, ~0}, - /* [297] = 4177 */ { 0, ~0}, - /* [298] = 4178 */ { 0, ~0}, - /* [299] = 4179 */ { 0, ~0}, - /* [300] = 4180 */ { 12, ~0}, - /* [301] = 4181 */ { 28, ~0}, - /* [302] = 4182 */ { 8, 51}, - /* [303] = 4183 */ { 16, 52}, - /* [304] = 4184 */ { 28, ~0}, - /* [305] = 4185 */ { 44, ~0}, - /* [306] = 4186 */ { 16, 53}, - /* [307] = 4187 */ { 16, 54}, - /* [308] = 4188 */ { 20, ~0}, - /* [309] = 4189 */ { 12, ~0}, - /* [310] = 4190 */ { 12, ~0}, - /* [311] = 4191 */ { 16, ~0}, - /* [312] = 4192 */ { 16, ~0}, - /* [313] = 4193 */ { 12, ~0}, - /* [314] = 4194 */ { 16, ~0}, - /* [315] = 4195 */ { 20, ~0}, - /* [316] = 4196 */ { 24, ~0}, - /* [317] = 4197 */ { 16, ~0}, - /* [318] = 4198 */ { 24, ~0}, - /* [319] = 4199 */ { 32, ~0}, - /* [320] = 4200 */ { 40, ~0}, - /* [321] = 4201 */ { 12, ~0}, - /* [322] = 4202 */ { 12, 55}, - /* [323] = 4203 */ { 12, 56}, - /* [324] = 4204 */ { 12, 57}, - /* [325] = 4205 */ { 12, 58}, - /* [326] = 4206 */ { 12, 59}, - /* [327] = 4207 */ { 12, 60}, - /* [328] = 4208 */ { 12, 61}, - /* [329] = 4209 */ { 12, 62}, - /* [330] = 4210 */ { 12, 63}, - /* [331] = 4211 */ { 12, 64}, - /* [332] = 4212 */ { 12, 65}, - /* [333] = 4213 */ { 12, 66}, - /* [334] = 4214 */ { 12, 67}, - /* [335] = 4215 */ { 28, ~0}, - /* [336] = 4216 */ { 44, ~0}, - /* [337] = 4217 */ { 16, 68}, - /* [338] = 4218 */ { 28, 69}, - /* [339] = 4219 */ { 44, 70}, - /* [340] = 4220 */ { 8, ~0}, - /* [341] = 4221 */ { 12, ~0}, - /* [342] = 4222 */ { 8, 71}, - /* [343] = 4223 */ { 0, ~0}, - /* [344] = 4224 */ { 0, ~0}, - /* [345] = 4225 */ { 0, ~0}, - /* [346] = 4226 */ { 0, ~0}, - /* [347] = 4227 */ { 0, ~0}, - /* [348] = 4228 */ { 12, ~0}, - /* [349] = 4229 */ { 0, ~0}, - /* [350] = 4230 */ { 12, ~0}, - /* [351] = 4231 */ { 24, ~0}, - /* [352] = 4232 */ { 12, ~0}, - /* [353] = 4233 */ { 16, ~0}, - /* [354] = 4234 */ { 24, ~0}, - /* [355] = 4235 */ { 12, ~0}, - /* [356] = 4236 */ { 16, ~0}, - /* [357] = 4237 */ { 24, ~0}, - /* [358] = 4238 */ { 16, ~0}, - /* [359] = 4239 */ { 24, ~0}, - /* [360] = 4128 */ { 16, ~0}, - /* [361] = 4129 */ { 16, ~0}, - /* [362] = 4130 */ { 28, ~0}, - /* [363] = 4131 */ { 8, ~0}, - /* [364] = 4132 */ { 12, ~0}, - /* [365] = 4133 */ { 16, ~0}, - /* [366] = 4134 */ { 20, ~0}, - /* [367] = 4135 */ { 0, ~0}, - /* [368] = 4264 */ { 0, ~0}, - /* [369] = 4265 */ { 12, ~0}, - /* [370] = 4266 */ { 12, ~0}, - /* [371] = 4267 */ { 16, ~0}, - /* [372] = 4268 */ { 16, ~0}, - /* [373] = 4269 */ { 12, ~0}, - /* [374] = 4270 */ { 16, ~0}, - /* [375] = 4271 */ { 20, ~0}, - /* [376] = 4272 */ { 24, ~0}, - /* [377] = 4273 */ { 16, ~0}, - /* [378] = 4274 */ { 24, ~0}, - /* [379] = 4275 */ { 32, ~0}, - /* [380] = 4276 */ { 40, ~0}, - /* [381] = 4277 */ { 12, ~0}, - /* [382] = 4278 */ { 0, ~0}, - /* [383] = 4279 */ { 0, ~0}, - /* [384] = 4312 */ { 0, ~0}, - /* [385] = 4313 */ { 0, ~0}, - /* [386] = 4314 */ { 0, ~0}, - /* [387] = 4315 */ { 0, ~0}, - /* [388] = 4316 */ { 12, ~0}, - /* [389] = 4317 */ { 8, 72}, - /* [390] = 4318 */ { 20, ~0}, - /* [391] = 4319 */ { 12, ~0}, - /* [392] = 4320 */ { 8, 73}, - /* [393] = 4321 */ { 24, ~0}, - /* [394] = 4322 */ { 24, ~0}, - /* [395] = 4323 */ { 28, ~0}, - /* [396] = 4324 */ { 20, ~0}, - /* [397] = 4325 */ { 8, ~0}, - /* [398] = 4326 */ { 0, ~0}, - /* [399] = 4327 */ { 0, ~0}, -}; - -static const gl_proto_size_func Render_size_func_table[74] = { - __glXCallListsReqSize, - __glXBitmapReqSize, - __glXFogfvReqSize, - __glXFogivReqSize, - __glXLightfvReqSize, - __glXLightivReqSize, - __glXLightModelfvReqSize, - __glXLightModelivReqSize, - __glXMaterialfvReqSize, - __glXMaterialivReqSize, - __glXPolygonStippleReqSize, - __glXTexParameterfvReqSize, - __glXTexParameterivReqSize, - __glXTexImage1DReqSize, - __glXTexImage2DReqSize, - __glXTexEnvfvReqSize, - __glXTexEnvivReqSize, - __glXTexGendvReqSize, - __glXTexGenfvReqSize, - __glXTexGenivReqSize, - __glXMap1dReqSize, - __glXMap1fReqSize, - __glXMap2dReqSize, - __glXMap2fReqSize, - __glXPixelMapfvReqSize, - __glXPixelMapuivReqSize, - __glXPixelMapusvReqSize, - __glXDrawPixelsReqSize, - __glXDrawArraysReqSize, - __glXColorSubTableReqSize, - __glXCompressedTexImage1DARBReqSize, - __glXCompressedTexImage2DARBReqSize, - __glXCompressedTexImage3DARBReqSize, - __glXCompressedTexSubImage1DARBReqSize, - __glXCompressedTexSubImage2DARBReqSize, - __glXCompressedTexSubImage3DARBReqSize, - __glXDrawBuffersARBReqSize, - __glXColorTableReqSize, - __glXColorTableParameterfvReqSize, - __glXColorTableParameterivReqSize, - __glXPointParameterfvEXTReqSize, - __glXTexSubImage1DReqSize, - __glXTexSubImage2DReqSize, - __glXConvolutionFilter1DReqSize, - __glXConvolutionFilter2DReqSize, - __glXConvolutionParameterfvReqSize, - __glXConvolutionParameterivReqSize, - __glXSeparableFilter2DReqSize, - __glXTexImage3DReqSize, - __glXTexSubImage3DReqSize, - __glXPrioritizeTexturesReqSize, - __glXRequestResidentProgramsNVReqSize, - __glXLoadProgramNVReqSize, - __glXProgramParameters4fvNVReqSize, - __glXProgramParameters4dvNVReqSize, - __glXVertexAttribs1svNVReqSize, - __glXVertexAttribs2svNVReqSize, - __glXVertexAttribs3svNVReqSize, - __glXVertexAttribs4svNVReqSize, - __glXVertexAttribs1fvNVReqSize, - __glXVertexAttribs2fvNVReqSize, - __glXVertexAttribs3fvNVReqSize, - __glXVertexAttribs4fvNVReqSize, - __glXVertexAttribs1dvNVReqSize, - __glXVertexAttribs2dvNVReqSize, - __glXVertexAttribs3dvNVReqSize, - __glXVertexAttribs4dvNVReqSize, - __glXVertexAttribs4ubvNVReqSize, - __glXProgramStringARBReqSize, - __glXProgramNamedParameter4fvNVReqSize, - __glXProgramNamedParameter4dvNVReqSize, - __glXPointParameterivNVReqSize, - __glXDeleteRenderbuffersEXTReqSize, - __glXDeleteFramebuffersEXTReqSize, -}; - -const struct __glXDispatchInfo Render_dispatch_info = { - 13, - Render_dispatch_tree, - Render_function_table, - Render_size_table, - Render_size_func_table -}; - -/*****************************************************************/ -/* tree depth = 12 */ -static const int_fast16_t VendorPriv_dispatch_tree[152] = { - /* [0] -> opcode range [0, 131072], node depth 1 */ - 2, - 5, - EMPTY_LEAF, - 119, - EMPTY_LEAF, - - /* [5] -> opcode range [0, 32768], node depth 2 */ - 1, - 8, - EMPTY_LEAF, - - /* [8] -> opcode range [0, 16384], node depth 3 */ - 1, - 11, - EMPTY_LEAF, - - /* [11] -> opcode range [0, 8192], node depth 4 */ - 2, - 16, - EMPTY_LEAF, - 78, - EMPTY_LEAF, - - /* [16] -> opcode range [0, 2048], node depth 5 */ - 2, - 21, - EMPTY_LEAF, - 36, - EMPTY_LEAF, - - /* [21] -> opcode range [0, 512], node depth 6 */ - 1, - 24, - EMPTY_LEAF, - - /* [24] -> opcode range [0, 256], node depth 7 */ - 1, - 27, - EMPTY_LEAF, - - /* [27] -> opcode range [0, 128], node depth 8 */ - 1, - 30, - EMPTY_LEAF, - - /* [30] -> opcode range [0, 64], node depth 9 */ - 1, - 33, - EMPTY_LEAF, - - /* [33] -> opcode range [0, 32], node depth 10 */ - 1, - LEAF(0), - EMPTY_LEAF, - - /* [36] -> opcode range [1024, 1536], node depth 6 */ - 2, - 41, - EMPTY_LEAF, - 53, - 67, - - /* [41] -> opcode range [1024, 1152], node depth 7 */ - 1, - 44, - EMPTY_LEAF, - - /* [44] -> opcode range [1024, 1088], node depth 8 */ - 1, - 47, - EMPTY_LEAF, - - /* [47] -> opcode range [1024, 1056], node depth 9 */ - 1, - 50, - EMPTY_LEAF, - - /* [50] -> opcode range [1024, 1040], node depth 10 */ - 1, - LEAF(16), - EMPTY_LEAF, - - /* [53] -> opcode range [1280, 1408], node depth 7 */ - 1, - 56, - EMPTY_LEAF, - - /* [56] -> opcode range [1280, 1344], node depth 8 */ - 2, - 61, - LEAF(24), - EMPTY_LEAF, - 64, - - /* [61] -> opcode range [1280, 1296], node depth 9 */ - 1, - EMPTY_LEAF, - LEAF(40), - - /* [64] -> opcode range [1328, 1344], node depth 9 */ - 1, - LEAF(48), - EMPTY_LEAF, - - /* [67] -> opcode range [1408, 1536], node depth 7 */ - 1, - 70, - EMPTY_LEAF, - - /* [70] -> opcode range [1408, 1472], node depth 8 */ - 1, - 73, - EMPTY_LEAF, - - /* [73] -> opcode range [1408, 1440], node depth 9 */ - 2, - EMPTY_LEAF, - LEAF(56), - LEAF(64), - EMPTY_LEAF, - - /* [78] -> opcode range [4096, 6144], node depth 5 */ - 2, - 83, - EMPTY_LEAF, - 101, - EMPTY_LEAF, - - /* [83] -> opcode range [4096, 4608], node depth 6 */ - 1, - 86, - EMPTY_LEAF, - - /* [86] -> opcode range [4096, 4352], node depth 7 */ - 1, - 89, - EMPTY_LEAF, - - /* [89] -> opcode range [4096, 4224], node depth 8 */ - 1, - 92, - EMPTY_LEAF, - - /* [92] -> opcode range [4096, 4160], node depth 9 */ - 1, - 95, - EMPTY_LEAF, - - /* [95] -> opcode range [4096, 4128], node depth 10 */ - 1, - 98, - EMPTY_LEAF, - - /* [98] -> opcode range [4096, 4112], node depth 11 */ - 1, - LEAF(72), - EMPTY_LEAF, - - /* [101] -> opcode range [5120, 5632], node depth 6 */ - 1, - 104, - EMPTY_LEAF, - - /* [104] -> opcode range [5120, 5376], node depth 7 */ - 1, - 107, - EMPTY_LEAF, - - /* [107] -> opcode range [5120, 5248], node depth 8 */ - 1, - 110, - EMPTY_LEAF, - - /* [110] -> opcode range [5120, 5184], node depth 9 */ - 1, - EMPTY_LEAF, - 113, - - /* [113] -> opcode range [5152, 5184], node depth 10 */ - 1, - 116, - EMPTY_LEAF, - - /* [116] -> opcode range [5152, 5168], node depth 11 */ - 1, - LEAF(80), - EMPTY_LEAF, - - /* [119] -> opcode range [65536, 98304], node depth 2 */ - 1, - 122, - EMPTY_LEAF, - - /* [122] -> opcode range [65536, 81920], node depth 3 */ - 1, - 125, - EMPTY_LEAF, - - /* [125] -> opcode range [65536, 73728], node depth 4 */ - 1, - 128, - EMPTY_LEAF, - - /* [128] -> opcode range [65536, 69632], node depth 5 */ - 1, - 131, - EMPTY_LEAF, - - /* [131] -> opcode range [65536, 67584], node depth 6 */ - 1, - 134, - EMPTY_LEAF, - - /* [134] -> opcode range [65536, 66560], node depth 7 */ - 1, - 137, - EMPTY_LEAF, - - /* [137] -> opcode range [65536, 66048], node depth 8 */ - 1, - 140, - EMPTY_LEAF, - - /* [140] -> opcode range [65536, 65792], node depth 9 */ - 1, - 143, - EMPTY_LEAF, - - /* [143] -> opcode range [65536, 65664], node depth 10 */ - 1, - 146, - EMPTY_LEAF, - - /* [146] -> opcode range [65536, 65600], node depth 11 */ - 1, - 149, - EMPTY_LEAF, - - /* [149] -> opcode range [65536, 65568], node depth 12 */ - 1, - LEAF(88), - EMPTY_LEAF, - -}; - -static const void *VendorPriv_function_table[104][2] = { - /* [ 0] = 0 */ {NULL, NULL}, - /* [ 1] = 1 */ {__glXDisp_GetConvolutionFilterEXT, __glXDispSwap_GetConvolutionFilterEXT}, - /* [ 2] = 2 */ {__glXDisp_GetConvolutionParameterfvEXT, __glXDispSwap_GetConvolutionParameterfvEXT}, - /* [ 3] = 3 */ {__glXDisp_GetConvolutionParameterivEXT, __glXDispSwap_GetConvolutionParameterivEXT}, - /* [ 4] = 4 */ {__glXDisp_GetSeparableFilterEXT, __glXDispSwap_GetSeparableFilterEXT}, - /* [ 5] = 5 */ {__glXDisp_GetHistogramEXT, __glXDispSwap_GetHistogramEXT}, - /* [ 6] = 6 */ {__glXDisp_GetHistogramParameterfvEXT, __glXDispSwap_GetHistogramParameterfvEXT}, - /* [ 7] = 7 */ {__glXDisp_GetHistogramParameterivEXT, __glXDispSwap_GetHistogramParameterivEXT}, - /* [ 8] = 8 */ {__glXDisp_GetMinmaxEXT, __glXDispSwap_GetMinmaxEXT}, - /* [ 9] = 9 */ {__glXDisp_GetMinmaxParameterfvEXT, __glXDispSwap_GetMinmaxParameterfvEXT}, - /* [ 10] = 10 */ {__glXDisp_GetMinmaxParameterivEXT, __glXDispSwap_GetMinmaxParameterivEXT}, - /* [ 11] = 11 */ {__glXDisp_AreTexturesResidentEXT, __glXDispSwap_AreTexturesResidentEXT}, - /* [ 12] = 12 */ {__glXDisp_DeleteTexturesEXT, __glXDispSwap_DeleteTexturesEXT}, - /* [ 13] = 13 */ {__glXDisp_GenTexturesEXT, __glXDispSwap_GenTexturesEXT}, - /* [ 14] = 14 */ {__glXDisp_IsTextureEXT, __glXDispSwap_IsTextureEXT}, - /* [ 15] = 15 */ {NULL, NULL}, - /* [ 16] = 1024 */ {__glXDisp_QueryContextInfoEXT, __glXDispSwap_QueryContextInfoEXT}, - /* [ 17] = 1025 */ {NULL, NULL}, - /* [ 18] = 1026 */ {NULL, NULL}, - /* [ 19] = 1027 */ {NULL, NULL}, - /* [ 20] = 1028 */ {NULL, NULL}, - /* [ 21] = 1029 */ {NULL, NULL}, - /* [ 22] = 1030 */ {NULL, NULL}, - /* [ 23] = 1031 */ {NULL, NULL}, - /* [ 24] = 1296 */ {__glXDisp_GetProgramEnvParameterfvARB, __glXDispSwap_GetProgramEnvParameterfvARB}, - /* [ 25] = 1297 */ {__glXDisp_GetProgramEnvParameterdvARB, __glXDispSwap_GetProgramEnvParameterdvARB}, - /* [ 26] = 1298 */ {__glXDisp_GetProgramivNV, __glXDispSwap_GetProgramivNV}, - /* [ 27] = 1299 */ {__glXDisp_GetProgramStringNV, __glXDispSwap_GetProgramStringNV}, - /* [ 28] = 1300 */ {__glXDisp_GetTrackMatrixivNV, __glXDispSwap_GetTrackMatrixivNV}, - /* [ 29] = 1301 */ {__glXDisp_GetVertexAttribdvARB, __glXDispSwap_GetVertexAttribdvARB}, - /* [ 30] = 1302 */ {__glXDisp_GetVertexAttribfvNV, __glXDispSwap_GetVertexAttribfvNV}, - /* [ 31] = 1303 */ {__glXDisp_GetVertexAttribivNV, __glXDispSwap_GetVertexAttribivNV}, - /* [ 32] = 1304 */ {__glXDisp_IsProgramNV, __glXDispSwap_IsProgramNV}, - /* [ 33] = 1305 */ {__glXDisp_GetProgramLocalParameterfvARB, __glXDispSwap_GetProgramLocalParameterfvARB}, - /* [ 34] = 1306 */ {__glXDisp_GetProgramLocalParameterdvARB, __glXDispSwap_GetProgramLocalParameterdvARB}, - /* [ 35] = 1307 */ {__glXDisp_GetProgramivARB, __glXDispSwap_GetProgramivARB}, - /* [ 36] = 1308 */ {__glXDisp_GetProgramStringARB, __glXDispSwap_GetProgramStringARB}, - /* [ 37] = 1309 */ {NULL, NULL}, - /* [ 38] = 1310 */ {__glXDisp_GetProgramNamedParameterfvNV, __glXDispSwap_GetProgramNamedParameterfvNV}, - /* [ 39] = 1311 */ {__glXDisp_GetProgramNamedParameterdvNV, __glXDispSwap_GetProgramNamedParameterdvNV}, - /* [ 40] = 1288 */ {NULL, NULL}, - /* [ 41] = 1289 */ {NULL, NULL}, - /* [ 42] = 1290 */ {NULL, NULL}, - /* [ 43] = 1291 */ {NULL, NULL}, - /* [ 44] = 1292 */ {NULL, NULL}, - /* [ 45] = 1293 */ {__glXDisp_AreProgramsResidentNV, __glXDispSwap_AreProgramsResidentNV}, - /* [ 46] = 1294 */ {__glXDisp_DeleteProgramsNV, __glXDispSwap_DeleteProgramsNV}, - /* [ 47] = 1295 */ {__glXDisp_GenProgramsNV, __glXDispSwap_GenProgramsNV}, - /* [ 48] = 1328 */ {NULL, NULL}, - /* [ 49] = 1329 */ {NULL, NULL}, - /* [ 50] = 1330 */ {__glXDisp_BindTexImageEXT, __glXDispSwap_BindTexImageEXT}, - /* [ 51] = 1331 */ {__glXDisp_ReleaseTexImageEXT, __glXDispSwap_ReleaseTexImageEXT}, - /* [ 52] = 1332 */ {NULL, NULL}, - /* [ 53] = 1333 */ {NULL, NULL}, - /* [ 54] = 1334 */ {NULL, NULL}, - /* [ 55] = 1335 */ {NULL, NULL}, - /* [ 56] = 1416 */ {NULL, NULL}, - /* [ 57] = 1417 */ {NULL, NULL}, - /* [ 58] = 1418 */ {NULL, NULL}, - /* [ 59] = 1419 */ {NULL, NULL}, - /* [ 60] = 1420 */ {NULL, NULL}, - /* [ 61] = 1421 */ {NULL, NULL}, - /* [ 62] = 1422 */ {__glXDisp_IsRenderbufferEXT, __glXDispSwap_IsRenderbufferEXT}, - /* [ 63] = 1423 */ {__glXDisp_GenRenderbuffersEXT, __glXDispSwap_GenRenderbuffersEXT}, - /* [ 64] = 1424 */ {__glXDisp_GetRenderbufferParameterivEXT, __glXDispSwap_GetRenderbufferParameterivEXT}, - /* [ 65] = 1425 */ {__glXDisp_IsFramebufferEXT, __glXDispSwap_IsFramebufferEXT}, - /* [ 66] = 1426 */ {__glXDisp_GenFramebuffersEXT, __glXDispSwap_GenFramebuffersEXT}, - /* [ 67] = 1427 */ {__glXDisp_CheckFramebufferStatusEXT, __glXDispSwap_CheckFramebufferStatusEXT}, - /* [ 68] = 1428 */ {__glXDisp_GetFramebufferAttachmentParameterivEXT, __glXDispSwap_GetFramebufferAttachmentParameterivEXT}, - /* [ 69] = 1429 */ {NULL, NULL}, - /* [ 70] = 1430 */ {NULL, NULL}, - /* [ 71] = 1431 */ {NULL, NULL}, - /* [ 72] = 4096 */ {NULL, NULL}, - /* [ 73] = 4097 */ {NULL, NULL}, - /* [ 74] = 4098 */ {__glXDisp_GetColorTableSGI, __glXDispSwap_GetColorTableSGI}, - /* [ 75] = 4099 */ {__glXDisp_GetColorTableParameterfvSGI, __glXDispSwap_GetColorTableParameterfvSGI}, - /* [ 76] = 4100 */ {__glXDisp_GetColorTableParameterivSGI, __glXDispSwap_GetColorTableParameterivSGI}, - /* [ 77] = 4101 */ {NULL, NULL}, - /* [ 78] = 4102 */ {NULL, NULL}, - /* [ 79] = 4103 */ {NULL, NULL}, - /* [ 80] = 5152 */ {NULL, NULL}, - /* [ 81] = 5153 */ {NULL, NULL}, - /* [ 82] = 5154 */ {__glXDisp_CopySubBufferMESA, __glXDispSwap_CopySubBufferMESA}, - /* [ 83] = 5155 */ {NULL, NULL}, - /* [ 84] = 5156 */ {NULL, NULL}, - /* [ 85] = 5157 */ {NULL, NULL}, - /* [ 86] = 5158 */ {NULL, NULL}, - /* [ 87] = 5159 */ {NULL, NULL}, - /* [ 88] = 65536 */ {__glXDisp_SwapIntervalSGI, __glXDispSwap_SwapIntervalSGI}, - /* [ 89] = 65537 */ {__glXDisp_MakeCurrentReadSGI, __glXDispSwap_MakeCurrentReadSGI}, - /* [ 90] = 65538 */ {NULL, NULL}, - /* [ 91] = 65539 */ {NULL, NULL}, - /* [ 92] = 65540 */ {__glXDisp_GetFBConfigsSGIX, __glXDispSwap_GetFBConfigsSGIX}, - /* [ 93] = 65541 */ {__glXDisp_CreateContextWithConfigSGIX, __glXDispSwap_CreateContextWithConfigSGIX}, - /* [ 94] = 65542 */ {__glXDisp_CreateGLXPixmapWithConfigSGIX, __glXDispSwap_CreateGLXPixmapWithConfigSGIX}, - /* [ 95] = 65543 */ {__glXDisp_CreateGLXPbufferSGIX, __glXDispSwap_CreateGLXPbufferSGIX}, - /* [ 96] = 65544 */ {__glXDisp_DestroyGLXPbufferSGIX, __glXDispSwap_DestroyGLXPbufferSGIX}, - /* [ 97] = 65545 */ {__glXDisp_ChangeDrawableAttributesSGIX, __glXDispSwap_ChangeDrawableAttributesSGIX}, - /* [ 98] = 65546 */ {__glXDisp_GetDrawableAttributesSGIX, __glXDispSwap_GetDrawableAttributesSGIX}, - /* [ 99] = 65547 */ {NULL, NULL}, - /* [ 100] = 65548 */ {NULL, NULL}, - /* [ 101] = 65549 */ {NULL, NULL}, - /* [ 102] = 65550 */ {NULL, NULL}, - /* [ 103] = 65551 */ {NULL, NULL}, -}; - -const struct __glXDispatchInfo VendorPriv_dispatch_info = { - 17, - VendorPriv_dispatch_tree, - VendorPriv_function_table, - NULL, - NULL -}; - diff --git a/GL/symlink-mesa.sh b/GL/symlink-mesa.sh index 0cfe1c9b6..af9adbd94 100755 --- a/GL/symlink-mesa.sh +++ b/GL/symlink-mesa.sh @@ -229,6 +229,14 @@ symlink_glx() { action indirect_size.h action glcontextmodes.c action glcontextmodes.h + action indirect_dispatch.c + action indirect_dispatch.h + action indirect_dispatch_swap.c + action indirect_reqsize.c + action indirect_reqsize.h + action indirect_size_get.c + action indirect_size_get.h + action indirect_table.c src_dir src/mesa/glapi From 1bec6ad8977cefa49cc297a310f5eb0b7cd0b8bc Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Mon, 18 Feb 2008 17:46:04 +1030 Subject: [PATCH 071/112] xfree86: plug memory leak in xf86LogInit() xf86LogInit allocates a piece of memory, stores it in lf. LogInit() will then effectively strdup it, but lf is never freed again. Signed-off-by: Peter Hutterer --- hw/xfree86/common/xf86Helper.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index 1368d04ab..0d2471aa1 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -1353,7 +1353,7 @@ xf86ErrorF(const char *format, ...) void xf86LogInit() { - char *lf; + char *lf = NULL; #define LOGSUFFIX ".log" #define LOGOLDSUFFIX ".old" @@ -1377,6 +1377,8 @@ xf86LogInit() #undef LOGSUFFIX #undef LOGOLDSUFFIX + + free(lf); } void From 6dc71f6b2c7ff49adb504426b4cd206e4745e1e3 Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Mon, 18 Feb 2008 17:52:37 +1030 Subject: [PATCH 072/112] xfree86: plug memory leak in InitPathList. All the failure paths were very diligent in freeing the "fullpath" temporary string, but the success case was not. All the content only got strdup()d, so it's not live memory anymore. Signed-off-by: Peter Hutterer --- hw/xfree86/loader/loadmod.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c index 650dcf35c..7f3bbe49c 100644 --- a/hw/xfree86/loader/loadmod.c +++ b/hw/xfree86/loader/loadmod.c @@ -177,6 +177,7 @@ InitPathList(const char *path) } if (list) list[n] = NULL; + xfree(fullpath); return list; } From 3abce3ea2b1f43bd111664d4a57e5ccd282acab0 Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Mon, 18 Feb 2008 18:13:10 +1030 Subject: [PATCH 073/112] xfree86: plug a memory leak in xf86LoadModules. LoadModule() returns the only reference to a fresh piece of memory (a ModuleDescPtr). Sadly, xf86LoadModules dropped the return value on the floor leaking memory for each module it loaded. Signed-off-by: Peter Hutterer --- hw/xfree86/common/xf86Init.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 41cf1d17c..0d90b9d43 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -1922,6 +1922,7 @@ xf86LoadModules(char **list, pointer *optlist) int i; char *name; Bool failed = FALSE; + ModuleDescPtr desc; if (!list) return TRUE; @@ -1945,11 +1946,15 @@ xf86LoadModules(char **list, pointer *optlist) else opt = NULL; - if (!LoadModule(name, NULL, NULL, NULL, opt, NULL, &errmaj, &errmin)) { + desc = LoadModule(name, NULL, NULL, NULL, opt, NULL, &errmaj, + &errmin); + if (!desc) { LoaderErrorMsg(NULL, name, errmaj, errmin); failed = TRUE; } xfree(name); + xfree(desc->name); + xfree(desc); } return !failed; } From 6cbaf15e6109ba77819c4070f5b46c78237ec460 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 19 Feb 2008 12:02:22 +1030 Subject: [PATCH 074/112] xfree86: guard against NULL-pointer dereferences in xf86LoadModules. Should have been part of 3abce3ea2b1f43bd111664d4a57e5ccd282acab0, but I forgot to git-update-index before I committed. Thanks to Bill Crawford for pointing it out. --- hw/xfree86/common/xf86Init.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 0d90b9d43..7bcfdff40 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -1951,10 +1951,11 @@ xf86LoadModules(char **list, pointer *optlist) if (!desc) { LoaderErrorMsg(NULL, name, errmaj, errmin); failed = TRUE; + } else { + xfree(desc->name); + xfree(desc); } xfree(name); - xfree(desc->name); - xfree(desc); } return !failed; } From 5f5ec5db35e82ddd9659763875e5d6c63cf1b691 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Tue, 19 Feb 2008 00:00:11 -0800 Subject: [PATCH 075/112] XQuartz: unsetenv("DISPLAY") before startx if X11.app can't connect to it. Also fix casting to silence warning. (cherry picked from commit a5cbf78471ec6e6ad672dc00118fc7edbd6ddc7c) --- hw/xquartz/bundle/bundle-main.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hw/xquartz/bundle/bundle-main.c b/hw/xquartz/bundle/bundle-main.c index 54d01368d..e97770a55 100644 --- a/hw/xquartz/bundle/bundle-main.c +++ b/hw/xquartz/bundle/bundle-main.c @@ -45,6 +45,7 @@ static char *command_from_prefs(const char *key, const char *default_value); int main(int argc, char **argv) { Display *display; + const char *s; size_t i; fprintf(stderr, "X11.app: main(): argc=%d\n", argc); @@ -72,7 +73,12 @@ int main(int argc, char **argv) { } /* Start the server */ - fprintf(stderr, "X11.app: Could not connect to server. Starting X server."); + if(s = getenv("DISPLAY")) { + fprintf(stderr, "X11.app: Could not connect to server (DISPLAY=\"%s\", unsetting). Starting X server.\n", s); + unsetenv("DISPLAY"); + } else { + fprintf(stderr, "X11.app: Could not connect to server (DISPLAY is not set). Starting X server.\n"); + } return execute(command_from_prefs("startx_script", DEFAULT_STARTX)); } @@ -93,7 +99,7 @@ static int execute(const char *command) { fprintf(stderr, "\targv[%d] = %s\n", s - newargv, *s); } - execvp (newargv[0], (const char **) newargv); + execvp (newargv[0], (char * const *) newargv); perror ("X11.app: Couldn't exec."); return(1); } From 67a78e84a81571cedaf7fd214a21ce1bbdc4fb3b Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 19 Feb 2008 21:31:50 +1030 Subject: [PATCH 076/112] Revert "xfree86: plug a memory leak in xf86LoadModules." This reverts commit 3abce3ea2b1f43bd111664d4a57e5ccd282acab0 and 6cbaf15e6109ba77819c4070f5b46c78237ec460. The memory returned to xf86LoadModule was allocated in doLoadModule, which calls the respective module's PreInit. As it turns out, input and output drivers store a pointer to the module elswhere, so freeing it in xf86LoadModule is a bad idea. For further reference: hw/xfree86/common/xf86Helper.c Input drivers: xf86InputDriverList[blah]->module = module; Output drivers: xf86DriverList[blah]->module = module; Unloading the module would not look pretty then. --- hw/xfree86/common/xf86Init.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 7bcfdff40..41cf1d17c 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -1922,7 +1922,6 @@ xf86LoadModules(char **list, pointer *optlist) int i; char *name; Bool failed = FALSE; - ModuleDescPtr desc; if (!list) return TRUE; @@ -1946,14 +1945,9 @@ xf86LoadModules(char **list, pointer *optlist) else opt = NULL; - desc = LoadModule(name, NULL, NULL, NULL, opt, NULL, &errmaj, - &errmin); - if (!desc) { + if (!LoadModule(name, NULL, NULL, NULL, opt, NULL, &errmaj, &errmin)) { LoaderErrorMsg(NULL, name, errmaj, errmin); failed = TRUE; - } else { - xfree(desc->name); - xfree(desc); } xfree(name); } From 5cb9e15562a32c1f102d94d5e15d5fd298baff3f Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 20 Feb 2008 10:36:06 -0800 Subject: [PATCH 077/112] EXA: Fix Render acceleration in copy and tiling cases. Code shuffling in a634c9b03494ba80aeec28be19662ac96657cc23 broke this by leaving pSrcPixmap = NULL. --- exa/exa_render.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/exa/exa_render.c b/exa/exa_render.c index a510e54f6..6df2a23c8 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -587,7 +587,6 @@ exaComposite(CARD8 op, int ret = -1; Bool saveSrcRepeat = pSrc->repeat; Bool saveMaskRepeat = pMask ? pMask->repeat : 0; - PixmapPtr pSrcPixmap = NULL; RegionRec region; /* We currently don't support acceleration of gradients, or other pictures @@ -624,7 +623,9 @@ exaComposite(CARD8 op, if (ret == 1) goto done; } - else if (pSrcPixmap && !pSrc->repeat && !pSrc->transform) + else if (pSrc->pDrawable != NULL && + !pSrc->repeat && + !pSrc->transform) { xDst += pDst->pDrawable->x; yDst += pDst->pDrawable->y; @@ -644,7 +645,9 @@ exaComposite(CARD8 op, REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); goto done; } - else if (pSrcPixmap && !pSrc->transform && + else if (pSrc->pDrawable != NULL && + pSrc->pDrawable->type == DRAWABLE_PIXMAP && + !pSrc->transform && pSrc->repeatType == RepeatNormal) { DDXPointRec srcOrg; @@ -671,10 +674,11 @@ exaComposite(CARD8 op, width, height)) goto done; - srcOrg.x = (xSrc - xDst) % pSrcPixmap->drawable.width; - srcOrg.y = (ySrc - yDst) % pSrcPixmap->drawable.height; + srcOrg.x = (xSrc - xDst) % pSrc->pDrawable->width; + srcOrg.y = (ySrc - yDst) % pSrc->pDrawable->height; - ret = exaFillRegionTiled(pDst->pDrawable, ®ion, pSrcPixmap, + ret = exaFillRegionTiled(pDst->pDrawable, ®ion, + (PixmapPtr)pSrc->pDrawable, &srcOrg, FB_ALLONES, GXcopy); REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); From 7c2f0a8befb310707ea923dbcdfde84521e52c88 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Fri, 15 Feb 2008 19:17:40 -0500 Subject: [PATCH 078/112] Remove COMPOSITE ifdefs around WindowRec bitfield as it has no ABI effect. --- dix/window.c | 2 -- include/windowstr.h | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/dix/window.c b/dix/window.c index b896ef742..70e32fbcf 100644 --- a/dix/window.c +++ b/dix/window.c @@ -290,9 +290,7 @@ SetWindowToDefaults(WindowPtr pWin) pWin->deliverableEvents = 0; pWin->dontPropagate = 0; pWin->forcedBS = FALSE; -#ifdef COMPOSITE pWin->redirectDraw = RedirectDrawNone; -#endif } static void diff --git a/include/windowstr.h b/include/windowstr.h index 4359481cd..a16132458 100644 --- a/include/windowstr.h +++ b/include/windowstr.h @@ -158,9 +158,7 @@ typedef struct _Window { unsigned viewable:1; /* realized && InputOutput */ unsigned dontPropagate:3;/* index into DontPropagateMasks */ unsigned forcedBS:1; /* system-supplied backingStore */ -#ifdef COMPOSITE - unsigned redirectDraw:2; /* rendering is redirected from here */ -#endif + unsigned redirectDraw:2; /* COMPOSITE rendering redirect */ } WindowRec; /* From f343265a289724c81017f089c024a7618267c4e3 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Fri, 15 Feb 2008 19:53:45 -0500 Subject: [PATCH 079/112] XACE: Make the default window background state configurable per-window. To recap: the original XC-SECURITY extension disallowed background "None" if the window was untrusted. XACE 1.0 preserved this check as a hook function. XACE pre-2.0 removed the hook and first abolished background "None entirely, then restored it as a global on/off switch in response to Bug #13683. Now it's back to being per-window, via a flag instead of a hook function. --- Xext/security.c | 5 +++++ Xext/xace.h | 4 ++-- dix/window.c | 9 +++++---- include/windowstr.h | 1 + 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Xext/security.c b/Xext/security.c index a3cde2cec..27ef38205 100644 --- a/Xext/security.c +++ b/Xext/security.c @@ -810,6 +810,11 @@ SecurityResource(CallbackListPtr *pcbl, pointer unused, pointer calldata) subj = dixLookupPrivate(&rec->client->devPrivates, stateKey); obj = dixLookupPrivate(&clients[cid]->devPrivates, stateKey); + /* disable background None for untrusted windows */ + if ((requested & DixCreateAccess) && (rec->rtype == RT_WINDOW)) + if (subj->haveState && subj->trustLevel != XSecurityClientTrusted) + ((WindowPtr)rec->res)->forcedBG = TRUE; + /* special checks for server-owned resources */ if (cid == 0) { if (rec->rtype & RC_DRAWABLE) diff --git a/Xext/xace.h b/Xext/xace.h index 2016ca322..1f07d9fd2 100644 --- a/Xext/xace.h +++ b/Xext/xace.h @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "property.h" /* Default window background */ -#define XaceBackgroundNoneState None +#define XaceBackgroundNoneState(w) ((w)->forcedBG ? BackgroundPixel : None) /* security hooks */ /* Constants used to identify the available security hooks @@ -100,7 +100,7 @@ extern void XaceCensorImage( #else /* XACE */ /* Default window background */ -#define XaceBackgroundNoneState None +#define XaceBackgroundNoneState(w) None /* Define calls away when XACE is not being built. */ diff --git a/dix/window.c b/dix/window.c index 70e32fbcf..9975b5eec 100644 --- a/dix/window.c +++ b/dix/window.c @@ -291,6 +291,7 @@ SetWindowToDefaults(WindowPtr pWin) pWin->dontPropagate = 0; pWin->forcedBS = FALSE; pWin->redirectDraw = RedirectDrawNone; + pWin->forcedBG = FALSE; } static void @@ -702,8 +703,8 @@ CreateWindow(Window wid, WindowPtr pParent, int x, int y, unsigned w, return NullWindow; } - pWin->backgroundState = XaceBackgroundNoneState; - pWin->background.pixel = 0; + pWin->backgroundState = XaceBackgroundNoneState(pWin); + pWin->background.pixel = pScreen->whitePixel; pWin->borderIsPixel = pParent->borderIsPixel; pWin->border = pParent->border; @@ -1014,8 +1015,8 @@ ChangeWindowAttributes(WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client) if (!pWin->parent) MakeRootTile(pWin); else { - pWin->backgroundState = XaceBackgroundNoneState; - pWin->background.pixel = 0; + pWin->backgroundState = XaceBackgroundNoneState(pWin); + pWin->background.pixel = pScreen->whitePixel; } } else if (pixID == ParentRelative) diff --git a/include/windowstr.h b/include/windowstr.h index a16132458..e06a2f1bd 100644 --- a/include/windowstr.h +++ b/include/windowstr.h @@ -159,6 +159,7 @@ typedef struct _Window { unsigned dontPropagate:3;/* index into DontPropagateMasks */ unsigned forcedBS:1; /* system-supplied backingStore */ unsigned redirectDraw:2; /* COMPOSITE rendering redirect */ + unsigned forcedBG:1; /* must have an opaque background */ } WindowRec; /* From 437c78ef9ff1177e04b3d6781b5805d89b2ab81a Mon Sep 17 00:00:00 2001 From: Dodji Seketeli Date: Thu, 21 Feb 2008 15:29:27 +0100 Subject: [PATCH 080/112] [Xephyr/GL] don't crash when the host returns a NULL server string --- hw/kdrive/ephyr/ephyrglxext.c | 14 ++++++++++++-- hw/kdrive/ephyr/ephyrhostglx.c | 9 +++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/hw/kdrive/ephyr/ephyrglxext.c b/hw/kdrive/ephyr/ephyrglxext.c index 381c9d7ed..43a634d24 100644 --- a/hw/kdrive/ephyr/ephyrglxext.c +++ b/hw/kdrive/ephyr/ephyrglxext.c @@ -362,7 +362,7 @@ ephyrGLXQueryServerString(__GLXclientState *a_cl, GLbyte *a_pc) ClientPtr client = a_cl->client; xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *) a_pc; xGLXQueryServerStringReply reply; - char *server_string=NULL ; + char *server_string=NULL, *buf=NULL; int length=0 ; EPHYR_LOG ("enter\n") ; @@ -379,9 +379,15 @@ ephyrGLXQueryServerString(__GLXclientState *a_cl, GLbyte *a_pc) reply.sequenceNumber = client->sequence ; reply.length = __GLX_PAD (length) >> 2 ; reply.n = length ; + buf = xcalloc (reply.length << 2, 1); + if (!buf) { + EPHYR_LOG_ERROR ("failed to allocate string\n;"); + return BadAlloc; + } + memcpy (buf, server_string, length); WriteToClient(client, sz_xGLXQueryServerStringReply, (char*)&reply); - WriteToClient(client, (int)length, server_string); + WriteToClient(client, (int)(reply.length << 2), server_string); res = Success ; @@ -391,6 +397,10 @@ out: xfree (server_string) ; server_string = NULL; } + if (buf) { + xfree (buf); + buf = NULL; + } return res ; } diff --git a/hw/kdrive/ephyr/ephyrhostglx.c b/hw/kdrive/ephyr/ephyrhostglx.c index 5d9a482e8..f5db5be16 100644 --- a/hw/kdrive/ephyr/ephyrhostglx.c +++ b/hw/kdrive/ephyr/ephyrhostglx.c @@ -151,6 +151,7 @@ ephyrHostGLXGetStringFromServer (int a_screen_number, { Bool is_ok=FALSE ; Display *dpy = hostx_get_display () ; + int default_screen = DefaultScreen (dpy); xGLXGenericGetStringReq *req=NULL; xGLXSingleReply reply; int length=0, numbytes=0, major_opcode=0, get_string_op=0; @@ -188,13 +189,17 @@ ephyrHostGLXGetStringFromServer (int a_screen_number, GetReq (GLXGenericGetString, req); req->reqType = major_opcode; req->glxCode = get_string_op; - req->for_whom = DefaultScreen (dpy); + req->for_whom = default_screen; req->name = a_string_name; _XReply (dpy, (xReply *)&reply, 0, False); length = reply.length * 4; - numbytes = reply.size; + if (!length) { + numbytes = 0; + } else { + numbytes = reply.size; + } EPHYR_LOG ("going to get a string of size:%d\n", numbytes) ; *a_string = (char *) Xmalloc (numbytes +1); From c14fd2a5cb3f45d5c4502e09f55f5e3732c5e698 Mon Sep 17 00:00:00 2001 From: Dodji Seketeli Date: Thu, 21 Feb 2008 15:33:02 +0100 Subject: [PATCH 081/112] [Xephyr/GL] properly route expose event on GL drawables When an expose event happens on an host GL window paired with an internal drawable, route that expose event to the clients listening to the expose event on the internal drawable. --- hw/kdrive/ephyr/ephyr.c | 51 +++++++++++++++++++++++++++++++-- hw/kdrive/ephyr/ephyrdriext.c | 24 +++++++++++++--- hw/kdrive/ephyr/ephyrdriext.h | 10 +++++++ hw/kdrive/ephyr/hostx.c | 54 +++++++++++++++++++++++++++++------ hw/kdrive/ephyr/hostx.h | 7 ++++- 5 files changed, 130 insertions(+), 16 deletions(-) diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c index 6ec95d631..738704e40 100644 --- a/hw/kdrive/ephyr/ephyr.c +++ b/hw/kdrive/ephyr/ephyr.c @@ -841,6 +841,37 @@ miPointerScreenFuncRec ephyrPointerScreenFuncs = ephyrWarpCursor }; +/** + * find if the remote window denoted by a_remote + * is paired with an internal Window within the Xephyr server. + * If the remove window is paired with an internal window, send an + * expose event to the client insterested in the internal window expose event. + * + * Pairing happens when a drawable inside Xephyr is associated with + * a GL surface in a DRI environment. + * Look at the function ProcXF86DRICreateDrawable in ephyrdriext.c to + * know a paired window is created. + * + * This is useful to make GL drawables (only windows for now) handle + * expose events and send those events to clients. + */ +static void +ephyrExposePairedWindow (int a_remote) +{ + EphyrWindowPair *pair = NULL; + RegionRec reg; + ScreenPtr screen; + + if (!findWindowPairFromRemote (a_remote, &pair)) { + EPHYR_LOG ("did not find a pair for this window\n"); + return; + } + screen = pair->local->drawable.pScreen; + REGION_NULL (screen, ®); + REGION_COPY (screen, ®, &pair->local->clipList); + screen->WindowExposures (pair->local, ®, NullRegion); + REGION_UNINIT (screen, ®); +} void ephyrPoll(void) @@ -861,9 +892,13 @@ ephyrPoll(void) if (ephyrCurScreen != ev.data.mouse_motion.screen) { EPHYR_LOG ("warping mouse cursor:%d\n", ephyrCurScreen) ; - ephyrWarpCursor(screenInfo.screens[ev.data.mouse_motion.screen], - ev.data.mouse_motion.x, - ev.data.mouse_motion.y ); + if (ev.data.mouse_motion.screen >= 0) + { + ephyrWarpCursor + (screenInfo.screens[ev.data.mouse_motion.screen], + ev.data.mouse_motion.x, + ev.data.mouse_motion.y ); + } } else { @@ -913,6 +948,16 @@ ephyrPoll(void) KdEnqueueKeyboardEvent (ephyrKbd, ev.data.key_up.scancode, TRUE); break; + case EPHYR_EV_EXPOSE: + /* + * We only receive expose events when the expose event have + * be generated for a drawable that is a host X window managed + * by Xephyr. Host X windows managed by Xephyr exists for instance + * when Xephyr is asked to create a GL drawable in a DRI environment. + */ + ephyrExposePairedWindow (ev.data.expose.window); + break; + default: break; } diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c index 1b9dce5c8..fafe56d1f 100644 --- a/hw/kdrive/ephyr/ephyrdriext.c +++ b/hw/kdrive/ephyr/ephyrdriext.c @@ -59,10 +59,6 @@ #define _HAVE_XALLOC_DECLS #include "ephyrlog.h" -typedef struct { - WindowPtr local ; - int remote ; -} EphyrWindowPair; typedef struct { int foo; @@ -950,6 +946,26 @@ findWindowPairFromLocal (WindowPtr a_local, return FALSE ; } +Bool +findWindowPairFromRemote (int a_remote, + EphyrWindowPair **a_pair) +{ + int i=0 ; + + EPHYR_RETURN_VAL_IF_FAIL (a_pair, FALSE) ; + + for (i=0; i < NUM_WINDOW_PAIRS; i++) { + if (window_pairs[i].remote == a_remote) { + *a_pair = &window_pairs[i] ; + EPHYR_LOG ("found (%p, %d)\n", + (*a_pair)->local, + (*a_pair)->remote) ; + return TRUE ; + } + } + return FALSE ; +} + static Bool createHostPeerWindow (const WindowPtr a_win, int *a_peer_win) diff --git a/hw/kdrive/ephyr/ephyrdriext.h b/hw/kdrive/ephyr/ephyrdriext.h index 66af833b9..01c9421fb 100644 --- a/hw/kdrive/ephyr/ephyrdriext.h +++ b/hw/kdrive/ephyr/ephyrdriext.h @@ -27,6 +27,16 @@ */ #ifndef __EPHYRDRIEXT_H__ #define __EPHYRDRIEXT_H__ + +typedef struct { + WindowPtr local ; + int remote ; +} EphyrWindowPair; + Bool ephyrDRIExtensionInit (ScreenPtr a_screen) ; + +Bool findWindowPairFromRemote (int a_remote, + EphyrWindowPair **a_pair); + #endif /*__EPHYRDRIEXT_H__*/ diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c index a5413b876..ae1bb4bf9 100644 --- a/hw/kdrive/ephyr/hostx.c +++ b/hw/kdrive/ephyr/hostx.c @@ -839,16 +839,38 @@ hostx_load_keymap(void) static struct EphyrHostScreen * host_screen_from_window (Window w) { - int index; + int index = 0; + struct EphyrHostScreen *result = NULL; +#if 0 + unsigned int num_children = 0; + Window root = None, parent = None, *children = NULL; +#endif for (index = 0 ; index < HostX.n_screens ; index++) { if (HostX.screens[index].win == w) { - return &HostX.screens[index]; + result = &HostX.screens[index]; + goto out; } } - return NULL; +#if 0 + XQueryTree (hostx_get_display (), w, &root, &parent, + &children, &num_children); + if (parent == root || parent == None) + goto out; + result = host_screen_from_window (parent); +#endif + +out: +#if 0 + if (children) + { + XFree (children); + children = NULL; + } +#endif + return result; } int @@ -870,9 +892,19 @@ hostx_get_event(EphyrHostXEvent *ev) { struct EphyrHostScreen *host_screen = host_screen_from_window (xev.xexpose.window); - hostx_paint_rect (host_screen->info, 0, 0, 0, 0, - host_screen->win_width, - host_screen->win_height); + if (host_screen) + { + hostx_paint_rect (host_screen->info, 0, 0, 0, 0, + host_screen->win_width, + host_screen->win_height); + } + else + { + EPHYR_LOG_ERROR ("failed to get host screen\n"); + ev->type = EPHYR_EV_EXPOSE; + ev->data.expose.window = xev.xexpose.window; + return 1; + } } return 0; @@ -1113,12 +1145,18 @@ hostx_create_window (int a_screen_number, visual_info->screen), visual_info->visual, AllocNone) ; - winmask = CWColormap; + attrs.event_mask = ButtonPressMask + |ButtonReleaseMask + |PointerMotionMask + |KeyPressMask + |KeyReleaseMask + |ExposureMask; + winmask = CWColormap|CWEventMask; win = XCreateWindow (dpy, hostx_get_window (a_screen_number), a_geometry->x, a_geometry->y, a_geometry->width, a_geometry->height, 0, - visual_info->depth, InputOutput, + visual_info->depth, CopyFromParent, visual_info->visual, winmask, &attrs) ; if (win == None) { EPHYR_LOG_ERROR ("failed to create peer window\n") ; diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h index 3caa466a7..f72cfe700 100644 --- a/hw/kdrive/ephyr/hostx.h +++ b/hw/kdrive/ephyr/hostx.h @@ -47,7 +47,8 @@ typedef enum EphyrHostXEventType EPHYR_EV_MOUSE_PRESS, EPHYR_EV_MOUSE_RELEASE, EPHYR_EV_KEY_PRESS, - EPHYR_EV_KEY_RELEASE + EPHYR_EV_KEY_RELEASE, + EPHYR_EV_EXPOSE } EphyrHostXEventType; @@ -87,6 +88,10 @@ struct EphyrHostXEvent int scancode; } key_down; + struct expose { + int window; + } expose; + } data; int key_state; From a4202b898f07dd733590ae5adb21e48775369781 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 22 Feb 2008 18:22:58 +0100 Subject: [PATCH 082/112] XKB: Actually use the keymap we compile at startup During XkbInitKeyboardDevice, we compiled a keymap and promptly threw it away; brief inspection revealed the embarassingly simple problem. Sorry. --- xkb/xkbInit.c | 116 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 77 insertions(+), 39 deletions(-) diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index 37dd94019..2b5f1fb68 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -138,6 +138,8 @@ static char * XkbLayoutUsed= NULL; static char * XkbVariantUsed= NULL; static char * XkbOptionsUsed= NULL; +static XkbDescPtr xkb_cached_map = NULL; + _X_EXPORT Bool noXkbExtension= XKB_DFLT_DISABLED; static Bool XkbWantRulesProp= XKB_DFLT_RULES_PROP; @@ -284,6 +286,9 @@ XkbSetRulesDflts(char *rulesFile,char *model,char *layout, static Bool XkbInitKeyTypes(XkbDescPtr xkb) { + if (xkb->defined & XkmTypesMask) + return True; + initTypeNames(NULL); if (XkbAllocClientMap(xkb,XkbKeyTypesMask,num_dflt_types)!=Success) return False; @@ -310,6 +315,9 @@ XkbInitCompatStructs(XkbDescPtr xkb) register int i; XkbCompatMapPtr compat; + if (xkb->defined & XkmCompatMapMask) + return True; + if (XkbAllocCompatMap(xkb,XkbAllCompatMask,num_dfltSI)!=Success) return BadAlloc; compat = xkb->compat; @@ -358,28 +366,33 @@ Atom unknown; if (names->symbols==None) names->symbols= unknown; if (names->types==None) names->types= unknown; if (names->compat==None) names->compat= unknown; - if (names->vmods[vmod_NumLock]==None) - names->vmods[vmod_NumLock]= CREATE_ATOM("NumLock"); - if (names->vmods[vmod_Alt]==None) - names->vmods[vmod_Alt]= CREATE_ATOM("Alt"); - if (names->vmods[vmod_AltGr]==None) - names->vmods[vmod_AltGr]= CREATE_ATOM("ModeSwitch"); + if (!(xkb->defined & XkmVirtualModsMask)) { + if (names->vmods[vmod_NumLock]==None) + names->vmods[vmod_NumLock]= CREATE_ATOM("NumLock"); + if (names->vmods[vmod_Alt]==None) + names->vmods[vmod_Alt]= CREATE_ATOM("Alt"); + if (names->vmods[vmod_AltGr]==None) + names->vmods[vmod_AltGr]= CREATE_ATOM("ModeSwitch"); + } - initIndicatorNames(NULL,xkb); - if (names->indicators[LED_CAPS-1]==None) - names->indicators[LED_CAPS-1] = CREATE_ATOM("Caps Lock"); - if (names->indicators[LED_NUM-1]==None) - names->indicators[LED_NUM-1] = CREATE_ATOM("Num Lock"); - if (names->indicators[LED_SCROLL-1]==None) - names->indicators[LED_SCROLL-1] = CREATE_ATOM("Scroll Lock"); + if (!(xkb->defined & XkmIndicatorsMask)) { + initIndicatorNames(NULL,xkb); + if (names->indicators[LED_CAPS-1]==None) + names->indicators[LED_CAPS-1] = CREATE_ATOM("Caps Lock"); + if (names->indicators[LED_NUM-1]==None) + names->indicators[LED_NUM-1] = CREATE_ATOM("Num Lock"); + if (names->indicators[LED_SCROLL-1]==None) + names->indicators[LED_SCROLL-1] = CREATE_ATOM("Scroll Lock"); #ifdef LED_COMPOSE - if (names->indicators[LED_COMPOSE-1]==None) - names->indicators[LED_COMPOSE-1] = CREATE_ATOM("Compose"); + if (names->indicators[LED_COMPOSE-1]==None) + names->indicators[LED_COMPOSE-1] = CREATE_ATOM("Compose"); #endif + } if (xkb->geom!=NULL) names->geometry= xkb->geom->name; else names->geometry= unknown; + return Success; } @@ -393,27 +406,31 @@ XkbSrvLedInfoPtr sli; xkb= xkbi->desc; if (XkbAllocIndicatorMaps(xkb)!=Success) return BadAlloc; - map= xkb->indicators; - map->phys_indicators = PHYS_LEDS; - map->maps[LED_CAPS-1].flags= XkbIM_NoExplicit; - map->maps[LED_CAPS-1].which_mods= XkbIM_UseLocked; - map->maps[LED_CAPS-1].mods.mask= LockMask; - map->maps[LED_CAPS-1].mods.real_mods= LockMask; - map->maps[LED_NUM-1].flags= XkbIM_NoExplicit; - map->maps[LED_NUM-1].which_mods= XkbIM_UseLocked; - map->maps[LED_NUM-1].mods.mask= 0; - map->maps[LED_NUM-1].mods.real_mods= 0; - map->maps[LED_NUM-1].mods.vmods= vmod_NumLockMask; + if (!(xkb->defined & XkmIndicatorsMask)) { + map= xkb->indicators; + map->phys_indicators = PHYS_LEDS; + map->maps[LED_CAPS-1].flags= XkbIM_NoExplicit; + map->maps[LED_CAPS-1].which_mods= XkbIM_UseLocked; + map->maps[LED_CAPS-1].mods.mask= LockMask; + map->maps[LED_CAPS-1].mods.real_mods= LockMask; - map->maps[LED_SCROLL-1].flags= XkbIM_NoExplicit; - map->maps[LED_SCROLL-1].which_mods= XkbIM_UseLocked; - map->maps[LED_SCROLL-1].mods.mask= Mod3Mask; - map->maps[LED_SCROLL-1].mods.real_mods= Mod3Mask; + map->maps[LED_NUM-1].flags= XkbIM_NoExplicit; + map->maps[LED_NUM-1].which_mods= XkbIM_UseLocked; + map->maps[LED_NUM-1].mods.mask= 0; + map->maps[LED_NUM-1].mods.real_mods= 0; + map->maps[LED_NUM-1].mods.vmods= vmod_NumLockMask; + + map->maps[LED_SCROLL-1].flags= XkbIM_NoExplicit; + map->maps[LED_SCROLL-1].which_mods= XkbIM_UseLocked; + map->maps[LED_SCROLL-1].mods.mask= Mod3Mask; + map->maps[LED_SCROLL-1].mods.real_mods= Mod3Mask; + } sli= XkbFindSrvLedInfo(xkbi->device,XkbDfltXIClass,XkbDfltXIId,0); if (sli) XkbCheckIndicatorMaps(xkbi->device,sli,XkbAllIndicatorsMask); + return Success; } @@ -428,7 +445,8 @@ XkbControlsPtr ctrls; if (XkbAllocControls(xkb,XkbAllControlsMask)!=Success) FatalError("Couldn't allocate keyboard controls\n"); ctrls= xkb->ctrls; - ctrls->num_groups = 1; + if (!(xkb->defined & XkmSymbolsMask)) + ctrls->num_groups = 1; ctrls->groups_wrap = XkbSetGroupInfo(1,XkbWrapIntoRange,0); ctrls->internal.mask = 0; ctrls->internal.real_mods = 0; @@ -458,11 +476,18 @@ XkbEventCauseRec cause; pXDev->key->xkbInfo= xkbi= _XkbTypedCalloc(1,XkbSrvInfoRec); if ( xkbi ) { XkbDescPtr xkb; - xkbi->desc= XkbAllocKeyboard(); - if (!xkbi->desc) - FatalError("Couldn't allocate keyboard description\n"); - xkbi->desc->min_key_code = pXDev->key->curKeySyms.minKeyCode; - xkbi->desc->max_key_code = pXDev->key->curKeySyms.maxKeyCode; + + if (xkb_cached_map) { + xkbi->desc = xkb_cached_map; + xkb_cached_map = NULL; + } + else { + xkbi->desc= XkbAllocKeyboard(); + if (!xkbi->desc) + FatalError("Couldn't allocate keyboard description\n"); + xkbi->desc->min_key_code = pXDev->key->curKeySyms.minKeyCode; + xkbi->desc->max_key_code = pXDev->key->curKeySyms.maxKeyCode; + } xkb= xkbi->desc; if (xkb->min_key_code == 0) xkb->min_key_code = pXDev->key->curKeySyms.minKeyCode; @@ -494,14 +519,23 @@ XkbEventCauseRec cause; XkbInitControls(pXDev,xkbi); - memcpy(xkb->map->modmap,pXDev->key->modifierMap,xkb->max_key_code+1); + if (xkb->defined & XkmSymbolsMask) + memcpy(pXDev->key->modifierMap, xkb->map->modmap, + xkb->max_key_code + 1); + else + memcpy(xkb->map->modmap, pXDev->key->modifierMap, + xkb->max_key_code + 1); XkbInitIndicatorMap(xkbi); XkbDDXInitDevice(pXDev); - XkbUpdateKeyTypesFromCore(pXDev,xkb->min_key_code,XkbNumKeys(xkb), - &changes); + if (xkb->defined & XkmSymbolsMask) + XkbUpdateKeyTypesFromCore(pXDev, xkb->min_key_code, + XkbNumKeys(xkb), &changes); + else + XkbUpdateCoreDescription(pXDev, True); + XkbSetCauseUnknown(&cause); XkbUpdateActions(pXDev,xkb->min_key_code, XkbNumKeys(xkb),&changes, &check,&cause); @@ -632,11 +666,15 @@ XkbDescPtr xkb; pMods= tmpMods; } } + /* Store the map here so we can pick it back up in XkbInitDevice. + * Sigh. */ + xkb_cached_map = xkb; } else { LogMessage(X_WARNING, "Couldn't load XKB keymap, falling back to pre-XKB keymap\n"); } ok= InitKeyboardDeviceStruct((DevicePtr)dev,pSyms,pMods,bellProc,ctrlProc); + xkb_cached_map = NULL; if ((pSyms==&tmpSyms)&&(pSyms->map!=NULL)) { _XkbFree(pSyms->map); pSyms->map= NULL; From ee21aba6be0078949204e315ddfffd99de60c2f1 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Mon, 24 Dec 2007 13:13:19 -0500 Subject: [PATCH 083/112] Fix Xinerama's consolidated visual handling. Formerly the code claimed it could only handle up to 256 visuals, which was true. Also true, but not explicitly stated, was that it could only handle visuals with VID < 256. If you have enough screens, and subsystems that add lots of visuals, you can easily run off the end. (Made worse because we allocate visual IDs from the same pool as XIDs.) If your app then chooses a visual > 256, then the Xinerama code would throw BadMatch on CreateColormap and your app wouldn't start. With this change, PanoramiXVisualTable is gone. Other subsystems that were using it as a translation table between each screen's visuals now use a PanoramiXTranslateVisual() helper. --- Xext/panoramiX.c | 252 +++++++++++++++++++------------------ Xext/panoramiXprocs.c | 7 +- Xext/panoramiXsrv.h | 2 +- Xext/saver.c | 3 +- hw/dmx/glxProxy/glxcmds.c | 11 +- hw/xfree86/loader/extsym.c | 2 - 6 files changed, 138 insertions(+), 139 deletions(-) diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c index 75277beaa..d8ec588aa 100644 --- a/Xext/panoramiX.c +++ b/Xext/panoramiX.c @@ -81,9 +81,6 @@ static DepthPtr PanoramiXDepths; static int PanoramiXNumVisuals; static VisualPtr PanoramiXVisuals; -/* We support at most 256 visuals */ -_X_EXPORT XID *PanoramiXVisualTable = NULL; - _X_EXPORT unsigned long XRC_DRAWABLE; _X_EXPORT unsigned long XRT_WINDOW; _X_EXPORT unsigned long XRT_PIXMAP; @@ -702,143 +699,133 @@ Bool PanoramiXCreateConnectionBlock(void) return TRUE; } -extern -void PanoramiXConsolidate(void) +/* + * This isn't just memcmp(), bitsPerRGBValue is skipped. markv made that + * change way back before xf86 4.0, but the comment for _why_ is a bit + * opaque, so I'm not going to question it for now. + * + * This is probably better done as a screen hook so DBE/EVI/GLX can add + * their own tests, and adding privates to VisualRec so they don't have to + * do their own back-mapping. + */ +static Bool +VisualsEqual(VisualPtr a, VisualPtr b) { - int i, j, k; - VisualPtr pVisual, pVisual2; - ScreenPtr pScreen, pScreen2; - DepthPtr pDepth, pDepth2; - PanoramiXRes *root, *defmap, *saver; - Bool foundDepth, missingDepth; + return ((a->class == b->class) && + (a->ColormapEntries == b->ColormapEntries) && + (a->nplanes == b->nplanes) && + (a->redMask == b->redMask) && + (a->greenMask == b->greenMask) && + (a->blueMask == b->blueMask) && + (a->offsetRed == b->offsetRed) && + (a->offsetGreen == b->offsetGreen) && + (a->offsetBlue == b->offsetBlue)); +} - if(!PanoramiXVisualTable) - PanoramiXVisualTable = xcalloc(256 * MAXSCREENS, sizeof(XID)); +static void +PanoramiXMaybeAddDepth(DepthPtr pDepth) +{ + ScreenPtr pScreen; + int j, k; + Bool found = FALSE; - pScreen = screenInfo.screens[0]; - pVisual = pScreen->visuals; - pDepth = pScreen->allowedDepths; - - PanoramiXNumDepths = 0; - PanoramiXDepths = xcalloc(pScreen->numDepths,sizeof(DepthRec)); - PanoramiXNumVisuals = 0; - PanoramiXVisuals = xcalloc(pScreen->numVisuals,sizeof(VisualRec)); - - for (i = 0; i < pScreen->numDepths; i++, pDepth++) { - missingDepth = FALSE; - for (j = 1; j < PanoramiXNumScreens; j++) { - pScreen2 = screenInfo.screens[j]; - pDepth2 = pScreen2->allowedDepths; - - foundDepth = FALSE; - for (k = 0; k < pScreen2->numDepths; k++, pDepth2++) { - if(pDepth2->depth == pDepth->depth) { - foundDepth = TRUE; - break; - } - } - - if(!foundDepth) { - missingDepth = TRUE; - break; - } - } - - if(!missingDepth) { - PanoramiXDepths[PanoramiXNumDepths].depth = pDepth->depth; - PanoramiXDepths[PanoramiXNumDepths].numVids = 0; - if(pDepth->numVids) - PanoramiXDepths[PanoramiXNumDepths].vids = - xalloc(sizeof(VisualID) * pDepth->numVids); - else - PanoramiXDepths[PanoramiXNumDepths].vids = NULL; - PanoramiXNumDepths++; - } + for (j = 1; j < PanoramiXNumScreens; j++) { + pScreen = screenInfo.screens[j]; + for (k = 0; k < pScreen->numDepths; k++) { + if (pScreen->allowedDepths[k].depth == pDepth->depth) { + found = TRUE; + break; + } + } } - for (i = 0; i < pScreen->numVisuals; i++, pVisual++) { - PanoramiXVisualTable[pVisual->vid * MAXSCREENS] = pVisual->vid; + if (!found) + return; - /* check if the visual exists on all screens */ - for (j = 1; j < PanoramiXNumScreens; j++) { - pScreen2 = screenInfo.screens[j]; + j = PanoramiXNumDepths; + PanoramiXNumDepths++; + PanoramiXDepths = xrealloc(PanoramiXDepths, + PanoramiXNumDepths * sizeof(DepthRec)); + PanoramiXDepths[j].depth = pDepth->depth; + PanoramiXDepths[j].numVids = 0; + /* XXX suboptimal, should grow these dynamically */ + if(pDepth->numVids) + PanoramiXDepths[j].vids = xalloc(sizeof(VisualID) * pDepth->numVids); + else + PanoramiXDepths[j].vids = NULL; +} +static void +PanoramiXMaybeAddVisual(VisualPtr pVisual) +{ + ScreenPtr pScreen; + VisualPtr candidate = NULL; + int j, k; + Bool found = FALSE; + + for (j = 1; j < PanoramiXNumScreens; j++) { + pScreen = screenInfo.screens[j]; + found = FALSE; + + candidate = pScreen->visuals; + for (k = 0; k < pScreen->numVisuals; k++) { + candidate++; + if (VisualsEqual(pVisual, candidate) #ifdef GLXPROXY - pVisual2 = glxMatchVisual(pScreen, pVisual, pScreen2); - if (pVisual2) { - PanoramiXVisualTable[(pVisual->vid * MAXSCREENS) + j] = - pVisual2->vid; - continue; - } else if (glxMatchVisual(pScreen, pVisual, pScreen)) { - PanoramiXVisualTable[(pVisual->vid * MAXSCREENS) + j] = 0; - break; - } + && glxMatchVisual(screenInfo.screens[0], pVisual, pScreen) #endif - pVisual2 = pScreen2->visuals; - - for (k = 0; k < pScreen2->numVisuals; k++, pVisual2++) { - if ((pVisual->class == pVisual2->class) && - (pVisual->ColormapEntries == pVisual2->ColormapEntries) && - (pVisual->nplanes == pVisual2->nplanes) && - (pVisual->redMask == pVisual2->redMask) && - (pVisual->greenMask == pVisual2->greenMask) && - (pVisual->blueMask == pVisual2->blueMask) && - (pVisual->offsetRed == pVisual2->offsetRed) && - (pVisual->offsetGreen == pVisual2->offsetGreen) && - (pVisual->offsetBlue == pVisual2->offsetBlue)) - { - /* We merely assign the first visual that matches. OpenGL - will need to get involved at some point if you want - match GLX visuals */ - PanoramiXVisualTable[(pVisual->vid * MAXSCREENS) + j] = - pVisual2->vid; - break; - } - } - } - - /* if it doesn't exist on all screens we can't use it */ - for (j = 0; j < PanoramiXNumScreens; j++) { - if (!PanoramiXVisualTable[(pVisual->vid * MAXSCREENS) + j]) { - PanoramiXVisualTable[pVisual->vid * MAXSCREENS] = 0; + ) { + found = TRUE; break; } } - /* if it does, make sure it's in the list of supported depths and visuals */ - if(PanoramiXVisualTable[pVisual->vid * MAXSCREENS]) { - PanoramiXVisuals[PanoramiXNumVisuals].vid = pVisual->vid; - PanoramiXVisuals[PanoramiXNumVisuals].class = pVisual->class; - PanoramiXVisuals[PanoramiXNumVisuals].bitsPerRGBValue = pVisual->bitsPerRGBValue; - PanoramiXVisuals[PanoramiXNumVisuals].ColormapEntries = pVisual->ColormapEntries; - PanoramiXVisuals[PanoramiXNumVisuals].nplanes = pVisual->nplanes; - PanoramiXVisuals[PanoramiXNumVisuals].redMask = pVisual->redMask; - PanoramiXVisuals[PanoramiXNumVisuals].greenMask = pVisual->greenMask; - PanoramiXVisuals[PanoramiXNumVisuals].blueMask = pVisual->blueMask; - PanoramiXVisuals[PanoramiXNumVisuals].offsetRed = pVisual->offsetRed; - PanoramiXVisuals[PanoramiXNumVisuals].offsetGreen = pVisual->offsetGreen; - PanoramiXVisuals[PanoramiXNumVisuals].offsetBlue = pVisual->offsetBlue; - PanoramiXNumVisuals++; + if (!found) + return; + } - for (j = 0; j < PanoramiXNumDepths; j++) { - if (PanoramiXDepths[j].depth == pVisual->nplanes) { - PanoramiXDepths[j].vids[PanoramiXDepths[j].numVids] = pVisual->vid; - PanoramiXDepths[j].numVids++; - break; - } - } - } - } + /* found a matching visual on all screens, add it to the subset list */ + j = PanoramiXNumVisuals; + PanoramiXNumVisuals++; + PanoramiXVisuals = xrealloc(PanoramiXVisuals, + PanoramiXNumVisuals * sizeof(VisualRec)); + memcpy(&PanoramiXVisuals[j], pVisual, sizeof(VisualRec)); - root = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes)); + for (k = 0; k < PanoramiXNumDepths; k++) { + if (PanoramiXDepths[k].depth == pVisual->nplanes) { + PanoramiXDepths[k].vids[PanoramiXDepths[k].numVids] = pVisual->vid; + PanoramiXDepths[k].numVids++; + break; + } + } +} + +extern void +PanoramiXConsolidate(void) +{ + int i; + PanoramiXRes *root, *defmap, *saver; + ScreenPtr pScreen = screenInfo.screens[0]; + DepthPtr pDepth = pScreen->allowedDepths; + VisualPtr pVisual = pScreen->visuals; + + PanoramiXNumDepths = 0; + PanoramiXNumVisuals = 0; + + for (i = 0; i < pScreen->numDepths; i++) + PanoramiXMaybeAddDepth(pDepth++); + + for (i = 0; i < pScreen->numVisuals; i++) + PanoramiXMaybeAddVisual(pVisual++); + + root = xalloc(sizeof(PanoramiXRes)); root->type = XRT_WINDOW; - defmap = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes)); + defmap = xalloc(sizeof(PanoramiXRes)); defmap->type = XRT_COLORMAP; - saver = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes)); + saver = xalloc(sizeof(PanoramiXRes)); saver->type = XRT_WINDOW; - for (i = 0; i < PanoramiXNumScreens; i++) { root->info[i].id = WindowTable[i]->drawable.id; root->u.win.class = InputOutput; @@ -854,6 +841,31 @@ void PanoramiXConsolidate(void) AddResource(defmap->info[0].id, XRT_COLORMAP, defmap); } +_X_EXPORT VisualID +PanoramiXTranslateVisualID(int screen, VisualID orig) +{ + VisualPtr pVisual = NULL; + int i, j; + + for (i = 0; i < PanoramiXNumVisuals; i++) { + if (orig == PanoramiXVisuals[i].vid) { + pVisual = &PanoramiXVisuals[i]; + break; + } + } + + if (!pVisual) + return 0; + + /* found the original, now translate it relative to the backend screen */ + for (i = 0; i < PanoramiXNumScreens; i++) + for (j = 0; j < screenInfo.screens[i]->numVisuals; j++) + if (VisualsEqual(pVisual, &screenInfo.screens[i]->visuals[j])) + return screenInfo.screens[i]->visuals[j].vid; + + return 0; +} + /* * PanoramiXResetProc() diff --git a/Xext/panoramiXprocs.c b/Xext/panoramiXprocs.c index f9a579625..d19b3039a 100644 --- a/Xext/panoramiXprocs.c +++ b/Xext/panoramiXprocs.c @@ -150,7 +150,7 @@ int PanoramiXCreateWindow(ClientPtr client) if (cmap) *((CARD32 *) &stuff[1] + cmap_offset) = cmap->info[j].id; if ( orig_visual != CopyFromParent ) - stuff->visual = PanoramiXVisualTable[(orig_visual*MAXSCREENS) + j]; + stuff->visual = PanoramiXTranslateVisualID(j, orig_visual); result = (*SavedProcVector[X_CreateWindow])(client); if(result != Success) break; } @@ -2077,9 +2077,6 @@ int PanoramiXCreateColormap(ClientPtr client) client, stuff->window, XRT_WINDOW, DixReadAccess))) return BadWindow; - if(!stuff->visual || (stuff->visual > 255)) - return BadValue; - if(!(newCmap = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes)))) return BadAlloc; @@ -2092,7 +2089,7 @@ int PanoramiXCreateColormap(ClientPtr client) FOR_NSCREENS_BACKWARD(j){ stuff->mid = newCmap->info[j].id; stuff->window = win->info[j].id; - stuff->visual = PanoramiXVisualTable[(orig_visual * MAXSCREENS) + j]; + stuff->visual = PanoramiXTranslateVisualID(j, orig_visual); result = (* SavedProcVector[X_CreateColormap])(client); if(result != Success) break; } diff --git a/Xext/panoramiXsrv.h b/Xext/panoramiXsrv.h index ae9024418..6d556e963 100644 --- a/Xext/panoramiXsrv.h +++ b/Xext/panoramiXsrv.h @@ -12,8 +12,8 @@ extern int PanoramiXNumScreens; extern PanoramiXData *panoramiXdataPtr; extern int PanoramiXPixWidth; extern int PanoramiXPixHeight; -extern XID *PanoramiXVisualTable; +extern VisualID PanoramiXTranslateVisualID(int screen, VisualID orig); extern void PanoramiXConsolidate(void); extern Bool PanoramiXCreateConnectionBlock(void); extern PanoramiXRes * PanoramiXFindIDByScrnum(RESTYPE, XID, int); diff --git a/Xext/saver.c b/Xext/saver.c index 9a6dd7757..feab972e2 100644 --- a/Xext/saver.c +++ b/Xext/saver.c @@ -1346,8 +1346,7 @@ ProcScreenSaverSetAttributes (ClientPtr client) *((CARD32 *) &stuff[1] + cmap_offset) = cmap->info[i].id; if (orig_visual != CopyFromParent) - stuff->visualID = - PanoramiXVisualTable[(orig_visual*MAXSCREENS) + i]; + stuff->visualID = PanoramiXTranslateVisualID(i, orig_visual); status = ScreenSaverSetAttributes(client); } diff --git a/hw/dmx/glxProxy/glxcmds.c b/hw/dmx/glxProxy/glxcmds.c index 6771cf1de..85e0f8701 100644 --- a/hw/dmx/glxProxy/glxcmds.c +++ b/hw/dmx/glxProxy/glxcmds.c @@ -66,7 +66,6 @@ #ifdef PANORAMIX #include "panoramiXsrv.h" -extern XID *PanoramiXVisualTable; #endif extern __GLXFBConfig **__glXFBConfigs; @@ -2824,14 +2823,8 @@ int __glXGetFBConfigs(__GLXclientState *cl, GLbyte *pc) #ifdef PANORAMIX else if (!noPanoramiXExtension) { /* convert the associated visualId to the panoramix one */ - for (v=0; v<255; v++) { - if ( PanoramiXVisualTable[ v * MAXSCREENS + screen ] == - associatedVisualId ) { - associatedVisualId = v; - break; - } - } - pFBConfig->associatedVisualId = associatedVisualId; + pFBConfig->associatedVisualId = + PanoramiXTranslateVisualID(screen, v); } #endif } diff --git a/hw/xfree86/loader/extsym.c b/hw/xfree86/loader/extsym.c index e09e9c084..1bdff9482 100644 --- a/hw/xfree86/loader/extsym.c +++ b/hw/xfree86/loader/extsym.c @@ -44,7 +44,6 @@ extern RESTYPE ShmSegType, ShmPixType; extern Bool noPanoramiXExtension; extern int PanoramiXNumScreens; extern PanoramiXData *panoramiXdataPtr; -extern XID *PanoramiXVisualTable; extern unsigned long XRT_WINDOW; extern unsigned long XRT_PIXMAP; extern unsigned long XRT_GC; @@ -69,7 +68,6 @@ _X_HIDDEN void *extLookupTab[] = { SYMFUNC(XineramaDeleteResource) SYMVAR(PanoramiXNumScreens) SYMVAR(panoramiXdataPtr) - SYMVAR(PanoramiXVisualTable) SYMVAR(XRT_WINDOW) SYMVAR(XRT_PIXMAP) SYMVAR(XRT_GC) From 24bebdded44a9e184455b4fee7800257fee81efb Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Mon, 24 Dec 2007 15:07:49 -0500 Subject: [PATCH 084/112] fbFillRegionTiled() is now dead code. Only ever called from the old PaintWindow* screen hooks, but those are gone now. As a pleasant side effect, fb loses its #ifdef PANORAMIX. --- fb/fb.h | 5 ---- fb/fbwindow.c | 65 --------------------------------------------- fb/wfbrename.h | 1 - hw/kdrive/src/kaa.c | 12 --------- 4 files changed, 83 deletions(-) diff --git a/fb/fb.h b/fb/fb.h index 5b56d96a2..01000d79c 100644 --- a/fb/fb.h +++ b/fb/fb.h @@ -2087,11 +2087,6 @@ fbFillRegionSolid (DrawablePtr pDrawable, FbBits and, FbBits xor); -void -fbFillRegionTiled (DrawablePtr pDrawable, - RegionPtr pRegion, - PixmapPtr pTile); - pixman_image_t *image_from_pict (PicturePtr pict, Bool has_clip); void free_pixman_pict (PicturePtr, pixman_image_t *); diff --git a/fb/fbwindow.c b/fb/fbwindow.c index 89f601f29..f6fe8aa83 100644 --- a/fb/fbwindow.c +++ b/fb/fbwindow.c @@ -250,68 +250,3 @@ fbFillRegionSolid (DrawablePtr pDrawable, fbFinishAccess (pDrawable); } - -#ifdef PANORAMIX -#include "panoramiX.h" -#include "panoramiXsrv.h" -#endif - -void -fbFillRegionTiled (DrawablePtr pDrawable, - RegionPtr pRegion, - PixmapPtr pTile) -{ - FbBits *dst; - FbStride dstStride; - int dstBpp; - int dstXoff, dstYoff; - FbBits *tile; - FbStride tileStride; - int tileBpp; - int tileXoff, tileYoff; /* XXX assumed to be zero */ - int tileWidth, tileHeight; - int n = REGION_NUM_RECTS(pRegion); - BoxPtr pbox = REGION_RECTS(pRegion); - int xRot = pDrawable->x; - int yRot = pDrawable->y; - -#ifdef PANORAMIX - if(!noPanoramiXExtension) - { - int index = pDrawable->pScreen->myNum; - if(&WindowTable[index]->drawable == pDrawable) - { - xRot -= panoramiXdataPtr[index].x; - yRot -= panoramiXdataPtr[index].y; - } - } -#endif - fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff); - fbGetDrawable (&pTile->drawable, tile, tileStride, tileBpp, tileXoff, tileYoff); - tileWidth = pTile->drawable.width; - tileHeight = pTile->drawable.height; - xRot += dstXoff; - yRot += dstYoff; - - while (n--) - { - fbTile (dst + (pbox->y1 + dstYoff) * dstStride, - dstStride, - (pbox->x1 + dstXoff) * dstBpp, - (pbox->x2 - pbox->x1) * dstBpp, - pbox->y2 - pbox->y1, - tile, - tileStride, - tileWidth * dstBpp, - tileHeight, - GXcopy, - FB_ALLONES, - dstBpp, - xRot * dstBpp, - yRot - (pbox->y1 + dstYoff)); - pbox++; - } - - fbFinishAccess (&pTile->drawable); - fbFinishAccess (pDrawable); -} diff --git a/fb/wfbrename.h b/fb/wfbrename.h index 93822442f..dc0528559 100644 --- a/fb/wfbrename.h +++ b/fb/wfbrename.h @@ -79,7 +79,6 @@ #define fbExpandDirectColors wfbExpandDirectColors #define fbFill wfbFill #define fbFillRegionSolid wfbFillRegionSolid -#define fbFillRegionTiled wfbFillRegionTiled #define fbFillSpans wfbFillSpans #define fbFixCoordModePrevious wfbFixCoordModePrevious #define fbGCFuncs wfbGCFuncs diff --git a/hw/kdrive/src/kaa.c b/hw/kdrive/src/kaa.c index e75b08399..db09e9dba 100644 --- a/hw/kdrive/src/kaa.c +++ b/hw/kdrive/src/kaa.c @@ -996,18 +996,6 @@ kaaFillRegionSolid (DrawablePtr pDrawable, kaaDrawableDirty (pDrawable); } -#if 0 -static void -kaaFillRegionTiled (DrawablePtr pDrawable, - RegionPtr pRegion, - Pixmap pTile) -{ - else - { - kaaWaitSync -} -#endif - Bool kaaDrawInit (ScreenPtr pScreen, KaaScreenInfoPtr pScreenInfo) From 060a66b6e2feddba43ed207b6fcf2cf1f7fe39fd Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Mon, 24 Dec 2007 15:55:58 -0500 Subject: [PATCH 085/112] Normalize swapped dispatch for Fixes{ChangeSaveSet,SelectSelectionInput} --- xfixes/saveset.c | 2 +- xfixes/select.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/xfixes/saveset.c b/xfixes/saveset.c index e6e297638..31664ab65 100755 --- a/xfixes/saveset.c +++ b/xfixes/saveset.c @@ -72,5 +72,5 @@ SProcXFixesChangeSaveSet(ClientPtr client) swaps(&stuff->length, n); swapl(&stuff->window, n); - return ProcXFixesChangeSaveSet(client); + return (*ProcXFixesVector[stuff->xfixesReqType])(client); } diff --git a/xfixes/select.c b/xfixes/select.c index 415257ec1..12a165fd0 100755 --- a/xfixes/select.c +++ b/xfixes/select.c @@ -224,7 +224,7 @@ SProcXFixesSelectSelectionInput (ClientPtr client) swapl(&stuff->window, n); swapl(&stuff->selection, n); swapl(&stuff->eventMask, n); - return ProcXFixesSelectSelectionInput(client); + return (*ProcXFixesVector[stuff->xfixesReqType])(client); } void From 69f782676797744815ff76b8a11b11178066f501 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 22 Feb 2008 16:04:35 -0500 Subject: [PATCH 086/112] Match Xephyr DRI definitions to the ones in xf86dri.h --- hw/kdrive/ephyr/XF86dri.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/kdrive/ephyr/XF86dri.c b/hw/kdrive/ephyr/XF86dri.c index c11da0634..506d7bed8 100644 --- a/hw/kdrive/ephyr/XF86dri.c +++ b/hw/kdrive/ephyr/XF86dri.c @@ -385,7 +385,7 @@ Bool XF86DRICreateContext(dpy, screen, visual, context, hHWContext) context, hHWContext ); } -Bool XF86DRIDestroyContext( __DRInativeDisplay * ndpy, int screen, __DRIid context) +GLboolean XF86DRIDestroyContext( __DRInativeDisplay * ndpy, int screen, __DRIid context) { Display * const dpy = (Display *) ndpy; XExtDisplayInfo *info = find_display (dpy); @@ -406,7 +406,7 @@ Bool XF86DRIDestroyContext( __DRInativeDisplay * ndpy, int screen, __DRIid conte return True; } -Bool +GLboolean XF86DRICreateDrawable (__DRInativeDisplay * ndpy, int screen, __DRIid drawable, drm_drawable_t * hHWDrawable) { @@ -437,7 +437,7 @@ XF86DRICreateDrawable (__DRInativeDisplay * ndpy, int screen, return True; } -Bool XF86DRIDestroyDrawable( __DRInativeDisplay * ndpy, int screen, +GLboolean XF86DRIDestroyDrawable( __DRInativeDisplay * ndpy, int screen, __DRIid drawable ) { Display * const dpy = (Display *) ndpy; From 347db49ebe4596db16455ea8a1a608cfa826c5c7 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 22 Feb 2008 16:05:33 -0500 Subject: [PATCH 087/112] s/via/openchrome/ in the autoconfig logic. Xorg's via driver is effectively dead anyway. --- hw/xfree86/common/xf86AutoConfig.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c index c6e197216..da6c3f38d 100644 --- a/hw/xfree86/common/xf86AutoConfig.c +++ b/hw/xfree86/common/xf86AutoConfig.c @@ -184,7 +184,7 @@ videoPtrToDriverName(struct pci_device *dev) case 0x3d3d: return "glint"; case 0x1023: return "trident"; case 0x100c: return "tseng"; - case 0x1106: return "via"; + case 0x1106: return "openchrome"; case 0x15ad: return "vmware"; default: break; } From e6a4cde16dc99ea02ac93da1d1b9517b1073d159 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 22 Feb 2008 18:36:29 -0500 Subject: [PATCH 088/112] Use the client-side XKB headers for the config utilities --- hw/xfree86/utils/xorgcfg/text-mode.c | 2 +- hw/xfree86/utils/xorgconfig/xorgconfig.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/utils/xorgcfg/text-mode.c b/hw/xfree86/utils/xorgcfg/text-mode.c index c1fa67ed7..0b6e65482 100644 --- a/hw/xfree86/utils/xorgcfg/text-mode.c +++ b/hw/xfree86/utils/xorgcfg/text-mode.c @@ -39,7 +39,7 @@ #endif #include #include -#include "xkbstr.h" +#include #include #include "cards.h" #include "config.h" diff --git a/hw/xfree86/utils/xorgconfig/xorgconfig.c b/hw/xfree86/utils/xorgconfig/xorgconfig.c index d537abac4..30eb83182 100644 --- a/hw/xfree86/utils/xorgconfig/xorgconfig.c +++ b/hw/xfree86/utils/xorgconfig/xorgconfig.c @@ -106,7 +106,7 @@ #include #include -#include "xkbstr.h" +#include #include #define MAX_XKBOPTIONS 5 From 6dc369028d3ca741de57ad78febf2f5f82e0696e Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Sat, 23 Feb 2008 00:01:02 -0800 Subject: [PATCH 089/112] XQuartz: Quit now properly warns the user (cherry picked from commit ed3d7b3959c2a0cb63e37210455bcc6cf195b807) --- .../English.lproj/main.nib/designable.nib | 42 +++++++++--------- .../English.lproj/main.nib/keyedobjects.nib | Bin 35529 -> 35571 bytes 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/hw/xquartz/bundle/English.lproj/main.nib/designable.nib b/hw/xquartz/bundle/English.lproj/main.nib/designable.nib index b5cfcf682..ea3a0daa8 100644 --- a/hw/xquartz/bundle/English.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/English.lproj/main.nib/designable.nib @@ -2,14 +2,14 @@ 1050 - 9B18 + 9C31 639 - 949 - 343.00 + 949.26 + 352.00 YES + - YES @@ -448,7 +448,7 @@ 3 2 - {{479, 459}, {481, 345}} + {{319, 294}, {481, 345}} 1350041600 X11 Preferences NSPanel @@ -993,7 +993,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 {481, 345} - {{0, 0}, {1920, 1178}} + {{0, 0}, {1440, 878}} {213, 129} {3.40282e+38, 3.40282e+38} x11_prefs @@ -1001,7 +1001,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 11 2 - {{537, 554}, {454, 311}} + {{361, 362}, {454, 311}} 1350041600 X11 Application Menu NSPanel @@ -1355,7 +1355,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 {454, 311} - {{0, 0}, {1920, 1178}} + {{0, 0}, {1440, 878}} {320, 262} x11_apps

@@ -1865,14 +1865,6 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4
300332
- - - quit: - - - - 300333 - menu @@ -1881,6 +1873,14 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300334 + + + terminate: + + + + 300336 +
@@ -3075,6 +3075,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 545.ImportedFromIB2 56.IBPluginDependency 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect 57.IBPluginDependency 57.ImportedFromIB2 57.editorWindowContentRectSynchronizationRect @@ -3168,11 +3169,11 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 {{100, 746}, {155, 33}} com.apple.InterfaceBuilder.CocoaPlugin - {{537, 554}, {454, 311}} + {{537, 545}, {454, 311}} com.apple.InterfaceBuilder.CocoaPlugin - {{537, 554}, {454, 311}} + {{537, 545}, {454, 311}} {{433, 406}, {486, 327}} @@ -3194,7 +3195,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 {320, 240} com.apple.InterfaceBuilder.CocoaPlugin - {{0, 1114}, {336, 20}} + {{0, 836}, {336, 20}} com.apple.InterfaceBuilder.CocoaPlugin {{67, 819}, {336, 20}} @@ -3319,6 +3320,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 com.apple.InterfaceBuilder.CocoaPlugin + {{12, 633}, {218, 203}} com.apple.InterfaceBuilder.CocoaPlugin {{79, 616}, {218, 203}} @@ -3354,7 +3356,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - 300334 + 300336 diff --git a/hw/xquartz/bundle/English.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/English.lproj/main.nib/keyedobjects.nib index 5223c9a95ecc5ed438a02c3f6aff0a65e6f8360f..f60dcbacb0385caa8292cd06bd178d709632566b 100644 GIT binary patch literal 35571 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 literal 35529 zcmdSC34BvU*FQcp_uky(=BB+#_tGWZTe_x{RgqN$3xSdXEn7_6OB+a&lBBFwXV^qh zKm-BVR~1>@MNv>t+!s_-Km->S5yc%@gx_cGP1=-#@AE#t|NH#kUq3*TduKUw=FB-~ z&iT$z)!=ga{6$5d0tgUb01G&v0XiU5q)(E)KBvcBp6>TFRHi$;)pgEEvbQ4LQ#D?$ z_WMi#&RKf^@IX6eK<@(eVU5G@z|by*TWzKCRJo>CpwbQ_(+B8*2rQr@=n8s*KAdKK+MucJ56JLm)S75WDKh<-otW;-ElfY=Hpa>fW`;8(n6ZqVsb%UI57WR*W~MMx znd!`(%nW88GoM+&EMk^3E1AvAHfB5XJo5sxo7uzcXWnE!U_N9%V?JlTVvaEtecVMnkP z>_~PLI~wg{$FO5r2V2F~vM#os^|I61+3Xzl9`=6r0d^6)oPC5{!LDT=V;^UqVxMN8 zWuIeTV)wDHv+uF*vmdet*pJ!I*)Q0m>^JNg_6PPX`y=}c`xkqGy~tkWG#t-qIUN_q zg>#Wy6c^7Wb6H$ASHxMk4qQjB6L%ALGuMmj&kf*i=SsODTm@IjIk+mWh8xG#axTut z`ME}J8b`Pp+)Qp3cQ3b)Tg)xt9_ChXE4g*tX6{jL2e*@*&ArII#U0=dv$MG)+;Q$3 z?gV#|JIDRSUDW^$)Cd|qJ6jW}iPNOAvo&d&0!>FvCrxL~Et(#ho|*xgA(}GHP)(&~ zq^6pkt*OzB(|9%0H8V6bHM2AiXclXhXjW_1XdYu{YaZ8Z(`?u5&^)VoPVq3jrOeT)Rd4gm%03 z1?^7l%i348yS1+Yy>_qmL+wY}1KLltpR%L02eqGRKL=g3hqYho?$DhO#tRb!mryUb z1&`1mOccC=Pw)$k!X#m`Fh!UuOcSOHcM46yUBcZ076{ra%n)V@vxM2g9N`{eu5hn# zpD<6jUwA;6FDwui3J(g4golL1!V=+OVX3f8SS~ywtPoZTtAy3U8ey%lPFOE&5H<>% zgw4XE!eheY!WQ8PVXLrB*e>i4o)n%Eo)(@Fo)w-Go)=yab_y>FFA2MZmxWh^-NGK> zRpB*Zudq*eU3f#-FT5$dCA=-XBfKlTC%i9wAbco%BpeVv7CsR^6%GoY37-pJ2#18j z!V%$1;i&MHa7;KZd@XzoDfb5r-akO_rh7>oPN7lFSA5;u#FijRqpi(AAe#I52s zal5!fd{TT$d|G@4J}*8iJ|{jez98-tUld;wcZn~HuZX+FJ>sk4YvNvUpZL1?hPYpR zQ+!K&TYN`+SA0)=U;IG)Q2aiHF4_;+Nu4@hkC|cwGEi z{6_p%{7yU}o)k}sr^WBZGvW{8S@B2lC-I#4v-pentN5GvyZDFrr+8lcOS~Xn6fcRF z#lOWX;#C7MKm#%`2G+nCGzQ+FHRue2L2nQZ21A%3+#nf@29qJe5NU`qL>poZv4%K9 zyrG>T!H{T3G9(+!h7?1pAK^jO086Xp6fozZi+Jjt>2l7DyCKq8fBkdinH2!RaeVCpR>y8a{8wZcGd*m zjj`JLc-(He+VAwZeWR>4tD|04+8JfF_47LF<;foJ1X@aMk@hgsYNHL%k7EKAZq!kr zZI73h?B{X&2RYo1TG?xtB&%(>)90*m$s?TZ8qZ{v?!Y*L&Ba`YZrW|7)n=8a_y;>{ zMys@_6)+-9Zvwv}2ot6k))DwO)(~_zL4?37gz13+<_Ww^n4TuUE-4~t#>XHG6oU?+ zWK>{?bo`jZ41LiFbOv22t+oQ6-|KYOVs?zx)~lhx<*as4c6|)Gft$e1pnHWn53+Bh z`oZm}mp6d!;1en*u{wkfStSZ&Q8)Zwb_^a8!tgWjOWSgWm1qtEZDS6|vC zX+ZBjo@$Syc{V6%w}O7)wvkp_zz6bS?OL^&0pRux;C4_7dW^Ov9gb-)S6 zg9*R|>VX@0Km(Wvyub(ipb<<0lfe`)6-)!u!JVK9+y(9i7!WW6%mlN*Y%mAh1Lk4@ zC*mAjfJ^XTJQR<>V{kRD!%kd}efVxX1K)=)5y%k85vU_jA~2S~cmmrIXeKb7z#IZ| z3Ct(3fWS@!b|J7kfwvMkfIusOHUftc_z;0h2wY0wasnSAa3z7O30ywj-;_RDU+&n}s)wjr|D>8Wv64{-Zs?<9w7tku@L(eL-Tm5Rm6ns2T- zpx#j{2c7m?CpJ1KIb5>aKT^?0N}H7m7aBZXzpAACUXN?IQ=Y6;3ij1kb~&bw4xz7j zOsif^EW846433uKB!nYyG!DlS)=O_mz|{Zdva5C}vzN=|nQX3Z(Sqi2UQfN*E&HkJ zGgrHubc9qm_JV!jb?^q*58ecC4Y%5C&S`WOsmiFZ+Quov#HO^K?Sb-xjYc+d^uWey zXN}`Fufts?GY4PJSi&t6^UaM#K; z-PAr#f>Rs7DR7#S9c8syomGJf&6Z(o@F_Jy9&hL(Oa^Dck2nD%oP@IvfiQ3m{0x2p zzk=Vu@8A#cCpZuO0vEt@;1akD{svdT)e%-(xzq2G?UGU14Jv{)$Wt@O;hQkB<;fVU zZID~8_qd(a13lH1R@-2el~iRqr^q!5Ux!<5gJgH(FsrTHQH!&%*#sm2aJ1>}t5>h$ z6r6#RrS_EEb6_8Y5J3jAkQ=4e8sL}feRv>&BMF>9;OGilooBMSm&^4DWgyf-9TcE` ztioAEsVI}4j#F{kh=3TVrbBi&_NkMrC)7K<6BL%ha44;Z5@o0qG!;W-wUN-qBbC-N zl~S}7WnebH!>>vqjDfN1VJzq|vV~x~6y4~qbJobcT&@s1=j#?aDf3|>Oj1-|dz}A8 zn@KqjQ(C43X5cKGhocp4CCu zehEK}7u%&MRatiG`tRvV*ca@Ag{rQkx<=769k7H8?NU-7m$Q08zQ4}vX{@a?4{$rG z{mx0UIpFoQ=4@$Td>z}4&k6^_A+SstpA~n)R@@nP(cwuNfT!UdU=^%_ z)vyN2unLZYwO|)?!csT^tOBc`8+u>^oM@NgTcn8U3c1?f%jK+f*UN6dBFDYFUeDwq z9-ot{AXS5V<#DptE7#mwLk)q+Y8&R0eRSRQ^Lpy3#8PjI8XBJ>wGmgZUcEZ2*Oi_+ z3F2;2DISEo;+wF9Z^j)ZMyE5vg+>wVbL$oz)#3pQ%B&xlrQ+E)vAs@el z)2|g{cqjN1Ho-D*9^w#jZh*7l99UIBRf4xx_E!Xz>Imx8Is7v2g0t`~0fFz1dniQH zpBCA_7v6^l;-0wIXgW@FU#G9Z<(O)hjP?dk!>|U*098?U3y=sGV0PqSf1T{5%GgJr z-UIf?pF~?N3*el?V_23WCL;bb~zPcH{3SSG_Ma4J_ zq0DYEk7HZpx7k3#eem_o@bwlGImQ}Vt$FFf{a^u@58uXRSdZiIkdd5Nr!(=JtG8m!C$XY&kii%v34o`*7`=5!!Mit zbzWIES1JCgx!%+0lShwpOpxvB6JIl{kPZnr0oUN#>#zzLzy%Z*!YUb$Q(0x})95do zQeNHYZ{dhC*}n!<{#e{DR0@(&BBE9n;qln@xuTw09G~+jrN!yNS$INV#Uxkus`51Y z%@r1lT}t$LYh-UfugC4T`5o>Whqp#~JH+9ZU9E{gxhPMOI5+lQZ&Zb-2wBuop%R>h z8%)3i1w2t1nun4daDh-~)CF~=k}!k7`w5(BmlB7{G^Q_``%JBN$>#Ea9SoSivb*e( z)ZmpTIX#U&`(z~&a1CueQ7?ryKfddW(2W-A1D2w`U^(iCZbSXSDs(&QTVb`S4dX@} zizneJMhJCyGHz6bZ7o=W1}XJ!2kX%guo9J_+mS68>7edBo{V=9c#OcG@MHqdDXu|> zj-B$%mSQS=T}txI9g6>P8-<30XHf-s9#)}BG!l&hyHHQ?3L1;-ss&T`BX{CyxCu|i z684+4T>wzt&6&~j>hL}eceU)IOl>w`s9G^#(<}SSu1T`rS?vh1ULhatk}1T0s#Y3m z;U?UVTwp$O<1&nK943cVqlX&6FKA-3Q+*yh2QGkB;5o1=AjcVFthNC@o7~{=I{Y5* zX!@=LVL~%<-TPXjGyZ9#9XQU>cCk znPY1_)f4Q>$m(TxW9Xn(gZXGJF2nP19KLu=3P&@S}y=%DDTTiod2*T4>YkYfrJ&(T(! zs?mqa)qZ6os6>T&HTpe1$0TJFF(z13*$7oyZ6nH+jcN09C6Z@v+k?{`=s{gVw1-No zEzq&zvZ*h6JE|u*-L;ApRiD`WQ(ZFMV$t$yGo#e4qtX{%gfHNQ_z(OSe!w(j3IKRM zeh}Y}&*MMw0=pDDeR@gfu6gE?j;j0J#gb?4P|~rf$u5OgSS)7MQIy@)vTuadrl_xg z%%i=SEm!#!KfOaiNl|f^VmY@%mppUGm!^@^i!B}U%$B0gO{%l3r~w*2L2rST=xxPW zehB{_l)CqD={mYS_>yWH^db5PJOtiTDjfhz(Z}c$^dvfnJ_Eba=U^8)L=6^t60AZ; z$5OYjiqfO({wl4uay7D}u&S@uG1*6XSL^jOx@(jPP(lyo-bQz|!!Oq;K_#EEPqxV} zx!Nz+gtUhj;otBp_+>2NB|5xFhj#}FK28ZP#zn#J-{I27;IHT;I)zT7@6j1ph|c1% zcq!hDx8UvgXdMm}l-_X=?g{ z#*xsUf%wr==sb7^{e>=|i|7(MiT*}clrgsqSMe%GS#9O=6u93;}&+KT4 z%=*m!I)~rf=%aRBHV=~h4s*Sy#yQR@dkaETD}%tB3`;{cnav>^G2tKxV>ArUXc-+N zFnUI03{2Pv8WnLV>QDJ?Yj9LkDObMG%{vWJIs6Wnr&ig@uf=O54PK2`4Yy78`Q`f2 z)oP$bDgOxwV|d2I2yg-uIl^iiQRno_cx`D>K_~U6D^NT~CYsT#XEdNkYm(v^k%?!* z@LIe9ug9zGk`!pXnY*DKB;&QcivsPXFsU1vR5d)LENNP!pHp_#G<&^FI+L-9$q0sp z0&}L6xsK2IYY80t>9IwEesX&bA z?{U?b2RG0?quJrEG57J**VEsV>zpo`M&=YvWcGW^%C1`V<79Kav!=!+D>b~%+B(1L z&jp-2UxCnO9AG)qmFdnbKx5H{l)l$sn1O-4<1YD(tqD+?d@%(IxbKGrOO{EAV#8?pqXf z z@Uua36|Q#vH{&f#4cLXwT*KApu!NtsONsqFN<7!6tU5|tmB-<&F}oa7J&pc0G@^6N z1jf}&<0kw9-l@8pwW!L~Jb1FRxnFrT14+6T|4l#e%cC{EmeS82P#D}hx2`gC6JkD%UWP(Q8V)1_brVe*%-iTT( z|7K2wc?Rra)?6dEZ(#|)VV7ct`Q)I`I$W~XZTv1XD33 z9XnF1a^qor40bW=n}_ugmhk&{U4>$Fecjq9e%k9{=154dALCDgQ>_>8<@BzxrlJYvI&+JhRnBOr$_626uJej&Wl-Ew5+2v?-SJ%lkW=E~V z>2Av!u$(!={LoBfEdC6C9wbuHqw18G6m_L+`p3;_>l`2RJJ`i+yha|sz!E-amn0>8 zqy~zp?bXA^j(3Ot`_M8ywq$&N{~nZ~|C$5b$U zaHGGW(SHzxwP-Q0j4Bp348Mj&MXmfA&?Kx8mu_NBU;!J+MzPWOYplm7@b~z~Ygj`Q zz-&C*j zp3QBhViP`zPwB9z=rLu2y0%PEN%0NW6kCigv60OabQ-U~C+Gxi8K}rDH8NC?RqN%I zDODAYMt_~h>-0}GI~3eWe!xLhrl-I>V4N~}s*TR_nFkD^=F2Pld_j*Rj~4JL&XLbt zC0BduWwX;g$>DM;-d}Z{vJ0S*qo5bk%KcX|xazucx@)gpQh>6i8+%g-YtG;wTCv8` z;<)}3YkH$gY*aIA&f*pLd&-*S1ID%NV{SBG=K4mT-|TStJmxAnSX`A_U!%9#82IGs zM#{+ov*JwD1R^hap;NDp*DKe1{BmnXIJ~mi?V;VcJd@>`>vH0DR`DqnQQd@p!sirD zL`|PwT$E?FbXGmzl7Ccy>`-)xjc#Vd&v*s?F`xkHEUFsNr>MZ|X+XC;#ow$33o2}Z zAuIj>TglAY$jnkbl#$b$!vl&K7v-51SH;p*q1Dp4OH=cHzqo5tuB4^artIt; z>)AU3sZ%v}Q7+dv&;al#HG8dCr;r#ATLY5Wakva$#)v>f-vnZvtP?!PPQU~4-#8jy zDW?gmpq}vH()DZuI}u+c5d4dQE4Fnk?ebv|#@^XF;SKKu=TQ^PZV6wpHS8<}CQ(H< z%Qy?q#Ipjytjh$#u|D-hAfHr0BUzNrkny2JFrS@=%kX#{M<6?vGR#4P$abe+u5T_# zL)Gj;_CXqnB~U}4_Bw$zc5w@3G)_z)A0Wn4KGNf+HP)OY{qs53R}?Eb)j-eTVdyV#w<0TCEQM-)w9Bps1)_)xjtGbwaT zt%esGL#~ls@-<1EQZS$W442`KR1)Hb)yNJ0x>j<6P6tvNTUw_y=Cj9Hnq`V3FoD42 z>j}_z>DGELD_0f*0AT;pK$_#DFminufN~G zg>+d2((-yvc;X0 zJ?6h6vNTb`wO2)!%j5FFE-tY}WIIriEg`U&ifmy;ubLV&jjD!7YRE^s6dscJaLXY% zB)A_Ig85uGT!srNqdJdKHq`dOM!Gc
3}8SP5o&DWdJKHvh^H*`k35qOh2qhmwj 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 U@~MB%ED;g^TG#%s|6jiMf0NWqb^rhX From 4b50e71bf127c8e0f289e3b76c786f0398effe65 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Sun, 24 Feb 2008 20:25:13 -0500 Subject: [PATCH 090/112] Bug #13736: Fix %bx in VBEGetPixelClock to match spec. Reported by Yannick Henault. --- hw/xfree86/vbe/vbe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/vbe/vbe.c b/hw/xfree86/vbe/vbe.c index 06559bbd5..8af1727cc 100644 --- a/hw/xfree86/vbe/vbe.c +++ b/hw/xfree86/vbe/vbe.c @@ -1019,7 +1019,7 @@ VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int clock) /* Input: AX := 4F0Bh VBE Get Pixel Clock - BL := 01h Get Pixel Clock + BL := 00h Get Pixel Clock ECX := pixel clock in units of Hz DX := mode number @@ -1030,7 +1030,7 @@ VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int clock) pVbe->pInt10->num = 0x10; pVbe->pInt10->ax = 0x4f0b; - pVbe->pInt10->bx = 0x01; + pVbe->pInt10->bx = 0x00; pVbe->pInt10->cx = clock; pVbe->pInt10->dx = mode; xf86ExecX86int10(pVbe->pInt10); From f19f7b8e53ed6609fc1fdd272de5521417946209 Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Mon, 25 Feb 2008 17:07:07 -0300 Subject: [PATCH 091/112] Clean some garbage caused when pciaccess was merged: FindPCIVideoInfo() function isn't need anymore. xf86scanpci() is being called only once so we don't need permanent (static) variables there. restorePciState() is not used for now (until we find why multiple cards aren't working). --- hw/xfree86/common/xf86pciBus.c | 241 ++++++++++++++++---------------- hw/xfree86/os-support/bus/Pci.c | 13 +- 2 files changed, 118 insertions(+), 136 deletions(-) diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c index 13e13e980..d5ae75b3a 100644 --- a/hw/xfree86/common/xf86pciBus.c +++ b/hw/xfree86/common/xf86pciBus.c @@ -107,127 +107,6 @@ xf86FormatPciBusNumber(int busnum, char *buffer) sprintf(buffer, "%d@%d", busnum & 0x00ff, busnum >> 8); } -static void -FindPCIVideoInfo(void) -{ - int i = 0, k; - int num = 0; - struct pci_device *info; - struct pci_device_iterator *iter; - - - if (!xf86scanpci()) { - xf86PciVideoInfo = NULL; - return; - } - - iter = pci_slot_match_iterator_create(& xf86IsolateDevice); - while ((info = pci_device_next(iter)) != NULL) { - if (PCIINFOCLASSES(info->device_class)) { - num++; - xf86PciVideoInfo = xnfrealloc(xf86PciVideoInfo, - (sizeof(struct pci_device *) - * (num + 1))); - xf86PciVideoInfo[num] = NULL; - xf86PciVideoInfo[num - 1] = info; - - pci_device_probe(info); - info->user_data = 0; - } - } - - - /* If we haven't found a primary device try a different heuristic */ - if (primaryBus.type == BUS_NONE && num) { - for (i = 0; i < num; i++) { - uint16_t command; - - info = xf86PciVideoInfo[i]; - pci_device_cfg_read_u16(info, & command, 4); - - if ((command & PCI_CMD_MEM_ENABLE) - && ((num == 1) || IS_VGA(info->device_class))) { - if (primaryBus.type == BUS_NONE) { - primaryBus.type = BUS_PCI; - primaryBus.id.pci = info; - } else { - xf86Msg(X_NOTICE, - "More than one possible primary device found\n"); - primaryBus.type ^= (BusType)(-1); - } - } - } - } - - /* Print a summary of the video devices found */ - for (k = 0; k < num; k++) { - const char *vendorname = NULL, *chipname = NULL; - const char *prim = " "; - Bool memdone = FALSE, iodone = FALSE; - - - info = xf86PciVideoInfo[k]; - - vendorname = pci_device_get_vendor_name( info ); - chipname = pci_device_get_device_name( info ); - - if ((!vendorname || !chipname) && - !PCIALWAYSPRINTCLASSES(info->device_class)) - continue; - - if (xf86IsPrimaryPci(info)) - prim = "*"; - - xf86Msg( X_PROBED, "PCI:%s(%u@%u:%u:%u) ", prim, info->domain, - info->bus, info->dev, info->func ); - - if (vendorname) - xf86ErrorF("%s ", vendorname); - else - xf86ErrorF("unknown vendor (0x%04x) ", info->vendor_id); - - if (chipname) - xf86ErrorF("%s ", chipname); - else - xf86ErrorF("unknown chipset (0x%04x) ", info->device_id); - - xf86ErrorF("rev %d", info->revision); - - for (i = 0; i < 6; i++) { - struct pci_mem_region * r = & info->regions[i]; - - if ( r->size && ! r->is_IO ) { - if (!memdone) { - xf86ErrorF(", Mem @ "); - memdone = TRUE; - } else - xf86ErrorF(", "); - xf86ErrorF("0x%08lx/%ld", r->base_addr, r->size); - } - } - - for (i = 0; i < 6; i++) { - struct pci_mem_region * r = & info->regions[i]; - - if ( r->size && r->is_IO ) { - if (!iodone) { - xf86ErrorF(", I/O @ "); - iodone = TRUE; - } else - xf86ErrorF(", "); - xf86ErrorF("0x%08lx/%ld", r->base_addr, r->size); - } - } - - if ( info->rom_size ) { - xf86ErrorF(", BIOS @ 0x\?\?\?\?\?\?\?\?/%ld", info->rom_size); - } - - xf86ErrorF("\n"); - } -} - - /* * IO enable/disable related routines for PCI */ @@ -401,10 +280,10 @@ savePciState( struct pci_device * dev, pciSavePtr ptr ) } /* move to OS layer */ +#if 0 static void restorePciState( struct pci_device * dev, pciSavePtr ptr) { -#if 0 int i; /* disable card before setting anything */ @@ -419,8 +298,8 @@ restorePciState( struct pci_device * dev, pciSavePtr ptr) } pci_device_cfg_write_u32(dev, ptr->command, PCI_CMD_STAT_REG); -#endif } +#endif /* move to OS layer */ static void @@ -470,7 +349,121 @@ restorePciBusState(BusAccPtr ptr) void xf86PciProbe(void) { - FindPCIVideoInfo(); + int i = 0, k; + int num = 0; + struct pci_device *info; + struct pci_device_iterator *iter; + + + if (!xf86scanpci()) { + xf86PciVideoInfo = NULL; + return; + } + + iter = pci_slot_match_iterator_create(& xf86IsolateDevice); + while ((info = pci_device_next(iter)) != NULL) { + if (PCIINFOCLASSES(info->device_class)) { + num++; + xf86PciVideoInfo = xnfrealloc(xf86PciVideoInfo, + (sizeof(struct pci_device *) + * (num + 1))); + xf86PciVideoInfo[num] = NULL; + xf86PciVideoInfo[num - 1] = info; + + pci_device_probe(info); + info->user_data = 0; + } + } + + + /* If we haven't found a primary device try a different heuristic */ + if (primaryBus.type == BUS_NONE && num) { + for (i = 0; i < num; i++) { + uint16_t command; + + info = xf86PciVideoInfo[i]; + pci_device_cfg_read_u16(info, & command, 4); + + if ((command & PCI_CMD_MEM_ENABLE) + && ((num == 1) || IS_VGA(info->device_class))) { + if (primaryBus.type == BUS_NONE) { + primaryBus.type = BUS_PCI; + primaryBus.id.pci = info; + } else { + xf86Msg(X_NOTICE, + "More than one possible primary device found\n"); + primaryBus.type ^= (BusType)(-1); + } + } + } + } + + /* Print a summary of the video devices found */ + for (k = 0; k < num; k++) { + const char *vendorname = NULL, *chipname = NULL; + const char *prim = " "; + Bool memdone = FALSE, iodone = FALSE; + + + info = xf86PciVideoInfo[k]; + + vendorname = pci_device_get_vendor_name( info ); + chipname = pci_device_get_device_name( info ); + + if ((!vendorname || !chipname) && + !PCIALWAYSPRINTCLASSES(info->device_class)) + continue; + + if (xf86IsPrimaryPci(info)) + prim = "*"; + + xf86Msg( X_PROBED, "PCI:%s(%u@%u:%u:%u) ", prim, info->domain, + info->bus, info->dev, info->func ); + + if (vendorname) + xf86ErrorF("%s ", vendorname); + else + xf86ErrorF("unknown vendor (0x%04x) ", info->vendor_id); + + if (chipname) + xf86ErrorF("%s ", chipname); + else + xf86ErrorF("unknown chipset (0x%04x) ", info->device_id); + + xf86ErrorF("rev %d", info->revision); + + for (i = 0; i < 6; i++) { + struct pci_mem_region * r = & info->regions[i]; + + if ( r->size && ! r->is_IO ) { + if (!memdone) { + xf86ErrorF(", Mem @ "); + memdone = TRUE; + } else + xf86ErrorF(", "); + xf86ErrorF("0x%08lx/%ld", r->base_addr, r->size); + } + } + + for (i = 0; i < 6; i++) { + struct pci_mem_region * r = & info->regions[i]; + + if ( r->size && r->is_IO ) { + if (!iodone) { + xf86ErrorF(", I/O @ "); + iodone = TRUE; + } else + xf86ErrorF(", "); + xf86ErrorF("0x%08lx/%ld", r->base_addr, r->size); + } + } + + if ( info->rom_size ) { + xf86ErrorF(", BIOS @ 0x\?\?\?\?\?\?\?\?/%ld", info->rom_size); + } + + xf86ErrorF("\n"); + } } void diff --git a/hw/xfree86/os-support/bus/Pci.c b/hw/xfree86/os-support/bus/Pci.c index a34ed99d0..1ca0bd07a 100644 --- a/hw/xfree86/os-support/bus/Pci.c +++ b/hw/xfree86/os-support/bus/Pci.c @@ -268,18 +268,7 @@ pciAddrNOOP(PCITAG tag, PciAddrType type, ADDRESS addr) _X_EXPORT Bool xf86scanpci(void) { - static Bool done = FALSE; - static Bool success = FALSE; - - /* - * if we haven't found PCI devices checking for pci_devp may - * result in an endless recursion if platform/OS specific PCI - * bus probing code calls this function from with in it. - */ - if (done) - return success; - - done = TRUE; + Bool success = FALSE; success = (pci_system_init() == 0); pciInit(); From 9727db88d57089be6483104de435626cdbad883a Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Mon, 25 Feb 2008 17:08:07 -0300 Subject: [PATCH 092/112] No more "-scanpci" given that we already have it in libpciaccess. (Yeah, lets nuke dead code!) --- hw/xfree86/common/Makefile.am | 2 +- hw/xfree86/common/xf86DoScanPci.c | 147 --------------------------- hw/xfree86/common/xf86Init.c | 5 - hw/xfree86/common/xf86PciInfo.h | 5 +- hw/xfree86/common/xf86Priv.h | 4 - hw/xfree86/doc/devel/Registry | 1 - hw/xfree86/doc/man/Xorg.man.pre | 7 -- hw/xfree86/doc/man/xorg.conf.man.pre | 6 +- hw/xfree86/dummylib/Makefile.am | 2 +- hw/xfree86/modes/Makefile.am | 2 +- hw/xgl/glx/xglxorg.c | 2 - 11 files changed, 7 insertions(+), 176 deletions(-) delete mode 100644 hw/xfree86/common/xf86DoScanPci.c diff --git a/hw/xfree86/common/Makefile.am b/hw/xfree86/common/Makefile.am index c060b73f0..4f0a2d6b3 100644 --- a/hw/xfree86/common/Makefile.am +++ b/hw/xfree86/common/Makefile.am @@ -31,7 +31,7 @@ BUILT_SOURCES = xf86DefModeSet.c AM_LDFLAGS = -r libcommon_la_SOURCES = xf86Configure.c xf86Bus.c xf86Config.c \ xf86Cursor.c xf86cvt.c xf86DGA.c xf86DPMS.c \ - xf86DoProbe.c xf86DoScanPci.c xf86Events.c \ + xf86DoProbe.c xf86Events.c \ xf86Globals.c xf86AutoConfig.c \ xf86MiscExt.c xf86Option.c \ xf86VidMode.c xf86fbman.c xf86cmap.c \ diff --git a/hw/xfree86/common/xf86DoScanPci.c b/hw/xfree86/common/xf86DoScanPci.c deleted file mode 100644 index 51892f041..000000000 --- a/hw/xfree86/common/xf86DoScanPci.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 1999-2002 by The XFree86 Project, Inc. - * - * 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/or 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s) - * and author(s) 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 copyright holder(s) and author(s). - */ - -/* - * Finish setting up the server. - * Call the functions from the scanpci module. - */ - -#ifdef HAVE_XORG_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include -#include "os.h" -#include "xf86.h" -#include "xf86Priv.h" -#include "xf86Pci.h" -#include "Pci.h" -#include "xf86_OSproc.h" - -static void ScanPciDisplayPCICardInfo(void); - -void -ScanPciDisplayPCICardInfo(void) -{ - struct pci_id_match match; - struct pci_device_iterator *iter; - const struct pci_device *dev; - - xf86EnableIO(); - - if (! xf86scanpci()) { - xf86MsgVerb(X_NONE, 0, "No PCI info available\n"); - return; - } - xf86MsgVerb(X_NONE, 0, - "Probing for PCI devices (Bus:Device:Function)\n\n"); - - iter = pci_id_match_iterator_create(NULL); - while ((dev = pci_device_next(iter)) != NULL) { - const char *svendorname = NULL, *subsysname = NULL; - const char *vendorname = NULL, *devicename = NULL; - - - xf86MsgVerb(X_NONE, 0, "(%d:%d:%d) ", - PCI_MAKE_BUS(dev->domain, dev->bus), dev->dev, dev->func); - - /* - * Lookup as much as we can about the device. - */ - match.vendor_id = dev->vendor_id; - match.device_id = dev->device_id; - match.subvendor_id = (dev->subvendor_id != 0) - ? dev->subvendor_id : PCI_MATCH_ANY; - match.subdevice_id = (dev->subdevice_id != 0) - ? dev->subdevice_id : PCI_MATCH_ANY; - match.device_class = 0; - match.device_class_mask = 0; - - pci_get_strings(& match, & vendorname, & devicename, - & svendorname, & subsysname); - - if ((dev->subvendor_id != 0) || (dev->subdevice_id != 0)) { - xf86MsgVerb(X_NONE, 0, "%s %s (0x%04x / 0x%04x) using ", - (svendorname == NULL) ? "unknown vendor" : svendorname, - (subsysname == NULL) ? "unknown card" : subsysname, - dev->subvendor_id, dev->subdevice_id); - } - - xf86MsgVerb(X_NONE, 0, "%s %s (0x%04x / 0x%04x)\n", - (vendorname == NULL) ? "unknown vendor" : vendorname, - (devicename == NULL) ? "unknown chip" : devicename, - dev->vendor_id, dev->device_id); - } - - pci_iterator_destroy(iter); -} - - -void DoScanPci(int argc, char **argv, int i) -{ - int j,skip,globalVerbose; - - /* - * first we need to finish setup of the OS so that we can call other - * functions in the server - */ - OsInit(); - - /* - * The old verbosity processing that was here isn't useful anymore, but - * for compatibility purposes, ignore verbosity changes after the -scanpci - * flag. - */ - globalVerbose = xf86Verbose; - - /* - * next we process the arguments that are remaining on the command line, - * so that things like the module path can be set there - */ - for ( j = i+1; j < argc; j++ ) { - if ((skip = ddxProcessArgument(argc, argv, j))) - j += (skip - 1); - } - - /* - * Was the verbosity level increased? If so, set it back. - */ - if (xf86Verbose > globalVerbose) - xf86SetVerbosity(globalVerbose); - - ScanPciDisplayPCICardInfo(); - - /* - * That's it; we really should clean things up, but a simple - * exit seems to be all we need. - */ - exit(0); -} diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 41cf1d17c..7121b027b 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -1668,10 +1668,6 @@ ddxProcessArgument(int argc, char **argv, int i) return 1; } #endif - if (!strcmp(argv[i], "-scanpci")) - { - DoScanPci(argc, argv, i); - } if (!strcmp(argv[i], "-probe")) { xf86DoProbe = TRUE; @@ -1734,7 +1730,6 @@ ddxUseMsg() ErrorF("-config file specify a configuration file, relative to the\n"); ErrorF(" "__XCONFIGFILE__" search path, only root can use absolute\n"); ErrorF("-probeonly probe for devices, then exit\n"); - ErrorF("-scanpci execute the scanpci module and exit\n"); ErrorF("-verbose [n] verbose startup messages\n"); ErrorF("-logverbose [n] verbose log messages\n"); ErrorF("-quiet minimal startup messages\n"); diff --git a/hw/xfree86/common/xf86PciInfo.h b/hw/xfree86/common/xf86PciInfo.h index 0630cfa82..356c7db4d 100644 --- a/hw/xfree86/common/xf86PciInfo.h +++ b/hw/xfree86/common/xf86PciInfo.h @@ -40,9 +40,8 @@ * or for non-video devices unless they're needed by a driver or elsewhere. * A comprehensive set of PCI vendor, device and subsystem data is * auto-generated from the ../etc/pci.ids file using the pciids2c.pl script, - * and is used in both the scanpci module and the scanpci utility. Don't - * modify the pci.ids file. If new/corrected entries are required, add them - * to ../etc/extrapci.ids. + * and is used in scanpci utility. Don't modify the pci.ids file. If + * new/corrected entries are required, add them to ../etc/extrapci.ids. */ #ifndef _XF86_PCIINFO_H diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h index 32801cb3f..fb9ecaea8 100644 --- a/hw/xfree86/common/xf86Priv.h +++ b/hw/xfree86/common/xf86Priv.h @@ -155,10 +155,6 @@ Bool xf86PathIsSafe(const char *path); extern DisplayModeRec xf86DefaultModes []; -/* xf86DoScanPci.c */ - -void DoScanPci(int argc, char **argv, int i); - /* xf86DoProbe.c */ void DoProbe(void); void DoConfigure(void); diff --git a/hw/xfree86/doc/devel/Registry b/hw/xfree86/doc/devel/Registry index d76622157..1fec230e8 100644 --- a/hw/xfree86/doc/devel/Registry +++ b/hw/xfree86/doc/devel/Registry @@ -75,7 +75,6 @@ rendition s3 s3virge savage -scanpci shadow shadowfb siliconmotion diff --git a/hw/xfree86/doc/man/Xorg.man.pre b/hw/xfree86/doc/man/Xorg.man.pre index c950e326b..405efda55 100644 --- a/hw/xfree86/doc/man/Xorg.man.pre +++ b/hw/xfree86/doc/man/Xorg.man.pre @@ -378,13 +378,6 @@ and .B \-ggamma options. .TP 8 -.B \-scanpci -When this option is specified, the -.B __xservername__ -server scans the PCI bus, and prints out some information about each -device that was detected. See also scanpci(__appmansuffix__) -and pcitweak(__appmansuffix__). -.TP 8 .BI \-screen " screen-name" Use the __xconfigfile__(__filemansuffix__) file .B Screen diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre index 96f30c4bd..9f3980879 100644 --- a/hw/xfree86/doc/man/xorg.conf.man.pre +++ b/hw/xfree86/doc/man/xorg.conf.man.pre @@ -994,10 +994,8 @@ In multi-head configurations, or when using a secondary graphics card in a single-head configuration, this entry is mandatory. Its main purpose is to make an unambiguous connection between the device section and the hardware it is representing. -This information can usually be found by running the __xservername__ server -with the -.B \-scanpci -command line option. +This information can usually be found by running the pciaccess tool +scanpci. .TP 7 .BI "Screen " number This option is mandatory for cards where a single PCI entity can drive more diff --git a/hw/xfree86/dummylib/Makefile.am b/hw/xfree86/dummylib/Makefile.am index ad3f1ea12..85a1d03dd 100644 --- a/hw/xfree86/dummylib/Makefile.am +++ b/hw/xfree86/dummylib/Makefile.am @@ -1,6 +1,6 @@ # libdummy.a contains just those bits used in the server itself # libdummy-nonserver.a contains additional routines normally found in the -# server for use in building the utilities like scanpci & the config tools +# server for use in building the utilities like config tools noinst_LIBRARIES = libdummy-nonserver.a diff --git a/hw/xfree86/modes/Makefile.am b/hw/xfree86/modes/Makefile.am index 1f82068b3..6ee85757a 100644 --- a/hw/xfree86/modes/Makefile.am +++ b/hw/xfree86/modes/Makefile.am @@ -16,7 +16,7 @@ libxf86modes_a_SOURCES = \ INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \ -I$(srcdir)/../loader -I$(srcdir)/../rac -I$(srcdir)/../parser \ - -I$(srcdir)/../scanpci -I$(srcdir)/../vbe -I$(srcdir)/../int10 \ + -I$(srcdir)/../vbe -I$(srcdir)/../int10 \ -I$(srcdir)/../vgahw -I$(srcdir)/../ramdac \ -I$(srcdir)/../dixmods/extmod diff --git a/hw/xgl/glx/xglxorg.c b/hw/xgl/glx/xglxorg.c index 984c50ee2..1d6fc9a30 100644 --- a/hw/xgl/glx/xglxorg.c +++ b/hw/xgl/glx/xglxorg.c @@ -253,8 +253,6 @@ xglxArgRec xorgUidArgs[] = { xglxArgRec xorgArgs[] = { ARG (xglxProcessXorgWaitExitArgument, "-probeonly", " probe for devices, then exit"), - ARG (xglxProcessXorgWaitExitArgument, "-scanpci", - " execute the scanpci module and exit"), XORG_UARG ("-verbose", " [n] verbose startup messages", 2), XORG_UARG ("-logverbose", " [n] verbose log messages", 2), XORG_UARG ("-quiet", " minimal startup messages", 1), From 7c582dd6de27d2f4fedf73319d2dea2bfb240efa Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Mon, 25 Feb 2008 17:31:37 -0300 Subject: [PATCH 093/112] remove lnxPciInit() unused function. --- hw/xfree86/os-support/linux/lnx_pci.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/hw/xfree86/os-support/linux/lnx_pci.c b/hw/xfree86/os-support/linux/lnx_pci.c index 53818f2dc..8eedfa49f 100644 --- a/hw/xfree86/os-support/linux/lnx_pci.c +++ b/hw/xfree86/os-support/linux/lnx_pci.c @@ -25,8 +25,6 @@ #define PCIADDR_FMT "%lx" #endif -int lnxPciInit(void); - struct pci_dev { unsigned int domain; unsigned int bus; @@ -139,14 +137,6 @@ static struct pci_dev *xf86OSLinuxGetPciDevs(void) { return ret; } -/* not to be confused with linuxPciInit (i.e. ARCH_PCI_INIT), found in - * os-support/bus/linuxPci.c. */ -int lnxPciInit(void) { - if (!xf86OSLinuxPCIDevs) - xf86OSLinuxPCIDevs = xf86OSLinuxGetPciDevs(); - return xf86OSLinuxNumPciDevs; -} - /* Query the kvirt address (64bit) of a BAR range from size for a given TAG */ unsigned long xf86GetOSOffsetFromPCI(PCITAG tag, int space, unsigned long base) From 81272f7ec9a3465e1d102c2ce627a45f92268857 Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Mon, 25 Feb 2008 17:39:33 -0300 Subject: [PATCH 094/112] Some doc clean up: clean up legacy things in os-support/bus/Pci.c. Put InitOutput() comment to its right place. --- hw/xfree86/common/xf86Init.c | 14 +++---- hw/xfree86/os-support/bus/Pci.c | 69 --------------------------------- 2 files changed, 6 insertions(+), 77 deletions(-) diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 7121b027b..d1603c081 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -198,13 +198,6 @@ xf86CreateRootWindow(WindowPtr pWin) } -/* - * InitOutput -- - * Initialize screenInfo for all actually accessible framebuffers. - * That includes vt-manager setup, querying all possible devices and - * collecting the pixmap formats. - */ - static void PostConfigInit(void) { @@ -467,7 +460,12 @@ xf86CallDriverProbe( DriverPtr drv, Bool detect_only ) return foundScreen; } - +/* + * InitOutput -- + * Initialize screenInfo for all actually accessible framebuffers. + * That includes vt-manager setup, querying all possible devices and + * collecting the pixmap formats. + */ void InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv) { diff --git a/hw/xfree86/os-support/bus/Pci.c b/hw/xfree86/os-support/bus/Pci.c index 1ca0bd07a..2d3f748e7 100644 --- a/hw/xfree86/os-support/bus/Pci.c +++ b/hw/xfree86/os-support/bus/Pci.c @@ -1,64 +1,3 @@ -/* - * Pci.c - New server PCI access functions - * - * The XFree86 server PCI access functions have been reimplemented as a - * framework that allows each supported platform/OS to have their own - * platform/OS specific pci driver. - * - * All of the public PCI access functions exported to the other parts of - * the server are declared in Pci.h and defined herein. These include: - * pciInit() - Initialize PCI access functions - * pciReadLong() - Read a 32 bit value from a device's cfg space - * pciReadWord() - Read a 16 bit value from a device's cfg space - * pciReadByte() - Read an 8 bit value from a device's cfg space - * pciWriteLong() - Write a 32 bit value to a device's cfg space - * pciWriteWord() - Write a 16 bit value to a device's cfg space - * pciWriteByte() - Write an 8 bit value to a device's cfg space - * pciSetBitsLong() - Write a 32 bit value against a mask - * pciSetBitsByte() - Write an 8 bit value against a mask - * pciTag() - Return tag for a given PCI bus, device, & - * function - * pciBusAddrToHostAddr() - Convert a PCI address to a host address - * xf86scanpci() - Return info about all PCI devices - * xf86MapDomainMemory() - Like xf86MapPciMem() but can handle - * domain/host address translation - * xf86MapLegacyIO() - Maps PCI I/O spaces - * - * The actual PCI backend driver is selected by the pciInit() function - * (see below) using either compile time definitions, run-time checks, - * or both. - * - * Certain generic functions are provided that make the implementation - * of certain well behaved platforms (e.g. those supporting PCI config - * mechanism 1 or some thing close to it) very easy. - * - * Less well behaved platforms/OS's can roll their own functions. - * - * To add support for another platform/OS, add a call to fooPciInit() within - * pciInit() below under the correct compile time definition or run-time - * conditional. - * - * The fooPciInit() procedure must do three things: - * 1) Initialize the pciBusTable[] for all primary PCI buses including - * the per domain PCI access functions (readLong, writeLong, - * addrBusToHost, and addrHostToBus). - * - * 2) Add entries to pciBusTable[] for configured secondary buses. This - * step may be skipped if a platform is using the generic findFirst/ - * findNext functions because these procedures will automatically - * discover and add secondary buses dynamically. - * - * 3) Overide default settings for global PCI access functions if - * required. These include pciFindFirstFP, pciFindNextFP, - * Of course, if you choose not to use one of the generic - * functions, you will need to provide a platform specifc replacement. - * - * Gary Barton - * Concurrent Computer Corporation - * garyb@gate.net - * - */ - /* * Copyright 1998 by Concurrent Computer Corporation * @@ -197,14 +136,6 @@ #include -#if 0 -#include -#include -#include -#include -#include -#endif - #define PCI_MFDEV_SUPPORT 1 /* Include PCI multifunction device support */ #define PCI_BRIDGE_SUPPORT 1 /* Include support for PCI-to-PCI bridges */ From a9050d54249ed9f54c6fe59143b846c9c7548f59 Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Mon, 25 Feb 2008 18:10:18 -0300 Subject: [PATCH 095/112] Jesus, pciInit() was called 32 times in my machine without need! xf86scanpci() will always call pciInit() before any other function, so there's no need to guarantee it after. --- hw/xfree86/os-support/bus/Pci.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/hw/xfree86/os-support/bus/Pci.c b/hw/xfree86/os-support/bus/Pci.c index 2d3f748e7..8b21fad59 100644 --- a/hw/xfree86/os-support/bus/Pci.c +++ b/hw/xfree86/os-support/bus/Pci.c @@ -154,11 +154,6 @@ int pciMaxBusNum = MAX_PCI_BUSES; static void pciInit(void) { - static int pciInitialized = 0; - - if (!pciInitialized) { - pciInitialized = 1; - /* XXX */ #if defined(DEBUGPCI) if (DEBUGPCI >= xf86Verbose) { @@ -167,7 +162,6 @@ pciInit(void) #endif ARCH_PCI_INIT(); - } } _X_EXPORT ADDRESS @@ -175,8 +169,6 @@ pciBusAddrToHostAddr(PCITAG tag, PciAddrType type, ADDRESS addr) { int bus = PCI_BUS_FROM_TAG(tag); - pciInit(); - if ((bus >= 0) && (bus < pciNumBuses) && pciBusInfo[bus] && pciBusInfo[bus]->funcs->pciAddrBusToHost) return (*pciBusInfo[bus]->funcs->pciAddrBusToHost)(tag, type, addr); From c46f7b62d2bf9f35937cfef98325ed904895396a Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Mon, 25 Feb 2008 18:14:08 -0300 Subject: [PATCH 096/112] Fine, we don't need pciInit() anymore. Nuke, nuke, nuke... --- hw/xfree86/os-support/bus/Pci.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/hw/xfree86/os-support/bus/Pci.c b/hw/xfree86/os-support/bus/Pci.c index 8b21fad59..064533c77 100644 --- a/hw/xfree86/os-support/bus/Pci.c +++ b/hw/xfree86/os-support/bus/Pci.c @@ -148,22 +148,6 @@ _X_EXPORT int pciNumBuses = 0; /* Actual number of PCI buses */ int pciMaxBusNum = MAX_PCI_BUSES; -/* - * pciInit - choose correct platform/OS specific PCI init routine - */ -static void -pciInit(void) -{ - /* XXX */ -#if defined(DEBUGPCI) - if (DEBUGPCI >= xf86Verbose) { - xf86Verbose = DEBUGPCI; - } -#endif - - ARCH_PCI_INIT(); -} - _X_EXPORT ADDRESS pciBusAddrToHostAddr(PCITAG tag, PciAddrType type, ADDRESS addr) { @@ -194,7 +178,16 @@ xf86scanpci(void) Bool success = FALSE; success = (pci_system_init() == 0); - pciInit(); + + /* XXX */ +#if defined(DEBUGPCI) + if (DEBUGPCI >= xf86Verbose) { + xf86Verbose = DEBUGPCI; + } +#endif + + /* choose correct platform/OS specific PCI init routine */ + ARCH_PCI_INIT(); return success; } From dcc077c753137f37aa58231f1df3c4adb92b2c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Tue, 26 Feb 2008 12:13:06 +0100 Subject: [PATCH 097/112] AIGLX: Switch to server context for calling DamageDamageRegion(). Fixes https://bugs.freedesktop.org/show_bug.cgi?id=14518 . --- GL/glx/glxdri.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/GL/glx/glxdri.c b/GL/glx/glxdri.c index 304fed2bd..f51a5310d 100644 --- a/GL/glx/glxdri.c +++ b/GL/glx/glxdri.c @@ -798,10 +798,14 @@ static void __glXReportDamage(__DRIdrawable *driDraw, DrawablePtr pDraw = drawable->base.pDraw; RegionRec region; + __glXenterServer(GL_FALSE); + REGION_INIT(pDraw->pScreen, ®ion, (BoxPtr) rects, num_rects); REGION_TRANSLATE(pScreen, ®ion, pDraw->x, pDraw->y); DamageDamageRegion(pDraw, ®ion); REGION_UNINIT(pDraw->pScreen, ®ion); + + __glXleaveServer(GL_FALSE); } /* Table of functions that we export to the driver. */ From d12b7b6632fb4cf41d2e28c7792eaa503f25404a Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 27 Feb 2008 07:08:00 +1000 Subject: [PATCH 098/112] xf86Crtc: add higher level modesetting entry point. For kernel modesetting work we need a bigger stick to beat the modesetting path --- hw/xfree86/modes/xf86Crtc.c | 3 +++ hw/xfree86/modes/xf86Crtc.h | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 4ecf4b3d7..266e08195 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -236,6 +236,9 @@ xf86CrtcSetMode (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation, int saved_x, saved_y; Rotation saved_rotation; + if (crtc->funcs->set_mode_major) + return crtc->funcs->set_mode_major(crtc, mode, rotation, x, y); + crtc->enabled = xf86CrtcInUse (crtc); if (!crtc->enabled) diff --git a/hw/xfree86/modes/xf86Crtc.h b/hw/xfree86/modes/xf86Crtc.h index 62d85bbc9..cc045b229 100644 --- a/hw/xfree86/modes/xf86Crtc.h +++ b/hw/xfree86/modes/xf86Crtc.h @@ -206,6 +206,13 @@ typedef struct _xf86CrtcFuncs { */ void (*destroy) (xf86CrtcPtr crtc); + + /** + * Less fine-grained mode setting entry point for kernel modesetting + */ + Bool + (*set_mode_major)(xf86CrtcPtr crtc, DisplayModePtr mode, + Rotation rotation, int x, int y); } xf86CrtcFuncsRec, *xf86CrtcFuncsPtr; struct _xf86Crtc { From c8e979b3b800e4c58be454daa0213285d4ee6510 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 26 Feb 2008 21:34:22 -0500 Subject: [PATCH 099/112] security: Register resource names in the server-side name registry. --- Xext/security.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Xext/security.c b/Xext/security.c index 27ef38205..cd67120d9 100644 --- a/Xext/security.c +++ b/Xext/security.c @@ -1105,6 +1105,8 @@ SecurityExtensionInit(INITARGS) return; RTEventClient |= RC_NEVERRETAIN; + RegisterResourceName(SecurityAuthorizationResType, "SecurityAuthorization"); + RegisterResourceName(RTEventClient, "SecurityEventClient"); /* Allocate the private storage */ if (!dixRequestPrivate(stateKey, sizeof(SecurityStateRec))) From 4632ea22580c31d44b0786321668d9e78f02900e Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 26 Feb 2008 22:00:52 -0500 Subject: [PATCH 100/112] xselinux: Rip out the selection code in advance of polyinstantiation support. This resolves an issue where BadWindow errors were being thrown. --- Xext/xselinux.c | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/Xext/xselinux.c b/Xext/xselinux.c index 5aa2ad3fa..60ec8d494 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -951,42 +951,11 @@ static void SELinuxSelectionState(CallbackListPtr *pcbl, pointer unused, pointer calldata) { SelectionInfoRec *rec = calldata; - SELinuxSubjectRec *subj; - SELinuxObjectRec *obj; switch (rec->kind) { case SelectionSetOwner: - /* save off the "real" owner of the selection */ - rec->selection->alt_client = rec->selection->client; - rec->selection->alt_window = rec->selection->window; - - /* figure out the new label for the content */ - subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey); - obj = dixLookupPrivate(&rec->selection->devPrivates, objectKey); - sidput(obj->sid); - - if (avc_compute_create(subj->sid, subj->sid, SECCLASS_X_SELECTION, - &obj->sid) < 0) { - ErrorF("SELinux: a compute_create call failed!\n"); - obj->sid = unlabeled_sid; - } - break; - case SelectionGetOwner: - /* restore the real owner */ - rec->selection->window = rec->selection->alt_window; - break; - case SelectionConvertSelection: - /* redirect the convert request if necessary */ - if (securityManager && securityManager != rec->client) { - rec->selection->client = securityManager; - rec->selection->window = securityWindow; - } else { - rec->selection->client = rec->selection->alt_client; - rec->selection->window = rec->selection->alt_window; - } - break; default: break; } From 3f0681fb0b2d0744c2ef892883ae5359b43a4a9a Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 26 Feb 2008 23:14:29 -0500 Subject: [PATCH 101/112] xselinux: Stub out selection protocol requests. --- Xext/xselinux.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ Xext/xselinux.h | 3 +++ 2 files changed, 55 insertions(+) diff --git a/Xext/xselinux.c b/Xext/xselinux.c index 60ec8d494..d3fe86b3a 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -1282,6 +1282,24 @@ ProcSELinuxGetWindowContext(ClientPtr client) return client->noClientException; } +static int +ProcSELinuxSetSelectionCreateContext(ClientPtr client) +{ + return Success; +} + +static int +ProcSELinuxGetSelectionCreateContext(ClientPtr client) +{ + return Success; +} + +static int +ProcSELinuxGetSelectionContext(ClientPtr client) +{ + return Success; +} + static int ProcSELinuxDispatch(ClientPtr client) { @@ -1313,6 +1331,12 @@ ProcSELinuxDispatch(ClientPtr client) return ProcSELinuxGetWindowCreateContext(client); case X_SELinuxGetWindowContext: return ProcSELinuxGetWindowContext(client); + case X_SELinuxSetSelectionCreateContext: + return ProcSELinuxSetSelectionCreateContext(client); + case X_SELinuxGetSelectionCreateContext: + return ProcSELinuxGetSelectionCreateContext(client); + case X_SELinuxGetSelectionContext: + return ProcSELinuxGetSelectionContext(client); default: return BadRequest; } @@ -1420,6 +1444,28 @@ SProcSELinuxGetWindowContext(ClientPtr client) return ProcSELinuxGetWindowContext(client); } +static int +SProcSELinuxSetSelectionCreateContext(ClientPtr client) +{ + REQUEST(SELinuxSetCreateContextReq); + int n; + + REQUEST_AT_LEAST_SIZE(SELinuxSetCreateContextReq); + swaps(&stuff->context_len, n); + return ProcSELinuxSetSelectionCreateContext(client); +} + +static int +SProcSELinuxGetSelectionContext(ClientPtr client) +{ + REQUEST(SELinuxGetContextReq); + int n; + + REQUEST_SIZE_MATCH(SELinuxGetContextReq); + swapl(&stuff->id, n); + return ProcSELinuxGetSelectionContext(client); +} + static int SProcSELinuxDispatch(ClientPtr client) { @@ -1455,6 +1501,12 @@ SProcSELinuxDispatch(ClientPtr client) return ProcSELinuxGetWindowCreateContext(client); case X_SELinuxGetWindowContext: return SProcSELinuxGetWindowContext(client); + case X_SELinuxSetSelectionCreateContext: + return SProcSELinuxSetSelectionCreateContext(client); + case X_SELinuxGetSelectionCreateContext: + return ProcSELinuxGetSelectionCreateContext(client); + case X_SELinuxGetSelectionContext: + return SProcSELinuxGetSelectionContext(client); default: return BadRequest; } diff --git a/Xext/xselinux.h b/Xext/xselinux.h index 7eeea5046..480276154 100644 --- a/Xext/xselinux.h +++ b/Xext/xselinux.h @@ -43,6 +43,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define X_SELinuxSetWindowCreateContext 10 #define X_SELinuxGetWindowCreateContext 11 #define X_SELinuxGetWindowContext 12 +#define X_SELinuxSetSelectionCreateContext 13 +#define X_SELinuxGetSelectionCreateContext 14 +#define X_SELinuxGetSelectionContext 15 typedef struct { CARD8 reqType; From 2257e20900460d85254734b595238e7ad5ee55c8 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 27 Feb 2008 17:15:28 +1030 Subject: [PATCH 102/112] dix: set dev->key to NULL after freeing it in CloseDevice. (Bug #12830) Otherwise XkbRemoveResourceClient may try to dereference it lateron. X.Org Bug 12830 --- dix/devices.c | 1 + 1 file changed, 1 insertion(+) diff --git a/dix/devices.c b/dix/devices.c index bdcca5aba..4b20655c6 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -529,6 +529,7 @@ CloseDevice(DeviceIntPtr dev) xfree(dev->key->curKeySyms.map); xfree(dev->key->modifierKeyMap); xfree(dev->key); + dev->key = NULL; } if (dev->valuator) { From d74b0327e8355546e6b41e8ce684f461d65fa9dc Mon Sep 17 00:00:00 2001 From: Dodji Seketeli Date: Wed, 27 Feb 2008 09:48:10 +0100 Subject: [PATCH 103/112] [Xephyr/GL] unbreak the build Don't touch Xephyr DRI stuff when not compiling in a DRI environment. --- hw/kdrive/ephyr/ephyr.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c index 738704e40..e95001dcd 100644 --- a/hw/kdrive/ephyr/ephyr.c +++ b/hw/kdrive/ephyr/ephyr.c @@ -841,6 +841,7 @@ miPointerScreenFuncRec ephyrPointerScreenFuncs = ephyrWarpCursor }; +#ifdef XEPHYR_DRI /** * find if the remote window denoted by a_remote * is paired with an internal Window within the Xephyr server. @@ -872,6 +873,7 @@ ephyrExposePairedWindow (int a_remote) screen->WindowExposures (pair->local, ®, NullRegion); REGION_UNINIT (screen, ®); } +#endif /*XEPHYR_DRI*/ void ephyrPoll(void) @@ -948,6 +950,7 @@ ephyrPoll(void) KdEnqueueKeyboardEvent (ephyrKbd, ev.data.key_up.scancode, TRUE); break; +#ifdef XEPHYR_DRI case EPHYR_EV_EXPOSE: /* * We only receive expose events when the expose event have @@ -957,6 +960,7 @@ ephyrPoll(void) */ ephyrExposePairedWindow (ev.data.expose.window); break; +#endif /*XEPHYR_DRI*/ default: break; From 43e46a654fa7cf69f0c8bcb7f583008d96a98686 Mon Sep 17 00:00:00 2001 From: Alan Hourihane Date: Wed, 27 Feb 2008 16:58:21 +0000 Subject: [PATCH 104/112] Fix context sharing between direct/indirect contexts --- GL/glx/glxdri.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/GL/glx/glxdri.c b/GL/glx/glxdri.c index f51a5310d..613ac05f1 100644 --- a/GL/glx/glxdri.c +++ b/GL/glx/glxdri.c @@ -614,6 +614,9 @@ __glXDRIscreenCreateContext(__GLXscreen *baseScreen, else driShare = NULL; + if (baseShareContext && baseShareContext->isDirect) + return NULL; + context = xalloc(sizeof *context); if (context == NULL) return NULL; @@ -649,6 +652,11 @@ __glXDRIscreenCreateContext(__GLXscreen *baseScreen, hwContext, &context->driContext); + if (context->driContext.private == NULL) { + xfree(context); + return NULL; + } + return &context->base; } From 41aea6194bd29ab34cc166b3fd90eee64299ddf8 Mon Sep 17 00:00:00 2001 From: Alan Hourihane Date: Wed, 27 Feb 2008 17:06:27 +0000 Subject: [PATCH 105/112] More checking for failed contexts/drawables --- GL/glx/glxdri.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/GL/glx/glxdri.c b/GL/glx/glxdri.c index 613ac05f1..f9b28e427 100644 --- a/GL/glx/glxdri.c +++ b/GL/glx/glxdri.c @@ -653,6 +653,9 @@ __glXDRIscreenCreateContext(__GLXscreen *baseScreen, &context->driContext); if (context->driContext.private == NULL) { + __glXenterServer(GL_FALSE); + retval = DRIDestroyContext(baseScreen->pScreen, context->hwContextID); + __glXleaveServer(GL_FALSE); xfree(context); return NULL; } @@ -703,6 +706,14 @@ __glXDRIscreenCreateDrawable(__GLXscreen *screen, &private->driDrawable, hwDrawable, 0, NULL); + if (private->driDrawable.private == NULL) { + __glXenterServer(GL_FALSE); + DRIDestroyDrawable(screen->pScreen, serverClient, pDraw); + __glXleaveServer(GL_FALSE); + xfree(private); + return NULL; + } + return &private->base; } From f6d51797a523ecc2d4a8f18b2681160fcd5d1d55 Mon Sep 17 00:00:00 2001 From: Maarten Maathuis Date: Wed, 27 Feb 2008 23:44:39 +0100 Subject: [PATCH 106/112] EXA: Let the driver decide what repeat/extend types are supported. --- exa/exa_render.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/exa/exa_render.c b/exa/exa_render.c index 6df2a23c8..38e2a04bd 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -696,8 +696,6 @@ exaComposite(CARD8 op, pMask->repeat = 0; if (pExaScr->info->PrepareComposite && - (!pSrc->repeat || pSrc->repeatType == RepeatNormal) && - (!pMask || !pMask->repeat || pMask->repeatType == RepeatNormal) && !pSrc->alphaMap && (!pMask || !pMask->alphaMap) && !pDst->alphaMap) { Bool isSrcSolid; From 08afc70513e5496cc5cd8b76c8658c4292119e4b Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 28 Feb 2008 10:45:41 +1000 Subject: [PATCH 107/112] quirks: another LPL panel with the cm/mm wrong --- hw/xfree86/modes/xf86EdidModes.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c index b865727ef..c366a3839 100644 --- a/hw/xfree86/modes/xf86EdidModes.c +++ b/hw/xfree86/modes/xf86EdidModes.c @@ -110,8 +110,9 @@ static Bool quirk_detailed_h_in_cm (int scrnIndex, xf86MonPtr DDC) { /* Bug #10304: "LGPhilipsLCD LP154W01-A5" */ /* Bug #12784: "LGPhilipsLCD LP154W01-TLA2" */ + /* Red Hat #435216 "LGPhilipsLCD LP154W01-TLAE" */ if (memcmp (DDC->vendor.name, "LPL", 4) == 0 && - DDC->vendor.prod_id == 0) + (DDC->vendor.prod_id == 0 || DDC->vendor.prod_id == 0x2a00) return TRUE; /* Bug #11603: Funai Electronics PM36B */ From 3b1df47bd400be9dca34b5e5d1ac2b117f8cc4ed Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Wed, 27 Feb 2008 22:28:54 -0500 Subject: [PATCH 108/112] XACE: Require "manage" permission for XKBSetNames. --- xkb/xkb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xkb/xkb.c b/xkb/xkb.c index b0d2f0d3d..07f57a73b 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -3545,7 +3545,7 @@ ProcXkbSetNames(ClientPtr client) if (!(client->xkbClientFlags&_XkbClientInitialized)) return BadAccess; - CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixUnknownAccess); + CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess); CHK_MASK_LEGAL(0x01,stuff->which,XkbAllNamesMask); xkb = dev->key->xkbInfo->desc; From e40cc5305bec656108077ab13fcc8e6e82b3707a Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Wed, 27 Feb 2008 22:29:15 -0500 Subject: [PATCH 109/112] xselinux: Don't throw BadAccess if DixUnknownAccess is passed in to a hook. The avc will still appear, however, so that the callsite can be fixed. --- Xext/xselinux.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Xext/xselinux.c b/Xext/xselinux.c index d3fe86b3a..6862bb304 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -312,6 +312,8 @@ SELinuxDoCheck(SELinuxSubjectRec *subj, SELinuxObjectRec *obj, if (avc_has_perm(subj->sid, obj->sid, class, mode, &subj->aeref, auditdata) < 0) { + if (mode == DixUnknownAccess) + return Success; /* DixUnknownAccess requests OK ... for now */ if (errno == EACCES) return BadAccess; ErrorF("ServerPerm: unexpected error %d\n", errno); From f616735f17a681e3add866bf199540327c322490 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Wed, 27 Feb 2008 22:46:14 -0500 Subject: [PATCH 110/112] xselinux: Prefix a few remaining error messages with "SELinux". --- Xext/xselinux.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Xext/xselinux.c b/Xext/xselinux.c index 6862bb304..98e1ec563 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -316,7 +316,7 @@ SELinuxDoCheck(SELinuxSubjectRec *subj, SELinuxObjectRec *obj, return Success; /* DixUnknownAccess requests OK ... for now */ if (errno == EACCES) return BadAccess; - ErrorF("ServerPerm: unexpected error %d\n", errno); + ErrorF("SELinux: avc_has_perm: unexpected error %d\n", errno); return BadValue; } @@ -348,7 +348,7 @@ SELinuxLabelClient(ClientPtr client) /* For local clients, can get context from the socket */ if (getpeercon(fd, &ctx) < 0) - FatalError("Client %d: couldn't get context from socket\n", + FatalError("SELinux: client %d: couldn't get context from socket\n", client->index); /* Try and determine the client's executable name */ @@ -375,13 +375,12 @@ SELinuxLabelClient(ClientPtr client) } else /* For remote clients, need to use a default context */ if (selabel_lookup(label_hnd, &ctx, NULL, SELABEL_X_CLIENT) < 0) - FatalError("Client %d: couldn't get default remote context\n", - client->index); + FatalError("SELinux: failed to look up remote-client context\n"); finish: /* Get a SID from the context */ if (avc_context_to_sid(ctx, &subj->sid) < 0) - FatalError("Client %d: context_to_sid(%s) failed\n", + FatalError("SELinux: client %d: context_to_sid(%s) failed\n", client->index, ctx); sidget(subj->sid); @@ -410,11 +409,11 @@ SELinuxLabelInitial(void) /* Use the context of the X server process for the serverClient */ if (getcon(&ctx) < 0) - FatalError("Couldn't get context of X server process\n"); + FatalError("SELinux: couldn't get context of X server process\n"); /* Get a SID from the context */ if (avc_context_to_sid(ctx, &subj->sid) < 0) - FatalError("serverClient: context_to_sid(%s) failed\n", ctx); + FatalError("SELinux: serverClient: context_to_sid(%s) failed\n", ctx); sidget(subj->sid); obj->sid = subj->sid; From aebd9dc252449747416b23c740a550d914275399 Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Thu, 28 Feb 2008 01:22:31 -0300 Subject: [PATCH 111/112] Oops, there's one more parenthesis. --- hw/xfree86/modes/xf86EdidModes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c index c366a3839..a1bdb0b99 100644 --- a/hw/xfree86/modes/xf86EdidModes.c +++ b/hw/xfree86/modes/xf86EdidModes.c @@ -112,7 +112,7 @@ static Bool quirk_detailed_h_in_cm (int scrnIndex, xf86MonPtr DDC) /* Bug #12784: "LGPhilipsLCD LP154W01-TLA2" */ /* Red Hat #435216 "LGPhilipsLCD LP154W01-TLAE" */ if (memcmp (DDC->vendor.name, "LPL", 4) == 0 && - (DDC->vendor.prod_id == 0 || DDC->vendor.prod_id == 0x2a00) + (DDC->vendor.prod_id == 0 || DDC->vendor.prod_id == 0x2a00)) return TRUE; /* Bug #11603: Funai Electronics PM36B */ From 453661a9e193a511cf5e54e6d330454163817316 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 27 Feb 2008 20:43:50 +1030 Subject: [PATCH 112/112] Xi: swap the control attached to a ChangeDeviceControl request. Bug #14170 Just swapping the request's data isn't enough, we need to swap the actual control as well. X.Org Bug 14170 --- Xi/chgdctl.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/Xi/chgdctl.c b/Xi/chgdctl.c index 30174f496..89410d68f 100644 --- a/Xi/chgdctl.c +++ b/Xi/chgdctl.c @@ -77,11 +77,46 @@ int SProcXChangeDeviceControl(ClientPtr client) { char n; + xDeviceCtl *ctl; + xDeviceAbsCalibCtl *calib; + xDeviceAbsAreaCtl *area; REQUEST(xChangeDeviceControlReq); swaps(&stuff->length, n); REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq); swaps(&stuff->control, n); + ctl = (xDeviceCtl*)&stuff[1]; + swaps(&ctl->control, n); + swaps(&ctl->length, n); + switch(stuff->control) { + case DEVICE_ABS_CALIB: + calib = (xDeviceAbsCalibCtl*)ctl; + swaps(&calib->length, n); + swapl(&calib->min_x, n); + swapl(&calib->max_x, n); + swapl(&calib->min_y, n); + swapl(&calib->max_y, n); + swapl(&calib->flip_x, n); + swapl(&calib->flip_y, n); + swapl(&calib->rotation, n); + swapl(&calib->button_threshold, n); + break; + case DEVICE_ABS_AREA: + area = (xDeviceAbsAreaCtl*)ctl; + swapl(&area->offset_x, n); + swapl(&area->offset_y, n); + swapl(&area->width, n); + swapl(&area->height, n); + swapl(&area->screen, n); + swapl(&area->following, n); + break; + case DEVICE_CORE: + case DEVICE_ENABLE: + case DEVICE_RESOLUTION: + /* hmm. beer. *drool* */ + break; + + } return (ProcXChangeDeviceControl(client)); }