summaryrefslogtreecommitdiff
path: root/Xi/warpdevp.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@redhat.com>2008-11-26 21:40:05 +1000
committerPeter Hutterer <peter.hutterer@redhat.com>2008-12-01 08:16:56 +1000
commitcfe7301bcf134ade26a81764be2ca5890eb29d5d (patch)
tree366085814bdc15da9eb94e0a3012e3937a6beb96 /Xi/warpdevp.c
parentdb115e78705e59a376c6c425e7cb97cfb14ff2ac (diff)
Xi: remove all new XI2 protocol requests and their handling.
This commit reverts to XI 1.4 requests, plus the input device property requests. Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
Diffstat (limited to 'Xi/warpdevp.c')
-rw-r--r--Xi/warpdevp.c175
1 files changed, 0 insertions, 175 deletions
diff --git a/Xi/warpdevp.c b/Xi/warpdevp.c
deleted file mode 100644
index c8e8d6116..000000000
--- a/Xi/warpdevp.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright 2007-2008 Peter Hutterer
- *
- * 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 (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 NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Author: Peter Hutterer, University of South Australia, NICTA
- */
-
-/***********************************************************************
- *
- * Request to Warp the pointer location of an extension input device.
- *
- */
-
-#define NEED_EVENTS
-#define NEED_REPLIES
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h> /* for inputstr.h */
-#include <X11/Xproto.h> /* Request macro */
-#include "inputstr.h" /* DeviceIntPtr */
-#include "windowstr.h" /* window structure */
-#include "scrnintstr.h" /* screen structure */
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#include "extnsionst.h"
-#include "exevents.h"
-#include "exglobals.h"
-#include "mipointer.h" /* for miPointerUpdateSprite */
-
-
-#include "warpdevp.h"
-/***********************************************************************
- *
- * This procedure allows a client to warp the pointer of a device.
- *
- */
-
-int
-SProcXWarpDevicePointer(ClientPtr client)
-{
- char n;
-
- REQUEST(xWarpDevicePointerReq);
- swaps(&stuff->length, n);
- return (ProcXWarpDevicePointer(client));
-}
-
-int
-ProcXWarpDevicePointer(ClientPtr client)
-{
- int rc;
- int x, y;
- WindowPtr dest = NULL;
- DeviceIntPtr pDev;
- SpritePtr pSprite;
- ScreenPtr newScreen;
-
- REQUEST(xWarpDevicePointerReq);
- REQUEST_SIZE_MATCH(xWarpDevicePointerReq);
-
- /* FIXME: panoramix stuff is missing, look at ProcWarpPointer */
-
- rc = dixLookupDevice(&pDev, stuff->deviceid, client, DixWriteAccess);
-
- if (rc != Success)
- return rc;
-
- if (stuff->dst_win != None)
- {
- rc = dixLookupWindow(&dest, stuff->dst_win, client, DixReadAccess);
- if (rc != Success)
- {
- return rc;
- }
- }
-
- pSprite = pDev->spriteInfo->sprite;
- x = pSprite->hotPhys.x;
- y = pSprite->hotPhys.y;
-
- if (stuff->src_win != None)
- {
- int winX, winY;
- WindowPtr src;
-
- rc = dixLookupWindow(&src, stuff->src_win, client, DixReadAccess);
- if (rc != Success)
- {
- return rc;
- }
-
- winX = src->drawable.x;
- winY = src->drawable.y;
- if (src->drawable.pScreen != pSprite->hotPhys.pScreen ||
- x < winX + stuff->src_x ||
- y < winY + stuff->src_y ||
- (stuff->src_width != 0 &&
- winX + stuff->src_x + (int)stuff->src_width < 0) ||
- (stuff->src_height != 0 &&
- winY + stuff->src_y + (int)stuff->src_height < y) ||
- !PointInWindowIsVisible(src, x, y))
- return Success;
- }
-
- if (dest)
- {
- x = dest->drawable.x;
- y = dest->drawable.y;
- newScreen = dest->drawable.pScreen;
- } else
- newScreen = pSprite->hotPhys.pScreen;
-
- x += stuff->dst_x;
- y += stuff->dst_y;
-
- if (x < 0)
- x = 0;
- else if (x > newScreen->width)
- x = newScreen->width - 1;
-
- if (y < 0)
- y = 0;
- else if (y > newScreen->height)
- y = newScreen->height - 1;
-
- if (newScreen == pSprite->hotPhys.pScreen)
- {
- if (x < pSprite->physLimits.x1)
- x = pSprite->physLimits.x1;
- else if (x >= pSprite->physLimits.x2)
- x = pSprite->physLimits.x2 - 1;
-
- if (y < pSprite->physLimits.y1)
- y = pSprite->physLimits.y1;
- else if (y >= pSprite->physLimits.y2)
- y = pSprite->physLimits.y2 - 1;
-
- if (pSprite->hotShape)
- ConfineToShape(pDev, pSprite->hotShape, &x, &y);
- (*newScreen->SetCursorPosition)(pDev, newScreen, x, y, TRUE);
- } else if (!PointerConfinedToScreen(pDev))
- {
- NewCurrentScreen(pDev, newScreen, x, y);
- }
-
- /* if we don't update the device, we get a jump next time it moves */
- pDev->last.valuators[0] = x;
- pDev->last.valuators[1] = x;
- miPointerUpdateSprite(pDev);
-
- /* FIXME: XWarpPointer is supposed to generate an event. It doesn't do it
- here though. */
- return Success;
-}
-