diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2012-02-05 08:49:27 +0200 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2012-02-05 08:49:27 +0200 |
commit | c1be3954ce633f1aaac75004a2d8604890e4b322 (patch) | |
tree | 090c7f535efbe18aa5a0230ce0cdc8f044dbf032 /app-emulation/qemu-kvm/files/qemu-kvm-0.12.3-fix-crash-with-sdl.patch | |
parent | e7761d581aa15ad9c2dfc95fda65becbf4e1ef81 (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.patch | 145 |
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 - |