mirror of
https://github.com/X11Libre/xserver.git
synced 2026-03-24 05:54:08 +00:00
glx: __glXDisp_RenderMode(): use x_rpcbuf_t
Use x_rpcbuf_t for payload assembly and X_SEND_REPLY_WITH_RPCBUF() for sending it all out. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
committed by
Enrico Weigelt
parent
8d4c9270ea
commit
025227a113
@@ -34,6 +34,9 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "dix/dix_priv.h"
|
||||
#include "dix/rpcbuf_priv.h"
|
||||
|
||||
#include "glxserver.h"
|
||||
#include "glxutil.h"
|
||||
#include "glxext.h"
|
||||
@@ -107,8 +110,7 @@ __glXDisp_RenderMode(__GLXclientState * cl, GLbyte * pc)
|
||||
{
|
||||
ClientPtr client = cl->client;
|
||||
__GLXcontext *cx;
|
||||
GLint nitems = 0, retBytes = 0, retval, newModeCheck;
|
||||
GLubyte *retBuffer = NULL;
|
||||
GLint nitems = 0, retval, newModeCheck;
|
||||
GLenum newMode;
|
||||
int error;
|
||||
|
||||
@@ -123,6 +125,8 @@ __glXDisp_RenderMode(__GLXclientState * cl, GLbyte * pc)
|
||||
newMode = *(GLenum *) pc;
|
||||
retval = glRenderMode(newMode);
|
||||
|
||||
x_rpcbuf_t rpcbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
|
||||
/* Check that render mode worked */
|
||||
glGetIntegerv(GL_RENDER_MODE, &newModeCheck);
|
||||
if (newModeCheck != newMode) {
|
||||
@@ -149,8 +153,7 @@ __glXDisp_RenderMode(__GLXclientState * cl, GLbyte * pc)
|
||||
else {
|
||||
nitems = retval;
|
||||
}
|
||||
retBytes = nitems * __GLX_SIZE_FLOAT32;
|
||||
retBuffer = (GLubyte *) cx->feedbackBuf;
|
||||
x_rpcbuf_write_CARD8s(&rpcbuf, (CARD8*)cx->feedbackBuf, nitems * __GLX_SIZE_FLOAT32);
|
||||
cx->renderMode = newMode;
|
||||
break;
|
||||
case GL_SELECT:
|
||||
@@ -179,8 +182,8 @@ __glXDisp_RenderMode(__GLXclientState * cl, GLbyte * pc)
|
||||
}
|
||||
nitems = bp - cx->selectBuf;
|
||||
}
|
||||
retBytes = nitems * __GLX_SIZE_CARD32;
|
||||
retBuffer = (GLubyte *) cx->selectBuf;
|
||||
x_rpcbuf_write_CARD8s(&rpcbuf, (CARD8*)cx->selectBuf, nitems * __GLX_SIZE_CARD32);
|
||||
|
||||
cx->renderMode = newMode;
|
||||
break;
|
||||
}
|
||||
@@ -191,18 +194,12 @@ __glXDisp_RenderMode(__GLXclientState * cl, GLbyte * pc)
|
||||
*/
|
||||
noChangeAllowed:;
|
||||
xGLXRenderModeReply reply = {
|
||||
.type = X_Reply,
|
||||
.sequenceNumber = client->sequence,
|
||||
.length = nitems,
|
||||
.retval = retval,
|
||||
.size = nitems,
|
||||
.newMode = newMode
|
||||
};
|
||||
WriteToClient(client, sizeof(xGLXRenderModeReply), &reply);
|
||||
if (retBytes) {
|
||||
WriteToClient(client, retBytes, retBuffer);
|
||||
}
|
||||
return Success;
|
||||
|
||||
return X_SEND_REPLY_WITH_RPCBUF(client, reply, rpcbuf);
|
||||
}
|
||||
|
||||
int
|
||||
|
||||
Reference in New Issue
Block a user