Hello Vivian,

We (some folks at #meego-arm) would like you to consider an alternative method of choosing default.pa at PulseAudio startup.

You see, we noticed that pulseaudio can take any .pa script file as a parameter and ignore the default: /etc/pulse/default.pa.

Also, as you know, pulseaudio is already started via /usr/bin/start-pulseaudio script.

So, what we are suggesting is that pulseaudio configuration (*.pa) would be selected at /usr/bin/start-pulseaudio in following manner:
...
  CONFIG_SELECT=""
  if [ -e /etc/boardname ]; then
    BOARDNAME=`cat /etc/boardname`
    if [ -e /etc/pulse/default_$BOARDNAME.pa ]; then
      CONFIG_SELECT="-n --file=/etc/pulse/default_$BOARDNAME.pa"
    elif grep -q '[tT]ablet$' /etc/boardname; then
      # This elif is not necessary if given proper *.pa files
      CONFIG_SELECT="-n --file=/etc/pulse/default_tablet.pa"
    fi
  fi

  /usr/bin/pulseaudio --start $CONFIG_SELECT "$@"
...

This would bring 2-3 advantages:
1) This solution would spare us from patching pulseaudio code.
2) Adding a new .pa file would not require any further change to pulseaudio or its packaging. 3) *.pa files could be provided in separate setting packages. For n900 we would like to provide it in pulseaudio-setting-n900.

We will provide you a version for review as soon as possible.

Thank you,
Sami Sirkia


On 03/16/2011 03:54 PM, Vivian Zhang wrote:
Hi,
I have made the following changes to pulseaudio in project devel:multimedia. 
Please review and accept ASAP.

Thank You,
Vivian Zhang

[This message was auto-generated]

---

Request #14886:

   submit:   home:vivian:branches:devel:multimedia/pulseaudio(r9)(cleanup) ->  
devel:multimedia/pulseaudio


