aboutsummaryrefslogtreecommitdiff
path: root/webrtc/voice_engine/channel.cc
diff options
context:
space:
mode:
authortommi@webrtc.org <tommi@webrtc.org>2015-02-27 13:36:34 +0000
committertommi@webrtc.org <tommi@webrtc.org>2015-02-27 13:37:25 +0000
commit3985f0151aff9b91418733795a98140079c19a73 (patch)
treee5929d29247acf79c4eec96f8cc789a729eeef69 /webrtc/voice_engine/channel.cc
parentf296859c83c74c77e6fef7e4888b94c62661e5cf (diff)
downloadwebrtc-3985f0151aff9b91418733795a98140079c19a73.tar.gz
ProcessThread improvements.
* Added a way to notify a Module that it's been attached to a ProcessThread. The benefit of this is to give the module a way to wake up the thread when it needs work to happen on the worker thread, immediately. Today, module instances are typically registered with a process thread outside the control of the modules themselves. I.e. they typically don't know about the process thread they're attached to. * Improve ProcessThread's WakeUp algorithm to not call TimeUntilNextProcess when a WakeUp call is requested. This is an optimization for the above case which avoids the module having to acquire a lock or do an interlocked operation before calling WakeUp(), which would ensure the module's TimeUntilNextProcess() implementation would return 0. BUG=2822 R=stefan@webrtc.org Review URL: https://webrtc-codereview.appspot.com/39239004 Cr-Commit-Position: refs/heads/master@{#8527} git-svn-id: http://webrtc.googlecode.com/svn/trunk@8527 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'webrtc/voice_engine/channel.cc')
-rw-r--r--webrtc/voice_engine/channel.cc20
1 files changed, 4 insertions, 16 deletions
diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc
index 9ad2cf8c37..927440a88e 100644
--- a/webrtc/voice_engine/channel.cc
+++ b/webrtc/voice_engine/channel.cc
@@ -914,12 +914,8 @@ Channel::~Channel()
" (Audio coding module)");
}
// De-register modules in process thread
- if (_moduleProcessThreadPtr->DeRegisterModule(_rtpRtcpModule.get()) == -1)
- {
- WEBRTC_TRACE(kTraceInfo, kTraceVoice,
- VoEId(_instanceId,_channelId),
- "~Channel() failed to deregister RTP/RTCP module");
- }
+ _moduleProcessThreadPtr->DeRegisterModule(_rtpRtcpModule.get());
+
// End of modules shutdown
// Delete other objects
@@ -955,16 +951,8 @@ Channel::Init()
// --- Add modules to process thread (for periodic schedulation)
- const bool processThreadFail =
- ((_moduleProcessThreadPtr->RegisterModule(_rtpRtcpModule.get()) != 0) ||
- false);
- if (processThreadFail)
- {
- _engineStatisticsPtr->SetLastError(
- VE_CANNOT_INIT_CHANNEL, kTraceError,
- "Channel::Init() modules not registered");
- return -1;
- }
+ _moduleProcessThreadPtr->RegisterModule(_rtpRtcpModule.get());
+
// --- ACM initialization
if ((audio_coding_->InitializeReceiver() == -1) ||