diff options
author | tommi@webrtc.org <tommi@webrtc.org> | 2015-02-27 13:36:34 +0000 |
---|---|---|
committer | tommi@webrtc.org <tommi@webrtc.org> | 2015-02-27 13:37:25 +0000 |
commit | 3985f0151aff9b91418733795a98140079c19a73 (patch) | |
tree | e5929d29247acf79c4eec96f8cc789a729eeef69 /webrtc/voice_engine/channel.cc | |
parent | f296859c83c74c77e6fef7e4888b94c62661e5cf (diff) | |
download | webrtc-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.cc | 20 |
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) || |