Wu Fengguang fd5723b385 pulse-audio: fix bug on updating rpos
Fix a rpos coordination bug between qpa_run_out() and qpa_thread_out(),
which shows up as playback noises.

	qpa_run_out()
			qpa_thread_out loop N critical section 1
	qpa_run_out()   qpa_thread_out loop N doing pa_simple_write()
	qpa_run_out()	qpa_thread_out loop N doing pa_simple_write()
			qpa_thread_out loop N critical section 2
			qpa_thread_out loop N+1 critical section 1
	qpa_run_out()	qpa_thread_out loop N+1 doing pa_simple_write()

In the above scheme, "qpa_thread_out loop N+1 critical section 1" will
get the same rpos as the one used by "qpa_thread_out loop N critical
section 1". So it will be reading dead samples from the old rpos.

The rpos can only be updated back to qpa_thread_out when there is a
qpa_run_out() run between two qpa_thread_out loops.

normal sequence:
	qpa_thread_out:
			hw->rpos (X0) => local rpos => pa->rpos (X1)
	qpa_run_out:
			pa->rpos (X1) => hw->rpos (X1)
	qpa_thread_out:
			hw->rpos (X1) => local rpos => pa->rpos (X2)

buggy sequence:
	qpa_thread_out:
			hw->rpos (X0) => local rpos => pa->rpos (X1)
	qpa_thread_out:
			hw->rpos (X0) => local rpos => pa->rpos (X1')

Obviously qpa_run_out() shall be called at least once between any two
qpa_thread_out loops (after pa->rpos is set), in order for the new
qpa_thread_out loop to see the updated rpos.

Setting pa->live to 0 does the trick. The next loop will have to wait
for one qpa_run_out() invocation in order to get a non-zero pa->live
and proceed.

Signed-off-by: malc <av1474@comtv.ru>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
2010-09-29 08:24:14 +04:00
2010-09-22 14:46:33 -05:00
2010-06-10 00:09:49 +02:00
2010-07-03 06:49:47 +00:00
2010-07-13 18:18:23 +02:00
2010-09-25 11:26:05 +00:00
2010-09-07 20:27:33 +03:00
2010-08-22 17:11:06 -05:00
2010-07-13 08:55:04 -05:00
2010-09-19 00:30:25 +02:00
2010-09-18 05:53:15 +00:00
2010-03-06 23:09:28 +01:00
2008-12-13 09:32:43 +00:00
2009-09-12 07:36:22 +00:00
2009-09-12 07:36:22 +00:00
2009-05-13 20:54:26 +01:00
2009-09-25 19:53:21 +00:00
2010-09-25 11:26:05 +00:00
2010-06-16 13:03:51 +01:00
2010-04-09 18:55:56 +02:00
2010-09-08 12:39:22 +02:00
2010-08-24 15:22:24 +00:00
2010-05-31 20:55:23 +02:00
2009-03-10 21:43:35 +00:00
2009-01-14 18:39:49 +00:00
2010-05-19 12:45:54 -03:00
2010-05-19 12:45:54 -03:00
2010-05-19 12:45:54 -03:00
2010-05-19 12:45:54 -03:00
2010-09-10 18:47:31 +00:00
2008-10-12 17:54:42 +00:00
2010-07-22 05:52:09 +02:00
2010-05-24 15:18:23 -05:00
2010-04-01 21:51:59 +02:00
2010-04-01 21:51:59 +02:00
2010-03-01 04:39:50 +00:00
2009-10-01 16:12:16 -05:00
2009-10-01 16:12:16 -05:00
2010-06-13 19:00:50 +01:00
2009-09-12 07:36:22 +00:00
2010-07-24 14:42:29 +02:00
2010-09-25 11:26:05 +00:00
2010-03-29 19:24:00 +00:00
2009-12-17 18:12:04 +01:00
2010-05-22 08:02:12 +00:00
2009-10-01 16:12:16 -05:00
2010-09-09 16:22:45 -05:00
2009-10-01 16:12:16 -05:00
2010-05-10 11:36:03 -05:00
2010-05-10 11:36:03 -05:00
2010-06-11 15:25:14 -03:00
2009-11-17 08:49:39 -06:00
2009-11-17 08:49:39 -06:00
2010-09-25 11:26:05 +00:00
2008-12-14 08:50:18 +00:00
2010-06-16 13:03:51 +01:00
2010-09-07 13:46:17 +02:00
2010-03-21 08:28:47 +00:00
2010-05-22 08:24:49 +00:00
2010-01-08 09:58:40 -06:00
2009-09-12 07:36:22 +00:00
2010-09-21 15:39:42 +02:00
2010-08-22 17:11:06 -05:00
2010-06-13 19:00:50 +01:00
2010-08-20 21:03:24 +00:00
2010-08-15 09:45:28 +00:00
2010-09-25 11:26:05 +00:00
2010-09-25 11:26:05 +00:00
2009-12-25 18:19:15 +00:00
2010-05-19 12:45:54 -03:00
2009-11-17 08:49:39 -06:00
2010-07-01 14:27:13 -03:00
2010-07-01 14:27:13 -03:00
2010-09-22 20:05:23 +00:00
2009-10-27 12:28:59 -05:00
2010-09-21 15:39:42 +02:00
2009-10-01 16:12:16 -05:00
2010-09-21 15:39:42 +02:00
2010-05-19 12:45:54 -03:00
2010-07-06 10:36:28 -05:00
2010-05-19 12:45:54 -03:00
2009-11-17 08:49:38 -06:00
2010-05-19 12:45:54 -03:00
2010-05-19 12:45:54 -03:00
2010-06-11 15:25:14 -03:00
2009-12-03 09:41:18 -06:00
2010-05-19 12:45:54 -03:00
2010-05-19 12:45:54 -03:00
2010-05-19 12:45:54 -03:00
2010-05-19 12:45:54 -03:00
2010-05-19 12:45:54 -03:00
2010-09-18 05:53:14 +00:00
2008-12-14 08:50:18 +00:00
2010-09-09 19:13:04 +00:00
2009-09-13 19:38:43 +00:00
2010-03-14 22:04:50 +01:00
2008-12-04 11:29:42 +00:00
2010-09-10 23:54:56 +03:00
2009-10-01 16:12:16 -05:00
2010-06-30 22:51:17 +02:00
2009-03-05 23:01:23 +00:00
2010-07-28 07:58:15 -05:00
2008-09-06 16:31:30 +00:00
2010-09-25 11:26:05 +00:00

Read the documentation in qemu-doc.html.

Fabrice Bellard.
Description
Original Xbox Emulator for Windows, macOS, and Linux (Active Development)
Readme 528 MiB
Languages
C 82.5%
C++ 7%
Python 3.3%
Dylan 2.8%
Shell 1.5%
Other 2.6%