projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
egl_dri2: Do not destroy linked resources.
[mesa.git]
/
src
/
egl
/
drivers
/
dri2
/
egl_dri2.c
diff --git
a/src/egl/drivers/dri2/egl_dri2.c
b/src/egl/drivers/dri2/egl_dri2.c
index 23b57b7ee6f6128b5e2bd33a55c43fd049eda706..3bdac2944cb044e2c8fc5ed87175f379e4c91c75 100644
(file)
--- a/
src/egl/drivers/dri2/egl_dri2.c
+++ b/
src/egl/drivers/dri2/egl_dri2.c
@@
-496,13
+496,16
@@
dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
dri2_dpy->driver = NULL;
end = search_paths + strlen(search_paths);
for (p = search_paths; p < end && dri2_dpy->driver == NULL; p = next + 1) {
dri2_dpy->driver = NULL;
end = search_paths + strlen(search_paths);
for (p = search_paths; p < end && dri2_dpy->driver == NULL; p = next + 1) {
+ int path_len;
+
next = strchr(p, ':');
if (next == NULL)
next = end;
next = strchr(p, ':');
if (next == NULL)
next = end;
+ path_len = next - p;
snprintf(path, sizeof path,
dri_driver_format,
snprintf(path, sizeof path,
dri_driver_format,
-
next - p
, p,
+
path_len
, p,
xcb_dri2_connect_driver_name_length (connect),
xcb_dri2_connect_driver_name (connect));
xcb_dri2_connect_driver_name_length (connect),
xcb_dri2_connect_driver_name (connect));
@@
-595,6
+598,7
@@
dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
extensions = dri2_dpy->core->getExtensions(dri2_dpy->dri_screen);
for (i = 0; extensions[i]; i++) {
extensions = dri2_dpy->core->getExtensions(dri2_dpy->dri_screen);
for (i = 0; extensions[i]; i++) {
+ _eglLog(_EGL_DEBUG, "DRI2: found extension `%s'", extensions[i]->name);
if ((strcmp(extensions[i]->name, __DRI2_FLUSH) == 0))
dri2_dpy->flush = (__DRI2flushExtension *) extensions[i];
}
if ((strcmp(extensions[i]->name, __DRI2_FLUSH) == 0))
dri2_dpy->flush = (__DRI2flushExtension *) extensions[i];
}
@@
-731,11
+735,11
@@
dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf,
if ((cctx == NULL && ddraw == NULL && rdraw == NULL) ||
dri2_dpy->core->bindContext(cctx, ddraw, rdraw)) {
if ((cctx == NULL && ddraw == NULL && rdraw == NULL) ||
dri2_dpy->core->bindContext(cctx, ddraw, rdraw)) {
- if (dsurf)
+ if (dsurf
&& !_eglIsSurfaceLinked(dsurf)
)
dri2_destroy_surface(drv, disp, dsurf);
dri2_destroy_surface(drv, disp, dsurf);
- if (rsurf && rsurf != dsurf)
+ if (rsurf && rsurf != dsurf
&& !_eglIsSurfaceLinked(dsurf)
)
dri2_destroy_surface(drv, disp, rsurf);
dri2_destroy_surface(drv, disp, rsurf);
- if (ctx != NULL)
+ if (ctx != NULL
&& !_eglIsContextLinked(ctx)
)
dri2_dpy->core->unbindContext(dri2_egl_context(ctx)->dri_context);
return EGL_TRUE;
dri2_dpy->core->unbindContext(dri2_egl_context(ctx)->dri_context);
return EGL_TRUE;