1. 04 Aug, 2020 4 commits
  2. 03 Aug, 2020 1 commit
  3. 26 Jul, 2020 4 commits
  4. 22 Jul, 2020 1 commit
  5. 21 Jul, 2020 2 commits
    • Eero Nurkkala's avatar
      tests: cpu-remap-test.c: fix memory leaks · 1f1fb8eb
      Eero Nurkkala authored
      When compiled with ASAN: -O1 -fsanitize=address -fno-omit-frame-pointer,
      the following issues are seen:
      
      ==17217==ERROR: LeakSanitizer: detected memory leaks
      
      Direct leak of 32 byte(s) in 1 object(s) allocated from:
          #0 0x7fceba414b40 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xdeb40)
          #1 0x7fceb9b3eac9 in pa_xmalloc pulse/xmalloc.c:63
          #2 0x7fceb9b3ed22 in pa_xmemdup pulse/xmalloc.c:94
          #3 0x7fceb9e1eed5 in _pa_xnewdup_internal pulse/xmalloc.h:86
          #4 0x7fceb9e1eed5 in init_remap_c pulsecore/remap.c:580
          #5 0x7fceb9e1efe5 in pa_init_remap_func pulsecore/remap.c:608
          #6 0x5574e72422b7 in remap_init2_test_channels tests/cpu-remap-test.c:303
          #7 0x5574e7242420 in rearrange_special_test tests/cpu-remap-test.c:345
          #8
      
       0x5574e7245ce5 in srunner_run (/home/eenurkka/pulse/pulseaudio/src/.libs/cpu-remap-test+0x9ce5)
      ...
      SUMMARY: AddressSanitizer: 192 byte(s) leaked in 6 allocation(s).
      
      Fix those issues by freeing the allocated resources properly.
      Signed-off-by: Eero Nurkkala's avatarEero Nurkkala <eero.nurkkala@offcode.fi>
      1f1fb8eb
    • Eero Nurkkala's avatar
      tests: hashmap-test.c: fix memory leak · 9dd7f48b
      Eero Nurkkala authored
      When compiled with ASAN: -O1 -fsanitize=address -fno-omit-frame-pointer,
      the following issue is seen:
      
      ==14272==ERROR: LeakSanitizer: detected memory leaks
      
      Direct leak of 1072 byte(s) in 1 object(s) allocated from:
          #0 0x7f0180966d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28)
          #1 0x7f018039f043 in pa_xmalloc0 pulse/xmalloc.c:74
          #2 0x7f01803c5cc8 in pa_hashmap_new_full pulsecore/hashmap.c:61
          #3 0x7f01803c5df9 in pa_hashmap_new pulsecore/hashmap.c:76
          #4 0x556ee75ff7f4 in remove_all_test tests/hashmap-test.c:96
          #5
      
       0x556ee7602965 in srunner_run (/home/eenurkka/pulse/pulseaudio/src/.libs/hashmap-test+0x6965)
      
      SUMMARY: AddressSanitizer: 1072 byte(s) leaked in 1 allocation(s).
      
      Fix it by freeing the resource properly.
      Signed-off-by: Eero Nurkkala's avatarEero Nurkkala <eero.nurkkala@offcode.fi>
      9dd7f48b
  6. 20 Jul, 2020 2 commits
    • Tanu Kaskinen's avatar
      remap_neon: use register r12 instead of r7 · 5c0ad422
      Tanu Kaskinen authored and Arun Raghavan's avatar Arun Raghavan committed
      When the Thumb instructions set is used and frame pointers are enabled
      (-fno-omit-frame-pointer), r7 can't be used, because it's used for the
      frame pointer. Trying to use r7 caused the compilation to fail.
      
      Thanks to Andre McCurdy for suggesting[1] this fix, all I had to do was to
      test that it works. The code builds now, and cpu-remap-test also
      succeeds.
      
      [1] https://lists.openembedded.org/g/openembedded-core/message/136786
      5c0ad422
    • zhaochengyi's avatar
      pulsecore: Add exception judgment to fix the crash when playing music · b5a6365f
      zhaochengyi authored
      
      
      When playing music for a period of time, the Shared Memory is
      frequently accessed, and occasionally read/write errors occur,
      which causes the program to crash
      
      [Current thread is 1 (Thread 0xffff86823010 (LWP 2841))]
      (gdb) bt
      0  0x0000ffff8702a714 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      1  0x0000ffff870188e8 in __GI_abort () at abort.c:79
      2  0x0000ffff873b5728 in do_read (p=p@entry=0x3673a170, re=re@entry=0x3673a338) at pulsecore/pstream.c:856
      3  0x0000ffff873b7fd8 in do_pstream_read_write (p=0x3673a170) at pulsecore/pstream.c:248
      4  0x0000ffff873b8368 in srb_callback (srb=<optimized out>, userdata=0x3673a170) at pulsecore/pstream.c:287
      5  0x0000ffff873b8bec in srbchannel_rwloop (sr=0x36766ae0) at pulsecore/srbchannel.c:190
      6  0x0000ffff87339c70 in dispatch_pollfds (m=0x36670db0) at pulse/mainloop.c:655
      7  0x0000ffff87339c70 in pa_mainloop_dispatch (m=m@entry=0x36670db0) at pulse/mainloop.c:898
      8  0x0000ffff8733a01c in pa_mainloop_iterate (m=0x36670db0, block=<optimized out>, retval=0xffffd9683030) at pulse/mainloop.c:929
      9  0x0000ffff8733a0d8 in pa_mainloop_run (m=m@entry=0x36670db0, retval=retval@entry=0xffffd9683030) at pulse/mainloop.c:945
      10 0x0000000000406894 in main (argc=<optimized out>, argv=<optimized out>) at daemon/main.c:1144
      Signed-off-by: zhaochengyi's avatarzhaochengyi <zhaochengyi@uniontech.com>
      b5a6365f
  7. 18 Jul, 2020 1 commit
  8. 17 Jul, 2020 1 commit
    • Hui Wang's avatar
      alsa: adjust ucm sink/source priority according to ports priority · c8653c13
      Hui Wang authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      
      
      On the machines with the ucm used, the different input/output devices
      often have different pcm stream, so they often belong to different
      sources and sinks, this is greatly different from the design of all
      devices connected to a codec (without ucm).
      
      For example, on a machine with ucm2 used:
      the internal dmic is on source#0
      the external mic is on the source#1
      the internal spk is on sink#0
      the external headphone is on sink#1
      
      Users expect that after plugging the external device, it will become
      the active device automatically. The switch-on-port-available could
      make it to be the active_port on its own source/sink, but can't make
      source/sink to be default_source/sink since the sources/sinks belong
      to the same profile (HiFi usually).
      
      If we adjust the source/sink priority according to ucm ports priority,
      the device_port.c could handle the default_source/sink changing then.
      Usually we set higher priority for external device than internal
      device in the ucm.
      
      In order to bring the lowest side effect on the source/sink priority,
      I change the ucm priority to units digit first, then add it to the
      original priority.
      Signed-off-by: Hui Wang's avatarHui Wang <hui.wang@canonical.com>
      c8653c13
  9. 11 Jul, 2020 1 commit
  10. 10 Jul, 2020 4 commits
  11. 09 Jul, 2020 1 commit
    • Hui Wang's avatar
      alsa: make the unsuspend more robust · ede8cbb1
      Hui Wang authored
      
      
      We met a weird situation on a couple of Lenovo machines and at least
      on one Dell machine. First we open the gnome-sound-setting, then
      suspend and resume the system, after the system resume back, the audio
      devices change to dummy, the audio doesn't work anymore. And pacmd
      list-cards shows no available sound card.
      
      Through debugging I found after resume, the alsa receives POLLERR
      events and it will call unsuspend to recover the pcm, but at that
      moment, the device nodes in /dev/snd/ is not accessible, so the
      snd_pcm_open() fails and the pulseaudio unload the module-alsa-card.
      
      Here I add retry and pa_msleep if snd_pcm_open fails, I tested it on
      all machines which have this problem, pa_msleep(25) is ok for most of
      them, there is only one machine which needs to call pa_msleep(25)
      twice, so for safety reason, I set the max retry times to 4.
      Signed-off-by: Hui Wang's avatarHui Wang <hui.wang@canonical.com>
      ede8cbb1
  12. 06 Jul, 2020 2 commits
  13. 30 Jun, 2020 1 commit
  14. 22 Jun, 2020 4 commits
    • Tanu Kaskinen's avatar
      man: Explain the limitations of "pulseaudio --check" · 7076e6d0
      Tanu Kaskinen authored and Arun Raghavan's avatar Arun Raghavan committed
      7076e6d0
    • Libin Yang's avatar
      device-port: queue CARD CHANGE event before update default sink · 2ae94c14
      Libin Yang authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      
      
      In single profile mode (headphone and speaker use different PCMs),
      when headphone is plugged in, pa_device_port_set_available() will call
      pa_core_update_default_sink/source() before posting
      PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_CHANGE to the gnome.
      And pa_core_update_default_sink/source() will post
      PA_SUBSCRIPTION_EVENT_SERVER | PA_SUBSCRIPTION_EVENT_CHANGE to the gnome.
      So the original event sequence is:
      1. PA_SUBSCRIPTION_EVENT_SERVER | PA_SUBSCRIPTION_EVENT_CHANGE
      2. PA_SUBSCRIPTION_EVENT_CARD | PA_SUBSCRIPTION_EVENT_CHANGE
      
      In gnome-control-center:
      When it receives PA_SUBSCRIPTION_EVENT_SERVER, it will call
      req_update_server_info () to update the panel;
      When it receives PA_SUBSCRIPTION_EVENT_CARD, it will update
      the card information, for example, when the headphone is connected,
      it will call gtk_list_store_append() to append the headphone.
      
      Let's use an example to clarify the correct sequence.
      Assume we plug in headphone. PA will set the default sink to headphone
      from speaker, and hope gnome sound setting "Output Deivce" to highlight to
      "headphone". PA should send PA_SUBSCRIPTION_EVENT_CARD firstly to notify
      gnome-control-center "headphone" is plugged in. And then it sends
      PA_SUBSCRIPTION_EVENT_SERVER to trigger sound setting to highlight
      to "headphone".
      Signed-off-by: Libin Yang's avatarLibin Yang <libin.yang@intel.com>
      2ae94c14
    • Tanu Kaskinen's avatar
      sink, source: Use the global configuration for the avoid_resampling default · 04c554b7
      Tanu Kaskinen authored and Arun Raghavan's avatar Arun Raghavan committed
      Previously avoid_resampling was always false unless the sink or source
      implementation explicitly configured the variable. The null sink doesn't
      explicitly configure it, so it didn't switch the sample rate as
      expected when avoid_resampling was enabled.
      
      This change means that also sinks that don't support rate switching can
      have avoid_resampling set to true, but I think that's fine, because
      pa_sink_reconfigure() doesn't try to do anything if the reconfigure()
      callback isn't set.
      
      Fixes: #923
      04c554b7
    • Taahir Ahmed's avatar
      Add a basic test suite for pa_hashmap · d97075c7
      Taahir Ahmed authored and Tanu Kaskinen's avatar Tanu Kaskinen committed
      I spent a little time working through the implementation of
      pa_hashmap, and wrote a test suite while doing so.  It tests a few
      basic edge cases, like saturating all buckets of the hashtable.
      d97075c7
  15. 21 Jun, 2020 1 commit
  16. 20 Jun, 2020 1 commit
  17. 17 Jun, 2020 9 commits