| 602 | |
| 603 | |
| 604 | const GLubyte *glGetString(GLenum name) |
| 605 | { |
| 606 | char *string = NULL; |
| 607 | |
| 608 | if(faker::getOGLExcludeCurrent() || faker::getEGLXContextCurrent()) |
| 609 | return _glGetString(name); |
| 610 | |
| 611 | TRY(); |
| 612 | |
| 613 | string = (char *)_glGetString(name); |
| 614 | if(name == GL_EXTENSIONS && string |
| 615 | && strstr(string, "GL_EXT_x11_sync_object") != NULL) |
| 616 | { |
| 617 | if(!faker::glExtensions) |
| 618 | { |
| 619 | faker::GlobalCriticalSection::SafeLock l(globalMutex); |
| 620 | if(!faker::glExtensions) |
| 621 | { |
| 622 | faker::glExtensions = strdup(string); |
| 623 | if(!faker::glExtensions) THROW("strdup() failed"); |
| 624 | char *ptr = |
| 625 | strstr((char *)faker::glExtensions, "GL_EXT_x11_sync_object"); |
| 626 | if(ptr) |
| 627 | { |
| 628 | if(ptr[22] == ' ') memmove(ptr, &ptr[23], strlen(&ptr[23]) + 1); |
| 629 | else *ptr = 0; |
| 630 | } |
| 631 | } |
| 632 | } |
| 633 | string = faker::glExtensions; |
| 634 | } |
| 635 | |
| 636 | CATCH(); |
| 637 | |
| 638 | return (GLubyte *)string; |
| 639 | } |
| 640 | |
| 641 | |
| 642 | const GLubyte *glGetStringi(GLenum name, GLuint index) |
no outgoing calls