mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 08:30:10 +01:00
xlib: do not cache return value of glXChooseVisual/glXGetVisualFromFBConfig
The returned XVisualInfo from glXChooseVisual/glXGetVisualFromFBConfig is being cached in XMesaVisual.vishandle (and unconditionally overwritten on subsequent calls). However, these entry points are specified to return XVisualInfo instances to be owned by the caller and freed with XFree(), so the return values should not be retained. With this change, XMesaVisual.vishandle is essentially unused and will be removed in a subsequent change. v2: update commit message Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
This commit is contained in:
parent
eeff133158
commit
fe9d8cd79e
1 changed files with 8 additions and 18 deletions
|
|
@ -1241,16 +1241,11 @@ Fake_glXChooseVisual( Display *dpy, int screen, int *list )
|
|||
|
||||
xmvis = choose_visual(dpy, screen, list, GL_FALSE);
|
||||
if (xmvis) {
|
||||
#if 0
|
||||
return xmvis->vishandle;
|
||||
#else
|
||||
/* create a new vishandle - the cached one may be stale */
|
||||
xmvis->vishandle = malloc(sizeof(XVisualInfo));
|
||||
if (xmvis->vishandle) {
|
||||
memcpy(xmvis->vishandle, xmvis->visinfo, sizeof(XVisualInfo));
|
||||
XVisualInfo* visinfo = malloc(sizeof(XVisualInfo));
|
||||
if (visinfo) {
|
||||
memcpy(visinfo, xmvis->visinfo, sizeof(XVisualInfo));
|
||||
}
|
||||
return xmvis->vishandle;
|
||||
#endif
|
||||
return visinfo;
|
||||
}
|
||||
else
|
||||
return NULL;
|
||||
|
|
@ -1974,16 +1969,11 @@ Fake_glXGetVisualFromFBConfig( Display *dpy, GLXFBConfig config )
|
|||
{
|
||||
if (dpy && config) {
|
||||
XMesaVisual xmvis = (XMesaVisual) config;
|
||||
#if 0
|
||||
return xmvis->vishandle;
|
||||
#else
|
||||
/* create a new vishandle - the cached one may be stale */
|
||||
xmvis->vishandle = malloc(sizeof(XVisualInfo));
|
||||
if (xmvis->vishandle) {
|
||||
memcpy(xmvis->vishandle, xmvis->visinfo, sizeof(XVisualInfo));
|
||||
XVisualInfo* visinfo = malloc(sizeof(XVisualInfo));
|
||||
if (visinfo) {
|
||||
memcpy(visinfo, xmvis->visinfo, sizeof(XVisualInfo));
|
||||
}
|
||||
return xmvis->vishandle;
|
||||
#endif
|
||||
return visinfo;
|
||||
}
|
||||
else {
|
||||
return NULL;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue