]> git.cworth.org Git - apitrace/blob - glretrace_glx.cpp
Move OS-specific retracing functions to separate files.
[apitrace] / glretrace_glx.cpp
1 /**************************************************************************
2  *
3  * Copyright 2011 Jose Fonseca
4  * All Rights Reserved.
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22  * THE SOFTWARE.
23  *
24  **************************************************************************/
25
26
27 #include "glproc.hpp"
28 #include "retrace.hpp"
29 #include "glretrace.hpp"
30
31
32 using namespace glretrace;
33
34
35 static void retrace_glXChooseVisual(Trace::Call &call) {
36 }
37
38 static void retrace_glXCreateContext(Trace::Call &call) {
39 }
40
41 static void retrace_glXDestroyContext(Trace::Call &call) {
42 }
43
44 static void retrace_glXMakeCurrent(Trace::Call &call) {
45     glFlush();
46     if (!double_buffer) {
47         frame_complete(call.no);
48     }
49 }
50
51 static void retrace_glXCopyContext(Trace::Call &call) {
52 }
53
54 static void retrace_glXSwapBuffers(Trace::Call &call) {
55     frame_complete(call.no);
56     if (double_buffer) {
57         drawable->swapBuffers();
58     } else {
59         glFlush();
60     }
61 }
62
63 static void retrace_glXCreateGLXPixmap(Trace::Call &call) {
64 }
65
66 static void retrace_glXDestroyGLXPixmap(Trace::Call &call) {
67 }
68
69 static void retrace_glXQueryExtension(Trace::Call &call) {
70 }
71
72 static void retrace_glXQueryVersion(Trace::Call &call) {
73 }
74
75 static void retrace_glXIsDirect(Trace::Call &call) {
76 }
77
78 static void retrace_glXGetConfig(Trace::Call &call) {
79 }
80
81 static void retrace_glXWaitGL(Trace::Call &call) {
82 }
83
84 static void retrace_glXWaitX(Trace::Call &call) {
85 }
86
87 static void retrace_glXUseXFont(Trace::Call &call) {
88 }
89
90 static void retrace_glXQueryExtensionsString(Trace::Call &call) {
91 }
92
93 static void retrace_glXQueryServerString(Trace::Call &call) {
94 }
95
96 static void retrace_glXGetClientString(Trace::Call &call) {
97 }
98
99 static void retrace_glXChooseFBConfig(Trace::Call &call) {
100 }
101
102 static void retrace_glXGetFBConfigAttrib(Trace::Call &call) {
103 }
104
105 static void retrace_glXGetFBConfigs(Trace::Call &call) {
106 }
107
108 static void retrace_glXGetVisualFromFBConfig(Trace::Call &call) {
109 }
110
111 static void retrace_glXCreateWindow(Trace::Call &call) {
112 }
113
114 static void retrace_glXDestroyWindow(Trace::Call &call) {
115 }
116
117 static void retrace_glXCreatePixmap(Trace::Call &call) {
118 }
119
120 static void retrace_glXDestroyPixmap(Trace::Call &call) {
121 }
122
123 static void retrace_glXCreatePbuffer(Trace::Call &call) {
124 }
125
126 static void retrace_glXDestroyPbuffer(Trace::Call &call) {
127 }
128
129 static void retrace_glXQueryDrawable(Trace::Call &call) {
130 }
131
132 static void retrace_glXCreateNewContext(Trace::Call &call) {
133 }
134
135 static void retrace_glXMakeContextCurrent(Trace::Call &call) {
136 }
137
138 static void retrace_glXGetCurrentReadDrawable(Trace::Call &call) {
139 }
140
141 static void retrace_glXQueryContext(Trace::Call &call) {
142 }
143
144 static void retrace_glXSelectEvent(Trace::Call &call) {
145 }
146
147 static void retrace_glXGetSelectedEvent(Trace::Call &call) {
148 }
149
150 static void retrace_glXGetProcAddressARB(Trace::Call &call) {
151 }
152
153 static void retrace_glXGetProcAddress(Trace::Call &call) {
154 }
155
156 void glretrace::retrace_call_glx(Trace::Call &call) {
157     const char *name = call.name().c_str();
158
159     switch (name[3]) {
160     case 'C':
161         switch (name[4]) {
162         case 'h':
163             switch (name[5]) {
164             case 'o':
165                 switch (name[6]) {
166                 case 'o':
167                     switch (name[7]) {
168                     case 's':
169                         switch (name[8]) {
170                         case 'e':
171                             switch (name[9]) {
172                             case 'F':
173                                 if (name[10] == 'B' && name[11] == 'C' && name[12] == 'o' && name[13] == 'n' && name[14] == 'f' && name[15] == 'i' && name[16] == 'g' && name[17] == '\0') {
174                                     // glXChooseFBConfig
175                                     retrace_glXChooseFBConfig(call);
176                                     return;
177                                 }
178                                 break;
179                             case 'V':
180                                 if (name[10] == 'i' && name[11] == 's' && name[12] == 'u' && name[13] == 'a' && name[14] == 'l' && name[15] == '\0') {
181                                     // glXChooseVisual
182                                     retrace_glXChooseVisual(call);
183                                     return;
184                                 }
185                                 break;
186                             }
187                             break;
188                         }
189                         break;
190                     }
191                     break;
192                 }
193                 break;
194             }
195             break;
196         case 'o':
197             if (name[5] == 'p' && name[6] == 'y' && name[7] == 'C' && name[8] == 'o' && name[9] == 'n' && name[10] == 't' && name[11] == 'e' && name[12] == 'x' && name[13] == 't' && name[14] == '\0') {
198                 // glXCopyContext
199                 retrace_glXCopyContext(call);
200                 return;
201             }
202             break;
203         case 'r':
204             switch (name[5]) {
205             case 'e':
206                 switch (name[6]) {
207                 case 'a':
208                     switch (name[7]) {
209                     case 't':
210                         switch (name[8]) {
211                         case 'e':
212                             switch (name[9]) {
213                             case 'C':
214                                 if (name[10] == 'o' && name[11] == 'n' && name[12] == 't' && name[13] == 'e' && name[14] == 'x' && name[15] == 't' && name[16] == '\0') {
215                                     // glXCreateContext
216                                     retrace_glXCreateContext(call);
217                                     return;
218                                 }
219                                 break;
220                             case 'G':
221                                 if (name[10] == 'L' && name[11] == 'X' && name[12] == 'P' && name[13] == 'i' && name[14] == 'x' && name[15] == 'm' && name[16] == 'a' && name[17] == 'p' && name[18] == '\0') {
222                                     // glXCreateGLXPixmap
223                                     retrace_glXCreateGLXPixmap(call);
224                                     return;
225                                 }
226                                 break;
227                             case 'N':
228                                 if (name[10] == 'e' && name[11] == 'w' && name[12] == 'C' && name[13] == 'o' && name[14] == 'n' && name[15] == 't' && name[16] == 'e' && name[17] == 'x' && name[18] == 't' && name[19] == '\0') {
229                                     // glXCreateNewContext
230                                     retrace_glXCreateNewContext(call);
231                                     return;
232                                 }
233                                 break;
234                             case 'P':
235                                 switch (name[10]) {
236                                 case 'b':
237                                     if (name[11] == 'u' && name[12] == 'f' && name[13] == 'f' && name[14] == 'e' && name[15] == 'r' && name[16] == '\0') {
238                                         // glXCreatePbuffer
239                                         retrace_glXCreatePbuffer(call);
240                                         return;
241                                     }
242                                     break;
243                                 case 'i':
244                                     if (name[11] == 'x' && name[12] == 'm' && name[13] == 'a' && name[14] == 'p' && name[15] == '\0') {
245                                         // glXCreatePixmap
246                                         retrace_glXCreatePixmap(call);
247                                         return;
248                                     }
249                                     break;
250                                 }
251                                 break;
252                             case 'W':
253                                 if (name[10] == 'i' && name[11] == 'n' && name[12] == 'd' && name[13] == 'o' && name[14] == 'w' && name[15] == '\0') {
254                                     // glXCreateWindow
255                                     retrace_glXCreateWindow(call);
256                                     return;
257                                 }
258                                 break;
259                             }
260                             break;
261                         }
262                         break;
263                     }
264                     break;
265                 }
266                 break;
267             }
268             break;
269         }
270         break;
271     case 'D':
272         switch (name[4]) {
273         case 'e':
274             switch (name[5]) {
275             case 's':
276                 switch (name[6]) {
277                 case 't':
278                     switch (name[7]) {
279                     case 'r':
280                         switch (name[8]) {
281                         case 'o':
282                             switch (name[9]) {
283                             case 'y':
284                                 switch (name[10]) {
285                                 case 'C':
286                                     if (name[11] == 'o' && name[12] == 'n' && name[13] == 't' && name[14] == 'e' && name[15] == 'x' && name[16] == 't' && name[17] == '\0') {
287                                         // glXDestroyContext
288                                         retrace_glXDestroyContext(call);
289                                         return;
290                                     }
291                                     break;
292                                 case 'G':
293                                     if (name[11] == 'L' && name[12] == 'X' && name[13] == 'P' && name[14] == 'i' && name[15] == 'x' && name[16] == 'm' && name[17] == 'a' && name[18] == 'p' && name[19] == '\0') {
294                                         // glXDestroyGLXPixmap
295                                         retrace_glXDestroyGLXPixmap(call);
296                                         return;
297                                     }
298                                     break;
299                                 case 'P':
300                                     switch (name[11]) {
301                                     case 'b':
302                                         if (name[12] == 'u' && name[13] == 'f' && name[14] == 'f' && name[15] == 'e' && name[16] == 'r' && name[17] == '\0') {
303                                             // glXDestroyPbuffer
304                                             retrace_glXDestroyPbuffer(call);
305                                             return;
306                                         }
307                                         break;
308                                     case 'i':
309                                         if (name[12] == 'x' && name[13] == 'm' && name[14] == 'a' && name[15] == 'p' && name[16] == '\0') {
310                                             // glXDestroyPixmap
311                                             retrace_glXDestroyPixmap(call);
312                                             return;
313                                         }
314                                         break;
315                                     }
316                                     break;
317                                 case 'W':
318                                     if (name[11] == 'i' && name[12] == 'n' && name[13] == 'd' && name[14] == 'o' && name[15] == 'w' && name[16] == '\0') {
319                                         // glXDestroyWindow
320                                         retrace_glXDestroyWindow(call);
321                                         return;
322                                     }
323                                     break;
324                                 }
325                                 break;
326                             }
327                             break;
328                         }
329                         break;
330                     }
331                     break;
332                 }
333                 break;
334             }
335             break;
336         }
337         break;
338     case 'G':
339         switch (name[4]) {
340         case 'e':
341             switch (name[5]) {
342             case 't':
343                 switch (name[6]) {
344                 case 'C':
345                     switch (name[7]) {
346                     case 'l':
347                         if (name[8] == 'i' && name[9] == 'e' && name[10] == 'n' && name[11] == 't' && name[12] == 'S' && name[13] == 't' && name[14] == 'r' && name[15] == 'i' && name[16] == 'n' && name[17] == 'g' && name[18] == '\0') {
348                             // glXGetClientString
349                             retrace_glXGetClientString(call);
350                             return;
351                         }
352                         break;
353                     case 'o':
354                         if (name[8] == 'n' && name[9] == 'f' && name[10] == 'i' && name[11] == 'g' && name[12] == '\0') {
355                             // glXGetConfig
356                             retrace_glXGetConfig(call);
357                             return;
358                         }
359                         break;
360                     case 'u':
361                         switch (name[8]) {
362                         case 'r':
363                             switch (name[9]) {
364                             case 'r':
365                                 switch (name[10]) {
366                                 case 'e':
367                                     switch (name[11]) {
368                                     case 'n':
369                                         switch (name[12]) {
370                                         case 't':
371                                             switch (name[13]) {
372                                             case 'C':
373                                                 if (name[14] == 'o' && name[15] == 'n' && name[16] == 't' && name[17] == 'e' && name[18] == 'x' && name[19] == 't' && name[20] == '\0') {
374                                                     // glXGetCurrentContext
375                                                     return;
376                                                 }
377                                                 break;
378                                             case 'D':
379                                                 switch (name[14]) {
380                                                 case 'i':
381                                                     if (name[15] == 's' && name[16] == 'p' && name[17] == 'l' && name[18] == 'a' && name[19] == 'y' && name[20] == '\0') {
382                                                         // glXGetCurrentDisplay
383                                                         return;
384                                                     }
385                                                     break;
386                                                 case 'r':
387                                                     if (name[15] == 'a' && name[16] == 'w' && name[17] == 'a' && name[18] == 'b' && name[19] == 'l' && name[20] == 'e' && name[21] == '\0') {
388                                                         // glXGetCurrentDrawable
389                                                         return;
390                                                     }
391                                                     break;
392                                                 }
393                                                 break;
394                                             case 'R':
395                                                 if (name[14] == 'e' && name[15] == 'a' && name[16] == 'd' && name[17] == 'D' && name[18] == 'r' && name[19] == 'a' && name[20] == 'w' && name[21] == 'a' && name[22] == 'b' && name[23] == 'l' && name[24] == 'e' && name[25] == '\0') {
396                                                     // glXGetCurrentReadDrawable
397                                                     retrace_glXGetCurrentReadDrawable(call);
398                                                     return;
399                                                 }
400                                                 break;
401                                             }
402                                             break;
403                                         }
404                                         break;
405                                     }
406                                     break;
407                                 }
408                                 break;
409                             }
410                             break;
411                         }
412                         break;
413                     }
414                     break;
415                 case 'F':
416                     switch (name[7]) {
417                     case 'B':
418                         switch (name[8]) {
419                         case 'C':
420                             switch (name[9]) {
421                             case 'o':
422                                 switch (name[10]) {
423                                 case 'n':
424                                     switch (name[11]) {
425                                     case 'f':
426                                         switch (name[12]) {
427                                         case 'i':
428                                             switch (name[13]) {
429                                             case 'g':
430                                                 switch (name[14]) {
431                                                 case 'A':
432                                                     if (name[15] == 't' && name[16] == 't' && name[17] == 'r' && name[18] == 'i' && name[19] == 'b' && name[20] == '\0') {
433                                                         // glXGetFBConfigAttrib
434                                                         retrace_glXGetFBConfigAttrib(call);
435                                                         return;
436                                                     }
437                                                     break;
438                                                 case 's':
439                                                     if (name[15] == '\0') {
440                                                         // glXGetFBConfigs
441                                                         retrace_glXGetFBConfigs(call);
442                                                         return;
443                                                     }
444                                                     break;
445                                                 }
446                                                 break;
447                                             }
448                                             break;
449                                         }
450                                         break;
451                                     }
452                                     break;
453                                 }
454                                 break;
455                             }
456                             break;
457                         }
458                         break;
459                     }
460                     break;
461                 case 'P':
462                     switch (name[7]) {
463                     case 'r':
464                         switch (name[8]) {
465                         case 'o':
466                             switch (name[9]) {
467                             case 'c':
468                                 switch (name[10]) {
469                                 case 'A':
470                                     switch (name[11]) {
471                                     case 'd':
472                                         switch (name[12]) {
473                                         case 'd':
474                                             switch (name[13]) {
475                                             case 'r':
476                                                 switch (name[14]) {
477                                                 case 'e':
478                                                     switch (name[15]) {
479                                                     case 's':
480                                                         switch (name[16]) {
481                                                         case 's':
482                                                             switch (name[17]) {
483                                                             case '\0':
484                                                                 // glXGetProcAddress
485                                                                 retrace_glXGetProcAddress(call);
486                                                                 return;
487                                                                 break;
488                                                             case 'A':
489                                                                 if (name[18] == 'R' && name[19] == 'B' && name[20] == '\0') {
490                                                                     // glXGetProcAddressARB
491                                                                     retrace_glXGetProcAddressARB(call);
492                                                                     return;
493                                                                 }
494                                                                 break;
495                                                             }
496                                                             break;
497                                                         }
498                                                         break;
499                                                     }
500                                                     break;
501                                                 }
502                                                 break;
503                                             }
504                                             break;
505                                         }
506                                         break;
507                                     }
508                                     break;
509                                 }
510                                 break;
511                             }
512                             break;
513                         }
514                         break;
515                     }
516                     break;
517                 case 'S':
518                     if (name[7] == 'e' && name[8] == 'l' && name[9] == 'e' && name[10] == 'c' && name[11] == 't' && name[12] == 'e' && name[13] == 'd' && name[14] == 'E' && name[15] == 'v' && name[16] == 'e' && name[17] == 'n' && name[18] == 't' && name[19] == '\0') {
519                         // glXGetSelectedEvent
520                         retrace_glXGetSelectedEvent(call);
521                         return;
522                     }
523                     break;
524                 case 'V':
525                     if (name[7] == 'i' && name[8] == 's' && name[9] == 'u' && name[10] == 'a' && name[11] == 'l' && name[12] == 'F' && name[13] == 'r' && name[14] == 'o' && name[15] == 'm' && name[16] == 'F' && name[17] == 'B' && name[18] == 'C' && name[19] == 'o' && name[20] == 'n' && name[21] == 'f' && name[22] == 'i' && name[23] == 'g' && name[24] == '\0') {
526                         // glXGetVisualFromFBConfig
527                         retrace_glXGetVisualFromFBConfig(call);
528                         return;
529                     }
530                     break;
531                 }
532                 break;
533             }
534             break;
535         }
536         break;
537     case 'I':
538         if (name[4] == 's' && name[5] == 'D' && name[6] == 'i' && name[7] == 'r' && name[8] == 'e' && name[9] == 'c' && name[10] == 't' && name[11] == '\0') {
539             // glXIsDirect
540             retrace_glXIsDirect(call);
541             return;
542         }
543         break;
544     case 'M':
545         switch (name[4]) {
546         case 'a':
547             switch (name[5]) {
548             case 'k':
549                 switch (name[6]) {
550                 case 'e':
551                     switch (name[7]) {
552                     case 'C':
553                         switch (name[8]) {
554                         case 'o':
555                             if (name[9] == 'n' && name[10] == 't' && name[11] == 'e' && name[12] == 'x' && name[13] == 't' && name[14] == 'C' && name[15] == 'u' && name[16] == 'r' && name[17] == 'r' && name[18] == 'e' && name[19] == 'n' && name[20] == 't' && name[21] == '\0') {
556                                 // glXMakeContextCurrent
557                                 retrace_glXMakeContextCurrent(call);
558                                 return;
559                             }
560                             break;
561                         case 'u':
562                             if (name[9] == 'r' && name[10] == 'r' && name[11] == 'e' && name[12] == 'n' && name[13] == 't' && name[14] == '\0') {
563                                 // glXMakeCurrent
564                                 retrace_glXMakeCurrent(call);
565                                 return;
566                             }
567                             break;
568                         }
569                         break;
570                     }
571                     break;
572                 }
573                 break;
574             }
575             break;
576         }
577         break;
578     case 'Q':
579         switch (name[4]) {
580         case 'u':
581             switch (name[5]) {
582             case 'e':
583                 switch (name[6]) {
584                 case 'r':
585                     switch (name[7]) {
586                     case 'y':
587                         switch (name[8]) {
588                         case 'C':
589                             if (name[9] == 'o' && name[10] == 'n' && name[11] == 't' && name[12] == 'e' && name[13] == 'x' && name[14] == 't' && name[15] == '\0') {
590                                 // glXQueryContext
591                                 retrace_glXQueryContext(call);
592                                 return;
593                             }
594                             break;
595                         case 'D':
596                             if (name[9] == 'r' && name[10] == 'a' && name[11] == 'w' && name[12] == 'a' && name[13] == 'b' && name[14] == 'l' && name[15] == 'e' && name[16] == '\0') {
597                                 // glXQueryDrawable
598                                 retrace_glXQueryDrawable(call);
599                                 return;
600                             }
601                             break;
602                         case 'E':
603                             switch (name[9]) {
604                             case 'x':
605                                 switch (name[10]) {
606                                 case 't':
607                                     switch (name[11]) {
608                                     case 'e':
609                                         switch (name[12]) {
610                                         case 'n':
611                                             switch (name[13]) {
612                                             case 's':
613                                                 switch (name[14]) {
614                                                 case 'i':
615                                                     switch (name[15]) {
616                                                     case 'o':
617                                                         switch (name[16]) {
618                                                         case 'n':
619                                                             switch (name[17]) {
620                                                             case '\0':
621                                                                 // glXQueryExtension
622                                                                 retrace_glXQueryExtension(call);
623                                                                 return;
624                                                                 break;
625                                                             case 's':
626                                                                 if (name[18] == 'S' && name[19] == 't' && name[20] == 'r' && name[21] == 'i' && name[22] == 'n' && name[23] == 'g' && name[24] == '\0') {
627                                                                     // glXQueryExtensionsString
628                                                                     retrace_glXQueryExtensionsString(call);
629                                                                     return;
630                                                                 }
631                                                                 break;
632                                                             }
633                                                             break;
634                                                         }
635                                                         break;
636                                                     }
637                                                     break;
638                                                 }
639                                                 break;
640                                             }
641                                             break;
642                                         }
643                                         break;
644                                     }
645                                     break;
646                                 }
647                                 break;
648                             }
649                             break;
650                         case 'S':
651                             if (name[9] == 'e' && name[10] == 'r' && name[11] == 'v' && name[12] == 'e' && name[13] == 'r' && name[14] == 'S' && name[15] == 't' && name[16] == 'r' && name[17] == 'i' && name[18] == 'n' && name[19] == 'g' && name[20] == '\0') {
652                                 // glXQueryServerString
653                                 retrace_glXQueryServerString(call);
654                                 return;
655                             }
656                             break;
657                         case 'V':
658                             if (name[9] == 'e' && name[10] == 'r' && name[11] == 's' && name[12] == 'i' && name[13] == 'o' && name[14] == 'n' && name[15] == '\0') {
659                                 // glXQueryVersion
660                                 retrace_glXQueryVersion(call);
661                                 return;
662                             }
663                             break;
664                         }
665                         break;
666                     }
667                     break;
668                 }
669                 break;
670             }
671             break;
672         }
673         break;
674     case 'S':
675         switch (name[4]) {
676         case 'e':
677             if (name[5] == 'l' && name[6] == 'e' && name[7] == 'c' && name[8] == 't' && name[9] == 'E' && name[10] == 'v' && name[11] == 'e' && name[12] == 'n' && name[13] == 't' && name[14] == '\0') {
678                 // glXSelectEvent
679                 retrace_glXSelectEvent(call);
680                 return;
681             }
682             break;
683         case 'w':
684             if (name[5] == 'a' && name[6] == 'p' && name[7] == 'B' && name[8] == 'u' && name[9] == 'f' && name[10] == 'f' && name[11] == 'e' && name[12] == 'r' && name[13] == 's' && name[14] == '\0') {
685                 // glXSwapBuffers
686                 retrace_glXSwapBuffers(call);
687                 return;
688             }
689             break;
690         }
691         break;
692     case 'U':
693         if (name[4] == 's' && name[5] == 'e' && name[6] == 'X' && name[7] == 'F' && name[8] == 'o' && name[9] == 'n' && name[10] == 't' && name[11] == '\0') {
694             // glXUseXFont
695             retrace_glXUseXFont(call);
696             return;
697         }
698         break;
699     case 'W':
700         switch (name[4]) {
701         case 'a':
702             switch (name[5]) {
703             case 'i':
704                 switch (name[6]) {
705                 case 't':
706                     switch (name[7]) {
707                     case 'G':
708                         if (name[8] == 'L' && name[9] == '\0') {
709                             // glXWaitGL
710                             retrace_glXWaitGL(call);
711                             return;
712                         }
713                         break;
714                     case 'X':
715                         if (name[8] == '\0') {
716                             // glXWaitX
717                             retrace_glXWaitX(call);
718                             return;
719                         }
720                         break;
721                     }
722                     break;
723                 }
724                 break;
725             }
726             break;
727         }
728         break;
729     }
730     retrace::retrace_unknown(call);
731 }
732