1 /**************************************************************************
5 Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
7 Contact: Boram Park <boram1288.park@samsung.com>
8 Sangjin LEE <lsj119@samsung.com>
10 Permission is hereby granted, free of charge, to any person obtaining a
11 copy of this software and associated documentation files (the
12 "Software"), to deal in the Software without restriction, including
13 without limitation the rights to use, copy, modify, merge, publish,
14 distribute, sub license, and/or sell copies of the Software, and to
15 permit persons to whom the Software is furnished to do so, subject to
16 the following conditions:
18 The above copyright notice and this permission notice (including the
19 next paragraph) shall be included in all copies or substantial portions
22 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
25 IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
26 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
27 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
28 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 **************************************************************************/
39 #include <sys/types.h>
40 #include <sys/fcntl.h>
51 #include <X11/Xatom.h>
53 #include <windowstr.h>
54 #include <X11/Xproto.h>
55 #include <X11/extensions/XI2proto.h>
57 #include "xdbg_types.h"
58 #include "xdbg_evlog_core.h"
59 #include "xdbg_evlog.h"
61 #define FP1616toDBL(x) ((x) * 1.0 / (1 << 16))
64 _getWindowAttributeMask (CARD32 mask, char *reply, int *len)
69 for (i = 0 ; i < sizeof(mask) * 4 ; i++)
80 case CWBackPixmap: REPLY("CWBackPixmap"); break;
81 case CWBackPixel: REPLY("CWBackPixel"); break;
82 case CWBorderPixmap: REPLY("CWBorderPixmap"); break;
83 case CWBorderPixel: REPLY("CWBorderPixel"); break;
84 case CWBitGravity: REPLY("CWBitGravity"); break;
85 case CWWinGravity: REPLY("CWWinGravity"); break;
86 case CWBackingStore: REPLY("CWBackingStore"); break;
87 case CWBackingPlanes: REPLY("CWBackingPlanes"); break;
88 case CWBackingPixel: REPLY("CWBackingPixel"); break;
89 case CWOverrideRedirect: REPLY("CWOverrideRedirect"); break;
90 case CWSaveUnder: REPLY("CWSaveUnder"); break;
91 case CWEventMask: REPLY("CWEventMask"); break;
92 case CWDontPropagate: REPLY("CWDontPropagate"); break;
93 case CWColormap: REPLY("CWColormap"); break;
94 case CWCursor: REPLY("CWCursor"); break;
102 #define GET_INT16(m, f) \
105 f = (INT16) *pVlist;\
108 #define GET_CARD16(m, f) \
111 f = (CARD16) *pVlist;\
115 #define GET_CARD8(m, f) \
118 f = (CARD8) *pVlist;\
123 _getConfigureWindowMask (CARD16 mask, char *reply, int *len, XID *vlist)
128 unsigned short w=0, h=0;
135 if ((mask & (CWX | CWY)) && (!(mask & (CWHeight | CWWidth)))) {
139 /* or should be resized */
140 else if (mask & (CWX | CWY | CWWidth | CWHeight)) {
143 GET_CARD16(CWWidth, w);
144 GET_CARD16(CWHeight, h);
148 for (i = 0 ; i < sizeof(mask) * 4 ; i++)
161 case CWX: REPLY("CWX:%d",x); break;
162 case CWY: REPLY("CWY:%d",y); break;
163 case CWWidth: REPLY("CWWidth:%d",w); break;
164 case CWHeight: REPLY("CWHeight:%d",h); break;
165 case CWBorderWidth: REPLY("CWBorderWidth"); break;
166 case CWSibling: REPLY("CWSibling"); break;
167 case CWStackMode: REPLY("CWStackMode"); break;
174 case CWX: REPLY("CWX"); break;
175 case CWY: REPLY("CWY"); break;
176 case CWWidth: REPLY("CWWidth"); break;
177 case CWHeight: REPLY("CWHeight"); break;
178 case CWBorderWidth: REPLY("CWBorderWidth"); break;
179 case CWSibling: REPLY("CWSibling"); break;
180 case CWStackMode: REPLY("CWStackMode"); break;
190 _getKeyMask (CARD16 mask, char *reply, int *len)
195 for (i = 0 ; i < sizeof(mask) * 4 ; i++)
206 case ShiftMask: REPLY("ShiftMask"); break;
207 case LockMask: REPLY("LockMask"); break;
208 case ControlMask: REPLY("ControlMask"); break;
209 case Mod1Mask: REPLY("Mod1Mask"); break;
210 case Mod2Mask: REPLY("Mod2Mask"); break;
211 case Mod3Mask: REPLY("Mod3Mask"); break;
212 case Mod4Mask: REPLY("Mod4Mask"); break;
213 case Mod5Mask: REPLY("Mod5Mask"); break;
214 case Button1Mask: REPLY("Button1Mask"); break;
215 case Button2Mask: REPLY("Button2Mask"); break;
216 case Button3Mask: REPLY("Button3Mask"); break;
217 case Button4Mask: REPLY("Button4Mask"); break;
218 case Button5Mask: REPLY("Button5Mask"); break;
219 case AnyModifier: REPLY("AnyModifier"); break;
228 _getEventMask (CARD32 mask, char *reply, int *len)
233 for (i = 0 ; i < sizeof(mask) * 4 ; i++)
244 case NoEventMask: REPLY("NoEventMask"); break;
245 case KeyPressMask: REPLY("KeyPressMask"); break;
246 case KeyReleaseMask: REPLY("KeyReleaseMask"); break;
247 case ButtonPressMask: REPLY("ButtonPressMask"); break;
248 case ButtonReleaseMask: REPLY("ButtonReleaseMask"); break;
249 case EnterWindowMask: REPLY("EnterWindowMask"); break;
250 case LeaveWindowMask: REPLY("LeaveWindowMask"); break;
251 case PointerMotionMask: REPLY("PointerMotionMask"); break;
252 case PointerMotionHintMask: REPLY("PointerMotionHintMask"); break;
253 case Button1MotionMask: REPLY("Button1MotionMask"); break;
254 case Button2MotionMask: REPLY("Button2MotionMask"); break;
255 case Button3MotionMask: REPLY("Button3MotionMask"); break;
256 case Button4MotionMask: REPLY("Button4MotionMask"); break;
257 case Button5MotionMask: REPLY("Button5MotionMask"); break;
258 case ButtonMotionMask: REPLY("ButtonMotionMask"); break;
259 case KeymapStateMask: REPLY("KeymapStateMask"); break;
260 case ExposureMask: REPLY("ExposureMask"); break;
261 case VisibilityChangeMask: REPLY("VisibilityChangeMask"); break;
262 case StructureNotifyMask: REPLY("StructureNotifyMask"); break;
263 case ResizeRedirectMask: REPLY("ResizeRedirectMask"); break;
264 case SubstructureNotifyMask: REPLY("SubstructureNotifyMask"); break;
265 case SubstructureRedirectMask: REPLY("SubstructureRedirectMask"); break;
266 case FocusChangeMask: REPLY("FocusChangeMask"); break;
267 case PropertyChangeMask: REPLY("PropertyChangeMask"); break;
268 case ColormapChangeMask: REPLY("ColormapChangeMask"); break;
269 case OwnerGrabButtonMask: REPLY("OwnerGrabButtonMask"); break;
277 char * xDbgEvlogRequestCore (EvlogInfo *evinfo, int detail_level, char *reply, int *len)
279 xReq *req = evinfo->req.ptr;
281 switch (req->reqType)
285 xCreateWindowReq *stuff = (xCreateWindowReq *)req;
287 REPLY (": Window(0x%x) Parent(0x%x) size(%dx%d) boaderWid(%d) coordinate(%d,%d)",
288 (unsigned int)stuff->wid,
289 (unsigned int)stuff->parent,
296 if (detail_level >= EVLOG_PRINT_DETAIL)
298 const char *visual, *class;
299 char dvisual[10], dclass[10];
301 switch (stuff->visual)
303 case CopyFromParent: visual = "CopyFromParent"; break;
304 default: visual = dvisual; snprintf (dvisual, 10, "0x%x", (unsigned int)stuff->visual); break;
307 switch (stuff->class)
309 case CopyFromParent: class = "CopyFromParent"; break;
310 case InputOutput: class = "InputOutput"; break;
311 case InputOnly: class = "InputOnly"; break;
312 default: class = dclass; snprintf (dclass, 10, "0x%x", stuff->class); break;
316 REPLY ("%67s depth(%d) visual_ID(%s) class(%s)\n",
322 \r REPLY ("%67s mask", " ");
324 reply = _getWindowAttributeMask(stuff->mask, reply, len);
331 case X_ChangeWindowAttributes:
333 xChangeWindowAttributesReq *stuff = (xChangeWindowAttributesReq *)req;
334 REPLY (": XID(0x%x)", (unsigned int)stuff->window);
336 if (detail_level >= EVLOG_PRINT_DETAIL)
338 \r REPLY (" detail");
340 reply = _getWindowAttributeMask(stuff->valueMask, reply, len);
341 if (stuff->valueMask == CWEventMask)
343 REPLY (", mask(%x)", (unsigned int)*((XID *)&stuff[1]));
350 case X_ChangeSaveSet:
352 xChangeSaveSetReq *stuff = (xChangeSaveSetReq *)req;
354 REPLY (": XID(0x%x)",
355 (unsigned int)stuff->window);
357 if (detail_level >= EVLOG_PRINT_DETAIL)
364 case SetModeInsert: mode = "SetModeInsert"; break;
365 case SetModeDelete: mode = "SetModeDelete"; break;
366 default: mode = dmode; snprintf (dmode, 10, "%d", stuff->mode); break;
376 case X_ReparentWindow:
378 xReparentWindowReq *stuff = (xReparentWindowReq *)req;
379 REPLY (": Window(0x%x) Parent(0x%x) coord(%d,%d)",
380 (unsigned int)stuff->window,
381 (unsigned int)stuff->parent,
388 case X_ConfigureWindow:
390 xConfigureWindowReq *stuff = (xConfigureWindowReq *)req;
391 REPLY (": XID(0x%x)",
392 (unsigned int)stuff->window);
394 if (detail_level >= EVLOG_PRINT_DETAIL)
398 reply = _getConfigureWindowMask(stuff->mask, reply, len, (XID *)&stuff[1]);
405 case X_CirculateWindow:
407 xCirculateWindowReq *stuff = (xCirculateWindowReq *)req;
409 REPLY (": XID(0x%x)",
410 (unsigned int)stuff->window);
412 if (detail_level >= EVLOG_PRINT_DETAIL)
414 const char *direction;
417 switch (stuff->direction)
419 case RaiseLowest: direction = "RaiseLowest"; break;
420 case LowerHighest: direction = "LowerHighest"; break;
421 default: direction = ddirection; snprintf (ddirection, 10, "%d", stuff->direction); break;
424 REPLY (" direction(%s)",
432 xInternAtomReq *stuff = (xInternAtomReq *)req;
433 char temp[64] = {0, };
435 int min = MIN (sizeof (temp) -1, stuff->nbytes);
436 strncpy (temp, (char*)&stuff[1], min);
439 REPLY (": Atom(%s) onlyIfExists(%s)",
441 stuff->onlyIfExists?"True":"False");
445 case X_ChangeProperty:
447 xChangePropertyReq *stuff = (xChangePropertyReq *)req;
449 REPLY (": XID(0x%x)",
450 (unsigned int)stuff->window);
453 reply = xDbgGetAtom(stuff->property, evinfo, reply, len);
456 reply = xDbgGetAtom(stuff->type, evinfo, reply, len);
458 if (detail_level >= EVLOG_PRINT_DETAIL)
465 case PropModeReplace: mode = "PropModeReplace"; break;
466 case PropModePrepend: mode = "PropModePrepend"; break;
467 case PropModeAppend: mode = "PropModeAppend"; break;
468 default: mode = dmode; snprintf (dmode, 10, "%d", stuff->mode); break;
472 REPLY ("%67s mode(%s) format(%d) nUnits(%ld)",
476 (long int)stuff->nUnits);
482 case X_DeleteProperty:
484 xDeletePropertyReq *stuff = (xDeletePropertyReq *)req;
485 REPLY (": XID(0x%x)",
486 (unsigned int)stuff->window);
489 reply = xDbgGetAtom(stuff->property, evinfo, reply, len);
496 xGetPropertyReq *stuff = (xGetPropertyReq *)req;
498 REPLY (": XID(0x%x)",
499 (unsigned int)stuff->window);
502 reply = xDbgGetAtom(stuff->property, evinfo, reply, len);
504 reply = xDbgGetAtom(stuff->type, evinfo, reply, len);
506 if (detail_level >= EVLOG_PRINT_DETAIL)
509 REPLY ("%67s delete(%s) longOffset(%ld) longLength(%ld)",
511 stuff->delete ? "YES" : "NO",
512 (long int)stuff->longOffset,
513 (long int)stuff->longLength);
519 case X_SetSelectionOwner:
521 xSetSelectionOwnerReq *stuff = (xSetSelectionOwnerReq *)req;
522 REPLY (": XID(0x%x)",
523 (unsigned int)stuff->window);
525 REPLY (" Selection");
526 reply = xDbgGetAtom(stuff->selection, evinfo, reply, len);
528 if (detail_level >= EVLOG_PRINT_DETAIL)
530 REPLY (" time(%lums)",
531 (unsigned long)stuff->time);
537 case X_ConvertSelection:
539 xConvertSelectionReq *stuff = (xConvertSelectionReq *)req;
540 REPLY (": XID(0x%x)",
541 (unsigned int)stuff->requestor);
543 REPLY (" Selection");
544 reply = xDbgGetAtom(stuff->selection, evinfo, reply, len);
546 reply = xDbgGetAtom(stuff->target, evinfo, reply, len);
548 reply = xDbgGetAtom(stuff->property, evinfo, reply, len);
550 if (detail_level >= EVLOG_PRINT_DETAIL)
552 REPLY (" time(%lums)",
553 (unsigned long)stuff->time);
561 xSendEventReq *stuff = (xSendEventReq *)req;
562 REPLY (": XID(0x%x)",
563 (unsigned int)stuff->destination);
565 if (detail_level >= EVLOG_PRINT_DETAIL)
567 REPLY (" propagate(%s)",
568 stuff->propagate ? "YES" : "NO");
570 REPLY (" event_mask");
572 reply = _getEventMask(stuff->eventMask, reply, len);
581 xGrabPointerReq *stuff = (xGrabPointerReq *)req;
583 REPLY (": XID(0x%x) ConfineTo(0x%x) Cursor(0x%x)",
584 (unsigned int)stuff->grabWindow,
585 (unsigned int)stuff->confineTo,
586 (unsigned int)stuff->cursor);
588 if (detail_level >= EVLOG_PRINT_DETAIL)
590 const char *pointer_mode, *keyboard_mode;
591 char dpointer_mode[10], dkeyboard_mode[10];
593 switch (stuff->pointerMode)
595 case GrabModeSync: pointer_mode = "GrabModeSync"; break;
596 case GrabModeAsync: pointer_mode = "GrabModeAsync"; break;
597 default: pointer_mode = dpointer_mode; snprintf (dpointer_mode, 10, "%d", stuff->pointerMode); break;
600 switch (stuff->keyboardMode)
602 case GrabModeSync: keyboard_mode = "GrabModeSync"; break;
603 case GrabModeAsync: keyboard_mode = "GrabModeAsync"; break;
604 default: keyboard_mode = dkeyboard_mode; snprintf (dkeyboard_mode, 10, "%d", stuff->keyboardMode); break;
607 REPLY (" pointer_mode(%s) keyboard_mode(%s) time(%lums)\n",
610 (unsigned long)stuff->time);
612 REPLY (" event_mask");
614 reply = _getEventMask(stuff->eventMask, reply, len);
623 xGrabButtonReq *stuff = (xGrabButtonReq *)req;
625 REPLY (": XID(0x%x) ConfineTo(0x%x) Cursor(0x%x)",
626 (unsigned int)stuff->grabWindow,
627 (unsigned int)stuff->confineTo,
628 (unsigned int)stuff->cursor);
630 if (detail_level >= EVLOG_PRINT_DETAIL)
632 const char *pointer_mode, *keyboard_mode, *button;
633 char dpointer_mode[10], dkeyboard_mode[10], dbutton[10];
635 switch (stuff->pointerMode)
637 case GrabModeSync: pointer_mode = "GrabModeSync"; break;
638 case GrabModeAsync: pointer_mode = "GrabModeAsync"; break;
639 default: pointer_mode = dpointer_mode; snprintf (dpointer_mode, 10, "%d", stuff->pointerMode); break;
642 switch (stuff->keyboardMode)
644 case GrabModeSync: keyboard_mode = "GrabModeSync"; break;
645 case GrabModeAsync: keyboard_mode = "GrabModeAsync"; break;
646 default: keyboard_mode = dkeyboard_mode; snprintf (dkeyboard_mode, 10, "%d", stuff->keyboardMode); break;
649 switch (stuff->button)
651 case Button1: button = "Button1"; break;
652 case Button2: button = "Button2"; break;
653 case Button3: button = "Button3"; break;
654 case Button4: button = "Button4"; break;
655 case Button5: button = "Button5"; break;
656 default: button = dbutton; snprintf (dbutton, 10, "%d", stuff->button); break;
660 REPLY ("%67s event_mask(0x%x) pointer_mode(%s) keyboard_mode(%s) button(%s)",
667 REPLY (" modifiers");
669 reply = _getKeyMask(stuff->modifiers, reply, len);
678 xUngrabButtonReq *stuff = (xUngrabButtonReq *)req;
679 REPLY (": XID(0x%x)",
680 (unsigned int)stuff->grabWindow);
682 if (detail_level >= EVLOG_PRINT_DETAIL)
684 REPLY (" modifiers");
686 reply = _getKeyMask(stuff->modifiers, reply, len);
693 case X_ChangeActivePointerGrab:
695 xChangeActivePointerGrabReq *stuff = (xChangeActivePointerGrabReq *)req;
696 REPLY (": Cursor(0x%x)",
697 (unsigned int)stuff->cursor);
699 if (detail_level >= EVLOG_PRINT_DETAIL)
701 REPLY (" time(%lums)",
702 (unsigned long)stuff->time);
704 REPLY (" event_mask");
706 reply = _getEventMask(stuff->eventMask, reply, len);
715 xGrabKeyboardReq *stuff = (xGrabKeyboardReq *)req;
717 REPLY (": XID(0x%x)",
718 (unsigned int)stuff->grabWindow);
720 if (detail_level >= EVLOG_PRINT_DETAIL)
722 const char *pointer_mode, *keyboard_mode;
723 char dpointer_mode[10], dkeyboard_mode[10];
725 switch (stuff->pointerMode)
727 case GrabModeSync: pointer_mode = "GrabModeSync"; break;
728 case GrabModeAsync: pointer_mode = "GrabModeAsync"; break;
729 default: pointer_mode = dpointer_mode; snprintf (dpointer_mode, 10, "%d", stuff->pointerMode); break;
732 switch (stuff->keyboardMode)
734 case GrabModeSync: keyboard_mode = "GrabModeSync"; break;
735 case GrabModeAsync: keyboard_mode = "GrabModeAsync"; break;
736 default: keyboard_mode = dkeyboard_mode; snprintf (dkeyboard_mode, 10, "%d", stuff->keyboardMode); break;
739 REPLY (" owner_events(%s) pointer_mode(%s) keyboard_mode(%s)",
740 stuff->ownerEvents ? "YES" : "NO",
750 xGrabKeyReq *stuff = (xGrabKeyReq *)req;
752 REPLY (": XID(0x%x)",
753 (unsigned int)stuff->grabWindow);
755 if (detail_level >= EVLOG_PRINT_DETAIL)
757 const char *pointer_mode, *keyboard_mode;
758 char dpointer_mode[10], dkeyboard_mode[10];
760 switch (stuff->pointerMode)
762 case GrabModeSync: pointer_mode = "GrabModeSync"; break;
763 case GrabModeAsync: pointer_mode = "GrabModeAsync"; break;
764 default: pointer_mode = dpointer_mode; snprintf (dpointer_mode, 10, "%d", stuff->pointerMode); break;
767 switch (stuff->keyboardMode)
769 case GrabModeSync: keyboard_mode = "GrabModeSync"; break;
770 case GrabModeAsync: keyboard_mode = "GrabModeAsync"; break;
771 default: keyboard_mode = dkeyboard_mode; snprintf (dkeyboard_mode, 10, "%d", stuff->keyboardMode); break;
774 REPLY (" key(%d) pointer_mode(%s) keyboard_mode(%s)\n",
779 REPLY (" modifiers");
781 reply = _getKeyMask(stuff->modifiers, reply, len);
790 xUngrabKeyReq *stuff = (xUngrabKeyReq *)req;
791 REPLY (": XID(0x%x)",
792 (unsigned int)stuff->grabWindow);
794 if (detail_level >= EVLOG_PRINT_DETAIL)
799 REPLY (" modifiers");
801 reply = _getKeyMask(stuff->modifiers, reply, len);
808 case X_SetInputFocus:
810 xSetInputFocusReq *stuff = (xSetInputFocusReq *)req;
811 REPLY (": XID(0x%x)",
812 (unsigned int)stuff->focus);
814 if (detail_level >= EVLOG_PRINT_DETAIL)
816 REPLY (" reverTo(%d) time(%lums)",
818 (unsigned long)stuff->time);
826 xCreatePixmapReq *stuff = (xCreatePixmapReq *)req;
827 REPLY (": Pixmap(0x%x) Drawable(0x%x) size(%dx%d)",
828 (unsigned int)stuff->pid,
829 (unsigned int)stuff->drawable,
833 if (detail_level >= EVLOG_PRINT_DETAIL)
844 xCreateGCReq *stuff = (xCreateGCReq *)req;
845 REPLY (": Gc(0x%x) Drawable(0x%x)",
846 (unsigned int)stuff->gc,
847 (unsigned int)stuff->drawable);
854 xClearAreaReq *stuff = (xClearAreaReq *)req;
855 REPLY (": XID(0x%x) area(%d,%d %dx%d)",
856 (unsigned int)stuff->window,
862 if (detail_level >= EVLOG_PRINT_DETAIL)
864 REPLY (" exposures(%s)",
865 stuff->exposures ? "YES" : "NO");
873 xCopyAreaReq *stuff = (xCopyAreaReq *)req;
874 REPLY (": srcXID(0x%x) dstXID(0x%x) gc(0x%x) size(%dx%d) src(%d,%d) dst(%d,%d)",
875 (unsigned int)stuff->srcDrawable,
876 (unsigned int)stuff->dstDrawable,
877 (unsigned int)stuff->gc,
890 xCopyPlaneReq *stuff = (xCopyPlaneReq *)req;
891 REPLY (": srcXID(0x%x) dstXID(0x%x) gc(0x%x) size(%dx%d) src(%d,%d) dst(%d,%d)",
892 (unsigned int)stuff->srcDrawable,
893 (unsigned int)stuff->dstDrawable,
894 (unsigned int)stuff->gc,
902 if (detail_level >= EVLOG_PRINT_DETAIL)
904 REPLY (" bit_plane(0x%x)",
905 (unsigned int)stuff->bitPlane);
913 xPolyPointReq *stuff = (xPolyPointReq *)req;
914 REPLY (": XID(0x%x) gc(0x%x)",
915 (unsigned int)stuff->drawable,
916 (unsigned int)stuff->gc);
918 if (detail_level >= EVLOG_PRINT_DETAIL)
920 const char *coord_mode;
921 char dcoord_mode[10];
923 switch (stuff->coordMode)
925 case CoordModeOrigin: coord_mode = "CoordModeOrigin"; break;
926 case CoordModePrevious: coord_mode = "CoordModePrevious"; break;
927 default: coord_mode = dcoord_mode; snprintf (dcoord_mode, 10, "%d", stuff->coordMode); break;
930 REPLY (" coord_mode(%s)",
939 xPolyLineReq *stuff = (xPolyLineReq *)req;
940 REPLY (": XID(0x%x gc(0x%x)",
941 (unsigned int)stuff->drawable,
942 (unsigned int)stuff->gc);
944 if (detail_level >= EVLOG_PRINT_DETAIL)
946 const char *coord_mode;
947 char dcoord_mode[10];
949 switch (stuff->coordMode)
951 case CoordModeOrigin: coord_mode = "CoordModeOrigin"; break;
952 case CoordModePrevious: coord_mode = "CoordModePrevious"; break;
953 default: coord_mode = dcoord_mode; snprintf (dcoord_mode, 10, "%d", stuff->coordMode); break;
956 REPLY (" coord_mode(%s)",
965 xPolySegmentReq *stuff = (xPolySegmentReq *)req;
966 REPLY (": XID(0x%x) gc(0x%x)",
967 (unsigned int)stuff->drawable,
968 (unsigned int)stuff->gc);
973 case X_PolyRectangle:
975 xPolyRectangleReq *stuff = (xPolyRectangleReq *)req;
976 REPLY (": XID(0x%x) gc(0x%x)",
977 (unsigned int)stuff->drawable,
978 (unsigned int)stuff->gc);
985 xPolyArcReq *stuff = (xPolyArcReq *)req;
986 REPLY (": XID(0x%x) gc(0x%x)",
987 (unsigned int)stuff->drawable,
988 (unsigned int)stuff->gc);
995 xFillPolyReq *stuff = (xFillPolyReq *)req;
996 REPLY (": XID(0x%x) gc(0x%x)",
997 (unsigned int)stuff->drawable,
998 (unsigned int)stuff->gc);
1000 if (detail_level >= EVLOG_PRINT_DETAIL)
1002 const char *shape, *coord_mode;
1003 char dshape[10], dcoord_mode[10];
1005 switch (stuff->shape)
1007 case Complex: shape = "Complex"; break;
1008 case Nonconvex: shape = "Nonconvex"; break;
1009 case Convex: shape = "Convex"; break;
1010 default: shape = dshape; snprintf (dshape, 10, "%d", stuff->shape); break;
1013 switch (stuff->coordMode)
1015 case CoordModeOrigin: coord_mode = "CoordModeOrigin"; break;
1016 case CoordModePrevious: coord_mode = "CoordModePrevious"; break;
1017 default: coord_mode = dcoord_mode; snprintf (dcoord_mode, 10, "%d", stuff->coordMode); break;
1020 REPLY (" shape(%s) coord_mode(%s)",
1028 case X_PolyFillRectangle:
1030 xPolyFillRectangleReq *stuff = (xPolyFillRectangleReq *)req;
1031 REPLY (": XID(0x%x) gc(0x%x)",
1032 (unsigned int)stuff->drawable,
1033 (unsigned int)stuff->gc);
1040 xPolyFillArcReq *stuff = (xPolyFillArcReq *)req;
1041 REPLY (": XID(0x%x) gc(0x%x)",
1042 (unsigned int)stuff->drawable,
1043 (unsigned int)stuff->gc);
1050 xPutImageReq *stuff = (xPutImageReq *)req;
1051 REPLY (": XID(0x%x) gc(0x%x) size(%dx%d) dst(%d,%d)",
1052 (unsigned int)stuff->drawable,
1053 (unsigned int)stuff->gc,
1059 if (detail_level >= EVLOG_PRINT_DETAIL)
1064 switch (stuff->format)
1066 case XYBitmap: format = "XYBitmap"; break;
1067 case XYPixmap: format = "XYPixmap"; break;
1068 case ZPixmap: format = "ZPixmap"; break;
1069 default: format = dformat; snprintf (dformat, 10, "%d", stuff->format); break;
1072 REPLY (" format(%s) depth(%d)",
1082 xGetImageReq *stuff = (xGetImageReq *)req;
1083 REPLY (": XID(0x%x) size(%dx%d) dst(%d,%d)",
1084 (unsigned int)stuff->drawable,
1090 if (detail_level >= EVLOG_PRINT_DETAIL)
1095 switch (stuff->format)
1097 case XYBitmap: format = "XYBitmap"; break;
1098 case XYPixmap: format = "XYPixmap"; break;
1099 case ZPixmap: format = "ZPixmap"; break;
1100 default: format = dformat; snprintf (dformat, 10, "%d", stuff->format); break;
1103 REPLY (" format(%s) plane_mask(0x%x)",
1105 (unsigned int)stuff->planeMask);
1113 xPolyText8Req *stuff = (xPolyText8Req *)req;
1114 REPLY (": XID(0x%x) gc(0x%x) coord(%d,%d)",
1115 (unsigned int)stuff->drawable,
1116 (unsigned int)stuff->gc,
1125 xPolyText16Req *stuff = (xPolyText16Req *)req;
1126 REPLY (": XID(0x%x) gc(0x%x) coord(%d,%d)",
1127 (unsigned int)stuff->drawable,
1128 (unsigned int)stuff->gc,
1137 xImageText8Req *stuff = (xImageText8Req *)req;
1138 REPLY (": XID(0x%x) gc(0x%x) coord(%d,%d)",
1139 (unsigned int)stuff->drawable,
1140 (unsigned int)stuff->gc,
1144 if (detail_level >= EVLOG_PRINT_DETAIL)
1146 REPLY (" nchars(%d)",
1155 xImageText16Req *stuff = (xImageText16Req *)req;
1156 REPLY (": XID(0x%x) gc(0x%x) coord(%d,%d)",
1157 (unsigned int)stuff->drawable,
1158 (unsigned int)stuff->gc,
1162 if (detail_level >= EVLOG_PRINT_DETAIL)
1164 REPLY (" nchars(%d)",
1171 case X_ChangeKeyboardMapping:
1173 xChangeKeyboardMappingReq *stuff = (xChangeKeyboardMappingReq *)req;
1174 REPLY (": first_key_code(%d) key_syms_per_key_code(%d)",
1175 stuff->firstKeyCode,
1176 stuff->keySymsPerKeyCode);
1178 if (detail_level >= EVLOG_PRINT_DETAIL)
1180 REPLY (" key_codes(%d)",
1187 case X_GetKeyboardMapping:
1189 xGetKeyboardMappingReq *stuff = (xGetKeyboardMappingReq *)req;
1190 REPLY (": first_key_code(%d)",
1191 stuff->firstKeyCode);
1193 if (detail_level >= EVLOG_PRINT_DETAIL)
1195 REPLY (" count(%d)",
1202 case X_ChangePointerControl:
1204 xChangePointerControlReq *stuff = (xChangePointerControlReq *)req;
1205 REPLY (": accelNum(%d) accelDenum(%d) threshold(%d)",
1210 if (detail_level >= EVLOG_PRINT_DETAIL)
1212 REPLY (" do_accel(%s) do_thresh(%s)",
1213 stuff->doAccel ? "YES" : "NO",
1214 stuff->doThresh ? "YES" : "NO");
1220 case X_SetPointerMapping:
1222 xSetPointerMappingReq *stuff = (xSetPointerMappingReq *)req;
1224 if (detail_level >= EVLOG_PRINT_DETAIL)
1226 REPLY (": Elts(%d)",
1233 case X_SetModifierMapping:
1235 xSetModifierMappingReq *stuff =(xSetModifierMappingReq *)req;
1236 REPLY (": num_key_per_modifier(%d)",
1237 stuff->numKeyPerModifier);
1242 case X_ListProperties:
1243 case X_DestroyWindow:
1244 case X_DestroySubwindows:
1246 case X_MapSubwindows:
1248 case X_UnmapSubwindows:
1251 case X_UngrabPointer:
1252 case X_UngrabKeyboard:
1257 xResourceReq *stuff = (xResourceReq *)req;
1258 REPLY (": XID(0x%x)",
1259 (unsigned int)stuff->id);
1271 char * xDbgEvlogEventCore (EvlogInfo *evinfo, int detail_level, char *reply, int *len)
1273 xEvent *evt = evinfo->evt.ptr;
1275 switch (evt->u.u.type & 0x7F)
1283 REPLY (": Root(0x%x %d,%d) Event(0x%x %d,%d) Child(0x%x)",
1284 (unsigned int)evt->u.keyButtonPointer.root,
1285 evt->u.keyButtonPointer.rootX,
1286 evt->u.keyButtonPointer.rootY,
1287 (unsigned int)evt->u.keyButtonPointer.event,
1288 evt->u.keyButtonPointer.eventX,
1289 evt->u.keyButtonPointer.eventY,
1290 (unsigned int)evt->u.keyButtonPointer.child);
1292 if (detail_level >= EVLOG_PRINT_DETAIL)
1295 REPLY ("%67s state(0x%x) same_screen(%s)",
1297 evt->u.keyButtonPointer.state,
1298 evt->u.keyButtonPointer.sameScreen ? "YES" : "NO");
1307 REPLY (": Root(0x%x %d,%d) Event(0x%x %d,%d) Child(0x%x)",
1308 (unsigned int)evt->u.enterLeave.root,
1309 evt->u.enterLeave.rootX,
1310 evt->u.enterLeave.rootY,
1311 (unsigned int)evt->u.enterLeave.event,
1312 evt->u.enterLeave.eventX,
1313 evt->u.enterLeave.eventY,
1314 (unsigned int)evt->u.enterLeave.child);
1316 if (detail_level >= EVLOG_PRINT_DETAIL)
1319 REPLY ("%67s time(%lums) state(0x%x) same_screen(%s) focus(%s)",
1321 (unsigned long)evt->u.enterLeave.time,
1322 evt->u.enterLeave.state,
1323 evt->u.enterLeave.flags & ELFlagSameScreen ? "YES" : "NO",
1324 evt->u.enterLeave.flags & ELFlagFocus ? "YES" : "NO");
1334 REPLY (": XID(0x%x)",
1335 (unsigned int)evt->u.focus.window);
1337 if (detail_level >= EVLOG_PRINT_DETAIL)
1342 switch (evt->u.focus.mode)
1344 case NotifyNormal: mode = "NotifyNormal"; break;
1345 case NotifyGrab: mode = "NotifyGrab"; break;
1346 case NotifyUngrab: mode = "NotifyUngrab"; break;
1347 case NotifyWhileGrabbed: mode = "NotifyWhileGrabbed"; break;
1348 default: mode = dmode, snprintf (dmode, 10, "%u", evt->u.focus.mode); break;
1360 REPLY (": XID(0x%x) size(%dx%d) coord(%d,%d)",
1361 (unsigned int)evt->u.expose.window,
1362 evt->u.expose.width,
1363 evt->u.expose.height,
1367 if (detail_level >= EVLOG_PRINT_DETAIL)
1369 REPLY (" count(%d)",
1370 evt->u.expose.count);
1376 case GraphicsExpose:
1378 REPLY (": XID(0x%x) size(%dx%d) coord(%d,%d)",
1379 (unsigned int)evt->u.graphicsExposure.drawable,
1380 evt->u.graphicsExposure.width,
1381 evt->u.graphicsExposure.height,
1382 evt->u.graphicsExposure.x,
1383 evt->u.graphicsExposure.y);
1385 if (detail_level >= EVLOG_PRINT_DETAIL)
1390 switch (evt->u.graphicsExposure.majorEvent)
1392 case X_CopyArea: major = "CopyArea"; break;
1393 case X_CopyPlane: major = "CopyPlane"; break;
1394 default: major = dmajor; snprintf (dmajor, 10, "%d", evt->u.graphicsExposure.majorEvent); break;
1397 REPLY (" major_event(%s) minor_event(%d) count(%d)",
1399 evt->u.graphicsExposure.minorEvent,
1400 evt->u.graphicsExposure.count);
1408 REPLY (": XID(0x%x)",
1409 (unsigned int)evt->u.noExposure.drawable);
1411 if (detail_level >= EVLOG_PRINT_DETAIL)
1416 switch (evt->u.noExposure.majorEvent)
1418 case X_CopyArea: major = "CopyArea"; break;
1419 case X_CopyPlane: major = "CopyPlane"; break;
1420 default: major = dmajor; snprintf (dmajor, 10, "%d", evt->u.noExposure.majorEvent); break;
1423 REPLY (" major_event(%s) minor_event(%d)",
1425 evt->u.noExposure.minorEvent);
1431 case VisibilityNotify:
1433 REPLY (": XID(0x%x)",
1434 (unsigned int)evt->u.visibility.window);
1436 if (detail_level >= EVLOG_PRINT_DETAIL)
1441 switch (evt->u.visibility.state)
1443 case VisibilityUnobscured: state = "VisibilityUnobscured"; break;
1444 case VisibilityPartiallyObscured: state = "VisibilityPartiallyObscured"; break;
1445 case VisibilityFullyObscured: state = "VisibilityFullyObscured"; break;
1446 default: state = dstate; snprintf (dstate, 10, "%d", evt->u.visibility.state); break;
1449 REPLY (" state(%s)",
1458 REPLY (": Window(0x%x) Parent(0x%x) size(%dx%d) coord(%d,%d) borderWidth(%d)",
1459 (unsigned int)evt->u.createNotify.window,
1460 (unsigned int)evt->u.createNotify.parent,
1461 evt->u.createNotify.width,
1462 evt->u.createNotify.height,
1463 evt->u.createNotify.x,
1464 evt->u.createNotify.y,
1465 evt->u.createNotify.borderWidth);
1467 if (detail_level >= EVLOG_PRINT_DETAIL)
1469 REPLY (" override(%s)",
1470 evt->u.createNotify.override ? "YES" : "NO");
1478 REPLY (": Window(0x%x) Event(0x%x)",
1479 (unsigned int)evt->u.destroyNotify.window,
1480 (unsigned int)evt->u.destroyNotify.event);
1487 REPLY (": Window(0x%x) Event(0x%x)",
1488 (unsigned int)evt->u.unmapNotify.window,
1489 (unsigned int)evt->u.unmapNotify.event);
1491 if (detail_level >= EVLOG_PRINT_DETAIL)
1493 REPLY (" from_Configure(%s)",
1494 evt->u.unmapNotify.fromConfigure ? "YES" : "NO");
1502 REPLY (": Window(0x%x) Event(0x%x)",
1503 (unsigned int)evt->u.mapNotify.window,
1504 (unsigned int)evt->u.mapNotify.event);
1506 if (detail_level >= EVLOG_PRINT_DETAIL)
1508 REPLY (" override(%s)",
1509 evt->u.mapNotify.override ? "YES" : "NO");
1517 REPLY (": Window(0x%x) Parent(0x%x)",
1518 (unsigned int)evt->u.mapRequest.window,
1519 (unsigned int)evt->u.mapRequest.parent);
1524 case ReparentNotify:
1526 REPLY (": Window(0x%x) Event(0x%x) Parent(0x%x) coord(%d,%d)",
1527 (unsigned int)evt->u.reparent.window,
1528 (unsigned int)evt->u.reparent.event,
1529 (unsigned int)evt->u.reparent.parent,
1533 if (detail_level >= EVLOG_PRINT_DETAIL)
1535 REPLY (" override(%s)",
1536 evt->u.reparent.override ? "YES" : "NO");
1542 case ConfigureNotify:
1544 REPLY (": Window(0x%x) Event(0x%x) AboveSibling(0x%x) size(%dx%d) coord(%d,%d) borderWidth(%d)",
1545 (unsigned int)evt->u.configureNotify.window,
1546 (unsigned int)evt->u.configureNotify.event,
1547 (unsigned int)evt->u.configureNotify.aboveSibling,
1548 evt->u.configureNotify.width,
1549 evt->u.configureNotify.height,
1550 evt->u.configureNotify.x,
1551 evt->u.configureNotify.y,
1552 evt->u.configureNotify.borderWidth);
1554 if (detail_level >= EVLOG_PRINT_DETAIL)
1556 REPLY (" override(%s)",
1557 evt->u.configureNotify.override ? "YES" : "NO");
1563 case ConfigureRequest:
1565 REPLY (": Window(0x%x) Parent(0x%x) Sibling(0x%x) size(%dx%d) coord(%d,%d) borderWidth(%d)",
1566 (unsigned int)evt->u.configureRequest.window,
1567 (unsigned int)evt->u.configureRequest.parent,
1568 (unsigned int)evt->u.configureRequest.sibling,
1569 evt->u.configureRequest.width,
1570 evt->u.configureRequest.height,
1571 evt->u.configureRequest.x,
1572 evt->u.configureRequest.y,
1573 evt->u.configureRequest.borderWidth);
1575 if (detail_level >= EVLOG_PRINT_DETAIL)
1578 REPLY ("%67s value_mask",
1581 reply = _getConfigureWindowMask(evt->u.configureRequest.valueMask, reply, len, NULL);
1590 REPLY (": Window(0x%x) Event(0x%x) coord(%d,%d)",
1591 (unsigned int)evt->u.gravity.window,
1592 (unsigned int)evt->u.gravity.event,
1601 REPLY (": Window(0x%x) size(%dx%d)",
1602 (unsigned int)evt->u.resizeRequest.window,
1603 evt->u.resizeRequest.width,
1604 evt->u.resizeRequest.height);
1609 case CirculateNotify:
1610 case CirculateRequest:
1612 REPLY (": Window(0x%x) Event(0x%x) parent(0x%x)",
1613 (unsigned int)evt->u.circulate.window,
1614 (unsigned int)evt->u.circulate.event,
1615 (unsigned int)evt->u.circulate.parent);
1617 if (detail_level >= EVLOG_PRINT_DETAIL)
1622 switch (evt->u.circulate.place)
1624 case PlaceOnTop: place = "PlaceOnTop"; break;
1625 case PlaceOnBottom: place = "PlaceOnBottom"; break;
1626 default: place = dplace; snprintf (dplace, 10, "%d", evt->u.circulate.place); break;
1629 REPLY (" place(%s)",
1636 case PropertyNotify:
1638 REPLY (": Window(0x%x)",
1639 (unsigned int)evt->u.property.window);
1641 REPLY (" Property");
1642 reply = xDbgGetAtom(evt->u.property.atom, evinfo, reply, len);
1644 if (detail_level >= EVLOG_PRINT_DETAIL)
1649 switch (evt->u.property.state)
1651 case PropertyNewValue: state = "PropertyNewValue"; break;
1652 case PropertyDelete: state = "PropertyDelete"; break;
1653 default: state = dstate; snprintf (dstate, 10, "%d", evt->u.property.state); break;
1657 REPLY ("%67s time(%lums) state(%s)",
1659 (unsigned long)evt->u.property.time,
1666 case SelectionClear:
1668 REPLY (": Window(0x%x)",
1669 (unsigned int)evt->u.selectionClear.window);
1672 reply = xDbgGetAtom(evt->u.selectionClear.atom, evinfo, reply, len);
1674 if (detail_level >= EVLOG_PRINT_DETAIL)
1676 REPLY (" time(%lums)",
1677 (unsigned long)evt->u.selectionClear.time);
1683 case SelectionRequest:
1685 REPLY (": Owner(0x%x) Requestor(0x%x)",
1686 (unsigned int)evt->u.selectionRequest.owner,
1687 (unsigned int)evt->u.selectionRequest.requestor);
1689 REPLY (" selection");
1690 reply = xDbgGetAtom(evt->u.selectionRequest.selection, evinfo, reply, len);
1692 reply = xDbgGetAtom(evt->u.selectionRequest.target, evinfo, reply, len);
1693 REPLY (" Property");
1694 reply = xDbgGetAtom(evt->u.selectionRequest.property, evinfo, reply, len);
1696 if (detail_level >= EVLOG_PRINT_DETAIL)
1698 REPLY (" time(%lums)",
1699 (unsigned long)evt->u.selectionRequest.time);
1705 case SelectionNotify:
1707 REPLY (": Requestor(0x%x)",
1708 (unsigned int)evt->u.selectionNotify.requestor);
1710 REPLY (" selection");
1711 reply = xDbgGetAtom(evt->u.selectionNotify.selection, evinfo, reply, len);
1713 reply = xDbgGetAtom(evt->u.selectionNotify.target, evinfo, reply, len);
1714 REPLY (" Property");
1715 reply = xDbgGetAtom(evt->u.selectionNotify.property, evinfo, reply, len);
1717 if (detail_level >= EVLOG_PRINT_DETAIL)
1719 REPLY (" time(%lums)",
1720 (unsigned long)evt->u.selectionNotify.time);
1726 case ColormapNotify:
1728 REPLY (": XID(0x%x) Colormap(0x%x)",
1729 (unsigned int)evt->u.colormap.window,
1730 (unsigned int)evt->u.colormap.colormap);
1732 if (detail_level >= EVLOG_PRINT_DETAIL)
1737 switch (evt->u.colormap.state)
1739 case ColormapInstalled: state = "ColormapInstalled"; break;
1740 case ColormapUninstalled: state = "ColormapUninstalled"; break;
1741 default: state = dstate; snprintf (dstate, 10, "%d", evt->u.colormap.state); break;
1744 REPLY (" new(%s) state(%s)",
1745 evt->u.colormap.new ? "YES" : "NO",
1754 REPLY (": XID(0x%x)",
1755 (unsigned int)evt->u.clientMessage.window);
1758 reply = xDbgGetAtom(evt->u.clientMessage.u.b.type, evinfo, reply, len);
1765 int xinput_event = 0;
1766 xGenericEvent *ge = (xGenericEvent *)evt;
1769 case PresentConfigureNotify:
1771 xPresentConfigureNotify *stuff = (xPresentConfigureNotify *) evt;
1773 REPLY (":PresentConfigureNotify window(0x%x)(%ux%u+%d+%d) off x,y (%d,%d) pximap width(%u) height(%u) flags(0x%x)",
1774 (unsigned int)stuff->window,
1775 (unsigned int)stuff->width,
1776 (unsigned int)stuff->height,
1781 (unsigned int)stuff->pixmap_width,
1782 (unsigned int)stuff->pixmap_height,
1783 (unsigned int)stuff->pixmap_flags);
1785 evinfo->evt.size = sizeof (xPresentConfigureNotify);
1790 case PresentCompleteNotify:
1792 xPresentCompleteNotify *stuff = (xPresentCompleteNotify *) evt;
1793 REPLY (":PresentCompleteNotify window(0x%x) serial(0x%x) kind(%u) mode(%u) ust(%lu)",
1794 (unsigned int)stuff->window,
1795 (unsigned int)stuff->serial,
1796 (unsigned int)stuff->kind,
1797 (unsigned int)stuff->mode,
1798 (unsigned long)stuff->ust);
1800 evinfo->evt.size = sizeof (xPresentCompleteNotify);
1805 case PresentIdleNotify:
1807 xPresentIdleNotify *stuff = (xPresentIdleNotify *) evt;
1808 REPLY (":PresentIdleNotify window(0x%x) serial(0x%x) pixmap(0x%x) idle_fence(0x%x)",
1809 (unsigned int)stuff->window,
1810 (unsigned int)stuff->serial,
1811 (unsigned int)stuff->pixmap,
1812 (unsigned int)stuff->idle_fence);
1814 evinfo->evt.size = sizeof (xPresentIdleNotify);
1819 case PresentRedirectNotify:
1821 xPresentRedirectNotify *stuff = (xPresentRedirectNotify *)evt;
1823 REPLY (":PresentRedirectNotify window(0x%x) pixmap(0x%x)",
1824 (unsigned int)stuff->window,
1825 (unsigned int)stuff->pixmap);
1828 REPLY (": window(0x%x) pixmap(0x%x) (s,v,u)(%u,0x%x,0x%x) x,y(%d,%d) crtc(%u) wait(0x%x) idle(0x%x) op(0x%x) (t,d,r)(%u,%u,%u)",
1830 (unsigned int)stuff->serial,
1831 (unsigned int)stuff->valid,
1832 (unsigned int)stuff->update,
1835 (unsigned int)stuff->target_crtc,
1836 (unsigned int)stuff->wait_fence,
1837 (unsigned int)stuff->idle_fence,
1838 (unsigned int)stuff->options,
1839 (unsigned int)stuff->target_msc,
1840 (unsigned int)stuff->divisor,
1841 (unsigned int)stuff->remainder);
1843 evinfo->evt.size = sizeof (xPresentRedirectNotify);
1848 /* XI generic evnet */
1849 case XI_ButtonPress:
1851 REPLY (":XI_ButtonPress");
1855 case XI_ButtonRelease:
1857 REPLY (":XI_ButtonRelease");
1863 REPLY (":XI_Motion");
1869 REPLY (":XI_TouchBegin");
1875 REPLY (":XI_TouchEnd");
1879 case XI_TouchUpdate:
1881 REPLY (":XI_TouchUpdate");
1885 case XI_TouchOwnership:
1887 REPLY (":XI_TouchOwnership");
1891 case XI_TouchCancel:
1893 REPLY (":XI_TouchCancel");
1897 case XI_RawButtonPress:
1899 REPLY (":XI_RawButtonPress");
1903 case XI_RawButtonRelease:
1905 REPLY (":XI_RawButtonRelease");
1911 REPLY (":XI_RawMotion");
1915 case XI_RawTouchBegin:
1917 REPLY (":XI_RawTouchBegin");
1921 case XI_RawTouchEnd:
1923 REPLY (":XI_RawTouchEnd");
1927 case XI_RawTouchUpdate:
1929 REPLY (":XI_RawTouchUpdate");
1941 if (xinput_event == 1)
1943 xXIDeviceEvent *stuff = (xXIDeviceEvent *) evt;
1944 REPLY (" device(%d), event win(0x%x), child(0x%x), root(%.f,%.f), win(%.f, %.f)\n",
1948 FP1616toDBL(stuff->root_x),
1949 FP1616toDBL(stuff->root_y),
1950 FP1616toDBL(stuff->event_x),
1951 FP1616toDBL(stuff->event_y));
1953 evinfo->evt.size = sizeof (xXIDeviceEvent);
1967 char * xDbgEvlogReplyCore (EvlogInfo *evinfo, int detail_level, char *reply, int *len)
1969 xGenericReply *rep = evinfo->rep.ptr;
1971 switch (evinfo->rep.reqType)
1975 if (evinfo->rep.isStart)
1977 xGetGeometryReply *stuff = (xGetGeometryReply *)rep;
1979 REPLY (": XID(0x%x) coord(%d,%d %dx%d) borderWidth(%d)",
1980 (unsigned int)stuff->root,
1985 stuff->borderWidth);
1997 if (evinfo->rep.isStart)
1999 xQueryTreeReply *stuff = (xQueryTreeReply *)rep;
2001 REPLY (": XID(0x%x) Parent(0x%x) ChildrenNum(%d)",
2002 (unsigned int)stuff->root,
2003 (unsigned int)stuff->parent,
2008 Window *stuff = (Window *)rep;
2013 for (i = 0 ; i < evinfo->rep.size / sizeof(Window) ; i++)
2015 REPLY("0x%x", (unsigned int)stuff[i]);
2016 if(i != evinfo->rep.size / sizeof(Window) - 1)
2027 if (evinfo->rep.isStart)
2029 xInternAtomReply *stuff = (xInternAtomReply *)rep;
2031 REPLY (": Atom(0x%x)",
2032 (unsigned int)stuff->atom);
2044 if (evinfo->rep.isStart)
2046 xGetPropertyReply *stuff = (xGetPropertyReply *)rep;
2048 REPLY (": PropertyType");
2049 reply = xDbgGetAtom(stuff->propertyType, evinfo, reply, len);
2051 REPLY (" bytesAfter(0x%x) format(%d) ItemNum(%ld)",
2052 (unsigned int)stuff->bytesAfter,
2054 (long int)stuff->nItems);
2064 case X_ListProperties:
2066 if (evinfo->rep.isStart)
2068 xListPropertiesReply *stuff = (xListPropertiesReply *)rep;
2070 REPLY (" PropertieNum(%d)",
2071 stuff->nProperties);
2075 Atom *stuff = (Atom *)rep;
2078 REPLY ("Properties");
2080 for (i = 0 ; i < evinfo->rep.size / sizeof(Atom) ; i ++)
2082 reply = xDbgGetAtom(stuff[i], evinfo, reply, len);
2083 if(i != evinfo->rep.size / sizeof(Atom) - 1)
2094 if (evinfo->rep.isStart)
2096 xGetImageReply *stuff = (xGetImageReply *)rep;
2098 REPLY (": XID(0x%x)",
2099 (unsigned int)stuff->visual);
2109 case X_GetKeyboardControl:
2111 if (evinfo->rep.isStart)
2113 xGetKeyboardControlReply *stuff = (xGetKeyboardControlReply *)rep;
2115 REPLY (": keyClickPercent(%d) bellPercent(%d), bellPitch(%d) bellDuration(%d)",
2116 stuff->keyClickPercent,
2119 stuff->bellDuration);
2129 case X_GetPointerControl:
2131 if (evinfo->rep.isStart)
2133 xGetPointerControlReply *stuff = (xGetPointerControlReply *)rep;
2135 REPLY (": accelNumerator(%d) accelDenominator(%d), threshold(%d)",
2136 stuff->accelNumerator,
2137 stuff->accelDenominator,