/*
 * -- $Header: /cec/src/nestor/servers/R3/shXlib/XGrPointer.c,v 1.1.1.1
 * 90/04/23 10:00:06 spanachi Exp $
 */
#include "copyright.h"

/* $XConsortium: XGrPointer.c,v 11.16 88/09/06 16:08:35 jim Exp $ */
/* Copyright    Massachusetts Institute of Technology    1986	 */
/* -- MULTIPLEX Extension -- */

#define NEED_REPLIES
#include "Xlibint.h"

/* -- additional includes -- */
#include "utils.h"
#include "map.h"

int
XGrabPointer (dpy, grab_window, owner_events, event_mask, pointer_mode,
	      keyboard_mode, confine_to, curs, time)
  register Display *dpy;
  Window grab_window;
  Bool owner_events;
  unsigned int event_mask;	/* CARD16 */
  int pointer_mode, keyboard_mode;
  Window confine_to;
  Cursor curs;
  Time time;
{
  xGrabPointerReply rep;
  register xGrabPointerReq *req;
  register int status;

  /* -- flush default dpy's queue to keep buffers aligned -- */
  XmuXFlushDefault (dpy);
  /* -- switch to the chalk holder display -- */
  dpy = XmuXChalkDisplay (dpy);

  LockDisplay (dpy);
  GetReq (GrabPointer, req);
  req->grabWindow = XmuXMapID (dpy, grab_window, FromClient);
  req->ownerEvents = owner_events;
  req->eventMask = event_mask;
  req->pointerMode = pointer_mode;
  req->keyboardMode = keyboard_mode;
  req->confineTo = XmuXMapID (dpy, confine_to, FromClient);
  req->cursor = XmuXMapID (dpy, curs, FromClient);
  req->time = time;

  /* if we ever return, suppress the error */
  if (_XReply (dpy, (xReply *) & rep, 0, xTrue) == 0)
    rep.status = GrabSuccess;
  status = rep.status;
  UnlockDisplay (dpy);
  SyncHandle ();
  return (status);
}