Message:
     Add patch for choosing script file based on the platform detecting (BMC 
#6728)

State:   new          2011-03-16T06:54:12 vivian
Comment: None



changes files:
--------------
--- pulseaudio.changes
+++ pulseaudio.changes
@@ -0,0 +1,3 @@
+* Wed Mar 16 2011 vivian zhang<[email protected]>  - 0.9.19
+- Add patch for choosing script file based on the platform detecting (BMC 
#6728)
+

new:
----
   add-boardname-detect.patch
   default_tablet.pa

spec files:
-----------
--- pulseaudio.spec
+++ pulseaudio.spec
@@ -18,10 +18,8 @@
  Source2:    daemon.conf
  Source3:    90-pulse.conf
  Source4:    start-pulseaudio
-#set in a new package pulseaudio-settings-mfld
-#Source5:    default_mfld.pa
-#Source6:    daemon_mfld.conf
-Source7:    mixer-0.9.19-orig.tar.bz2
+Source5:    mixer-0.9.19-orig.tar.bz2
+Source6:    default_tablet.pa
  Source100:  pulseaudio.yaml
  Patch0:     pa-0.9.19-desktop.patch
  Patch1:     pa-0.9.19-svolume-arm.patch
@@ -51,6 +49,7 @@
  Patch25:     
pa-0.9.19-mfld-Correct-wav-file-creation-for-24-32-and-24-bits-samp.patch
  Patch26:     
pa-0.9.19-mfld-Fix-various-bugs-Support-new-option-trace_ports.patch
  Patch27:     fix-9972-auto-route-audio-to-bt-sink.patch
+Patch28:     add-boardname-detect.patch
  Requires:   udev>= 145-3
  Requires:   xcb-util
  Requires(post): /sbin/ldconfig
@@ -173,6 +172,8 @@
  %patch26 -p1
  # fix-9972-auto-route-audio-to-bt-sink.patch
  %patch27 -p1
+# add-boardname-detect.patch
+%patch28 -p1
  #>>  setup
  #<<  setup

@@ -196,6 +197,7 @@
  install -d %{buildroot}/etc/pulse/
  cp -a %{SOURCE1} %{buildroot}/etc/pulse/default.pa
  cp -a %{SOURCE2} %{buildroot}/etc/pulse/daemon.conf
+cp -a %{SOURCE6} %{buildroot}/etc/pulse/default_tablet.pa

  install -d  %{buildroot}/etc/security/limits.d
  cp -a %{SOURCE3} %{buildroot}/etc/security/limits.d
@@ -206,7 +208,7 @@
  install -m 644 src/pulsecore/*.h  
%{buildroot}/usr/include/pulse-modules-headers/pulsecore/

  mv %{buildroot}/usr/share/pulseaudio/alsa-mixer 
%{buildroot}/usr/share/pulseaudio/alsa-mixer-mfld
-tar -xvf %{SOURCE7}
+tar -xvf %{SOURCE5}
  install -d %{buildroot}/usr/share/pulseaudio/alsa-mixer/paths
  install -m 644 alsa-mixer/paths/* 
%{buildroot}/usr/share/pulseaudio/alsa-mixer/paths/
  install -d %{buildroot}/usr/share/pulseaudio/alsa-mixer/profile-sets
@@ -256,6 +258,7 @@
  %config(noreplace) %{_sysconfdir}/pulse/default.pa
  %config(noreplace) %{_sysconfdir}/pulse/system.pa
  %config(noreplace) %{_sysconfdir}/pulse/client.conf
+%config(noreplace) %{_sysconfdir}/pulse/default_tablet.pa
  %exclude %config(noreplace) 
%{_sysconfdir}/xdg/autostart/pulseaudio-kde.desktop
  %exclude %{_bindir}/start-pulseaudio-kde
  %exclude %config(noreplace) 
%{_sysconfdir}/dbus-1/system.d/pulseaudio-system.conf

other changes:
--------------

++++++ add-boardname-detect.patch (new)
--- add-boardname-detect.patch
+++ add-boardname-detect.patch
+diff -Nur pulseaudio-0.9.19/src/daemon/daemon-conf.c 
pulseaudio-0.9.19-new/src/daemon/daemon-conf.c
+--- pulseaudio-0.9.19/src/daemon/daemon-conf.c 2011-03-15 14:47:19.386225794 
+0800
++++ pulseaudio-0.9.19-new/src/daemon/daemon-conf.c     2011-03-16 
16:29:39.253225635 +0800
+@@ -47,6 +47,7 @@
+
+ #define DEFAULT_SCRIPT_FILE PA_DEFAULT_CONFIG_DIR PA_PATH_SEP "default.pa"
+ #define DEFAULT_SCRIPT_FILE_USER PA_PATH_SEP "default.pa"
++#define DEFAULT_SCRIPT_FILE_TABLET PA_DEFAULT_CONFIG_DIR PA_PATH_SEP 
"default_tablet.pa"
+ #define DEFAULT_SYSTEM_SCRIPT_FILE PA_DEFAULT_CONFIG_DIR PA_PATH_SEP 
"system.pa"
+
+ #define DEFAULT_CONFIG_FILE PA_DEFAULT_CONFIG_DIR PA_PATH_SEP "daemon.conf"
+@@ -733,10 +734,14 @@
+
+ const char *pa_daemon_conf_get_default_script_file(pa_daemon_conf *c) {
+     pa_assert(c);
+-
++
+     if (!c->default_script_file) {
+         if (c->system_instance)
+             c->default_script_file = 
pa_find_config_file(DEFAULT_SYSTEM_SCRIPT_FILE, NULL, ENV_SCRIPT_FILE);
++        else if (!strcmp(pa_get_boardname(), "Tablet")) {
++            pa_log_debug("Meego: use default_tablet.pa as the default script 
file");
++            c->default_script_file = 
pa_find_config_file(DEFAULT_SCRIPT_FILE_TABLET, DEFAULT_SCRIPT_FILE_USER, 
ENV_SCRIPT_FILE);
++        }
+         else
+             c->default_script_file = pa_find_config_file(DEFAULT_SCRIPT_FILE, 
DEFAULT_SCRIPT_FILE_USER, ENV_SCRIPT_FILE);
+     }
+@@ -751,6 +756,10 @@
+     if (!c->default_script_file) {
+         if (c->system_instance)
+             f = pa_open_config_file(DEFAULT_SYSTEM_SCRIPT_FILE, NULL, 
ENV_SCRIPT_FILE,&c->default_script_file);
++        else if (!strcmp(pa_get_boardname(), "Tablet")) {
++            pa_log_debug("Meego: open default_tablet.pa as the default script 
file");
++            f = pa_open_config_file(DEFAULT_SCRIPT_FILE_TABLET, 
DEFAULT_SCRIPT_FILE_USER, ENV_SCRIPT_FILE,&c->default_script_file);
++        }
+         else
+             f = pa_open_config_file(DEFAULT_SCRIPT_FILE, DEFAULT_SCRIPT_FILE_USER, 
ENV_SCRIPT_FILE,&c->default_script_file);
+     } else
+diff -Nur pulseaudio-0.9.19/src/pulsecore/core-util.c 
pulseaudio-0.9.19-new/src/pulsecore/core-util.c
+--- pulseaudio-0.9.19/src/pulsecore/core-util.c        2011-03-15 
14:47:19.405225713 +0800
++++ pulseaudio-0.9.19-new/src/pulsecore/core-util.c    2011-03-16 
15:48:51.848225641 +0800
+@@ -3095,3 +3095,18 @@
+
+     pa_xfree(strv);
+ }
++
++const char *pa_get_boardname(void) {
++    FILE *f;
++    // read and get boardname
++    if ((f = pa_fopen_cloexec("/etc/boardname", "r"))) {
++        char ln[30] = "";
++        fgets(ln, sizeof(ln)-1, f);
++        fclose(f);
++        pa_strip_nl(ln);
++        pa_log_debug("Meego: read boardname %s", ln);
++        if (pa_endswith(ln, "tablet"))
++            return "Tablet";
++    }
++    return "None";
++}
+diff -Nur pulseaudio-0.9.19/src/pulsecore/core-util.h 
pulseaudio-0.9.19-new/src/pulsecore/core-util.h
+--- pulseaudio-0.9.19/src/pulsecore/core-util.h        2011-03-15 
14:47:19.398225713 +0800
++++ pulseaudio-0.9.19-new/src/pulsecore/core-util.h    2011-03-16 
14:19:52.355225598 +0800
+@@ -270,5 +270,6 @@
+ FILE* pa_fopen_cloexec(const char *path, const char *mode);
+
+ void pa_nullify_stdfds(void);
++const char* pa_get_boardname(void);
+
+ #endif

++++++ default_tablet.pa (new)
--- default_tablet.pa
+++ default_tablet.pa
+#!/usr/bin/pulseaudio -nF
+.fail
+
+### Automatically restore the volume of streams and devices
+load-module module-device-restore
+#load-module module-stream-restore
+load-module module-card-restore
+
+load-module module-native-protocol-unix
+
+### Automatically suspend sinks/sources that become idle for too long
+load-module module-suspend-on-idle
+
+### Automatically move streams to the default sink if the sink they are
+### connected to dies, similar for sources
+load-module module-rescue-streams
+
+### Publish connection data in the X11 root window
+.ifexists module-x11-publish.so
+.nofail
+load-module module-x11-publish
+.fail
+.endif
+
+load-module module-udev-detect tsched=0
+load-module module-bluetooth-discover

++++++ pulseaudio.yaml
--- pulseaudio.yaml
+++ pulseaudio.yaml
@@ -13,6 +13,7 @@
      - 90-pulse.conf
      - start-pulseaudio
      - mixer-0.9.19-orig.tar.bz2
+    - default_tablet.pa
  Patches:
      - pa-0.9.19-desktop.patch
      - pa-0.9.19-svolume-arm.patch
@@ -42,6 +43,7 @@
      - 
pa-0.9.19-mfld-Correct-wav-file-creation-for-24-32-and-24-bits-samp.patch
      - pa-0.9.19-mfld-Fix-various-bugs-Support-new-option-trace_ports.patch
      - fix-9972-auto-route-audio-to-bt-sink.patch
+    - add-boardname-detect.patch
  Description: |
      PulseAudio is a sound server for Linux and other Unix like operating
      systems. It is intended to be an improved drop-in replacement for the

_______________________________________________
MeeGo-commits mailing list
[email protected]
http://lists.meego.com/listinfo/meego-commits


_______________________________________________
MeeGo-packaging mailing list
[email protected]
http://lists.meego.com/listinfo/meego-packaging

Reply via email to