Merge branch 'input-fixes' of git://people.freedesktop.org/~cndougla/xserver into for-keith

This commit is contained in:
Peter Hutterer 2012-04-19 17:03:54 +10:00
commit 51a8d8dd19
6 changed files with 670 additions and 433 deletions

View File

@ -1234,14 +1234,6 @@ TouchRejected(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, XID resource,
} }
} }
/* If there are no other listeners left, and the touchpoint is pending
* finish, then we can just kill it now. */
if (ti->num_listeners == 1 && ti->pending_finish) {
TouchEndTouch(sourcedev, ti);
CheckOldestTouch(sourcedev);
return;
}
/* Remove the resource from the listener list, updating /* Remove the resource from the listener list, updating
* ti->num_listeners, as well as ti->num_grabs if it was a grab. */ * ti->num_listeners, as well as ti->num_grabs if it was a grab. */
if (TouchRemoveListener(ti, resource)) { if (TouchRemoveListener(ti, resource)) {
@ -1254,6 +1246,8 @@ TouchRejected(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, XID resource,
* the TouchOwnership or TouchBegin event to the new owner. */ * the TouchOwnership or TouchBegin event to the new owner. */
if (ev && ti->num_listeners > 0 && was_owner) if (ev && ti->num_listeners > 0 && was_owner)
TouchPuntToNextOwner(sourcedev, ti, ev); TouchPuntToNextOwner(sourcedev, ti, ev);
else if (ti->num_listeners == 0)
TouchEndTouch(sourcedev, ti);
CheckOldestTouch(sourcedev); CheckOldestTouch(sourcedev);
} }
@ -1273,9 +1267,18 @@ ProcessTouchOwnershipEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
if (ev->reason == XIRejectTouch) if (ev->reason == XIRejectTouch)
TouchRejected(dev, ti, ev->resource, ev); TouchRejected(dev, ti, ev->resource, ev);
else if (ev->reason == XIAcceptTouch) { else if (ev->reason == XIAcceptTouch) {
int i;
/* Go through the motions of ending the touch if the listener has
* already seen the end. This ensures that the touch record is ended in
* the server. */
if (ti->listeners[0].state == LISTENER_HAS_END)
EmitTouchEnd(dev, ti, TOUCH_ACCEPT, ti->listeners[0].listener);
/* The touch owner has accepted the touch. Send TouchEnd events to /* The touch owner has accepted the touch. Send TouchEnd events to
* everyone else, and truncate the list of listeners. */ * everyone else, and truncate the list of listeners. */
EmitTouchEnd(dev, ti, TOUCH_ACCEPT, 0); for (i = 1; i < ti->num_listeners; i++)
EmitTouchEnd(dev, ti, TOUCH_ACCEPT, ti->listeners[i].listener);
while (ti->num_listeners > 1) while (ti->num_listeners > 1)
TouchRemoveListener(ti, ti->listeners[1].listener); TouchRemoveListener(ti, ti->listeners[1].listener);
@ -1327,6 +1330,7 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti,
{ {
int rc; int rc;
InputClients *iclients = NULL; InputClients *iclients = NULL;
*mask = NULL;
if (listener->type == LISTENER_GRAB || if (listener->type == LISTENER_GRAB ||
listener->type == LISTENER_POINTER_GRAB) { listener->type == LISTENER_POINTER_GRAB) {
@ -1377,6 +1381,9 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti,
BUG_WARN(!iclients); BUG_WARN(!iclients);
if (!iclients) if (!iclients)
return FALSE; return FALSE;
*mask = iclients->xi2mask;
*client = rClient(iclients);
} }
else if (listener->level == XI) { else if (listener->level == XI) {
int xi_type = GetXIType(TouchGetPointerEventType(ev)); int xi_type = GetXIType(TouchGetPointerEventType(ev));
@ -1389,21 +1396,24 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti,
BUG_WARN(!iclients); BUG_WARN(!iclients);
if (!iclients) if (!iclients)
return FALSE; return FALSE;
*client = rClient(iclients);
} }
else { else {
int coretype = GetCoreType(TouchGetPointerEventType(ev)); int coretype = GetCoreType(TouchGetPointerEventType(ev));
Mask core_filter = event_get_filter_from_type(dev, coretype); Mask core_filter = event_get_filter_from_type(dev, coretype);
OtherClients *oclients;
/* all others */ /* all others */
nt_list_for_each_entry(iclients, nt_list_for_each_entry(oclients,
(InputClients *) wOtherClients(*win), next) (OtherClients *) wOtherClients(*win), next)
if (iclients->mask[XIAllDevices] & core_filter) if (oclients->mask & core_filter)
break; break;
/* if owner selected, iclients is NULL */
/* if owner selected, oclients is NULL */
*client = oclients ? rClient(oclients) : wClient(*win);
} }
*client = iclients ? rClient(iclients) : wClient(*win);
*mask = iclients ? iclients->xi2mask : NULL;
*grab = NULL; *grab = NULL;
} }
@ -1459,7 +1469,14 @@ DeliverTouchEmulatedEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
if (!deliveries) if (!deliveries)
DeliverOneGrabbedEvent(ptrev, dev, grab->grabtype); DeliverOneGrabbedEvent(ptrev, dev, grab->grabtype);
/* We must accept the touch sequence once a pointer listener has
* received one event past ButtonPress. */
if (deliveries && ev->any.type != ET_TouchBegin &&
!(ev->device_event.flags & TOUCH_CLIENT_ID))
TouchListenerAcceptReject(dev, ti, 0, XIAcceptTouch);
if (ev->any.type == ET_TouchEnd && if (ev->any.type == ET_TouchEnd &&
!(ev->device_event.flags & TOUCH_CLIENT_ID) &&
!dev->button->buttonsDown && !dev->button->buttonsDown &&
dev->deviceGrab.fromPassiveGrab && GrabIsPointerGrab(grab)) { dev->deviceGrab.fromPassiveGrab && GrabIsPointerGrab(grab)) {
(*dev->deviceGrab.DeactivateGrab) (dev); (*dev->deviceGrab.DeactivateGrab) (dev);
@ -1580,6 +1597,9 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
else else
touchid = ev->device_event.touchid; touchid = ev->device_event.touchid;
if (emulate_pointer)
UpdateDeviceState(dev, &ev->device_event);
if (type == ET_TouchBegin) { if (type == ET_TouchBegin) {
ti = TouchBeginTouch(dev, ev->device_event.sourceid, touchid, ti = TouchBeginTouch(dev, ev->device_event.sourceid, touchid,
emulate_pointer); emulate_pointer);
@ -1587,6 +1607,34 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
else else
ti = TouchFindByClientID(dev, touchid); ti = TouchFindByClientID(dev, touchid);
/* Under the following circumstances we create a new touch record for an
* existing touch:
*
* - The touch may be pointer emulated
* - An explicit grab is active on the device
* - The grab is a pointer grab
*
* This allows for an explicit grab to receive pointer events for an already
* active touch.
*/
if (!ti && type != ET_TouchBegin && emulate_pointer &&
dev->deviceGrab.grab && !dev->deviceGrab.fromPassiveGrab &&
(dev->deviceGrab.grab->grabtype == CORE ||
dev->deviceGrab.grab->grabtype == XI ||
!xi2mask_isset(dev->deviceGrab.grab->xi2mask, dev, XI_TouchBegin))) {
ti = TouchBeginTouch(dev, ev->device_event.sourceid, touchid,
emulate_pointer);
if (!ti) {
DebugF("[Xi] %s: Failed to create new dix record for explicitly "
"grabbed touchpoint %d\n",
dev->name, type, touchid);
return;
}
TouchBuildSprite(dev, ti, ev);
TouchSetupListeners(dev, ti, ev);
}
if (!ti) { if (!ti) {
DebugF("[Xi] %s: Failed to get event %d for touchpoint %d\n", DebugF("[Xi] %s: Failed to get event %d for touchpoint %d\n",
dev->name, type, touchid); dev->name, type, touchid);
@ -1602,9 +1650,11 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
CheckMotion(&ev->device_event, dev); CheckMotion(&ev->device_event, dev);
/* Make sure we have a valid window trace for event delivery; must be /* Make sure we have a valid window trace for event delivery; must be
* called after event type mutation. */ * called after event type mutation. Touch end events are always processed
* in order to end touch records. */
/* FIXME: check this */ /* FIXME: check this */
if (!TouchEnsureSprite(dev, ti, ev)) if ((type == ET_TouchBegin && !TouchBuildSprite(dev, ti, ev)) ||
(type != ET_TouchEnd && ti->sprite.spriteTraceGood == 0))
return; return;
/* TouchOwnership events are handled separately from the rest, as they /* TouchOwnership events are handled separately from the rest, as they
@ -1834,6 +1884,7 @@ DeliverTouchEndEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev,
if (ti->num_listeners > 1) { if (ti->num_listeners > 1) {
ev->any.type = ET_TouchUpdate; ev->any.type = ET_TouchUpdate;
ev->device_event.flags |= TOUCH_PENDING_END; ev->device_event.flags |= TOUCH_PENDING_END;
if (!(ev->device_event.flags & TOUCH_CLIENT_ID))
ti->pending_finish = TRUE; ti->pending_finish = TRUE;
} }
@ -1948,9 +1999,6 @@ DeliverTouchEvents(DeviceIntPtr dev, TouchPointInfoPtr ti,
DeliverTouchEvent(dev, ti, ev, listener, client, win, grab, mask); DeliverTouchEvent(dev, ti, ev, listener, client, win, grab, mask);
} }
if (ti->emulate_pointer)
UpdateDeviceState(dev, &ev->device_event);
} }
int int

View File

@ -214,7 +214,7 @@ UpdateCurrentTimeIf(void)
systime.milliseconds = GetTimeInMillis(); systime.milliseconds = GetTimeInMillis();
if (systime.milliseconds < currentTime.milliseconds) if (systime.milliseconds < currentTime.milliseconds)
systime.months++; systime.months++;
if (*checkForInput[0] == *checkForInput[1]) if (CompareTimeStamps(systime, currentTime) == LATER)
currentTime = systime; currentTime = systime;
} }
@ -393,6 +393,9 @@ Dispatch(void)
} }
/* now, finally, deal with client requests */ /* now, finally, deal with client requests */
/* Update currentTime so request time checks, such as for input
* device grabs, are calculated correctly */
UpdateCurrentTimeIf();
result = ReadRequestFromClient(client); result = ReadRequestFromClient(client);
if (result <= 0) { if (result <= 0) {
if (result < 0) if (result < 0)

View File

@ -1273,18 +1273,11 @@ ComputeFreezes(void)
event->root_x, event->root_y); event->root_x, event->root_y);
if (!CheckDeviceGrabs(replayDev, event, syncEvents.replayWin)) { if (!CheckDeviceGrabs(replayDev, event, syncEvents.replayWin)) {
if (IsTouchEvent((InternalEvent *) event)) { if (IsTouchEvent((InternalEvent *) event)) {
InternalEvent *events = InitEventList(GetMaximumEventsNum());
int i, nev;
TouchPointInfoPtr ti = TouchPointInfoPtr ti =
TouchFindByClientID(replayDev, event->touchid); TouchFindByClientID(replayDev, event->touchid);
BUG_WARN(!ti); BUG_WARN(!ti);
nev =
GetTouchOwnershipEvents(events, replayDev, ti, TouchListenerAcceptReject(replayDev, ti, 0, XIRejectTouch);
XIRejectTouch,
ti->listeners[0].listener, 0);
for (i = 0; i < nev; i++)
mieqProcessDeviceEvent(replayDev, events + i, NULL);
ProcessInputEvents();
} }
else if (replayDev->focus && else if (replayDev->focus &&
!IsPointerEvent((InternalEvent *) event)) !IsPointerEvent((InternalEvent *) event))
@ -1415,6 +1408,38 @@ ReattachToOldMaster(DeviceIntPtr dev)
} }
} }
/**
* Update touch records when an explicit grab is activated. Any touches owned by
* the grabbing client are updated so the listener state reflects the new grab.
*/
static void
UpdateTouchesForGrab(DeviceIntPtr mouse)
{
int i;
if (!mouse->touch || mouse->deviceGrab.fromPassiveGrab)
return;
for (i = 0; i < mouse->touch->num_touches; i++) {
TouchPointInfoPtr ti = mouse->touch->touches + i;
GrabPtr grab = mouse->deviceGrab.grab;
if (ti->active &&
CLIENT_BITS(ti->listeners[0].listener) == grab->resource) {
ti->listeners[0].listener = grab->resource;
ti->listeners[0].level = grab->grabtype;
ti->listeners[0].state = LISTENER_IS_OWNER;
ti->listeners[0].window = grab->window;
if (grab->grabtype == CORE || grab->grabtype == XI ||
!xi2mask_isset(grab->xi2mask, mouse, XI_TouchBegin))
ti->listeners[0].type = LISTENER_POINTER_GRAB;
else
ti->listeners[0].type = LISTENER_GRAB;
}
}
}
/** /**
* Activate a pointer grab on the given device. A pointer grab will cause all * Activate a pointer grab on the given device. A pointer grab will cause all
* core pointer events of this device to be delivered to the grabbing client only. * core pointer events of this device to be delivered to the grabbing client only.
@ -1464,6 +1489,7 @@ ActivatePointerGrab(DeviceIntPtr mouse, GrabPtr grab,
grabinfo->fromPassiveGrab = isPassive; grabinfo->fromPassiveGrab = isPassive;
grabinfo->implicitGrab = autoGrab & ImplicitGrabMask; grabinfo->implicitGrab = autoGrab & ImplicitGrabMask;
PostNewCursor(mouse); PostNewCursor(mouse);
UpdateTouchesForGrab(mouse);
CheckGrabForSyncs(mouse, (Bool) grab->pointerMode, CheckGrabForSyncs(mouse, (Bool) grab->pointerMode,
(Bool) grab->keyboardMode); (Bool) grab->keyboardMode);
} }
@ -1480,6 +1506,8 @@ DeactivatePointerGrab(DeviceIntPtr mouse)
DeviceIntPtr dev; DeviceIntPtr dev;
Bool wasImplicit = (mouse->deviceGrab.fromPassiveGrab && Bool wasImplicit = (mouse->deviceGrab.fromPassiveGrab &&
mouse->deviceGrab.implicitGrab); mouse->deviceGrab.implicitGrab);
XID grab_resource = grab->resource;
int i;
TouchRemovePointerGrab(mouse); TouchRemovePointerGrab(mouse);
@ -1504,6 +1532,15 @@ DeactivatePointerGrab(DeviceIntPtr mouse)
ReattachToOldMaster(mouse); ReattachToOldMaster(mouse);
ComputeFreezes(); ComputeFreezes();
/* If an explicit grab was deactivated, we must remove it from the head of
* all the touches' listener lists. */
for (i = 0; mouse->touch && i < mouse->touch->num_touches; i++) {
TouchPointInfoPtr ti = mouse->touch->touches + i;
if (ti->active && TouchResourceIsOwner(ti, grab_resource))
TouchListenerAcceptReject(mouse, ti, 0, XIRejectTouch);
}
} }
/** /**

View File

@ -364,14 +364,6 @@ TouchEndTouch(DeviceIntPtr dev, TouchPointInfoPtr ti)
{ {
if (ti->emulate_pointer) { if (ti->emulate_pointer) {
GrabPtr grab; GrabPtr grab;
DeviceEvent ev;
memset(&ev, 0, sizeof(ev));
ev.type = ET_TouchEnd;
ev.detail.button = 1;
ev.touchid = ti->client_id;
ev.flags = TOUCH_POINTER_EMULATED | TOUCH_END;
UpdateDeviceState(dev, &ev);
if ((grab = dev->deviceGrab.grab)) { if ((grab = dev->deviceGrab.grab)) {
if (dev->deviceGrab.fromPassiveGrab && if (dev->deviceGrab.fromPassiveGrab &&
@ -482,10 +474,22 @@ TouchEventHistoryReplay(TouchPointInfoPtr ti, DeviceIntPtr dev, XID resource)
flags = TOUCH_CLIENT_ID | TOUCH_REPLAYING; flags = TOUCH_CLIENT_ID | TOUCH_REPLAYING;
if (ti->emulate_pointer) if (ti->emulate_pointer)
flags |= TOUCH_POINTER_EMULATED; flags |= TOUCH_POINTER_EMULATED;
/* send fake begin event to next owner */ /* Generate events based on a fake touch begin event to get DCCE events if
* needed */
/* FIXME: This needs to be cleaned up */
nev = GetTouchEvents(tel, dev, ti->client_id, XI_TouchBegin, flags, mask); nev = GetTouchEvents(tel, dev, ti->client_id, XI_TouchBegin, flags, mask);
for (i = 0; i < nev; i++) for (i = 0; i < nev; i++) {
/* Send saved touch begin event */
if (tel[i].any.type == ET_TouchBegin) {
DeviceEvent *ev = &ti->history[0];
ev->flags |= TOUCH_REPLAYING;
DeliverTouchEvents(dev, ti, (InternalEvent*)ev, resource);
}
else {/* Send DCCE event */
tel[i].any.time = ti->history[0].time;
DeliverTouchEvents(dev, ti, tel + i, resource); DeliverTouchEvents(dev, ti, tel + i, resource);
}
}
valuator_mask_free(&mask); valuator_mask_free(&mask);
FreeEventList(tel, GetMaximumEventsNum()); FreeEventList(tel, GetMaximumEventsNum());
@ -542,22 +546,12 @@ TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite)
* TouchBegin events. * TouchBegin events.
*/ */
Bool Bool
TouchEnsureSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, TouchBuildSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
InternalEvent *ev) InternalEvent *ev)
{ {
TouchClassPtr t = sourcedev->touch; TouchClassPtr t = sourcedev->touch;
SpritePtr sprite = &ti->sprite; SpritePtr sprite = &ti->sprite;
/* We may not have a sprite if there are no applicable grabs or
* event selections, or if they've disappeared, or if all the grab
* owners have rejected the touch. Don't bother delivering motion
* events if not, but TouchEnd events still need to be processed so
* we can call FinishTouchPoint and release it for later use. */
if (ev->any.type == ET_TouchEnd)
return TRUE;
else if (ev->any.type != ET_TouchBegin)
return (sprite->spriteTraceGood > 0);
if (t->mode == XIDirectTouch) { if (t->mode == XIDirectTouch) {
/* Focus immediately under the touchpoint in direct touch mode. /* Focus immediately under the touchpoint in direct touch mode.
* XXX: Do we need to handle crossing screens here? */ * XXX: Do we need to handle crossing screens here? */
@ -821,6 +815,7 @@ TouchAddRegularListener(DeviceIntPtr dev, TouchPointInfoPtr ti,
if (mask & EVENT_CORE_MASK) { if (mask & EVENT_CORE_MASK) {
int coretype = GetCoreType(TouchGetPointerEventType(ev)); int coretype = GetCoreType(TouchGetPointerEventType(ev));
Mask core_filter = event_get_filter_from_type(dev, coretype); Mask core_filter = event_get_filter_from_type(dev, coretype);
OtherClients *oclients;
/* window owner */ /* window owner */
if (IsMaster(dev) && (win->eventMask & core_filter)) { if (IsMaster(dev) && (win->eventMask & core_filter)) {
@ -832,13 +827,12 @@ TouchAddRegularListener(DeviceIntPtr dev, TouchPointInfoPtr ti,
} }
/* all others */ /* all others */
nt_list_for_each_entry(iclients, (InputClients *) wOtherClients(win), nt_list_for_each_entry(oclients, wOtherClients(win), next) {
next) { if (!(oclients->mask & core_filter))
if (!(iclients->mask[XIAllDevices] & core_filter))
continue; continue;
TouchEventHistoryAllocate(ti); TouchEventHistoryAllocate(ti);
TouchAddListener(ti, iclients->resource, CORE, TouchAddListener(ti, oclients->resource, CORE,
type, LISTENER_AWAITING_BEGIN, win); type, LISTENER_AWAITING_BEGIN, win);
return TRUE; return TRUE;
} }
@ -874,6 +868,11 @@ TouchSetupListeners(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev)
if (dev->deviceGrab.grab) if (dev->deviceGrab.grab)
TouchAddActiveGrabListener(dev, ti, ev, dev->deviceGrab.grab); TouchAddActiveGrabListener(dev, ti, ev, dev->deviceGrab.grab);
/* We set up an active touch listener for existing touches, but not any
* passive grab or regular listeners. */
if (ev->any.type != ET_TouchBegin)
return;
/* First, find all grabbing clients from the root window down /* First, find all grabbing clients from the root window down
* to the deepest child window. */ * to the deepest child window. */
for (i = 0; i < sprite->spriteTraceGood; i++) { for (i = 0; i < sprite->spriteTraceGood; i++) {
@ -959,16 +958,49 @@ TouchListenerGone(XID resource)
FreeEventList(events, GetMaximumEventsNum()); FreeEventList(events, GetMaximumEventsNum());
} }
int
TouchListenerAcceptReject(DeviceIntPtr dev, TouchPointInfoPtr ti, int listener,
int mode)
{
InternalEvent *events;
int nev;
int i;
if (listener > 0) {
if (mode == XIRejectTouch)
TouchRejected(dev, ti, ti->listeners[listener].listener, NULL);
else
ti->listeners[listener].state = LISTENER_EARLY_ACCEPT;
return Success;
}
events = InitEventList(GetMaximumEventsNum());
if (!events) {
BUG_WARN_MSG(TRUE, "Failed to allocate touch ownership events\n");
return BadAlloc;
}
nev = GetTouchOwnershipEvents(events, dev, ti, mode,
ti->listeners[0].listener, 0);
BUG_WARN_MSG(nev == 0, "Failed to get touch ownership events\n");
for (i = 0; i < nev; i++)
mieqProcessDeviceEvent(dev, events + i, NULL);
ProcessInputEvents();
FreeEventList(events, GetMaximumEventsNum());
return nev ? Success : BadMatch;
}
int int
TouchAcceptReject(ClientPtr client, DeviceIntPtr dev, int mode, TouchAcceptReject(ClientPtr client, DeviceIntPtr dev, int mode,
uint32_t touchid, Window grab_window, XID *error) uint32_t touchid, Window grab_window, XID *error)
{ {
TouchPointInfoPtr ti; TouchPointInfoPtr ti;
int nev, i; int i;
InternalEvent *events = InitEventList(GetMaximumEventsNum());
if (!events)
return BadAlloc;
if (!dev->touch) { if (!dev->touch) {
*error = dev->id; *error = dev->id;
@ -989,24 +1021,5 @@ TouchAcceptReject(ClientPtr client, DeviceIntPtr dev, int mode,
if (i == ti->num_listeners) if (i == ti->num_listeners)
return BadAccess; return BadAccess;
if (i > 0) { return TouchListenerAcceptReject(dev, ti, i, mode);
if (mode == XIRejectTouch)
TouchRejected(dev, ti, ti->listeners[i].listener, NULL);
else
ti->listeners[i].state = LISTENER_EARLY_ACCEPT;
return Success;
}
nev = GetTouchOwnershipEvents(events, dev, ti, mode,
ti->listeners[0].listener, 0);
if (nev == 0)
return BadAlloc;
for (i = 0; i < nev; i++)
mieqProcessDeviceEvent(dev, events + i, NULL);
ProcessInputEvents();
FreeEventList(events, GetMaximumEventsNum());
return Success;
} }

View File

@ -75,8 +75,7 @@ static unsigned char XF86VidModeReqCode = 0;
#ifdef XF86VIDMODE_EVENTS #ifdef XF86VIDMODE_EVENTS
static int XF86VidModeEventBase = 0; static int XF86VidModeEventBase = 0;
static void SXF86VidModeNotifyEvent(); static void SXF86VidModeNotifyEvent(xXF86VidModeNotifyEvent * /* from */ , xXF86VidModeNotifyEvent * /* to */
xXF86VidModeNotifyEvent * /* from */ , xXF86VidModeNotifyEvent * /* to */
); );
static RESTYPE EventType; /* resource type for event masks */ static RESTYPE EventType; /* resource type for event masks */
@ -117,7 +116,8 @@ static DevPrivateKeyRec ScreenPrivateKeyRec;
#define DEBUG_P(x) /**/ #define DEBUG_P(x) /**/
#endif #endif
static int static int
ClientMajorVersion(ClientPtr client) { ClientMajorVersion(ClientPtr client)
{
VidModePrivPtr pPriv; VidModePrivPtr pPriv;
pPriv = VM_GETPRIV(client); pPriv = VM_GETPRIV(client);
@ -126,6 +126,7 @@ static DevPrivateKeyRec ScreenPrivateKeyRec;
else else
return pPriv->major; return pPriv->major;
} }
#ifdef XF86VIDMODE_EVENTS #ifdef XF86VIDMODE_EVENTS
static void static void
CheckScreenPrivate(pScreen) CheckScreenPrivate(pScreen)
@ -142,7 +143,8 @@ ScreenPtr
} }
} }
static XF86VidModeScreenPrivatePtr MakeScreenPrivate(pScreen) static XF86VidModeScreenPrivatePtr
MakeScreenPrivate(pScreen)
ScreenPtr ScreenPtr
pScreen; pScreen;
{ {
@ -160,7 +162,8 @@ ScreenPtr
} }
static unsigned long static unsigned long
getEventMask(ScreenPtr pScreen, ClientPtr client) { getEventMask(ScreenPtr pScreen, ClientPtr client)
{
SetupScreen(pScreen); SetupScreen(pScreen);
XF86VidModeEventPtr pEv; XF86VidModeEventPtr pEv;
@ -170,8 +173,11 @@ static unsigned long
if (pEv->client == client) if (pEv->client == client)
return pEv->mask; return pEv->mask;
return 0; return 0;
} static Bool }
setEventMask(ScreenPtr pScreen, ClientPtr client, unsigned long mask) {
static Bool
setEventMask(ScreenPtr pScreen, ClientPtr client, unsigned long mask)
{
SetupScreen(pScreen); SetupScreen(pScreen);
XF86VidModeEventPtr pEv, *pPrev; XF86VidModeEventPtr pEv, *pPrev;
@ -181,7 +187,8 @@ static unsigned long
pPriv = MakeScreenPrivate(pScreen); pPriv = MakeScreenPrivate(pScreen);
if (!pPriv) if (!pPriv)
return FALSE; return FALSE;
} for (pPrev = &pPriv->events; pEv = *pPrev; pPrev = &pEv->next) }
for (pPrev = &pPriv->events; pEv = *pPrev; pPrev = &pEv->next)
if (pEv->client == client) if (pEv->client == client)
break; break;
if (mask == 0) { if (mask == 0) {
@ -208,9 +215,11 @@ static unsigned long
} }
static int static int
XF86VidModeFreeEvents(pointer value, XID id) { XF86VidModeFreeEvents(pointer value, XID id)
{
XF86VidModeEventPtr pOld = (XF86VidModeEventPtr) value; XF86VidModeEventPtr pOld = (XF86VidModeEventPtr) value;
ScreenPtr pScreen = pOld->screen; ScreenPtr pScreen = pOld->screen;
SetupScreen(pScreen); SetupScreen(pScreen);
XF86VidModeEventPtr pEv, *pPrev; XF86VidModeEventPtr pEv, *pPrev;
@ -225,8 +234,11 @@ static int
free(pEv); free(pEv);
CheckScreenPrivate(pScreen); CheckScreenPrivate(pScreen);
return TRUE; return TRUE;
} static void }
SendXF86VidModeNotify(ScreenPtr pScreen, int state, Bool forced) {
static void
SendXF86VidModeNotify(ScreenPtr pScreen, int state, Bool forced)
{
XF86VidModeScreenPrivatePtr pPriv; XF86VidModeScreenPrivatePtr pPriv;
XF86VidModeEventPtr pEv; XF86VidModeEventPtr pEv;
unsigned long mask; unsigned long mask;
@ -251,8 +263,10 @@ static int
ev.forced = forced; ev.forced = forced;
WriteEventsToClient(pEv->client, 1, (xEvent *) &ev); WriteEventsToClient(pEv->client, 1, (xEvent *) &ev);
}} static void }} static void
SXF86VidModeNotifyEvent(xXF86VidModeNotifyEvent * from, SXF86VidModeNotifyEvent(xXF86VidModeNotifyEvent * from,
xXF86VidModeNotifyEvent * to) { xXF86VidModeNotifyEvent * to)
{
to->type = from->type; to->type = from->type;
to->state = from->state; to->state = from->state;
cpswaps(from->sequenceNumber, to->sequenceNumber); cpswaps(from->sequenceNumber, to->sequenceNumber);
@ -264,7 +278,8 @@ static int
#endif #endif
static int static int
ProcXF86VidModeQueryVersion(ClientPtr client) { ProcXF86VidModeQueryVersion(ClientPtr client)
{
xXF86VidModeQueryVersionReply rep; xXF86VidModeQueryVersionReply rep;
DEBUG_P("XF86VidModeQueryVersion"); DEBUG_P("XF86VidModeQueryVersion");
@ -280,13 +295,14 @@ static int
swapl(&rep.length); swapl(&rep.length);
swaps(&rep.majorVersion); swaps(&rep.majorVersion);
swaps(&rep.minorVersion); swaps(&rep.minorVersion);
} WriteToClient(client, sizeof(xXF86VidModeQueryVersionReply), }
(char *) &rep); WriteToClient(client, sizeof(xXF86VidModeQueryVersionReply), (char *) &rep);
return Success; return Success;
} }
static int static int
ProcXF86VidModeGetModeLine(ClientPtr client) { ProcXF86VidModeGetModeLine(ClientPtr client)
{
REQUEST(xXF86VidModeGetModeLineReq); REQUEST(xXF86VidModeGetModeLineReq);
xXF86VidModeGetModeLineReply rep; xXF86VidModeGetModeLineReply rep;
xXF86OldVidModeGetModeLineReply oldrep; xXF86OldVidModeGetModeLineReply oldrep;
@ -386,7 +402,8 @@ static int
} }
static int static int
ProcXF86VidModeGetAllModeLines(ClientPtr client) { ProcXF86VidModeGetAllModeLines(ClientPtr client)
{
REQUEST(xXF86VidModeGetAllModeLinesReq); REQUEST(xXF86VidModeGetAllModeLinesReq);
xXF86VidModeGetAllModeLinesReply rep; xXF86VidModeGetAllModeLinesReply rep;
xXF86VidModeModeInfo mdinf; xXF86VidModeModeInfo mdinf;
@ -425,7 +442,8 @@ static int
swaps(&rep.sequenceNumber); swaps(&rep.sequenceNumber);
swapl(&rep.length); swapl(&rep.length);
swapl(&rep.modecount); swapl(&rep.modecount);
} WriteToClient(client, sizeof(xXF86VidModeGetAllModeLinesReply), }
WriteToClient(client, sizeof(xXF86VidModeGetAllModeLinesReply),
(char *) &rep); (char *) &rep);
do { do {
@ -492,7 +510,8 @@ static int
&& VidModeGetModeValue(mode, VIDMODE_FLAGS) == stuff->flags ) && VidModeGetModeValue(mode, VIDMODE_FLAGS) == stuff->flags )
static int static int
ProcXF86VidModeAddModeLine(ClientPtr client) { ProcXF86VidModeAddModeLine(ClientPtr client)
{
REQUEST(xXF86VidModeAddModeLineReq); REQUEST(xXF86VidModeAddModeLineReq);
xXF86OldVidModeAddModeLineReq *oldstuff = xXF86OldVidModeAddModeLineReq *oldstuff =
(xXF86OldVidModeAddModeLineReq *) client->requestBuffer; (xXF86OldVidModeAddModeLineReq *) client->requestBuffer;
@ -533,7 +552,8 @@ static int
stuff->after_vsyncend = oldstuff->after_vsyncend; stuff->after_vsyncend = oldstuff->after_vsyncend;
stuff->after_vtotal = oldstuff->after_vtotal; stuff->after_vtotal = oldstuff->after_vtotal;
stuff->after_flags = oldstuff->after_flags; stuff->after_flags = oldstuff->after_flags;
} if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { }
if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) {
ErrorF("AddModeLine - scrn: %d clock: %ld\n", ErrorF("AddModeLine - scrn: %d clock: %ld\n",
(int) stuff->screen, (unsigned long) stuff->dotclock); (int) stuff->screen, (unsigned long) stuff->dotclock);
ErrorF("AddModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n", ErrorF("AddModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n",
@ -654,7 +674,8 @@ static int
} }
static int static int
ProcXF86VidModeDeleteModeLine(ClientPtr client) { ProcXF86VidModeDeleteModeLine(ClientPtr client)
{
REQUEST(xXF86VidModeDeleteModeLineReq); REQUEST(xXF86VidModeDeleteModeLineReq);
xXF86OldVidModeDeleteModeLineReq *oldstuff = xXF86OldVidModeDeleteModeLineReq *oldstuff =
(xXF86OldVidModeDeleteModeLineReq *) client->requestBuffer; (xXF86OldVidModeDeleteModeLineReq *) client->requestBuffer;
@ -683,7 +704,8 @@ static int
stuff->vtotal = oldstuff->vtotal; stuff->vtotal = oldstuff->vtotal;
stuff->flags = oldstuff->flags; stuff->flags = oldstuff->flags;
stuff->privsize = oldstuff->privsize; stuff->privsize = oldstuff->privsize;
} if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { }
if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) {
ErrorF("DeleteModeLine - scrn: %d clock: %ld\n", ErrorF("DeleteModeLine - scrn: %d clock: %ld\n",
(int) stuff->screen, (unsigned long) stuff->dotclock); (int) stuff->screen, (unsigned long) stuff->dotclock);
ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n",
@ -777,7 +799,8 @@ static int
} }
static int static int
ProcXF86VidModeModModeLine(ClientPtr client) { ProcXF86VidModeModModeLine(ClientPtr client)
{
REQUEST(xXF86VidModeModModeLineReq); REQUEST(xXF86VidModeModModeLineReq);
xXF86OldVidModeModModeLineReq *oldstuff = xXF86OldVidModeModModeLineReq *oldstuff =
(xXF86OldVidModeModModeLineReq *) client->requestBuffer; (xXF86OldVidModeModModeLineReq *) client->requestBuffer;
@ -805,7 +828,8 @@ static int
stuff->vtotal = oldstuff->vtotal; stuff->vtotal = oldstuff->vtotal;
stuff->flags = oldstuff->flags; stuff->flags = oldstuff->flags;
stuff->privsize = oldstuff->privsize; stuff->privsize = oldstuff->privsize;
} if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { }
if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) {
ErrorF("ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n", ErrorF("ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n",
(int) stuff->screen, stuff->hdisplay, stuff->hsyncstart, (int) stuff->screen, stuff->hdisplay, stuff->hsyncstart,
stuff->hsyncend, stuff->htotal); stuff->hsyncend, stuff->htotal);
@ -903,7 +927,8 @@ static int
} }
static int static int
ProcXF86VidModeValidateModeLine(ClientPtr client) { ProcXF86VidModeValidateModeLine(ClientPtr client)
{
REQUEST(xXF86VidModeValidateModeLineReq); REQUEST(xXF86VidModeValidateModeLineReq);
xXF86OldVidModeValidateModeLineReq *oldstuff = xXF86OldVidModeValidateModeLineReq *oldstuff =
(xXF86OldVidModeValidateModeLineReq *) client->requestBuffer; (xXF86OldVidModeValidateModeLineReq *) client->requestBuffer;
@ -933,7 +958,8 @@ static int
stuff->vtotal = oldstuff->vtotal; stuff->vtotal = oldstuff->vtotal;
stuff->flags = oldstuff->flags; stuff->flags = oldstuff->flags;
stuff->privsize = oldstuff->privsize; stuff->privsize = oldstuff->privsize;
} if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { }
if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) {
ErrorF("ValidateModeLine - scrn: %d clock: %ld\n", ErrorF("ValidateModeLine - scrn: %d clock: %ld\n",
(int) stuff->screen, (unsigned long) stuff->dotclock); (int) stuff->screen, (unsigned long) stuff->dotclock);
ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n",
@ -1022,7 +1048,8 @@ static int
} }
static int static int
ProcXF86VidModeSwitchMode(ClientPtr client) { ProcXF86VidModeSwitchMode(ClientPtr client)
{
REQUEST(xXF86VidModeSwitchModeReq); REQUEST(xXF86VidModeSwitchModeReq);
DEBUG_P("XF86VidModeSwitchMode"); DEBUG_P("XF86VidModeSwitchMode");
@ -1035,8 +1062,11 @@ static int
VidModeZoomViewport(stuff->screen, (short) stuff->zoom); VidModeZoomViewport(stuff->screen, (short) stuff->zoom);
return Success; return Success;
} static int }
ProcXF86VidModeSwitchToMode(ClientPtr client) {
static int
ProcXF86VidModeSwitchToMode(ClientPtr client)
{
REQUEST(xXF86VidModeSwitchToModeReq); REQUEST(xXF86VidModeSwitchToModeReq);
xXF86OldVidModeSwitchToModeReq *oldstuff = xXF86OldVidModeSwitchToModeReq *oldstuff =
(xXF86OldVidModeSwitchToModeReq *) client->requestBuffer; (xXF86OldVidModeSwitchToModeReq *) client->requestBuffer;
@ -1065,7 +1095,8 @@ static int
stuff->vtotal = oldstuff->vtotal; stuff->vtotal = oldstuff->vtotal;
stuff->flags = oldstuff->flags; stuff->flags = oldstuff->flags;
stuff->privsize = oldstuff->privsize; stuff->privsize = oldstuff->privsize;
} if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { }
if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) {
ErrorF("SwitchToMode - scrn: %d clock: %ld\n", ErrorF("SwitchToMode - scrn: %d clock: %ld\n",
(int) stuff->screen, (unsigned long) stuff->dotclock); (int) stuff->screen, (unsigned long) stuff->dotclock);
ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n",
@ -1138,7 +1169,8 @@ static int
} }
static int static int
ProcXF86VidModeLockModeSwitch(ClientPtr client) { ProcXF86VidModeLockModeSwitch(ClientPtr client)
{
REQUEST(xXF86VidModeLockModeSwitchReq); REQUEST(xXF86VidModeLockModeSwitchReq);
REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq); REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq);
@ -1152,8 +1184,11 @@ static int
return VidModeErrorBase + XF86VidModeZoomLocked; return VidModeErrorBase + XF86VidModeZoomLocked;
return Success; return Success;
} static int }
ProcXF86VidModeGetMonitor(ClientPtr client) {
static int
ProcXF86VidModeGetMonitor(ClientPtr client)
{
REQUEST(xXF86VidModeGetMonitorReq); REQUEST(xXF86VidModeGetMonitorReq);
xXF86VidModeGetMonitorReply rep; xXF86VidModeGetMonitorReply rep;
CARD32 *hsyncdata, *vsyncdata; CARD32 *hsyncdata, *vsyncdata;
@ -1198,7 +1233,8 @@ static int
hsyncdata = malloc(nHsync * sizeof(CARD32)); hsyncdata = malloc(nHsync * sizeof(CARD32));
if (!hsyncdata) { if (!hsyncdata) {
return BadAlloc; return BadAlloc;
} vsyncdata = malloc(nVrefresh * sizeof(CARD32)); }
vsyncdata = malloc(nVrefresh * sizeof(CARD32));
if (!vsyncdata) { if (!vsyncdata) {
free(hsyncdata); free(hsyncdata);
@ -1208,18 +1244,17 @@ static int
for (i = 0; i < nHsync; i++) { for (i = 0; i < nHsync; i++) {
hsyncdata[i] = (unsigned short) (VidModeGetMonitorValue(monitor, hsyncdata[i] = (unsigned short) (VidModeGetMonitorValue(monitor,
VIDMODE_MON_HSYNC_LO, VIDMODE_MON_HSYNC_LO,
i)). i)).f |
f | (unsigned (unsigned
short) (VidModeGetMonitorValue(monitor, VIDMODE_MON_HSYNC_HI, short) (VidModeGetMonitorValue(monitor, VIDMODE_MON_HSYNC_HI,
i)).f << 16; i)).f << 16;
} }
for (i = 0; i < nVrefresh; i++) { for (i = 0; i < nVrefresh; i++) {
vsyncdata[i] = (unsigned short) (VidModeGetMonitorValue(monitor, vsyncdata[i] = (unsigned short) (VidModeGetMonitorValue(monitor,
VIDMODE_MON_VREFRESH_LO, VIDMODE_MON_VREFRESH_LO,
i)). i)).f |
f | (unsigned (unsigned
short) (VidModeGetMonitorValue(monitor, short) (VidModeGetMonitorValue(monitor, VIDMODE_MON_VREFRESH_HI,
VIDMODE_MON_VREFRESH_HI,
i)).f << 16; i)).f << 16;
} }
@ -1249,7 +1284,8 @@ static int
} }
static int static int
ProcXF86VidModeGetViewPort(ClientPtr client) { ProcXF86VidModeGetViewPort(ClientPtr client)
{
REQUEST(xXF86VidModeGetViewPortReq); REQUEST(xXF86VidModeGetViewPortReq);
xXF86VidModeGetViewPortReply rep; xXF86VidModeGetViewPortReply rep;
int x, y; int x, y;
@ -1274,13 +1310,14 @@ static int
swapl(&rep.length); swapl(&rep.length);
swapl(&rep.x); swapl(&rep.x);
swapl(&rep.y); swapl(&rep.y);
} WriteToClient(client, SIZEOF(xXF86VidModeGetViewPortReply), }
(char *) &rep); WriteToClient(client, SIZEOF(xXF86VidModeGetViewPortReply), (char *) &rep);
return Success; return Success;
} }
static int static int
ProcXF86VidModeSetViewPort(ClientPtr client) { ProcXF86VidModeSetViewPort(ClientPtr client)
{
REQUEST(xXF86VidModeSetViewPortReq); REQUEST(xXF86VidModeSetViewPortReq);
DEBUG_P("XF86VidModeSetViewPort"); DEBUG_P("XF86VidModeSetViewPort");
@ -1294,8 +1331,11 @@ static int
return BadValue; return BadValue;
return Success; return Success;
} static int }
ProcXF86VidModeGetDotClocks(ClientPtr client) {
static int
ProcXF86VidModeGetDotClocks(ClientPtr client)
{
REQUEST(xXF86VidModeGetDotClocksReq); REQUEST(xXF86VidModeGetDotClocksReq);
xXF86VidModeGetDotClocksReply rep; xXF86VidModeGetDotClocksReply rep;
int n; int n;
@ -1328,7 +1368,9 @@ static int
if (!VidModeGetClocks(stuff->screen, Clocks)) { if (!VidModeGetClocks(stuff->screen, Clocks)) {
free(Clocks); free(Clocks);
return BadValue; return BadValue;
}} if (ClockProg) { }
}
if (ClockProg) {
rep.flags |= CLKFLAG_PROGRAMABLE; rep.flags |= CLKFLAG_PROGRAMABLE;
} }
if (client->swapped) { if (client->swapped) {
@ -1356,7 +1398,8 @@ static int
} }
static int static int
ProcXF86VidModeSetGamma(ClientPtr client) { ProcXF86VidModeSetGamma(ClientPtr client)
{
REQUEST(xXF86VidModeSetGammaReq); REQUEST(xXF86VidModeSetGammaReq);
DEBUG_P("XF86VidModeSetGamma"); DEBUG_P("XF86VidModeSetGamma");
@ -1372,8 +1415,11 @@ static int
return BadValue; return BadValue;
return Success; return Success;
} static int }
ProcXF86VidModeGetGamma(ClientPtr client) {
static int
ProcXF86VidModeGetGamma(ClientPtr client)
{
REQUEST(xXF86VidModeGetGammaReq); REQUEST(xXF86VidModeGetGammaReq);
xXF86VidModeGetGammaReply rep; xXF86VidModeGetGammaReply rep;
float red, green, blue; float red, green, blue;
@ -1399,15 +1445,18 @@ static int
swapl(&rep.red); swapl(&rep.red);
swapl(&rep.green); swapl(&rep.green);
swapl(&rep.blue); swapl(&rep.blue);
} WriteToClient(client, sizeof(xXF86VidModeGetGammaReply), (char *) &rep); }
WriteToClient(client, sizeof(xXF86VidModeGetGammaReply), (char *) &rep);
return Success; return Success;
} }
static int static int
ProcXF86VidModeSetGammaRamp(ClientPtr client) { ProcXF86VidModeSetGammaRamp(ClientPtr client)
{
CARD16 *r, *g, *b; CARD16 *r, *g, *b;
int length; int length;
REQUEST(xXF86VidModeSetGammaRampReq); REQUEST(xXF86VidModeSetGammaRampReq);
if (stuff->screen >= screenInfo.numScreens) if (stuff->screen >= screenInfo.numScreens)
@ -1428,12 +1477,16 @@ static int
return BadValue; return BadValue;
return Success; return Success;
} static int }
ProcXF86VidModeGetGammaRamp(ClientPtr client) {
static int
ProcXF86VidModeGetGammaRamp(ClientPtr client)
{
CARD16 *ramp = NULL; CARD16 *ramp = NULL;
int length; int length;
size_t ramplen = 0; size_t ramplen = 0;
xXF86VidModeGetGammaRampReply rep; xXF86VidModeGetGammaRampReply rep;
REQUEST(xXF86VidModeGetGammaRampReq); REQUEST(xXF86VidModeGetGammaRampReq);
if (stuff->screen >= screenInfo.numScreens) if (stuff->screen >= screenInfo.numScreens)
@ -1455,7 +1508,9 @@ static int
ramp, ramp + length, ramp + (length * 2))) { ramp, ramp + length, ramp + (length * 2))) {
free(ramp); free(ramp);
return BadValue; return BadValue;
}} rep.type = X_Reply; }
}
rep.type = X_Reply;
rep.length = (length >> 1) * 3; rep.length = (length >> 1) * 3;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.size = stuff->size; rep.size = stuff->size;
@ -1476,8 +1531,10 @@ static int
} }
static int static int
ProcXF86VidModeGetGammaRampSize(ClientPtr client) { ProcXF86VidModeGetGammaRampSize(ClientPtr client)
{
xXF86VidModeGetGammaRampSizeReply rep; xXF86VidModeGetGammaRampSizeReply rep;
REQUEST(xXF86VidModeGetGammaRampSizeReq); REQUEST(xXF86VidModeGetGammaRampSizeReq);
if (stuff->screen >= screenInfo.numScreens) if (stuff->screen >= screenInfo.numScreens)
@ -1493,15 +1550,18 @@ static int
swaps(&rep.sequenceNumber); swaps(&rep.sequenceNumber);
swapl(&rep.length); swapl(&rep.length);
swaps(&rep.size); swaps(&rep.size);
} WriteToClient(client, sizeof(xXF86VidModeGetGammaRampSizeReply), }
WriteToClient(client, sizeof(xXF86VidModeGetGammaRampSizeReply),
(char *) &rep); (char *) &rep);
return Success; return Success;
} }
static int static int
ProcXF86VidModeGetPermissions(ClientPtr client) { ProcXF86VidModeGetPermissions(ClientPtr client)
{
xXF86VidModeGetPermissionsReply rep; xXF86VidModeGetPermissionsReply rep;
REQUEST(xXF86VidModeGetPermissionsReq); REQUEST(xXF86VidModeGetPermissionsReq);
if (stuff->screen >= screenInfo.numScreens) if (stuff->screen >= screenInfo.numScreens)
@ -1516,7 +1576,8 @@ static int
if (xf86GetVidModeEnabled() && if (xf86GetVidModeEnabled() &&
(xf86GetVidModeAllowNonLocal() || LocalClient(client))) { (xf86GetVidModeAllowNonLocal() || LocalClient(client))) {
rep.permissions |= XF86VM_WRITE_PERMISSION; rep.permissions |= XF86VM_WRITE_PERMISSION;
} if (client->swapped) { }
if (client->swapped) {
swaps(&rep.sequenceNumber); swaps(&rep.sequenceNumber);
swapl(&rep.length); swapl(&rep.length);
swapl(&rep.permissions); swapl(&rep.permissions);
@ -1528,7 +1589,8 @@ static int
} }
static int static int
ProcXF86VidModeSetClientVersion(ClientPtr client) { ProcXF86VidModeSetClientVersion(ClientPtr client)
{
REQUEST(xXF86VidModeSetClientVersionReq); REQUEST(xXF86VidModeSetClientVersionReq);
VidModePrivPtr pPriv; VidModePrivPtr pPriv;
@ -1542,7 +1604,8 @@ static int
if (!pPriv) if (!pPriv)
return BadAlloc; return BadAlloc;
VM_SETPRIV(client, pPriv); VM_SETPRIV(client, pPriv);
} pPriv->major = stuff->major; }
pPriv->major = stuff->major;
pPriv->minor = stuff->minor; pPriv->minor = stuff->minor;
@ -1550,79 +1613,97 @@ static int
} }
static int static int
ProcXF86VidModeDispatch(ClientPtr client) { ProcXF86VidModeDispatch(ClientPtr client)
{
REQUEST(xReq); REQUEST(xReq);
switch (stuff->data) { switch (stuff->data) {
case X_XF86VidModeQueryVersion: case X_XF86VidModeQueryVersion:
return ProcXF86VidModeQueryVersion(client); return ProcXF86VidModeQueryVersion(client);
case X_XF86VidModeGetModeLine:return ProcXF86VidModeGetModeLine(client); case X_XF86VidModeGetModeLine:
case X_XF86VidModeGetMonitor:return ProcXF86VidModeGetMonitor(client); return ProcXF86VidModeGetModeLine(client);
case X_XF86VidModeGetAllModeLines:return case X_XF86VidModeGetMonitor:
ProcXF86VidModeGetAllModeLines(client); return ProcXF86VidModeGetMonitor(client);
case X_XF86VidModeValidateModeLine:return case X_XF86VidModeGetAllModeLines:
ProcXF86VidModeValidateModeLine(client); return ProcXF86VidModeGetAllModeLines(client);
case X_XF86VidModeGetViewPort:return ProcXF86VidModeGetViewPort(client); case X_XF86VidModeValidateModeLine:
case X_XF86VidModeGetDotClocks:return return ProcXF86VidModeValidateModeLine(client);
ProcXF86VidModeGetDotClocks(client); case X_XF86VidModeGetViewPort:
case X_XF86VidModeSetClientVersion:return return ProcXF86VidModeGetViewPort(client);
ProcXF86VidModeSetClientVersion(client); case X_XF86VidModeGetDotClocks:
case X_XF86VidModeGetGamma:return ProcXF86VidModeGetGamma(client); return ProcXF86VidModeGetDotClocks(client);
case X_XF86VidModeGetGammaRamp:return case X_XF86VidModeSetClientVersion:
ProcXF86VidModeGetGammaRamp(client); return ProcXF86VidModeSetClientVersion(client);
case X_XF86VidModeGetGammaRampSize:return case X_XF86VidModeGetGamma:
ProcXF86VidModeGetGammaRampSize(client); return ProcXF86VidModeGetGamma(client);
case X_XF86VidModeGetPermissions:return case X_XF86VidModeGetGammaRamp:
ProcXF86VidModeGetPermissions(client); return ProcXF86VidModeGetGammaRamp(client);
default:if (!xf86GetVidModeEnabled()) case X_XF86VidModeGetGammaRampSize:
return ProcXF86VidModeGetGammaRampSize(client);
case X_XF86VidModeGetPermissions:
return ProcXF86VidModeGetPermissions(client);
default:
if (!xf86GetVidModeEnabled())
return VidModeErrorBase + XF86VidModeExtensionDisabled; return VidModeErrorBase + XF86VidModeExtensionDisabled;
if (xf86GetVidModeAllowNonLocal() || LocalClient(client)) { if (xf86GetVidModeAllowNonLocal() || LocalClient(client)) {
switch (stuff->data) { switch (stuff->data) {
case X_XF86VidModeAddModeLine: case X_XF86VidModeAddModeLine:
return ProcXF86VidModeAddModeLine(client); return ProcXF86VidModeAddModeLine(client);
case X_XF86VidModeDeleteModeLine:return case X_XF86VidModeDeleteModeLine:
ProcXF86VidModeDeleteModeLine(client); return ProcXF86VidModeDeleteModeLine(client);
case X_XF86VidModeModModeLine:return case X_XF86VidModeModModeLine:
ProcXF86VidModeModModeLine(client); return ProcXF86VidModeModModeLine(client);
case X_XF86VidModeSwitchMode:return case X_XF86VidModeSwitchMode:
ProcXF86VidModeSwitchMode(client); return ProcXF86VidModeSwitchMode(client);
case X_XF86VidModeSwitchToMode:return case X_XF86VidModeSwitchToMode:
ProcXF86VidModeSwitchToMode(client); return ProcXF86VidModeSwitchToMode(client);
case X_XF86VidModeLockModeSwitch:return case X_XF86VidModeLockModeSwitch:
ProcXF86VidModeLockModeSwitch(client); return ProcXF86VidModeLockModeSwitch(client);
case X_XF86VidModeSetViewPort:return case X_XF86VidModeSetViewPort:
ProcXF86VidModeSetViewPort(client); return ProcXF86VidModeSetViewPort(client);
case X_XF86VidModeSetGamma:return case X_XF86VidModeSetGamma:
ProcXF86VidModeSetGamma(client); return ProcXF86VidModeSetGamma(client);
case X_XF86VidModeSetGammaRamp:return case X_XF86VidModeSetGammaRamp:
ProcXF86VidModeSetGammaRamp(client); return ProcXF86VidModeSetGammaRamp(client);
default:return BadRequest; default:
}} return BadRequest;
}
}
else else
return VidModeErrorBase + XF86VidModeClientNotLocal; return VidModeErrorBase + XF86VidModeClientNotLocal;
} }
} }
static int static int
SProcXF86VidModeQueryVersion(ClientPtr client) { SProcXF86VidModeQueryVersion(ClientPtr client)
{
REQUEST(xXF86VidModeQueryVersionReq); REQUEST(xXF86VidModeQueryVersionReq);
swaps(&stuff->length); swaps(&stuff->length);
return ProcXF86VidModeQueryVersion(client); return ProcXF86VidModeQueryVersion(client);
} static int }
SProcXF86VidModeGetModeLine(ClientPtr client) {
static int
SProcXF86VidModeGetModeLine(ClientPtr client)
{
REQUEST(xXF86VidModeGetModeLineReq); REQUEST(xXF86VidModeGetModeLineReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq); REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq);
swaps(&stuff->screen); swaps(&stuff->screen);
return ProcXF86VidModeGetModeLine(client); return ProcXF86VidModeGetModeLine(client);
} static int }
SProcXF86VidModeGetAllModeLines(ClientPtr client) {
static int
SProcXF86VidModeGetAllModeLines(ClientPtr client)
{
REQUEST(xXF86VidModeGetAllModeLinesReq); REQUEST(xXF86VidModeGetAllModeLinesReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq); REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq);
swaps(&stuff->screen); swaps(&stuff->screen);
return ProcXF86VidModeGetAllModeLines(client); return ProcXF86VidModeGetAllModeLines(client);
} static int }
SProcXF86VidModeAddModeLine(ClientPtr client) {
static int
SProcXF86VidModeAddModeLine(ClientPtr client)
{
xXF86OldVidModeAddModeLineReq *oldstuff = xXF86OldVidModeAddModeLineReq *oldstuff =
(xXF86OldVidModeAddModeLineReq *) client->requestBuffer; (xXF86OldVidModeAddModeLineReq *) client->requestBuffer;
int ver; int ver;
@ -1666,7 +1747,8 @@ static int
} }
static int static int
SProcXF86VidModeDeleteModeLine(ClientPtr client) { SProcXF86VidModeDeleteModeLine(ClientPtr client)
{
xXF86OldVidModeDeleteModeLineReq *oldstuff = xXF86OldVidModeDeleteModeLineReq *oldstuff =
(xXF86OldVidModeDeleteModeLineReq *) client->requestBuffer; (xXF86OldVidModeDeleteModeLineReq *) client->requestBuffer;
int ver; int ver;
@ -1710,7 +1792,8 @@ static int
} }
static int static int
SProcXF86VidModeModModeLine(ClientPtr client) { SProcXF86VidModeModModeLine(ClientPtr client)
{
xXF86OldVidModeModModeLineReq *oldstuff = xXF86OldVidModeModModeLineReq *oldstuff =
(xXF86OldVidModeModModeLineReq *) client->requestBuffer; (xXF86OldVidModeModModeLineReq *) client->requestBuffer;
int ver; int ver;
@ -1754,7 +1837,8 @@ static int
} }
static int static int
SProcXF86VidModeValidateModeLine(ClientPtr client) { SProcXF86VidModeValidateModeLine(ClientPtr client)
{
xXF86OldVidModeValidateModeLineReq *oldstuff = xXF86OldVidModeValidateModeLineReq *oldstuff =
(xXF86OldVidModeValidateModeLineReq *) client->requestBuffer; (xXF86OldVidModeValidateModeLineReq *) client->requestBuffer;
int ver; int ver;
@ -1798,44 +1882,60 @@ static int
} }
static int static int
SProcXF86VidModeSwitchMode(ClientPtr client) { SProcXF86VidModeSwitchMode(ClientPtr client)
{
REQUEST(xXF86VidModeSwitchModeReq); REQUEST(xXF86VidModeSwitchModeReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq); REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq);
swaps(&stuff->screen); swaps(&stuff->screen);
swaps(&stuff->zoom); swaps(&stuff->zoom);
return ProcXF86VidModeSwitchMode(client); return ProcXF86VidModeSwitchMode(client);
} static int }
SProcXF86VidModeSwitchToMode(ClientPtr client) {
static int
SProcXF86VidModeSwitchToMode(ClientPtr client)
{
REQUEST(xXF86VidModeSwitchToModeReq); REQUEST(xXF86VidModeSwitchToModeReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeSwitchToModeReq); REQUEST_SIZE_MATCH(xXF86VidModeSwitchToModeReq);
swapl(&stuff->screen); swapl(&stuff->screen);
return ProcXF86VidModeSwitchToMode(client); return ProcXF86VidModeSwitchToMode(client);
} static int }
SProcXF86VidModeLockModeSwitch(ClientPtr client) {
static int
SProcXF86VidModeLockModeSwitch(ClientPtr client)
{
REQUEST(xXF86VidModeLockModeSwitchReq); REQUEST(xXF86VidModeLockModeSwitchReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq); REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq);
swaps(&stuff->screen); swaps(&stuff->screen);
swaps(&stuff->lock); swaps(&stuff->lock);
return ProcXF86VidModeLockModeSwitch(client); return ProcXF86VidModeLockModeSwitch(client);
} static int }
SProcXF86VidModeGetMonitor(ClientPtr client) {
static int
SProcXF86VidModeGetMonitor(ClientPtr client)
{
REQUEST(xXF86VidModeGetMonitorReq); REQUEST(xXF86VidModeGetMonitorReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq); REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq);
swaps(&stuff->screen); swaps(&stuff->screen);
return ProcXF86VidModeGetMonitor(client); return ProcXF86VidModeGetMonitor(client);
} static int }
SProcXF86VidModeGetViewPort(ClientPtr client) {
static int
SProcXF86VidModeGetViewPort(ClientPtr client)
{
REQUEST(xXF86VidModeGetViewPortReq); REQUEST(xXF86VidModeGetViewPortReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq); REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq);
swaps(&stuff->screen); swaps(&stuff->screen);
return ProcXF86VidModeGetViewPort(client); return ProcXF86VidModeGetViewPort(client);
} static int }
SProcXF86VidModeSetViewPort(ClientPtr client) {
static int
SProcXF86VidModeSetViewPort(ClientPtr client)
{
REQUEST(xXF86VidModeSetViewPortReq); REQUEST(xXF86VidModeSetViewPortReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeSetViewPortReq); REQUEST_SIZE_MATCH(xXF86VidModeSetViewPortReq);
@ -1843,23 +1943,32 @@ static int
swapl(&stuff->x); swapl(&stuff->x);
swapl(&stuff->y); swapl(&stuff->y);
return ProcXF86VidModeSetViewPort(client); return ProcXF86VidModeSetViewPort(client);
} static int }
SProcXF86VidModeGetDotClocks(ClientPtr client) {
static int
SProcXF86VidModeGetDotClocks(ClientPtr client)
{
REQUEST(xXF86VidModeGetDotClocksReq); REQUEST(xXF86VidModeGetDotClocksReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeGetDotClocksReq); REQUEST_SIZE_MATCH(xXF86VidModeGetDotClocksReq);
swaps(&stuff->screen); swaps(&stuff->screen);
return ProcXF86VidModeGetDotClocks(client); return ProcXF86VidModeGetDotClocks(client);
} static int }
SProcXF86VidModeSetClientVersion(ClientPtr client) {
static int
SProcXF86VidModeSetClientVersion(ClientPtr client)
{
REQUEST(xXF86VidModeSetClientVersionReq); REQUEST(xXF86VidModeSetClientVersionReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeSetClientVersionReq); REQUEST_SIZE_MATCH(xXF86VidModeSetClientVersionReq);
swaps(&stuff->major); swaps(&stuff->major);
swaps(&stuff->minor); swaps(&stuff->minor);
return ProcXF86VidModeSetClientVersion(client); return ProcXF86VidModeSetClientVersion(client);
} static int }
SProcXF86VidModeSetGamma(ClientPtr client) {
static int
SProcXF86VidModeSetGamma(ClientPtr client)
{
REQUEST(xXF86VidModeSetGammaReq); REQUEST(xXF86VidModeSetGammaReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeSetGammaReq); REQUEST_SIZE_MATCH(xXF86VidModeSetGammaReq);
@ -1868,16 +1977,23 @@ static int
swapl(&stuff->green); swapl(&stuff->green);
swapl(&stuff->blue); swapl(&stuff->blue);
return ProcXF86VidModeSetGamma(client); return ProcXF86VidModeSetGamma(client);
} static int }
SProcXF86VidModeGetGamma(ClientPtr client) {
static int
SProcXF86VidModeGetGamma(ClientPtr client)
{
REQUEST(xXF86VidModeGetGammaReq); REQUEST(xXF86VidModeGetGammaReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeGetGammaReq); REQUEST_SIZE_MATCH(xXF86VidModeGetGammaReq);
swaps(&stuff->screen); swaps(&stuff->screen);
return ProcXF86VidModeGetGamma(client); return ProcXF86VidModeGetGamma(client);
} static int }
SProcXF86VidModeSetGammaRamp(ClientPtr client) {
static int
SProcXF86VidModeSetGammaRamp(ClientPtr client)
{
int length; int length;
REQUEST(xXF86VidModeSetGammaRampReq); REQUEST(xXF86VidModeSetGammaRampReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_AT_LEAST_SIZE(xXF86VidModeSetGammaRampReq); REQUEST_AT_LEAST_SIZE(xXF86VidModeSetGammaRampReq);
@ -1887,85 +2003,103 @@ static int
REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length); REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length);
SwapRestS(stuff); SwapRestS(stuff);
return ProcXF86VidModeSetGammaRamp(client); return ProcXF86VidModeSetGammaRamp(client);
} static int }
SProcXF86VidModeGetGammaRamp(ClientPtr client) {
static int
SProcXF86VidModeGetGammaRamp(ClientPtr client)
{
REQUEST(xXF86VidModeGetGammaRampReq); REQUEST(xXF86VidModeGetGammaRampReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampReq); REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampReq);
swaps(&stuff->size); swaps(&stuff->size);
swaps(&stuff->screen); swaps(&stuff->screen);
return ProcXF86VidModeGetGammaRamp(client); return ProcXF86VidModeGetGammaRamp(client);
} static int }
SProcXF86VidModeGetGammaRampSize(ClientPtr client) {
static int
SProcXF86VidModeGetGammaRampSize(ClientPtr client)
{
REQUEST(xXF86VidModeGetGammaRampSizeReq); REQUEST(xXF86VidModeGetGammaRampSizeReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampSizeReq); REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampSizeReq);
swaps(&stuff->screen); swaps(&stuff->screen);
return ProcXF86VidModeGetGammaRampSize(client); return ProcXF86VidModeGetGammaRampSize(client);
} static int }
SProcXF86VidModeGetPermissions(ClientPtr client) {
static int
SProcXF86VidModeGetPermissions(ClientPtr client)
{
REQUEST(xXF86VidModeGetPermissionsReq); REQUEST(xXF86VidModeGetPermissionsReq);
swaps(&stuff->length); swaps(&stuff->length);
REQUEST_SIZE_MATCH(xXF86VidModeGetPermissionsReq); REQUEST_SIZE_MATCH(xXF86VidModeGetPermissionsReq);
swaps(&stuff->screen); swaps(&stuff->screen);
return ProcXF86VidModeGetPermissions(client); return ProcXF86VidModeGetPermissions(client);
} static int }
SProcXF86VidModeDispatch(ClientPtr client) {
static int
SProcXF86VidModeDispatch(ClientPtr client)
{
REQUEST(xReq); REQUEST(xReq);
switch (stuff->data) { switch (stuff->data) {
case X_XF86VidModeQueryVersion: case X_XF86VidModeQueryVersion:
return SProcXF86VidModeQueryVersion(client); return SProcXF86VidModeQueryVersion(client);
case X_XF86VidModeGetModeLine:return case X_XF86VidModeGetModeLine:
SProcXF86VidModeGetModeLine(client); return SProcXF86VidModeGetModeLine(client);
case X_XF86VidModeGetMonitor:return SProcXF86VidModeGetMonitor(client); case X_XF86VidModeGetMonitor:
case X_XF86VidModeGetAllModeLines:return return SProcXF86VidModeGetMonitor(client);
SProcXF86VidModeGetAllModeLines(client); case X_XF86VidModeGetAllModeLines:
case X_XF86VidModeGetViewPort:return return SProcXF86VidModeGetAllModeLines(client);
SProcXF86VidModeGetViewPort(client); case X_XF86VidModeGetViewPort:
case X_XF86VidModeValidateModeLine:return return SProcXF86VidModeGetViewPort(client);
SProcXF86VidModeValidateModeLine(client); case X_XF86VidModeValidateModeLine:
case X_XF86VidModeGetDotClocks:return return SProcXF86VidModeValidateModeLine(client);
SProcXF86VidModeGetDotClocks(client); case X_XF86VidModeGetDotClocks:
case X_XF86VidModeSetClientVersion:return return SProcXF86VidModeGetDotClocks(client);
SProcXF86VidModeSetClientVersion(client); case X_XF86VidModeSetClientVersion:
case X_XF86VidModeGetGamma:return SProcXF86VidModeGetGamma(client); return SProcXF86VidModeSetClientVersion(client);
case X_XF86VidModeGetGammaRamp:return case X_XF86VidModeGetGamma:
SProcXF86VidModeGetGammaRamp(client); return SProcXF86VidModeGetGamma(client);
case X_XF86VidModeGetGammaRampSize:return case X_XF86VidModeGetGammaRamp:
SProcXF86VidModeGetGammaRampSize(client); return SProcXF86VidModeGetGammaRamp(client);
case X_XF86VidModeGetPermissions:return case X_XF86VidModeGetGammaRampSize:
SProcXF86VidModeGetPermissions(client); return SProcXF86VidModeGetGammaRampSize(client);
default:if (!xf86GetVidModeEnabled()) case X_XF86VidModeGetPermissions:
return SProcXF86VidModeGetPermissions(client);
default:
if (!xf86GetVidModeEnabled())
return VidModeErrorBase + XF86VidModeExtensionDisabled; return VidModeErrorBase + XF86VidModeExtensionDisabled;
if (xf86GetVidModeAllowNonLocal() || LocalClient(client)) { if (xf86GetVidModeAllowNonLocal() || LocalClient(client)) {
switch (stuff->data) { switch (stuff->data) {
case X_XF86VidModeAddModeLine: case X_XF86VidModeAddModeLine:
return SProcXF86VidModeAddModeLine(client); return SProcXF86VidModeAddModeLine(client);
case X_XF86VidModeDeleteModeLine:return case X_XF86VidModeDeleteModeLine:
SProcXF86VidModeDeleteModeLine(client); return SProcXF86VidModeDeleteModeLine(client);
case X_XF86VidModeModModeLine:return case X_XF86VidModeModModeLine:
SProcXF86VidModeModModeLine(client); return SProcXF86VidModeModModeLine(client);
case X_XF86VidModeSwitchMode:return case X_XF86VidModeSwitchMode:
SProcXF86VidModeSwitchMode(client); return SProcXF86VidModeSwitchMode(client);
case X_XF86VidModeSwitchToMode:return case X_XF86VidModeSwitchToMode:
SProcXF86VidModeSwitchToMode(client); return SProcXF86VidModeSwitchToMode(client);
case X_XF86VidModeLockModeSwitch:return case X_XF86VidModeLockModeSwitch:
SProcXF86VidModeLockModeSwitch(client); return SProcXF86VidModeLockModeSwitch(client);
case X_XF86VidModeSetViewPort:return case X_XF86VidModeSetViewPort:
SProcXF86VidModeSetViewPort(client); return SProcXF86VidModeSetViewPort(client);
case X_XF86VidModeSetGamma:return case X_XF86VidModeSetGamma:
SProcXF86VidModeSetGamma(client); return SProcXF86VidModeSetGamma(client);
case X_XF86VidModeSetGammaRamp:return case X_XF86VidModeSetGammaRamp:
SProcXF86VidModeSetGammaRamp(client); return SProcXF86VidModeSetGammaRamp(client);
default:return BadRequest; default:
}} return BadRequest;
}
}
else else
return VidModeErrorBase + XF86VidModeClientNotLocal; return VidModeErrorBase + XF86VidModeClientNotLocal;
} }
} }
void void
XFree86VidModeExtensionInit(void) { XFree86VidModeExtensionInit(void)
{
ExtensionEntry *extEntry; ExtensionEntry *extEntry;
ScreenPtr pScreen; ScreenPtr pScreen;
int i; int i;

View File

@ -563,7 +563,7 @@ extern void TouchAddListener(TouchPointInfoPtr ti, XID resource,
extern Bool TouchRemoveListener(TouchPointInfoPtr ti, XID resource); extern Bool TouchRemoveListener(TouchPointInfoPtr ti, XID resource);
extern void TouchSetupListeners(DeviceIntPtr dev, TouchPointInfoPtr ti, extern void TouchSetupListeners(DeviceIntPtr dev, TouchPointInfoPtr ti,
InternalEvent *ev); InternalEvent *ev);
extern Bool TouchEnsureSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, extern Bool TouchBuildSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
InternalEvent *ev); InternalEvent *ev);
extern Bool TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite); extern Bool TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite);
extern int TouchConvertToPointerEvent(const InternalEvent *ev, extern int TouchConvertToPointerEvent(const InternalEvent *ev,
@ -572,6 +572,8 @@ extern int TouchConvertToPointerEvent(const InternalEvent *ev,
extern int TouchGetPointerEventType(const InternalEvent *ev); extern int TouchGetPointerEventType(const InternalEvent *ev);
extern void TouchRemovePointerGrab(DeviceIntPtr dev); extern void TouchRemovePointerGrab(DeviceIntPtr dev);
extern void TouchListenerGone(XID resource); extern void TouchListenerGone(XID resource);
extern int TouchListenerAcceptReject(DeviceIntPtr dev, TouchPointInfoPtr ti,
int listener, int mode);
extern int TouchAcceptReject(ClientPtr client, DeviceIntPtr dev, int mode, extern int TouchAcceptReject(ClientPtr client, DeviceIntPtr dev, int mode,
uint32_t touchid, Window grab_window, XID *error); uint32_t touchid, Window grab_window, XID *error);