Lines Matching +full:display +full:- +full:backend
2 * Copyright 2001-2003 Red Hat Inc., Durham, North Carolina.
21 * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
42 #include <dmx-config.h>
122 return (int) ((x * priv->xScale) + .5); in scalex()
128 return (int) ((y * priv->yScale) + .5); in scaley()
134 return (int) ((x / priv->xScale) + .5); in unscalex()
140 return (int) ((y / priv->yScale) + .5); in unscaley()
150 priv->dmxLocal = dmxLocal; in dmxConsoleCreatePrivate()
154 /** If \a private is non-NULL, free its associated memory. */
167 XDrawLine(priv->display, priv->pixmap, priv->gcCur, in dmxConsoleDrawFineCursor()
168 x = scalex(priv, priv->globalX) - size, in dmxConsoleDrawFineCursor()
169 scaley(priv, priv->globalY), in dmxConsoleDrawFineCursor()
170 scalex(priv, priv->globalX) + size, scaley(priv, priv->globalY)); in dmxConsoleDrawFineCursor()
171 XDrawLine(priv->display, priv->pixmap, priv->gcCur, in dmxConsoleDrawFineCursor()
172 scalex(priv, priv->globalX), in dmxConsoleDrawFineCursor()
173 y = scaley(priv, priv->globalY) - size, in dmxConsoleDrawFineCursor()
174 scalex(priv, priv->globalX), scaley(priv, priv->globalY) + size); in dmxConsoleDrawFineCursor()
175 if (priv->grabbed) { in dmxConsoleDrawFineCursor()
176 XDrawLine(priv->display, priv->pixmap, priv->gcCur, in dmxConsoleDrawFineCursor()
177 scalex(priv, priv->globalX) - (int) (size / 1.4), in dmxConsoleDrawFineCursor()
178 scaley(priv, priv->globalY) - (int) (size / 1.4), in dmxConsoleDrawFineCursor()
179 scalex(priv, priv->globalX) + (int) (size / 1.4), in dmxConsoleDrawFineCursor()
180 scaley(priv, priv->globalY) + (int) (size / 1.4)); in dmxConsoleDrawFineCursor()
181 XDrawLine(priv->display, priv->pixmap, priv->gcCur, in dmxConsoleDrawFineCursor()
182 scalex(priv, priv->globalX) - (int) (size / 1.4), in dmxConsoleDrawFineCursor()
183 scaley(priv, priv->globalY) + (int) (size / 1.4), in dmxConsoleDrawFineCursor()
184 scalex(priv, priv->globalX) + (int) (size / 1.4), in dmxConsoleDrawFineCursor()
185 scaley(priv, priv->globalY) - (int) (size / 1.4)); in dmxConsoleDrawFineCursor()
188 rect->x = x; in dmxConsoleDrawFineCursor()
189 rect->y = y; in dmxConsoleDrawFineCursor()
190 rect->width = 2 * size; in dmxConsoleDrawFineCursor()
191 rect->height = 2 * size; in dmxConsoleDrawFineCursor()
199 Display *dpy = priv->display; in dmxConsoleDrawWindows()
209 rect.width = priv->consWidth; in dmxConsoleDrawWindows()
210 rect.height = priv->consHeight; in dmxConsoleDrawWindows()
215 WindowPtr pRoot = pScreen->root; in dmxConsoleDrawWindows()
220 pRoot->drawable.id, in dmxConsoleDrawWindows()
221 pRoot->parent, pRoot->firstChild, pRoot->lastChild); in dmxConsoleDrawWindows()
224 for (pChild = pRoot->firstChild; pChild; pChild = pChild->nextSib) { in dmxConsoleDrawWindows()
225 if (pChild->mapped && pChild->realized) { in dmxConsoleDrawWindows()
229 pChild->drawable.x, in dmxConsoleDrawWindows()
230 pChild->drawable.y, in dmxConsoleDrawWindows()
231 pChild->drawable.width, in dmxConsoleDrawWindows()
232 pChild->drawable.height, in dmxConsoleDrawWindows()
233 pChild->visibility, in dmxConsoleDrawWindows()
234 pChild->overrideRedirect, in dmxConsoleDrawWindows()
235 RegionNumRects(&pChild->clipList)); in dmxConsoleDrawWindows()
237 rect.x = scalex(priv, pChild->drawable.x + pScreen->x); in dmxConsoleDrawWindows()
238 rect.y = scaley(priv, pChild->drawable.y + pScreen->y); in dmxConsoleDrawWindows()
239 rect.width = scalex(priv, pChild->drawable.width); in dmxConsoleDrawWindows()
240 rect.height = scaley(priv, pChild->drawable.height); in dmxConsoleDrawWindows()
241 XDrawRectangle(dpy, priv->pixmap, priv->gc, in dmxConsoleDrawWindows()
245 XSetRegion(dpy, priv->gc, avail); in dmxConsoleDrawWindows()
256 XSetClipMask(dpy, priv->gc, None); in dmxConsoleDrawWindows()
263 Display *dpy = priv->display; in dmxConsoleDraw()
266 XFillRectangle(dpy, priv->pixmap, priv->gc, 0, 0, in dmxConsoleDraw()
267 priv->consWidth, priv->consHeight); in dmxConsoleDraw()
272 XFillRectangle(dpy, priv->pixmap, in dmxConsoleDraw()
273 dmxScreen->beDisplay ? priv->gcRev : priv->gcDet, in dmxConsoleDraw()
274 scalex(priv, screenInfo.screens[i]->x), in dmxConsoleDraw()
275 scaley(priv, screenInfo.screens[i]->y), in dmxConsoleDraw()
276 scalex(priv, screenInfo.screens[i]->width), in dmxConsoleDraw()
277 scaley(priv, screenInfo.screens[i]->height)); in dmxConsoleDraw()
280 XDrawRectangle(dpy, priv->pixmap, priv->gc, in dmxConsoleDraw()
281 scalex(priv, screenInfo.screens[i]->x), in dmxConsoleDraw()
282 scaley(priv, screenInfo.screens[i]->y), in dmxConsoleDraw()
283 scalex(priv, screenInfo.screens[i]->width), in dmxConsoleDraw()
284 scaley(priv, screenInfo.screens[i]->height)); in dmxConsoleDraw()
286 if (dmxInput->windows) in dmxConsoleDraw()
288 if (priv->fine && updateCursor) in dmxConsoleDraw()
291 XCopyArea(priv->display, priv->pixmap, priv->window, priv->gc, in dmxConsoleDraw()
292 0, 0, priv->consWidth, priv->consHeight, 0, 0); in dmxConsoleDraw()
293 XSync(priv->display, False); /* Not a backend display */ in dmxConsoleDraw()
302 rect->x = scalex(priv, x) - cw / 2; in dmxConsoleClearCursor()
303 rect->y = scaley(priv, y) - ch / 2; in dmxConsoleClearCursor()
304 rect->width = cw; in dmxConsoleClearCursor()
305 rect->height = ch; in dmxConsoleClearCursor()
306 XSetClipRectangles(priv->display, priv->gc, 0, 0, rect, 1, Unsorted); in dmxConsoleClearCursor()
307 XSetClipRectangles(priv->display, priv->gcDet, 0, 0, rect, 1, Unsorted); in dmxConsoleClearCursor()
308 XSetClipRectangles(priv->display, priv->gcRev, 0, 0, rect, 1, Unsorted); in dmxConsoleClearCursor()
310 XSetClipMask(priv->display, priv->gc, None); in dmxConsoleClearCursor()
311 XSetClipMask(priv->display, priv->gcDet, None); in dmxConsoleClearCursor()
312 XSetClipMask(priv->display, priv->gcRev, None); in dmxConsoleClearCursor()
321 dmxConsoleClearCursor(priv, priv->globalX, priv->globalY, &rects[0]); in dmxConsoleUpdateFineCursor()
322 if (priv->dmxLocal->sendsCore) { in dmxConsoleUpdateFineCursor()
323 dmxGetGlobalPosition(&priv->globalX, &priv->globalY); in dmxConsoleUpdateFineCursor()
326 priv->globalX = priv->dmxLocal->lastX; in dmxConsoleUpdateFineCursor()
327 priv->globalY = priv->dmxLocal->lastY; in dmxConsoleUpdateFineCursor()
330 priv->lastX = scalex(priv, priv->width / 2); in dmxConsoleUpdateFineCursor()
331 priv->lastY = scaley(priv, priv->height / 2); in dmxConsoleUpdateFineCursor()
335 if (priv->globalX < 1 || priv->globalX >= priv->width) { in dmxConsoleUpdateFineCursor()
336 if (priv->globalX < 1) in dmxConsoleUpdateFineCursor()
337 priv->lastX = 0; in dmxConsoleUpdateFineCursor()
339 priv->lastX = scalex(priv, priv->width); in dmxConsoleUpdateFineCursor()
340 priv->lastY = scaley(priv, priv->globalY); in dmxConsoleUpdateFineCursor()
343 if (priv->globalY < 1 || priv->globalY >= priv->height) { in dmxConsoleUpdateFineCursor()
344 if (priv->globalY < 1) in dmxConsoleUpdateFineCursor()
345 priv->lastY = 0; in dmxConsoleUpdateFineCursor()
347 priv->lastY = scaley(priv, priv->height); in dmxConsoleUpdateFineCursor()
348 priv->lastX = scalex(priv, priv->globalX); in dmxConsoleUpdateFineCursor()
355 XSetClipRectangles(priv->display, priv->gc, 0, 0, rects, 2, Unsorted); in dmxConsoleUpdateFineCursor()
356 XCopyArea(priv->display, priv->pixmap, priv->window, priv->gc, in dmxConsoleUpdateFineCursor()
357 0, 0, priv->consWidth, priv->consHeight, 0, 0); in dmxConsoleUpdateFineCursor()
358 XSetClipMask(priv->display, priv->gc, None); in dmxConsoleUpdateFineCursor()
361 priv->lastX, priv->lastY); in dmxConsoleUpdateFineCursor()
362 XWarpPointer(priv->display, priv->window, priv->window, in dmxConsoleUpdateFineCursor()
363 0, 0, 0, 0, priv->lastX, priv->lastY); in dmxConsoleUpdateFineCursor()
364 XSync(priv->display, False); /* Not a backend display */ in dmxConsoleUpdateFineCursor()
369 while (XCheckMaskEvent(priv->display, PointerMotionMask, &X)) { in dmxConsoleUpdateFineCursor()
371 if (X.xmotion.x != priv->lastX || X.xmotion.y != priv->lastY) { in dmxConsoleUpdateFineCursor()
373 X.xmotion.x, X.xmotion.y, priv->lastX, priv->lastY); in dmxConsoleUpdateFineCursor()
383 priv->lastX, priv->lastY, in dmxConsoleUpdateFineCursor()
384 scalex(priv, priv->width), in dmxConsoleUpdateFineCursor()
385 scaley(priv, priv->height), priv->globalX, priv->globalY); in dmxConsoleUpdateFineCursor()
392 * have had any human-visible changes. */
410 x, y, tmpX, tmpY, priv->curX, priv->curY); in dmxConsoleMoveAbsolute()
411 if (tmpX == priv->curX && tmpY == priv->curY) in dmxConsoleMoveAbsolute()
427 if (x == priv->lastX && y == priv->lastY) in dmxConsoleMoveRelative()
429 v[0] = priv->lastX - x; in dmxConsoleMoveRelative()
430 v[1] = priv->lastY - y; in dmxConsoleMoveRelative()
443 Display *dpy = priv->display; in dmxConsoleUpdatePosition()
449 x, y, tmpX, tmpY, priv->consWidth, priv->consHeight); in dmxConsoleUpdatePosition()
451 if (priv->fine) in dmxConsoleUpdatePosition()
453 if (tmpX != priv->curX || tmpY != priv->curY) { in dmxConsoleUpdatePosition()
458 if (tmpX >= priv->consWidth) in dmxConsoleUpdatePosition()
459 tmpX = priv->consWidth - 1; in dmxConsoleUpdatePosition()
460 if (tmpY >= priv->consHeight) in dmxConsoleUpdatePosition()
461 tmpY = priv->consHeight - 1; in dmxConsoleUpdatePosition()
462 priv->curX = tmpX; in dmxConsoleUpdatePosition()
463 priv->curY = tmpY; in dmxConsoleUpdatePosition()
464 if (!priv->fine) { in dmxConsoleUpdatePosition()
465 DMXDBG2(" WARP B %d %d\n", priv->curX, priv->curY); in dmxConsoleUpdatePosition()
466 XWarpPointer(dpy, priv->window, in dmxConsoleUpdatePosition()
467 priv->window, 0, 0, 0, 0, tmpX, tmpY); in dmxConsoleUpdatePosition()
468 XSync(dpy, False); /* Not a backend display */ in dmxConsoleUpdatePosition()
478 /** Collect all pending events from the console's display. Plase these
491 Display *dpy = priv->display; in dmxConsoleCollectEvents()
492 Window win = priv->window; in dmxConsoleCollectEvents()
493 int width = priv->width; in dmxConsoleCollectEvents()
494 int height = priv->height; in dmxConsoleCollectEvents()
520 XSetRegion(dpy, priv->gc, r); in dmxConsoleCollectEvents()
521 XSetRegion(dpy, priv->gcDet, r); in dmxConsoleCollectEvents()
522 XSetRegion(dpy, priv->gcRev, r); in dmxConsoleCollectEvents()
524 XSetClipMask(dpy, priv->gc, None); in dmxConsoleCollectEvents()
525 XSetClipMask(dpy, priv->gcDet, None); in dmxConsoleCollectEvents()
526 XSetClipMask(dpy, priv->gcRev, None); in dmxConsoleCollectEvents()
534 priv->consWidth = X.xresizerequest.width; in dmxConsoleCollectEvents()
535 priv->consHeight = X.xresizerequest.height; in dmxConsoleCollectEvents()
536 priv->xScale = (double) priv->consWidth / width; in dmxConsoleCollectEvents()
537 priv->yScale = (double) priv->consHeight / height; in dmxConsoleCollectEvents()
540 XResizeWindow(dpy, win, priv->consWidth, priv->consHeight); in dmxConsoleCollectEvents()
541 XFreePixmap(dpy, priv->pixmap); in dmxConsoleCollectEvents()
542 priv->pixmap = XCreatePixmap(dpy, in dmxConsoleCollectEvents()
544 priv->consWidth, in dmxConsoleCollectEvents()
545 priv->consHeight, in dmxConsoleCollectEvents()
553 X.xcrossing.x, X.xcrossing.y, raising, priv->fine); in dmxConsoleCollectEvents()
554 if (!priv->captured) in dmxConsoleCollectEvents()
563 X.xcrossing.x, X.xcrossing.y, raising, priv->fine, in dmxConsoleCollectEvents()
564 priv->curX, priv->curY); in dmxConsoleCollectEvents()
569 priv->mou, motion, block); in dmxConsoleCollectEvents()
572 if (priv->fine) { in dmxConsoleCollectEvents()
581 XRaiseWindow(dpy, priv->window); in dmxConsoleCollectEvents()
583 XSync(dpy, False); /* Not a backend display */ in dmxConsoleCollectEvents()
585 dmxConsoleMoveAbsolute(priv, priv->curX, priv->curY, in dmxConsoleCollectEvents()
586 priv->mou, motion, block); in dmxConsoleCollectEvents()
590 if (priv->curX == X.xmotion.x && priv->curY == X.xmotion.y) in dmxConsoleCollectEvents()
602 priv->mou, motion, block); in dmxConsoleCollectEvents()
605 if (priv->fine) in dmxConsoleCollectEvents()
607 priv->mou, motion, block); in dmxConsoleCollectEvents()
610 priv->mou, motion, block); in dmxConsoleCollectEvents()
615 enqueue(priv->kbd, X.type, X.xkey.keycode, 0, NULL, block); in dmxConsoleCollectEvents()
620 enqueue(priv->mou, X.type, X.xbutton.button, 0, &X, block); in dmxConsoleCollectEvents()
631 if (priv->display) { in dmxCloseConsole()
632 XFreeGC(priv->display, priv->gc); in dmxCloseConsole()
633 XFreeGC(priv->display, priv->gcDet); in dmxCloseConsole()
634 XFreeGC(priv->display, priv->gcRev); in dmxCloseConsole()
635 XFreeGC(priv->display, priv->gcCur); in dmxCloseConsole()
636 if (!dmxInput->console) in dmxCloseConsole()
637 XCloseDisplay(priv->display); in dmxCloseConsole()
639 priv->display = NULL; in dmxCloseConsole()
647 for (last = priv = (myPrivate *) dixLookupPrivate(&pScreen->devPrivates, in dmxCloseConsoleScreen()
649 priv; priv = priv->next) in dmxCloseConsoleScreen()
653 return pScreen->CloseScreen(pScreen); in dmxCloseConsoleScreen()
663 Display *dpy = priv->display; in dmxConsoleCreateEmptyCursor()
666 pixmap = XCreateBitmapFromData(priv->display, priv->window, in dmxConsoleCreateEmptyCursor()
683 Display *dpy = priv->display; in dmxConsoleComputeWidthHeight()
709 if (screenInfo.screens[i]->x + screenInfo.screens[i]->width > *width) in dmxConsoleComputeWidthHeight()
710 *width = screenInfo.screens[i]->x + screenInfo.screens[i]->width; in dmxConsoleComputeWidthHeight()
712 if (screenInfo.screens[i]->y + screenInfo.screens[i]->height > *height) in dmxConsoleComputeWidthHeight()
713 *height = screenInfo.screens[i]->y + screenInfo.screens[i]->height; in dmxConsoleComputeWidthHeight()
730 /** Re-initialized the console device described by \a pDev (after a
736 Display *dpy; in dmxConsoleReInit()
738 if (!priv || !priv->initialized) in dmxConsoleReInit()
740 dpy = priv->display; in dmxConsoleReInit()
743 &priv->width, &priv->height, in dmxConsoleReInit()
744 &priv->xScale, &priv->yScale, in dmxConsoleReInit()
745 &priv->consWidth, &priv->consHeight); in dmxConsoleReInit()
746 XResizeWindow(dpy, priv->window, priv->consWidth, priv->consHeight); in dmxConsoleReInit()
747 XFreePixmap(dpy, priv->pixmap); in dmxConsoleReInit()
748 priv->pixmap = XCreatePixmap(dpy, in dmxConsoleReInit()
750 priv->consWidth, in dmxConsoleReInit()
751 priv->consHeight, in dmxConsoleReInit()
761 DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx]; in dmxConsoleInit()
765 Display *dpy; in dmxConsoleInit()
772 if (dmxLocal->type == DMX_LOCAL_MOUSE) in dmxConsoleInit()
773 priv->mou = pDev; in dmxConsoleInit()
774 if (dmxLocal->type == DMX_LOCAL_KEYBOARD) in dmxConsoleInit()
775 priv->kbd = pDev; in dmxConsoleInit()
776 if (priv->initialized++) in dmxConsoleInit()
779 if (!(dpy = priv->display = XOpenDisplay(dmxInput->name))) in dmxConsoleInit()
781 "dmxOpenConsole: cannot open console display %s\n", in dmxConsoleInit()
782 dmxInput->name); in dmxConsoleInit()
786 &priv->width, &priv->height, in dmxConsoleInit()
787 &priv->xScale, &priv->yScale, in dmxConsoleInit()
788 &priv->consWidth, &priv->consHeight); in dmxConsoleInit()
792 priv->initPointerX = scalex(priv, priv->width / 2); in dmxConsoleInit()
793 priv->initPointerY = scaley(priv, priv->height / 2); in dmxConsoleInit()
794 priv->eventMask = (ButtonPressMask in dmxConsoleInit()
811 attribs.event_mask = priv->eventMask; in dmxConsoleInit()
814 win = priv->window = XCreateWindow(dpy, in dmxConsoleInit()
816 0, 0, priv->consWidth, priv->consHeight, in dmxConsoleInit()
822 priv->pixmap = XCreatePixmap(dpy, RootWindow(dpy, screen), in dmxConsoleInit()
823 priv->consWidth, priv->consHeight, in dmxConsoleInit()
836 priv->cursorNormal = XCreateFontCursor(dpy, XC_circle); in dmxConsoleInit()
837 priv->cursorGrabbed = XCreateFontCursor(dpy, XC_spider); in dmxConsoleInit()
838 priv->cursorEmpty = dmxConsoleCreateEmptyCursor(priv); in dmxConsoleInit()
839 XDefineCursor(dpy, priv->window, priv->cursorNormal); in dmxConsoleInit()
866 priv->gc = XCreateGC(dpy, win, mask, &gcvals); in dmxConsoleInit()
875 priv->gcDet = XCreateGC(dpy, win, mask, &gcvals); in dmxConsoleInit()
881 priv->gcRev = XCreateGC(dpy, win, mask, &gcvals); in dmxConsoleInit()
890 priv->gcCur = XCreateGC(dpy, win, mask, &gcvals); in dmxConsoleInit()
894 if (dixLookupPrivate(&screenInfo.screens[0]->devPrivates, in dmxConsoleInit()
896 priv->next = dixLookupPrivate(&screenInfo.screens[0]->devPrivates, in dmxConsoleInit()
901 dixSetPrivate(&screenInfo.screens[0]->devPrivates, dmxScreenPrivateKey, in dmxConsoleInit()
912 info->buttonClass = 1; in dmxConsoleMouGetInfo()
913 dmxCommonMouGetMap(pDev, info->map, &info->numButtons); in dmxConsoleMouGetInfo()
914 info->valuatorClass = 1; in dmxConsoleMouGetInfo()
915 info->numRelAxes = 2; in dmxConsoleMouGetInfo()
916 info->minval[0] = 0; in dmxConsoleMouGetInfo()
917 info->minval[1] = 0; in dmxConsoleMouGetInfo()
919 info->maxval[0] = DisplayWidth(priv->display, DefaultScreen(priv->display)); in dmxConsoleMouGetInfo()
920 info->maxval[1] = in dmxConsoleMouGetInfo()
921 DisplayHeight(priv->display, DefaultScreen(priv->display)); in dmxConsoleMouGetInfo()
922 info->res[0] = 1; in dmxConsoleMouGetInfo()
923 info->minres[0] = 0; in dmxConsoleMouGetInfo()
924 info->maxres[0] = 1; in dmxConsoleMouGetInfo()
925 info->ptrFeedbackClass = 1; in dmxConsoleMouGetInfo()
934 info->keyboard = 1; in dmxConsoleKbdGetInfo()
935 info->keyClass = 1; in dmxConsoleKbdGetInfo()
936 dmxCommonKbdGetMap(pDev, &info->keySyms, info->modMap); in dmxConsoleKbdGetInfo()
937 info->freemap = 1; in dmxConsoleKbdGetInfo()
938 info->focusClass = 1; in dmxConsoleKbdGetInfo()
939 info->kbdFeedbackClass = 1; in dmxConsoleKbdGetInfo()
942 /** Handle special console-only keys. */
948 Display *dpy = priv->display; in dmxConsoleFunctions()
952 if (priv->fine) { in dmxConsoleFunctions()
953 priv->fine = 0; in dmxConsoleFunctions()
954 dmxConsoleClearCursor(priv, priv->globalX, priv->globalY, &rect); in dmxConsoleFunctions()
955 XSetClipRectangles(dpy, priv->gc, 0, 0, &rect, 1, Unsorted); in dmxConsoleFunctions()
956 XCopyArea(dpy, priv->pixmap, priv->window, priv->gc, in dmxConsoleFunctions()
957 0, 0, priv->consWidth, priv->consHeight, 0, 0); in dmxConsoleFunctions()
958 XSetClipMask(dpy, priv->gc, None); in dmxConsoleFunctions()
960 XDefineCursor(dpy, priv->window, in dmxConsoleFunctions()
961 priv->grabbed in dmxConsoleFunctions()
962 ? priv->cursorGrabbed : priv->cursorNormal); in dmxConsoleFunctions()
963 XWarpPointer(dpy, priv->window, priv->window, in dmxConsoleFunctions()
965 scalex(priv, priv->globalX), in dmxConsoleFunctions()
966 scaley(priv, priv->globalY)); in dmxConsoleFunctions()
967 XSync(dpy, False); /* Not a backend display */ in dmxConsoleFunctions()
970 priv->fine = 1; in dmxConsoleFunctions()
971 XRaiseWindow(dpy, priv->window); in dmxConsoleFunctions()
972 XDefineCursor(dpy, priv->window, priv->cursorEmpty); in dmxConsoleFunctions()
977 if (priv->grabbed) { in dmxConsoleFunctions()
980 XDefineCursor(dpy, priv->window, in dmxConsoleFunctions()
981 priv->fine ? priv->cursorEmpty : priv->cursorNormal); in dmxConsoleFunctions()
984 if (XGrabPointer(dpy, priv->window, True, in dmxConsoleFunctions()
985 0, GrabModeAsync, GrabModeAsync, priv->window, in dmxConsoleFunctions()
990 if (XGrabKeyboard(dpy, priv->window, True, in dmxConsoleFunctions()
996 XDefineCursor(dpy, priv->window, in dmxConsoleFunctions()
997 priv->fine ? priv->cursorEmpty : priv->cursorGrabbed); in dmxConsoleFunctions()
999 priv->grabbed = !priv->grabbed; in dmxConsoleFunctions()
1000 if (priv->fine) in dmxConsoleFunctions()
1018 for (j = 0; j < dmxInput->numDevs; j++) { in dmxDump()
1019 DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[j]; in dmxDump()
1020 myPrivate *priv = dmxLocal->private; in dmxDump()
1023 && priv->display in dmxDump()
1024 && XCheckTypedEvent(priv->display, MotionNotify, &X)) { in dmxDump()
1026 dmxInput->name, j, X.type, dmxEventName(X.type)); in dmxDump()
1033 * from anywhere on the screen. It is used when backend and console
1034 * input are both being taken from the same X display. */
1043 for (i = 0; i < dmxInput->numDevs; i++) { in dmxConsoleCapture()
1044 DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[i]; in dmxConsoleCapture()
1045 myPrivate *priv = dmxLocal->private; in dmxConsoleCapture()
1047 if (dmxLocal->extType != DMX_LOCAL_TYPE_CONSOLE) in dmxConsoleCapture()
1049 if (dmxLocal->type != DMX_LOCAL_MOUSE) in dmxConsoleCapture()
1051 if (priv->captured) in dmxConsoleCapture()
1053 priv->captured = 2; /* Ungrab only after proximal events. */ in dmxConsoleCapture()
1054 XRaiseWindow(priv->display, priv->window); in dmxConsoleCapture()
1055 XSync(priv->display, False); /* Not a backend display */ in dmxConsoleCapture()
1056 while (XCheckTypedEvent(priv->display, MotionNotify, &X)) { in dmxConsoleCapture()
1058 X.xmotion.x, X.xmotion.y, dmxInput->name); in dmxConsoleCapture()
1060 XWarpPointer(priv->display, None, in dmxConsoleCapture()
1061 priv->window, 0, 0, 0, 0, priv->curX, priv->curY); in dmxConsoleCapture()
1062 XSync(priv->display, False); /* Not a backend display */ in dmxConsoleCapture()
1064 if (priv->fine) in dmxConsoleCapture()
1077 for (i = 0; i < dmxInput->numDevs; i++) { in dmxConsoleUncapture()
1078 DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[i]; in dmxConsoleUncapture()
1079 myPrivate *priv = dmxLocal->private; in dmxConsoleUncapture()
1081 if (dmxLocal->extType != DMX_LOCAL_TYPE_CONSOLE) in dmxConsoleUncapture()
1083 if (dmxLocal->type != DMX_LOCAL_MOUSE) in dmxConsoleUncapture()
1085 if (!priv->captured) in dmxConsoleUncapture()
1087 priv->captured = 0; in dmxConsoleUncapture()
1088 XSync(priv->display, False); /* Not a backend display */ in dmxConsoleUncapture()