summaryrefslogtreecommitdiff
path: root/app-emulation/qemu-kvm/files/qemu-kvm-0.12.3-fix-crash-with-sdl.patch
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2012-02-05 08:49:27 +0200
committerGluzskiy Alexandr <sss123next@list.ru>2012-02-05 08:49:27 +0200
commitc1be3954ce633f1aaac75004a2d8604890e4b322 (patch)
tree090c7f535efbe18aa5a0230ce0cdc8f044dbf032 /app-emulation/qemu-kvm/files/qemu-kvm-0.12.3-fix-crash-with-sdl.patch
parente7761d581aa15ad9c2dfc95fda65becbf4e1ef81 (diff)
deleted: qemu-kvm/files/qemu-0.11.0-mips64-user-fix.patch
deleted: qemu-kvm/files/qemu-0.15.patch deleted: qemu-kvm/files/qemu-kvm deleted: qemu-kvm/files/qemu-kvm-0.12.3-fix-crash-with-sdl.patch deleted: qemu-kvm/files/qemu-kvm-0.12.3-include-madvise-defines.patch deleted: qemu-kvm/files/qemu-kvm-guest-hang-on-usb-add.patch deleted: qemu-kvm/files/qemu.patch deleted: qemu-kvm/qemu-kvm-0.15.0-r1.ebuild deleted: qemu-kvm/qemu-kvm-9999-r1.ebuild
Diffstat (limited to 'app-emulation/qemu-kvm/files/qemu-kvm-0.12.3-fix-crash-with-sdl.patch')
-rw-r--r--app-emulation/qemu-kvm/files/qemu-kvm-0.12.3-fix-crash-with-sdl.patch145
1 files changed, 0 insertions, 145 deletions
diff --git a/app-emulation/qemu-kvm/files/qemu-kvm-0.12.3-fix-crash-with-sdl.patch b/app-emulation/qemu-kvm/files/qemu-kvm-0.12.3-fix-crash-with-sdl.patch
deleted file mode 100644
index 909dead..0000000
--- a/app-emulation/qemu-kvm/files/qemu-kvm-0.12.3-fix-crash-with-sdl.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-From ff5414990645653bf43bf64adfc1ca77ffb9edcb Mon Sep 17 00:00:00 2001
-From: malc <av1474@comtv.ru>
-Date: Sun, 17 Jan 2010 00:25:29 +0300
-Subject: [PATCH] Revert "sdlaudio: make it suck less"
-
-This reverts commit 4839abe78fd466a3cf06faa7c362154afd5404f1.
-
-The commit was badly broken, Gentoo has sdl as the default driver,
-consequently 5 gentoo users have hit the breakage and were kind enough
-to report, so thank you:
-
-Claes Gyllenswrd
-vekin
-Chris
-
-But above all thanks to Toralf Foerster who actually provied enough
-information to pinpoint the breakage to sdlaudio.
-
-http://bugs.gentoo.org/show_bug.cgi?id=294269
----
- audio/sdlaudio.c | 80 +++++++++++++++++++++++++++++++++--------------------
- 1 files changed, 50 insertions(+), 30 deletions(-)
-
-diff --git a/audio/sdlaudio.c b/audio/sdlaudio.c
-index aa39c33..8e7e5cb 100644
---- a/audio/sdlaudio.c
-+++ b/audio/sdlaudio.c
-@@ -41,8 +41,8 @@
- typedef struct SDLVoiceOut {
- HWVoiceOut hw;
- int live;
-+ int rpos;
- int decr;
-- int pending;
- } SDLVoiceOut;
-
- static struct {
-@@ -225,10 +225,6 @@ static void sdl_callback (void *opaque, Uint8 *buf, int len)
- HWVoiceOut *hw = &sdl->hw;
- int samples = len >> hw->info.shift;
-
-- if (sdl_lock (s, "sdl_callback")) {
-- return;
-- }
--
- if (s->exit) {
- return;
- }
-@@ -236,34 +232,49 @@ static void sdl_callback (void *opaque, Uint8 *buf, int len)
- while (samples) {
- int to_mix, decr;
-
-- while (!sdl->pending) {
-- if (sdl_unlock (s, "sdl_callback")) {
-- return;
-- }
--
-- sdl_wait (s, "sdl_callback");
-- if (s->exit) {
-- return;
-- }
--
-- if (sdl_lock (s, "sdl_callback")) {
-- return;
-- }
-- sdl->pending += sdl->live;
-- sdl->live = 0;
-+ /* dolog ("in callback samples=%d\n", samples); */
-+ sdl_wait (s, "sdl_callback");
-+ if (s->exit) {
-+ return;
-+ }
-+
-+ if (sdl_lock (s, "sdl_callback")) {
-+ return;
-+ }
-+
-+ if (audio_bug (AUDIO_FUNC, sdl->live < 0 || sdl->live > hw->samples)) {
-+ dolog ("sdl->live=%d hw->samples=%d\n",
-+ sdl->live, hw->samples);
-+ return;
-+ }
-+
-+ if (!sdl->live) {
-+ goto again;
- }
-
-- to_mix = audio_MIN (samples, sdl->pending);
-- decr = audio_pcm_hw_clip_out (hw, buf, to_mix, 0);
-- buf += decr << hw->info.shift;
-+ /* dolog ("in callback live=%d\n", live); */
-+ to_mix = audio_MIN (samples, sdl->live);
-+ decr = to_mix;
-+ while (to_mix) {
-+ int chunk = audio_MIN (to_mix, hw->samples - hw->rpos);
-+ struct st_sample *src = hw->mix_buf + hw->rpos;
-+
-+ /* dolog ("in callback to_mix %d, chunk %d\n", to_mix, chunk); */
-+ hw->clip (buf, src, chunk);
-+ sdl->rpos = (sdl->rpos + chunk) % hw->samples;
-+ to_mix -= chunk;
-+ buf += chunk << hw->info.shift;
-+ }
- samples -= decr;
-+ sdl->live -= decr;
- sdl->decr += decr;
-- sdl->pending -= decr;
-- }
-
-- if (sdl_unlock (s, "sdl_callback")) {
-- return;
-+ again:
-+ if (sdl_unlock (s, "sdl_callback")) {
-+ return;
-+ }
- }
-+ /* dolog ("done len=%d\n", len); */
- }
-
- static int sdl_write_out (SWVoiceOut *sw, void *buf, int len)
-@@ -281,9 +292,18 @@ static int sdl_run_out (HWVoiceOut *hw, int live)
- return 0;
- }
-
-- sdl->live = live;
-- decr = sdl->decr;
-- sdl->decr = 0;
-+ if (sdl->decr > live) {
-+ ldebug ("sdl->decr %d live %d sdl->live %d\n",
-+ sdl->decr,
-+ live,
-+ sdl->live);
-+ }
-+
-+ decr = audio_MIN (sdl->decr, live);
-+ sdl->decr -= decr;
-+
-+ sdl->live = live - decr;
-+ hw->rpos = sdl->rpos;
-
- if (sdl->live > 0) {
- sdl_unlock_and_post (s, "sdl_run_out");
---
-1.7.0.4
-