diff options
Diffstat (limited to 'src/VBox/HostServices/SharedOpenGL/crserverlib/server_simpleget.py')
| -rw-r--r-- | src/VBox/HostServices/SharedOpenGL/crserverlib/server_simpleget.py | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_simpleget.py b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_simpleget.py index 363ccb43..1698841f 100644 --- a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_simpleget.py +++ b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_simpleget.py @@ -74,31 +74,37 @@ for index in range(len(funcs)): { GLuint fboid; CRASSERT(tablesize/sizeof(%s)==1); - fboid = crStateFBOHWIDtoID((GLuint) *get_values); - if (cr_server.curClient->currentMural->bUseFBO - && crServerIsRedirectedToFBO() - && fboid==cr_server.curClient->currentMural->idFBO) + fboid = (GLuint) *get_values; + if (crServerIsRedirectedToFBO() + && (fboid==cr_server.curClient->currentMural->aidFBOs[0] + || fboid==cr_server.curClient->currentMural->aidFBOs[1])) { fboid = 0; } + else + { + fboid = crStateFBOHWIDtoID(fboid); + } *get_values = (%s) fboid; } else if (GL_READ_BUFFER==pname) { - if (cr_server.curClient->currentMural->bUseFBO && crServerIsRedirectedToFBO() - && cr_server.curClient->currentMural->idFBO + if (crServerIsRedirectedToFBO() + && CR_SERVER_FBO_FOR_IDX(cr_server.curClient->currentMural, cr_server.curClient->currentMural->iCurReadBuffer) && !crStateGetCurrent()->framebufferobject.readFB) { *get_values = (%s) crStateGetCurrent()->buffer.readBuffer; + Assert(crStateGetCurrent()->buffer.readBuffer == GL_BACK || crStateGetCurrent()->buffer.readBuffer == GL_FRONT); } } else if (GL_DRAW_BUFFER==pname) { - if (cr_server.curClient->currentMural->bUseFBO && crServerIsRedirectedToFBO() - && cr_server.curClient->currentMural->idFBO + if (crServerIsRedirectedToFBO() + && CR_SERVER_FBO_FOR_IDX(cr_server.curClient->currentMural, cr_server.curClient->currentMural->iCurDrawBuffer) && !crStateGetCurrent()->framebufferobject.drawFB) { *get_values = (%s) crStateGetCurrent()->buffer.drawBuffer; + Assert(crStateGetCurrent()->buffer.drawBuffer == GL_BACK || crStateGetCurrent()->buffer.drawBuffer == GL_FRONT); } } else if (GL_RENDERBUFFER_BINDING_EXT==pname) @@ -132,7 +138,14 @@ for index in range(len(funcs)): *get_values = (%s)CR_MAX_TEXTURE_UNITS; } } - """ % (types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index]) + else if (GL_MAX_VERTEX_ATTRIBS_ARB==pname) + { + if (CR_MAX_VERTEX_ATTRIBS < (GLuint)*get_values) + { + *get_values = (%s)CR_MAX_VERTEX_ATTRIBS; + } + } + """ % (types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index]) print '\tcrServerReturnValue( get_values, tablesize );' print '\tcrFree(get_values);' print '}\n' |
