<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[135601] trunk/dports/audio/pulseaudio</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="https://trac.macports.org/changeset/135601">135601</a></dd>
<dt>Author</dt> <dd>ionic@macports.org</dd>
<dt>Date</dt> <dd>2015-04-27 14:00:35 -0700 (Mon, 27 Apr 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>pulseaudio: add record and playback module arguments for CoreAudio modules.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkdportsaudiopulseaudioPortfile">trunk/dports/audio/pulseaudio/Portfile</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkdportsaudiopulseaudiofilespatchsrc_modules_macosx_module_coreaudio_detect_devicecaddrecordplaybackmodargdiff">trunk/dports/audio/pulseaudio/files/patch-src_modules_macosx_module_coreaudio_detect_device.c-add-record-playback-modarg.diff</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkdportsaudiopulseaudioPortfile"></a>
<div class="modfile"><h4>Modified: trunk/dports/audio/pulseaudio/Portfile (135600 => 135601)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/audio/pulseaudio/Portfile        2015-04-27 20:47:54 UTC (rev 135600)
+++ trunk/dports/audio/pulseaudio/Portfile        2015-04-27 21:00:35 UTC (rev 135601)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx"> 
</span><span class="cx"> name                pulseaudio
</span><span class="cx"> version             6.0
</span><del>-revision            3
</del><ins>+revision            4
</ins><span class="cx"> license             LGPL-2.1
</span><span class="cx"> categories          audio
</span><span class="cx"> maintainers         ionic openmaintainer
</span><span class="lines">@@ -62,8 +62,8 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> # DO NOT USE! Maintainer-only helper. DO NOT USE!
</span><del>-#configure.cflags-append -g3 -ggdb3 -gdwarf-4 -O0
-#configure.cxxflags-append -g3 -ggdb3 -gdwarf-4 -O0
</del><ins>+configure.cflags-append -g3 -ggdb3 -gdwarf-4 -O0
+configure.cxxflags-append -g3 -ggdb3 -gdwarf-4 -O0
</ins><span class="cx"> 
</span><span class="cx"> # The last three patches make PulseAudio startup correctly.
</span><span class="cx"> # Will hopefully be merged upstream soon.
</span><span class="lines">@@ -78,7 +78,8 @@
</span><span class="cx">                     patch-src_daemon_default.pa.in-skip-consolekit-and-systemdlogin.diff \
</span><span class="cx">                     patch-src_modules_macosx_module_coreaudio_device.c-fix-device-names.diff \
</span><span class="cx">                     patch-src_modules_macosx_module_coreaudio_device.c-fix-channels.diff \
</span><del>-                    patch-src_modules_macosx_module_coreaudio_device.c-respect-PA_NAME_MAX.diff
</del><ins>+                    patch-src_modules_macosx_module_coreaudio_device.c-respect-PA_NAME_MAX.diff \
+                    patch-src_modules_macosx_module_coreaudio_detect_device.c-add-record-playback-modarg.diff
</ins><span class="cx"> 
</span><span class="cx"> # reconfigure using upstream autogen.sh for intltool 0.51 compatibility
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkdportsaudiopulseaudiofilespatchsrc_modules_macosx_module_coreaudio_detect_devicecaddrecordplaybackmodargdiff"></a>
<div class="addfile"><h4>Added: trunk/dports/audio/pulseaudio/files/patch-src_modules_macosx_module_coreaudio_detect_device.c-add-record-playback-modarg.diff (0 => 135601)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/audio/pulseaudio/files/patch-src_modules_macosx_module_coreaudio_detect_device.c-add-record-playback-modarg.diff                                (rev 0)
+++ trunk/dports/audio/pulseaudio/files/patch-src_modules_macosx_module_coreaudio_detect_device.c-add-record-playback-modarg.diff        2015-04-27 21:00:35 UTC (rev 135601)
</span><span class="lines">@@ -0,0 +1,123 @@
</span><ins>+--- src/modules/macosx/module-coreaudio-detect.c.old        2015-04-27 21:10:17.000000000 +0200
++++ src/modules/macosx/module-coreaudio-detect.c        2015-04-27 22:09:07.000000000 +0200
+@@ -39,10 +39,14 @@ PA_MODULE_AUTHOR(&quot;Daniel Mack&quot;);
+ PA_MODULE_DESCRIPTION(&quot;CoreAudio device detection&quot;);
+ PA_MODULE_VERSION(PACKAGE_VERSION);
+ PA_MODULE_LOAD_ONCE(true);
+-PA_MODULE_USAGE(&quot;ioproc_frames=&lt;passed on to module-coreaudio-device&gt; &quot;);
++PA_MODULE_USAGE(&quot;ioproc_frames=&lt;passed on to module-coreaudio-device&gt; &quot;
++                &quot;record=&lt;enable source?&gt; &quot;
++                &quot;playback=&lt;enable sink?&gt; &quot;);

+ static const char* const valid_modargs[] = {
+     &quot;ioproc_frames&quot;,
++    &quot;record&quot;,
++    &quot;playback&quot;,
+     NULL
+ };

+@@ -58,6 +62,8 @@ struct userdata {
+     int detect_fds[2];
+     pa_io_event *detect_io;
+     unsigned int ioproc_frames;
++    bool record;
++    bool playback;
+     PA_LLIST_HEAD(ca_device, devices);
+ };

+@@ -87,9 +93,9 @@ static int ca_device_added(struct pa_mod
+         return 0;

+     if (u-&gt;ioproc_frames)
+-        args = pa_sprintf_malloc(&quot;object_id=%d ioproc_frames=%d&quot;, (int) id, u-&gt;ioproc_frames);
++        args = pa_sprintf_malloc(&quot;object_id=%d ioproc_frames=%d record=%d playback=%d&quot;, (int) id, u-&gt;ioproc_frames, (int) u-&gt;record, (int) u-&gt;playback);
+     else
+-        args = pa_sprintf_malloc(&quot;object_id=%d&quot;, (int) id);
++        args = pa_sprintf_malloc(&quot;object_id=%d record=%d playback=%d&quot;, (int) id, (int) u-&gt;record, (int) u-&gt;playback);

+     pa_log_debug(&quot;Loading %s with arguments '%s'&quot;, DEVICE_MODULE_NAME, args);
+     mod = pa_module_load(m-&gt;core, DEVICE_MODULE_NAME, args);
+@@ -212,6 +218,7 @@ int pa__init(pa_module *m) {
+     pa_modargs *ma;

+     pa_assert(m);
++    pa_assert(m-&gt;core);

+     m-&gt;userdata = u;

+@@ -220,6 +227,16 @@ int pa__init(pa_module *m) {
+         goto fail;
+     }

++    if (pa_modargs_get_value_boolean(ma, &quot;record&quot;, &amp;u-&gt;record) &lt; 0 || pa_modargs_get_value_boolean(ma, &quot;playback&quot;, &amp;u-&gt;playback) &lt; 0) {
++        pa_log(&quot;record= and playback= expect boolean argument.&quot;);
++        goto fail;
++    }
++
++    if (!u-&gt;playback &amp;&amp; !u-&gt;record) {
++        pa_log(&quot;neither playback nor record enabled for device.&quot;);
++        goto fail;
++    }
++
+     pa_modargs_get_value_u32(ma, &quot;ioproc_frames&quot;, &amp;u-&gt;ioproc_frames);

+     property_address.mSelector = kAudioHardwarePropertyDevices;
+--- src/modules/macosx/module-coreaudio-device.c.old        2015-04-27 21:10:17.000000000 +0200
++++ src/modules/macosx/module-coreaudio-device.c        2015-04-27 22:04:21.000000000 +0200
+@@ -58,11 +58,15 @@ PA_MODULE_DESCRIPTION(&quot;CoreAudio device&quot;
+ PA_MODULE_VERSION(PACKAGE_VERSION);
+ PA_MODULE_LOAD_ONCE(false);
+ PA_MODULE_USAGE(&quot;object_id=&lt;the CoreAudio device id&gt; &quot;
+-                &quot;ioproc_frames=&lt;audio frames per IOProc call&gt; &quot;);
++                &quot;ioproc_frames=&lt;audio frames per IOProc call&gt; &quot;
++                &quot;record=&lt;enable source?&gt; &quot;
++                &quot;playback=&lt;enable sink?&gt; &quot;);

+ static const char* const valid_modargs[] = {
+     &quot;object_id&quot;,
+     &quot;ioproc_frames&quot;,
++    &quot;record&quot;,
++    &quot;playback&quot;,
+     NULL
+ };

+@@ -772,6 +776,7 @@ int pa__init(pa_module *m) {
+     UInt32 size, frames;
+     struct userdata *u = NULL;
+     pa_modargs *ma = NULL;
++    bool record = true, playback = true;
+     char tmp[64];
+     pa_card_new_data card_new_data;
+     pa_card_profile *p;
+@@ -786,6 +791,16 @@ int pa__init(pa_module *m) {
+         goto fail;
+     }

++    if (pa_modargs_get_value_boolean(ma, &quot;record&quot;, &amp;record) &lt; 0 || pa_modargs_get_value_boolean(ma, &quot;playback&quot;, &amp;playback) &lt; 0) {
++        pa_log(&quot;record= and playback= expect boolean argument.&quot;);
++        goto fail;
++    }
++
++    if (!playback &amp;&amp; !record) {
++        pa_log(&quot;neither playback nor record enabled for device.&quot;);
++        goto fail;
++    }
++
+     u = pa_xnew0(struct userdata, 1);
+     u-&gt;module = m;
+     m-&gt;userdata = u;
+@@ -845,10 +860,12 @@ int pa__init(pa_module *m) {
+     PA_LLIST_HEAD_INIT(coreaudio_sink, u-&gt;sinks);

+     /* create sinks */
+-    ca_device_create_streams(m, false);
++    if (playback)
++        ca_device_create_streams(m, false);

+     /* create sources */
+-    ca_device_create_streams(m, true);
++    if (record)
++        ca_device_create_streams(m, true);

+     /* create the message thread */
+     if (!(u-&gt;thread = pa_thread_new(u-&gt;device_name, thread_func, u))) {
</ins></span></pre>
</div>
</div>

</body>
</html>