summaryrefslogtreecommitdiff
path: root/mainl.html
diff options
context:
space:
mode:
Diffstat (limited to 'mainl.html')
-rw-r--r--mainl.html39
1 files changed, 20 insertions, 19 deletions
diff --git a/mainl.html b/mainl.html
index 2a70a6e..f11e1f6 100644
--- a/mainl.html
+++ b/mainl.html
@@ -3,22 +3,24 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
<title>AudioManager: Mainloop concept</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
@@ -28,9 +30,9 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
- <td style="padding-left: 0.5em;">
+ <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">AudioManager
- &#160;<span id="projectnumber">7.5.11</span>
+ &#160;<span id="projectnumber">7.6.6</span>
</div>
<div id="projectbrief">Native Application Runtime Environment</div>
</td>
@@ -39,7 +41,7 @@
</table>
</div>
<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
+<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
@@ -47,6 +49,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
@@ -88,7 +91,7 @@ $(document).ready(function(){initNavTree('mainl.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -104,24 +107,22 @@ $(document).ready(function(){initNavTree('mainl.html','');});
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="mconcept"></a>
Mainloop</h1>
-<p>The AudioManager comes with a build in mainloop that can be utilized by the plug-ins to serve their needs of communication and thread-safe calling. The mainloop, implemented in CAmSocketHandler works like this:<br/>
-</p>
-<div class="image">
+<p>The AudioManager comes with a build in mainloop that can be utilized by the plug-ins to serve their needs of communication and thread-safe calling. The mainloop, implemented in CAmSocketHandler works like this:<br />
+</p><div class="image">
<img src="Mainloop.png" alt="Mainloop.png"/>
</div>
<h1><a class="anchor" id="sec"></a>
Using the Mainloop</h1>
-<p>Adding and removing callbacks and timers work via the <a class="el" href="classam_1_1CAmSocketHandler.html" title="The am::CAmSocketHandler implements a mainloop for the AudioManager. ">am::CAmSocketHandler</a>.<br/>
-To add a callback, use <a class="el" href="classam_1_1CAmSocketHandler.html#ace2198a9522679b4a680c43755bb9b44" title="Adds a filedescriptor to the polling loop. ">am::CAmSocketHandler::addFDPoll</a>, to remove one, use <a class="el" href="classam_1_1CAmSocketHandler.html#a57c40a25d4bff6f88ed4ce5e597a5712" title="removes a filedescriptor from the poll loop ">am::CAmSocketHandler::removeFDPoll</a>.<br/>
-To add a timer callback, use <a class="el" href="classam_1_1CAmSocketHandler.html#a74acb55776de9391f5b6ce6002c0e7b4" title="adds a timer to the list of timers. ">am::CAmSocketHandler::addTimer</a>, use <a class="el" href="classam_1_1CAmSocketHandler.html#a7627416d3b2fd93baa84599b52691bec" title="removes a timer from the list of timers ">am::CAmSocketHandler::removeTimer</a> and <a class="el" href="classam_1_1CAmSocketHandler.html#a34f5a3d01d54f25eae224d5ca84f5a2a" title="restarts a timer with the original value ">am::CAmSocketHandler::restartTimer</a> and <a class="el" href="classam_1_1CAmSocketHandler.html#af3b4d566129e9d9dc9dae13d5a51afdf" title="stops a timer ">am::CAmSocketHandler::stopTimer</a>.<br/>
+<p>Adding and removing callbacks and timers work via the <a class="el" href="classam_1_1CAmSocketHandler.html" title="The am::CAmSocketHandler implements a mainloop for the AudioManager. ">am::CAmSocketHandler</a>.<br />
+To add a callback, use <a class="el" href="classam_1_1CAmSocketHandler.html#a8ee49d4fbc44291bc6b99fa49fc0350a" title="Adds a filedescriptor to the polling loop. ">am::CAmSocketHandler::addFDPoll</a>, to remove one, use <a class="el" href="classam_1_1CAmSocketHandler.html#a57c40a25d4bff6f88ed4ce5e597a5712" title="removes a filedescriptor from the poll loop ">am::CAmSocketHandler::removeFDPoll</a>.<br />
+To add a timer callback, use <a class="el" href="classam_1_1CAmSocketHandler.html#afe4e4806d91f9a4b3b1eb8a278f64cc9">am::CAmSocketHandler::addTimer</a>, use <a class="el" href="classam_1_1CAmSocketHandler.html#a7627416d3b2fd93baa84599b52691bec" title="removes a timer from the list of timers ">am::CAmSocketHandler::removeTimer</a> and <a class="el" href="classam_1_1CAmSocketHandler.html#a34f5a3d01d54f25eae224d5ca84f5a2a" title="restarts a timer with the original value ">am::CAmSocketHandler::restartTimer</a> and <a class="el" href="classam_1_1CAmSocketHandler.html#af3b4d566129e9d9dc9dae13d5a51afdf" title="stops a timer ">am::CAmSocketHandler::stopTimer</a>.<br />
The mainloop is started via <a class="el" href="classam_1_1CAmSocketHandler.html#ac4d61b623aedd44ea1fd075aee7851b1" title="start the block listening for filedescriptors. ">am::CAmSocketHandler::start_listenting</a> and stopped via <a class="el" href="classam_1_1CAmSocketHandler.html#ade03cab4d0ee59386c13688949ec942a" title="exits the loop ">am::CAmSocketHandler::stop_listening</a>. Example code can be found in <a class="el" href="classam_1_1CAmDbusWrapper.html" title="This wraps dbus and provides everything needed to anyone who wants to use dbus (including plugins)...">am::CAmDbusWrapper</a>.</p>
<h1><a class="anchor" id="util"></a>
Utilizing The Mainloop as Threadsafe Call Method</h1>
-<p>The AudioManager itself is singlethreaded, so any calls from other threads inside the plugins directly to the interfaces is forbidden, the behavior is undefined. The reason for this is that communication and routing plugins are often only communication interfaces that can are ideally used with the <a class="el" href="classam_1_1CAmSocketHandler.html" title="The am::CAmSocketHandler implements a mainloop for the AudioManager. ">am::CAmSocketHandler</a>.<br/>
-<a class="el" href="classam_1_1CAmSerializer.html" title="magic class that does the serialization of functions calls The constructor must be called within the ...">am::CAmSerializer</a> creates an intermediate object on the heap holding all informations of the function to be called and a pointer to the object to be called. After that, the class writes to a pipe witch triggers the mainloop to call the callback <a class="el" href="classam_1_1CAmSerializer.html#a56fbe8fa7b4e43825b2cbff44b9b13fc" title="receiver callback for sockethandling, for more, see CAmSocketHandler ">am::CAmSerializer::receiverCallback</a> from the maincontext. The callback uses the intermediate object to do the actual call. <br/>
-</p>
-<dl class="section warning"><dt>Warning</dt><dd>asynchronous calls can be used within the main thread, but synchronous not -&gt; the call would block forever !<br/>
-For each thread that needs to use synchronous calls independent an own instance of <a class="el" href="classam_1_1CAmSerializer.html" title="magic class that does the serialization of functions calls The constructor must be called within the ...">am::CAmSerializer</a> needs to be used. </dd></dl>
+<p>The AudioManager itself is singlethreaded, so any calls from other threads inside the plugins directly to the interfaces is forbidden, the behavior is undefined. The reason for this is that communication and routing plugins are often only communication interfaces that can are ideally used with the <a class="el" href="classam_1_1CAmSocketHandler.html" title="The am::CAmSocketHandler implements a mainloop for the AudioManager. ">am::CAmSocketHandler</a>.<br />
+am::CAmSerializer creates an intermediate object on the heap holding all informations of the function to be called and a pointer to the object to be called. After that, the class writes to a pipe witch triggers the mainloop to call the callback am::CAmSerializer::receiverCallback from the maincontext. The callback uses the intermediate object to do the actual call. <br />
+</p><dl class="section warning"><dt>Warning</dt><dd>asynchronous calls can be used within the main thread, but synchronous not -&gt; the call would block forever !<br />
+For each thread that needs to use synchronous calls independent an own instance of am::CAmSerializer needs to be used. </dd></dl>
<h2><a class="anchor" id="async"></a>
Asynchronous calls</h2>
<div class="image">
@@ -137,9 +138,9 @@ Synchronous calls</h2>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Fri Sep 30 2016 14:27:22 for AudioManager by
+ <li class="footer">Generated on Fri Feb 9 2018 14:50:30 for AudioManager by
<a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>