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>
55 #include <X11/extensions/XShm.h>
56 #include <X11/extensions/dpms.h>
57 #include <X11/extensions/sync.h>
58 #include <X11/extensions/xtestext1.h>
59 #include <X11/extensions/XTest.h>
60 #include <X11/Xlibint.h>
62 #include <X11/extensions/dpmsproto.h>
63 #include <X11/extensions/shmproto.h>
64 #include <X11/extensions/syncproto.h>
65 #include <X11/extensions/xtestext1proto.h>
66 #include <X11/extensions/xtestproto.h>
68 #include "xdbg_types.h"
69 #include "xdbg_evlog_xext.h"
72 _EvlogRequestXextDpms(xReq *req, char *reply, int *len)
78 case X_DPMSSetTimeouts:
80 xDPMSSetTimeoutsReq *stuff = (xDPMSSetTimeoutsReq *)req;
81 REPLY (": Standby(%d) Suspend(%d) off(%d)",
89 case X_DPMSForceLevel:
91 xDPMSForceLevelReq *stuff = (xDPMSForceLevelReq *)req;
107 _EvlogRequestXextShm (xReq *req, char *reply, int *len)
115 xShmPutImageReq *stuff = (xShmPutImageReq *)req;
116 REPLY (": XID(0x%lx) size(%dx%d) src(%d,%d %dx%d) dst(%d,%d)",
132 xShmGetImageReq *stuff = (xShmGetImageReq *)req;
133 REPLY (": XID(0x%lx) size(%dx%d) coord(%d,%d)",
143 case X_ShmCreatePixmap:
145 xShmCreatePixmapReq *stuff = (xShmCreatePixmapReq *)req;
146 REPLY (": Pixmap(0x%lx) Drawable(0x%lx) size(%dx%d)",
163 _EvlogRequestXextSync(xReq *req, char *reply, int *len)
169 case X_SyncCreateCounter:
171 xSyncCreateCounterReq *stuff = (xSyncCreateCounterReq *)req;
172 REPLY (": XID(0x%lx) initValue(%ld/%ld)",
174 stuff->initial_value_hi,
175 stuff->initial_value_lo);
180 case X_SyncSetCounter:
182 xSyncSetCounterReq *stuff = (xSyncSetCounterReq *)req;
183 REPLY (": XID(0x%lx) Value(%ld/%ld)",
191 case X_SyncChangeCounter:
193 xSyncChangeCounterReq *stuff = (xSyncChangeCounterReq *)req;
194 REPLY (": XID(0x%lx) Value(%ld/%ld)",
202 case X_SyncQueryCounter:
204 xSyncQueryCounterReq *stuff = (xSyncQueryCounterReq *)req;
205 REPLY (": XID(0x%lx)",
211 case X_SyncDestroyCounter:
213 xSyncDestroyCounterReq *stuff = (xSyncDestroyCounterReq *)req;
214 REPLY (": XID(0x%lx)",
228 _EvlogRequestXextXtestExt1(xReq *req, char *reply, int *len)
234 case X_TestFakeInput:
236 xTestFakeInputReq *stuff = (xTestFakeInputReq *)req;
237 REPLY (": XID(0x%lx)",
245 xTestGetInputReq *stuff = (xTestGetInputReq *)req;
246 REPLY (": XID(0x%lx)",
261 _EvlogRequestXextXtest(xReq *req, char *reply, int *len)
267 case X_XTestGetVersion:
269 xXTestGetVersionReq *stuff = (xXTestGetVersionReq *)req;
270 REPLY (": MajorVersion(%d) MinorVersion(%d)",
272 stuff->minorVersion);
277 case X_XTestCompareCursor:
279 xXTestCompareCursorReq *stuff = (xXTestCompareCursorReq *)req;
280 REPLY (": XID(0x%lx) Cursor(0x%lx)",
287 case X_XTestFakeInput:
289 xXTestFakeInputReq *stuff = (xXTestFakeInputReq *)req;
290 REPLY (": XID(0x%lx) coord(%d,%d)",
298 case X_XTestGrabControl:
300 xXTestGrabControlReq *stuff = (xXTestGrabControlReq *)req;
301 REPLY (": Impervious(%s)" ,
302 (stuff->impervious)? "TRUE" : "FALSE");
316 _EvlogEventXextDpms (xEvent *evt, int first_base, char *reply, int *len)
320 switch ((stuff->u.u.type & 0x7F) - first_base)
332 _EvlogEventXextShm (xEvent *evt, int first_base, char *reply, int *len)
336 switch ((stuff->u.u.type & 0x7F) - first_base)
340 xShmCompletionEvent *stuff = (xShmCompletionEvent *) evt;
341 REPLY (": XID(0x%lx)",
356 _EvlogEventXextSync (xEvent *evt, int first_base, char *reply, int *len)
360 switch ((stuff->u.u.type & 0x7F) - first_base)
362 case XSyncCounterNotify:
364 xSyncCounterNotifyEvent *stuff = (xSyncCounterNotifyEvent *) evt;
365 REPLY (": XID(0x%lx) WaitValue(0x%lx/0x%lx) CounterValue(0x%lx/0x%lx)",
367 stuff->wait_value_hi,
368 stuff->wait_value_lo,
369 stuff->counter_value_hi,
370 stuff->counter_value_lo);
375 case XSyncAlarmNotify:
377 xSyncAlarmNotifyEvent *stuff = (xSyncAlarmNotifyEvent *) evt;
378 REPLY (": XID(0x%lx) CounterValue(0x%lx/0x%lx) AlarmValue(0x%lx/0x%lx)",
380 stuff->counter_value_hi,
381 stuff->counter_value_lo,
382 stuff->alarm_value_hi,
383 stuff->alarm_value_lo);
397 _EvlogEventXextXtestExt1 (xEvent *evt, int first_base, char *reply, int *len)
401 switch ((stuff->u.u.type & 0x7F) - first_base)
412 _EvlogEventXextXtest (xEvent *evt, int first_base, char *reply, int *len)
416 switch ((stuff->u.u.type & 0x7F) - first_base)
427 xDbgEvlogXextDpmsGetBase (void *dpy, ExtensionInfo *extinfo)
430 Display *d = (Display*)dpy;
432 RETURN_IF_FAIL (d != NULL);
433 RETURN_IF_FAIL (extinfo != NULL);
435 if (!XQueryExtension(d, DPMSExtensionName, &extinfo->opcode, &extinfo->evt_base, &extinfo->err_base))
437 fprintf (stderr, "[UTILX] no Xext_DPMS extension. \n");
440 extinfo->req_func = _EvlogRequestXextDpms;
441 extinfo->evt_func = _EvlogEventXextDpms;
443 ExtensionEntry *xext = CheckExtension (DPMSExtensionName);
444 RETURN_IF_FAIL (xext != NULL);
446 extinfo->opcode = xext->base;
447 extinfo->evt_base = xext->eventBase;
448 extinfo->err_base = xext->errorBase;
449 extinfo->req_func = _EvlogRequestXextDpms;
450 extinfo->evt_func = _EvlogEventXextDpms;
456 xDbgEvlogXextShmGetBase (void *dpy, ExtensionInfo *extinfo)
459 Display *d = (Display*)dpy;
461 RETURN_IF_FAIL (d != NULL);
462 RETURN_IF_FAIL (extinfo != NULL);
464 if (!XQueryExtension(d, SHMNAME, &extinfo->opcode, &extinfo->evt_base, &extinfo->err_base))
466 fprintf (stderr, "[UTILX] no XShm extension. \n");
469 extinfo->req_func = _EvlogRequestXextShm;
470 extinfo->evt_func = _EvlogEventXextShm;
472 ExtensionEntry *xext = CheckExtension (SHMNAME);
473 RETURN_IF_FAIL (xext != NULL);
475 extinfo->opcode = xext->base;
476 extinfo->evt_base = xext->eventBase;
477 extinfo->err_base = xext->errorBase;
478 extinfo->req_func = _EvlogRequestXextShm;
479 extinfo->evt_func = _EvlogEventXextShm;
485 xDbgEvlogXextSyncGetBase (void *dpy, ExtensionInfo *extinfo)
488 Display *d = (Display*)dpy;
490 RETURN_IF_FAIL (d != NULL);
491 RETURN_IF_FAIL (extinfo != NULL);
493 if (!XQueryExtension(d, SYNC_NAME, &extinfo->opcode, &extinfo->evt_base, &extinfo->err_base))
495 fprintf (stderr, "[UTILX] no Sync extension. \n");
499 extinfo->req_func = _EvlogRequestXextSync;
500 extinfo->evt_func = _EvlogEventXextSync;
502 ExtensionEntry *xext = CheckExtension (SYNC_NAME);
503 RETURN_IF_FAIL (xext != NULL);
505 extinfo->opcode = xext->base;
506 extinfo->evt_base = xext->eventBase;
507 extinfo->err_base = xext->errorBase;
508 extinfo->req_func = _EvlogRequestXextSync;
509 extinfo->evt_func = _EvlogEventXextSync;
516 xDbgEvlogXextXtestExt1GetBase (void *dpy, ExtensionInfo *extinfo)
519 Display *d = (Display*)dpy;
521 RETURN_IF_FAIL (d != NULL);
522 RETURN_IF_FAIL (extinfo != NULL);
524 if (!XQueryExtension(d, XTestEXTENSION_NAME, &extinfo->opcode, &extinfo->evt_base, &extinfo->err_base))
526 fprintf (stderr, "[UTILX] no XTestExt1 extension. \n");
529 extinfo->req_func = _EvlogRequestXextXtestExt1;
530 extinfo->evt_func = _EvlogEventXextXtestExt1;
532 ExtensionEntry *xext = CheckExtension (XTestEXTENSION_NAME);
533 RETURN_IF_FAIL (xext != NULL);
535 extinfo->opcode = xext->base;
536 extinfo->evt_base = xext->eventBase;
537 extinfo->err_base = xext->errorBase;
538 extinfo->req_func = _EvlogRequestXextXtestExt1;
539 extinfo->evt_func = _EvlogEventXextXtestExt1;
546 xDbgEvlogXextXtestGetBase (void *dpy, ExtensionInfo *extinfo)
549 Display *d = (Display*)dpy;
551 RETURN_IF_FAIL (d != NULL);
552 RETURN_IF_FAIL (extinfo != NULL);
554 if (!XQueryExtension(d, XTestExtensionName, &extinfo->opcode, &extinfo->evt_base, &extinfo->err_base))
556 fprintf (stderr, "[UTILX] no Xext_Xtest extension. \n");
559 extinfo->req_func = _EvlogRequestXextXtest;
560 extinfo->evt_func = _EvlogEventXextXtest;
562 ExtensionEntry *xext = CheckExtension (XTestExtensionName);
563 RETURN_IF_FAIL (xext != NULL);
565 extinfo->opcode = xext->base;
566 extinfo->evt_base = xext->eventBase;
567 extinfo->err_base = xext->errorBase;
568 extinfo->req_func = _EvlogRequestXextXtest;
569 extinfo->evt_func = _EvlogEventXextXtest;