From 1acaab0f4bcbcb648167a15a924def801be63979 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 16 Jun 2009 22:32:06 +0100 Subject: qemu: Fix a GL passthrough bug Signed-off-by: Richard Purdie --- .../qemu-git/qemugl-allow-glxcontext-release.patch | 63 ++++++++++++++++++++++ meta/packages/qemu/qemu_git.bb | 5 +- 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 meta/packages/qemu/qemu-git/qemugl-allow-glxcontext-release.patch (limited to 'meta') diff --git a/meta/packages/qemu/qemu-git/qemugl-allow-glxcontext-release.patch b/meta/packages/qemu/qemu-git/qemugl-allow-glxcontext-release.patch new file mode 100644 index 000000000..979e8afc4 --- /dev/null +++ b/meta/packages/qemu/qemu-git/qemugl-allow-glxcontext-release.patch @@ -0,0 +1,63 @@ +Allow releasing the GLXContext/Drawable with glXMakeCurrent. + +--- +commit d942ed4e853e08d2298f3e11e9a952c1d952bff5 +tree f0a934efd8a8ff48e2d96f0d6fc7d70bef106bfe +parent 93619e6be184f8de08759d347825ee0d678a6f9c +author Andrzej Zaborowski Tue, 16 Jun 2009 22:22:05 +0200 +committer Andrzej Zaborowski 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; + } diff --git a/meta/packages/qemu/qemu_git.bb b/meta/packages/qemu/qemu_git.bb index bdd18e8fc..dc640134e 100644 --- a/meta/packages/qemu/qemu_git.bb +++ b/meta/packages/qemu/qemu_git.bb @@ -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" -- cgit v1.2.3