| 777 | // glPopAttrib() can change the draw buffer state as well :| |
| 778 | |
| 779 | void glPopAttrib(void) |
| 780 | { |
| 781 | if(faker::getOGLExcludeCurrent() || faker::getEGLXContextCurrent()) |
| 782 | { |
| 783 | _glPopAttrib(); return; |
| 784 | } |
| 785 | |
| 786 | TRY(); |
| 787 | |
| 788 | ///////////////////////////////////////////////////////////////////////////// |
| 789 | OPENTRACE(glPopAttrib); STARTTRACE(); |
| 790 | ///////////////////////////////////////////////////////////////////////////// |
| 791 | |
| 792 | faker::VirtualWin *vw; |
| 793 | int before = -1, after = -1, rbefore = -1, rafter = -1; |
| 794 | GLXDrawable drawable = backend::getCurrentDrawable(); |
| 795 | |
| 796 | if(drawable && (vw = WINHASH.find(NULL, drawable)) != NULL) |
| 797 | { |
| 798 | before = DrawingToFront(); |
| 799 | rbefore = DrawingToRight(); |
| 800 | _glPopAttrib(); |
| 801 | after = DrawingToFront(); |
| 802 | rafter = DrawingToRight(); |
| 803 | if(before && !after) vw->dirty = true; |
| 804 | if(rbefore && !rafter && vw->isStereo()) vw->rdirty = true; |
| 805 | } |
| 806 | else _glPopAttrib(); |
| 807 | |
| 808 | ///////////////////////////////////////////////////////////////////////////// |
| 809 | STOPTRACE(); |
| 810 | if(drawable && vw) |
| 811 | { |
| 812 | PRARGI(vw->dirty); PRARGI(vw->rdirty); PRARGX(vw->getGLXDrawable()); |
| 813 | } |
| 814 | CLOSETRACE(); |
| 815 | ///////////////////////////////////////////////////////////////////////////// |
| 816 | |
| 817 | CATCH(); |
| 818 | } |
| 819 | |
| 820 | |
| 821 | void glReadBuffer(GLenum mode) |
no test coverage detected