]> code.ossystems Code Review - openembedded-core.git/commitdiff
qemu: Fix a GL passthrough bug
authorRichard Purdie <rpurdie@linux.intel.com>
Tue, 16 Jun 2009 21:32:06 +0000 (22:32 +0100)
committerRichard Purdie <rpurdie@linux.intel.com>
Tue, 16 Jun 2009 21:32:06 +0000 (22:32 +0100)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
meta/packages/qemu/qemu-git/qemugl-allow-glxcontext-release.patch [new file with mode: 0644]
meta/packages/qemu/qemu_git.bb

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 (file)
index 0000000..979e8af
--- /dev/null
@@ -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;
+         }
index bdd18e8fc68331764908196133bfb1c077eebc3f..dc640134ed2a323a5b9b43ad32edbc77e88ee1a7 100644 (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"