qemu: Fix a GL passthrough bug

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
Richard Purdie
2009-06-16 22:32:06 +01:00
parent 1275962e51
commit 1acaab0f4b
2 changed files with 66 additions and 2 deletions

View File

@@ -0,0 +1,63 @@
Allow releasing the GLXContext/Drawable with glXMakeCurrent.
---
commit d942ed4e853e08d2298f3e11e9a952c1d952bff5
tree f0a934efd8a8ff48e2d96f0d6fc7d70bef106bfe
parent 93619e6be184f8de08759d347825ee0d678a6f9c
author Andrzej Zaborowski <andrew.zaborowski@intel.com> Tue, 16 Jun 2009 22:22:05 +0200
committer Andrzej Zaborowski <andrew.zaborowski@intel.com> Tue, 16 Jun 2009 22:22:05 +0200
target-i386/opengl_exec.c | 31 ++++++++++++++++---------------
1 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/target-i386/opengl_exec.c b/target-i386/opengl_exec.c
index 4a69b9b..3d6fb21 100644
--- a/target-i386/opengl_exec.c
+++ b/target-i386/opengl_exec.c
@@ -1600,10 +1600,9 @@ int do_function_call(int func_number, arg_t *args, char *ret_string)
fprintf(stderr, "client_drawable=%p fake_ctx=%d\n",
(void *) client_drawable, fake_ctxt);
- if (client_drawable == 0 && fake_ctxt == 0) {
+ if (client_drawable == 0 && fake_ctxt == 0)
ret_int = glXMakeCurrent(dpy, 0, NULL);
- process->current_state = &process->default_state;
- } else if ((drawable = (GLXDrawable)
+ else if ((drawable = (GLXDrawable)
get_association_fakepbuffer_pbuffer(
process, client_drawable))) {
GLXContext ctxt = get_association_fakecontext_glxcontext(
@@ -1651,19 +1650,21 @@ int do_function_call(int func_number, arg_t *args, char *ret_string)
}
if (ret_int) {
- for (i = 0; i < process->nb_states; i ++) {
- if (process->glstates[i]->fake_ctxt == fake_ctxt) {
- /* HACK !!! REMOVE */
- process->current_state = process->glstates[i];
- process->current_state->drawable = drawable;
- break;
- }
- }
+ if (fake_ctxt) {
+ for (i = 0; i < process->nb_states; i ++)
+ if (process->glstates[i]->fake_ctxt == fake_ctxt) {
+ /* HACK !!! REMOVE */
+ process->current_state = process->glstates[i];
+ process->current_state->drawable = drawable;
+ break;
+ }
- if (i == process->nb_states) {
- fprintf(stderr, "error remembering the new context\n");
- exit(-1);
- }
+ if (i == process->nb_states) {
+ fprintf(stderr, "error remembering the new context\n");
+ exit(-1);
+ }
+ } else
+ process->current_state = &process->default_state;
}
break;
}

View File

@@ -1,7 +1,7 @@
LICENSE = "GPL"
DEPENDS = "zlib"
PV = "0.10.2+git${SRCREV}"
PR = "r4"
PR = "r5"
FILESPATH = "${FILE_DIRNAME}/qemu-${PV}/:${FILE_DIRNAME}/qemu-git/"
@@ -12,7 +12,8 @@ SRC_URI = "\
file://no-strip.patch;patch=1 \
file://fix-dirent.patch;patch=1 \
file://fix-nogl.patch;patch=1 \
file://zlibsearch.patch;patch=1 "
file://zlibsearch.patch;patch=1 \
file://qemugl-allow-glxcontext-release.patch;patch=1 "
S = "${WORKDIR}/git"