1. 24 5月, 2012 1 次提交
    • J
      audio: Always call fini on exit · aeb29b64
      Jan Kiszka 提交于
      Not only clean up enabled voices but any registered one. Backends like
      pulsaudio rely on unconditional fini handler invocations.
      
      This fixes "Memory pool destroyed but not all memory blocks freed!"
      warnings on VM shutdowns when pa is used and lockups of QEMU on shutdown
      as it got stuck on some pa-internal synchronization point.
      Signed-off-by: NJan Kiszka <jan.kiszka@siemens.com>
      Signed-off-by: Nmalc <av1474@comtv.ru>
      aeb29b64
  2. 18 5月, 2012 1 次提交
  3. 04 5月, 2012 1 次提交
  4. 26 4月, 2012 1 次提交
  5. 17 4月, 2012 5 次提交
  6. 25 2月, 2012 1 次提交
  7. 14 12月, 2011 1 次提交
  8. 19 11月, 2011 1 次提交
  9. 20 9月, 2011 2 次提交
  10. 16 9月, 2011 1 次提交
    • L
      Replace the VMSTOP macros with a proper state type · 1dfb4dd9
      Luiz Capitulino 提交于
      Today, when notifying a VM state change with vm_state_notify(),
      we pass a VMSTOP macro as the 'reason' argument. This is not ideal
      because the VMSTOP macros tell why qemu stopped and not exactly
      what the current VM state is.
      
      One example to demonstrate this problem is that vm_start() calls
      vm_state_notify() with reason=0, which turns out to be VMSTOP_USER.
      
      This commit fixes that by replacing the VMSTOP macros with a proper
      state type called RunState.
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      1dfb4dd9
  11. 21 8月, 2011 1 次提交
  12. 23 6月, 2011 2 次提交
  13. 14 6月, 2011 1 次提交
  14. 08 6月, 2011 1 次提交
  15. 01 6月, 2011 1 次提交
  16. 04 4月, 2011 1 次提交
  17. 21 3月, 2011 1 次提交
    • P
      change all other clock references to use nanosecond resolution accessors · 74475455
      Paolo Bonzini 提交于
      This was done with:
      
          sed -i 's/qemu_get_clock\>/qemu_get_clock_ns/' \
              $(git grep -l 'qemu_get_clock\>' )
          sed -i 's/qemu_new_timer\>/qemu_new_timer_ns/' \
              $(git grep -l 'qemu_new_timer\>' )
      
      after checking that get_clock and new_timer never occur twice
      on the same line.  There were no missed occurrences; however, even
      if there had been, they would have been caught by the compiler.
      
      There was exactly one false positive in qemu_run_timers:
      
           -    current_time = qemu_get_clock (clock);
           +    current_time = qemu_get_clock_ns (clock);
      
      which is of course not in this patch.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      74475455
  18. 26 1月, 2011 3 次提交
    • G
      pulseaudio: tweak config · bf1064b5
      Gerd Hoffmann 提交于
      Zap unused divisor field.
      Raise the buffer size default.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Signed-off-by: Nmalc <av1474@comtv.ru>
      bf1064b5
    • G
      pulseaudio: setup buffer attrs · e6d16fa4
      Gerd Hoffmann 提交于
      Request reasonable buffer sizes from pulseaudio.  Without this
      pa_simple_write() can block quite long and lead to dropouts,
      especially with guests which use small audio ring buffers.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Signed-off-by: Nmalc <av1474@comtv.ru>
      e6d16fa4
    • G
      pulseaudio: process 1/4 buffer max at once · 6315633b
      Gerd Hoffmann 提交于
      Limit the size of data pieces processed by the pulseaudio worker
      threads.  Never ever process more than 1/4 of the buffer at once.
      
      Background: The buffer area currently processed by the pulseaudio thread
      is blocked, i.e. the main thread (or iothread) can't fill in more data
      there.  The buffer processing time is roughly real-time due to the
      pa_simple_write() call blocking when the output queue to the pulse
      server is full.  Thus processing big chunks at once means blocking
      a large part of the buffer for a long time.  This brings high latency
      and can lead to dropouts.
      
      When processing the buffer in smaller chunks the rpos handling becomes a
      problem though.  The thread reads hw->rpos without knowing whenever
      qpa_run_out has already seen the last (small) chunk processed and
      updated rpos accordingly.  There is no point in reading hw->rpos though,
      pa->rpos can be used instead.  We just need to take care to initialize
      pa->rpos before kicking the thread.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Signed-off-by: Nmalc <av1474@comtv.ru>
      6315633b
  19. 12 1月, 2011 1 次提交
  20. 09 1月, 2011 2 次提交
  21. 04 1月, 2011 1 次提交
  22. 10 12月, 2010 1 次提交
  23. 05 12月, 2010 1 次提交
  24. 18 11月, 2010 1 次提交
  25. 11 11月, 2010 1 次提交
  26. 10 11月, 2010 1 次提交
    • G
      spice: add audio · 3e313753
      Gerd Hoffmann 提交于
      Add support for the spice audio interface.  With this patch applied
      audio can be forwarded over the network from/to the spice client.  Both
      recording and playback is supported.
      
      The driver is first in the driver list, but the can_be_default flag is
      set only in case spice is active.  So if you have the spice protocol
      enabled the spice audio driver is the default one, otherwise whatever
      comes first after spice in the list.  Overriding the default using
      QEMU_AUDIO_DRV works in any case.
      
      [ v2: audio codestyle: add spaces before open parenthesis ]
      [ v2: add const to silence array ]
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Cc: malc <av1474@comtv.ru>
      Signed-off-by: Nmalc <av1474@comtv.ru>
      3e313753
  27. 18 10月, 2010 2 次提交
  28. 03 10月, 2010 2 次提交
  29. 29 9月, 2010 1 次提交
    • W
      pulse-audio: fix bug on updating rpos · fd5723b3
      Wu Fengguang 提交于
      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: Nmalc <av1474@comtv.ru>
      Signed-off-by: NWu Fengguang <fengguang.wu@intel.com>
      fd5723b3