diff --git a/webrtc/modules/audio_device/android/audio_record_jni.cc b/webrtc/modules/audio_device/android/audio_record_jni.cc index 068678362c..6aa949fc75 100644 --- a/webrtc/modules/audio_device/android/audio_record_jni.cc +++ b/webrtc/modules/audio_device/android/audio_record_jni.cc @@ -227,7 +227,6 @@ int32_t AudioRecordJni::Terminate() { ThreadWrapper* tmpThread = _ptrThreadRec; _ptrThreadRec = NULL; _critSect.Leave(); - tmpThread->SetNotAlive(); // Release again, we might have returned to waiting state _timeEventRec.Set(); if (tmpThread->Stop()) diff --git a/webrtc/modules/audio_device/android/audio_track_jni.cc b/webrtc/modules/audio_device/android/audio_track_jni.cc index 8b6a52dbe5..d5c4df840e 100644 --- a/webrtc/modules/audio_device/android/audio_track_jni.cc +++ b/webrtc/modules/audio_device/android/audio_track_jni.cc @@ -221,7 +221,6 @@ int32_t AudioTrackJni::Terminate() { ThreadWrapper* tmpThread = _ptrThreadPlay; _ptrThreadPlay = NULL; _critSect.Leave(); - tmpThread->SetNotAlive(); _timeEventPlay.Set(); if (tmpThread->Stop()) { diff --git a/webrtc/modules/audio_device/linux/audio_device_alsa_linux.cc b/webrtc/modules/audio_device/linux/audio_device_alsa_linux.cc index 67a845c845..065adcfa71 100644 --- a/webrtc/modules/audio_device/linux/audio_device_alsa_linux.cc +++ b/webrtc/modules/audio_device/linux/audio_device_alsa_linux.cc @@ -218,8 +218,6 @@ int32_t AudioDeviceLinuxALSA::Terminate() _ptrThreadRec = NULL; _critSect.Leave(); - tmpThread->SetNotAlive(); - if (tmpThread->Stop()) { delete tmpThread; @@ -240,8 +238,6 @@ int32_t AudioDeviceLinuxALSA::Terminate() _ptrThreadPlay = NULL; _critSect.Leave(); - tmpThread->SetNotAlive(); - if (tmpThread->Stop()) { delete tmpThread; diff --git a/webrtc/modules/audio_device/linux/audio_device_pulse_linux.cc b/webrtc/modules/audio_device/linux/audio_device_pulse_linux.cc index 00d4afed89..368fcac1a7 100644 --- a/webrtc/modules/audio_device/linux/audio_device_pulse_linux.cc +++ b/webrtc/modules/audio_device/linux/audio_device_pulse_linux.cc @@ -280,7 +280,6 @@ int32_t AudioDeviceLinuxPulse::Terminate() _ptrThreadRec = NULL; UnLock(); - tmpThread->SetNotAlive(); _timeEventRec.Set(); if (tmpThread->Stop()) { @@ -301,7 +300,6 @@ int32_t AudioDeviceLinuxPulse::Terminate() _ptrThreadPlay = NULL; _critSect.Leave(); - tmpThread->SetNotAlive(); _timeEventPlay.Set(); if (tmpThread->Stop()) { diff --git a/webrtc/modules/audio_device/win/audio_device_wave_win.cc b/webrtc/modules/audio_device/win/audio_device_wave_win.cc index f47f080df6..8fcb43f105 100644 --- a/webrtc/modules/audio_device/win/audio_device_wave_win.cc +++ b/webrtc/modules/audio_device/win/audio_device_wave_win.cc @@ -330,7 +330,6 @@ int32_t AudioDeviceWindowsWave::Terminate() _ptrThread = NULL; _critSect.Leave(); - tmpThread->SetNotAlive(); _timeEvent.Set(); if (tmpThread->Stop()) diff --git a/webrtc/modules/rtp_rtcp/test/BWEStandAlone/MatlabPlot.cc b/webrtc/modules/rtp_rtcp/test/BWEStandAlone/MatlabPlot.cc index 5fa681792d..77eb6a13a8 100644 --- a/webrtc/modules/rtp_rtcp/test/BWEStandAlone/MatlabPlot.cc +++ b/webrtc/modules/rtp_rtcp/test/BWEStandAlone/MatlabPlot.cc @@ -918,7 +918,6 @@ MatlabEngine::~MatlabEngine() if (_plotThread) { - _plotThread->SetNotAlive(); _running = false; _eventPtr->Set(); diff --git a/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestLoadGenerator.cc b/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestLoadGenerator.cc index 6b322f7c64..b22f64e520 100644 --- a/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestLoadGenerator.cc +++ b/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestLoadGenerator.cc @@ -100,7 +100,6 @@ int32_t TestLoadGenerator::Stop () if (_genThread) { - _genThread->SetNotAlive(); _running = false; _eventPtr->Set(); diff --git a/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestSenderReceiver.cc b/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestSenderReceiver.cc index 50c1981719..bf84e3527a 100644 --- a/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestSenderReceiver.cc +++ b/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestSenderReceiver.cc @@ -199,7 +199,6 @@ int32_t TestSenderReceiver::Stop () if (_procThread) { - _procThread->SetNotAlive(); _running = false; _eventPtr->Set(); diff --git a/webrtc/modules/utility/source/file_recorder_impl.cc b/webrtc/modules/utility/source/file_recorder_impl.cc index e857afeeec..11f70f6e20 100644 --- a/webrtc/modules/utility/source/file_recorder_impl.cc +++ b/webrtc/modules/utility/source/file_recorder_impl.cc @@ -457,8 +457,6 @@ bool AviRecorder::StopThread() if(_thread) { - _thread->SetNotAlive(); - ThreadWrapper* thread = _thread; _thread = NULL; diff --git a/webrtc/modules/utility/source/process_thread_impl.cc b/webrtc/modules/utility/source/process_thread_impl.cc index 90f107c580..e2e9542c75 100644 --- a/webrtc/modules/utility/source/process_thread_impl.cc +++ b/webrtc/modules/utility/source/process_thread_impl.cc @@ -65,8 +65,6 @@ int32_t ProcessThreadImpl::Stop() _critSectModules->Enter(); if(_thread) { - _thread->SetNotAlive(); - ThreadWrapper* thread = _thread; _thread = NULL; diff --git a/webrtc/modules/video_capture/linux/video_capture_linux.cc b/webrtc/modules/video_capture/linux/video_capture_linux.cc index 36b1207e66..9e7a8f10a4 100644 --- a/webrtc/modules/video_capture/linux/video_capture_linux.cc +++ b/webrtc/modules/video_capture/linux/video_capture_linux.cc @@ -47,17 +47,17 @@ VideoCaptureModule* VideoCaptureImpl::Create(const int32_t id, } VideoCaptureModuleV4L2::VideoCaptureModuleV4L2(const int32_t id) - : VideoCaptureImpl(id), + : VideoCaptureImpl(id), _captureThread(NULL), _captureCritSect(CriticalSectionWrapper::CreateCriticalSection()), - _deviceId(-1), + _deviceId(-1), _deviceFd(-1), _buffersAllocatedByDevice(-1), - _currentWidth(-1), + _currentWidth(-1), _currentHeight(-1), - _currentFrameRate(-1), + _currentFrameRate(-1), _captureStarted(false), - _captureVideoType(kVideoI420), + _captureVideoType(kVideoI420), _pool(NULL) { } @@ -306,7 +306,6 @@ int32_t VideoCaptureModuleV4L2::StopCapture() { if (_captureThread) { // Make sure the capture thread stop stop using the critsect. - _captureThread->SetNotAlive(); if (_captureThread->Stop()) { delete _captureThread; _captureThread = NULL; diff --git a/webrtc/modules/video_render/android/video_render_android_impl.cc b/webrtc/modules/video_render/android/video_render_android_impl.cc index 485df8a426..35f1f17844 100644 --- a/webrtc/modules/video_render/android/video_render_android_impl.cc +++ b/webrtc/modules/video_render/android/video_render_android_impl.cc @@ -178,7 +178,6 @@ int32_t VideoRenderAndroid::StopRender() { _javaShutdownEvent.Wait(3000); CriticalSectionScoped cs(&_critSect); - _javaRenderThread->SetNotAlive(); if (_javaRenderThread->Stop()) { delete _javaRenderThread; _javaRenderThread = NULL; diff --git a/webrtc/modules/video_render/incoming_video_stream.cc b/webrtc/modules/video_render/incoming_video_stream.cc index 1770569e59..4a95622bc6 100644 --- a/webrtc/modules/video_render/incoming_video_stream.cc +++ b/webrtc/modules/video_render/incoming_video_stream.cc @@ -250,7 +250,6 @@ int32_t IncomingVideoStream::Stop() { if (incoming_render_thread_) { ThreadWrapper* thread = incoming_render_thread_; incoming_render_thread_ = NULL; - thread->SetNotAlive(); #ifndef WIN32_ deliver_buffer_event_.StopTimer(); #endif diff --git a/webrtc/modules/video_render/ios/video_render_ios_gles20.mm b/webrtc/modules/video_render/ios/video_render_ios_gles20.mm index f97ababdbe..2e48c4f56e 100644 --- a/webrtc/modules/video_render/ios/video_render_ios_gles20.mm +++ b/webrtc/modules/video_render/ios/video_render_ios_gles20.mm @@ -46,7 +46,6 @@ VideoRenderIosGles20::~VideoRenderIosGles20() { screen_update_thread_ = NULL; if (thread_wrapper) { - thread_wrapper->SetNotAlive(); screen_update_event_->Set(); screen_update_event_->StopTimer(); diff --git a/webrtc/modules/video_render/mac/video_render_agl.cc b/webrtc/modules/video_render/mac/video_render_agl.cc index 5b87794503..7a1dbed920 100644 --- a/webrtc/modules/video_render/mac/video_render_agl.cc +++ b/webrtc/modules/video_render/mac/video_render_agl.cc @@ -685,7 +685,6 @@ VideoRenderAGL::~VideoRenderAGL() if (tmpPtr) { - tmpPtr->SetNotAlive(); _screenUpdateEvent->Set(); _screenUpdateEvent->StopTimer(); @@ -868,7 +867,6 @@ int VideoRenderAGL::StopThread() if (tmpPtr) { - tmpPtr->SetNotAlive(); _screenUpdateEvent->Set(); if (tmpPtr->Stop()) { diff --git a/webrtc/modules/video_render/mac/video_render_nsopengl.mm b/webrtc/modules/video_render/mac/video_render_nsopengl.mm index a4a90a39c5..fa2210d13c 100644 --- a/webrtc/modules/video_render/mac/video_render_nsopengl.mm +++ b/webrtc/modules/video_render/mac/video_render_nsopengl.mm @@ -664,7 +664,6 @@ VideoRenderNSOpenGL::~VideoRenderNSOpenGL() if (tmpPtr) { - tmpPtr->SetNotAlive(); _screenUpdateEvent->Set(); _screenUpdateEvent->StopTimer(); @@ -873,7 +872,6 @@ int VideoRenderNSOpenGL::StopThread() if (tmpPtr) { - tmpPtr->SetNotAlive(); _screenUpdateEvent->Set(); if (tmpPtr->Stop()) { diff --git a/webrtc/modules/video_render/windows/video_render_direct3d9.cc b/webrtc/modules/video_render/windows/video_render_direct3d9.cc index ad485de477..1d0ca56f27 100644 --- a/webrtc/modules/video_render/windows/video_render_direct3d9.cc +++ b/webrtc/modules/video_render/windows/video_render_direct3d9.cc @@ -312,7 +312,6 @@ VideoRenderDirect3D9::~VideoRenderDirect3D9() _screenUpdateThread = NULL; if (tmpPtr) { - tmpPtr->SetNotAlive(); _screenUpdateEvent->Set(); _screenUpdateEvent->StopTimer(); @@ -515,7 +514,7 @@ int VideoRenderDirect3D9::InitDevice() { 1.0f, -1.0f, 0.0f, 0xffffffff, 1, 1 }, { 1.0f, 1.0f, 0.0f, 0xffffffff, 1, 0 } }; - // Create the vertex buffer. + // Create the vertex buffer. if (FAILED(_pd3dDevice->CreateVertexBuffer(sizeof(Vertices), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &_pVB, NULL ))) @@ -837,7 +836,7 @@ int32_t VideoRenderDirect3D9::DeleteChannel(const uint32_t streamId) if (ddIt != _d3dChannels.end()) { delete ddIt->second; - _d3dChannels.erase(ddIt); + _d3dChannels.erase(ddIt); return 0; } return -1; @@ -853,7 +852,7 @@ VideoRenderCallback* VideoRenderDirect3D9::CreateChannel(const uint32_t channel, CriticalSectionScoped cs(&_refD3DCritsect); //FIXME this should be done in VideoAPIWindows? stop the frame deliver first - //remove the old channel + //remove the old channel DeleteChannel(channel); D3D9Channel* d3dChannel = new D3D9Channel(_pd3dDevice, @@ -890,9 +889,8 @@ int32_t VideoRenderDirect3D9::GetStreamSettings(const uint32_t channel, "Direct3D render failed to find channel"); return -1; } - // Only allow one stream per channel, demuxing is + // Only allow one stream per channel, demuxing is return ddobj->GetStreamSettings(0, zOrder, left, top, right, bottom); - //return ddobj->GetStreamSettings(streamId, zOrder, left, top, right, bottom); } int VideoRenderDirect3D9::UpdateVerticeBuffer(LPDIRECT3DVERTEXBUFFER9 pVB, @@ -1092,7 +1090,7 @@ int32_t VideoRenderDirect3D9::SetBitmap(const void* bitMap, int pitch = bmap.bmWidth * 4; if (pbi.bmiHeader.biBitCount == 24) - { + { ConvertRGB24ToARGB(srcPtr, dstPtr, bmap.bmWidth, bmap.bmHeight, 0); } else @@ -1168,7 +1166,7 @@ int32_t VideoRenderDirect3D9::ConfigureRenderer(const uint32_t channel, "Direct3D render failed to find channel"); return -1; } - // Only allow one stream per channel, demuxing is + // Only allow one stream per channel, demuxing is ddobj->SetStreamSettings(0, zOrder, left, top, right, bottom); return 0; diff --git a/webrtc/system_wrappers/interface/thread_wrapper.h b/webrtc/system_wrappers/interface/thread_wrapper.h index e8be166ff0..53a2c0a738 100644 --- a/webrtc/system_wrappers/interface/thread_wrapper.h +++ b/webrtc/system_wrappers/interface/thread_wrapper.h @@ -69,11 +69,6 @@ class ThreadWrapper { // TODO(tommi): Move outside of the ThreadWrapper class to avoid confusion. static uint32_t GetThreadId(); - // Non blocking termination of the spawned thread. Note that it is not safe - // to delete this class until the spawned thread has been reclaimed. - // TODO(tommi): Remove this method. - virtual void SetNotAlive() = 0; - // Tries to spawns a thread and returns true if that was successful. // Additionally, it tries to set thread priority according to the priority // from when CreateThread was called. However, failure to set priority will diff --git a/webrtc/system_wrappers/source/condition_variable_unittest.cc b/webrtc/system_wrappers/source/condition_variable_unittest.cc index fd036fa356..b551478231 100644 --- a/webrtc/system_wrappers/source/condition_variable_unittest.cc +++ b/webrtc/system_wrappers/source/condition_variable_unittest.cc @@ -157,7 +157,6 @@ class CondVarTest : public ::testing::Test { // Thus, we need to pin it down inside its Run function (between Grab // and Pass). ASSERT_TRUE(baton_.Pass(kShortWaitMs)); - thread_->SetNotAlive(); ASSERT_TRUE(baton_.Grab(kShortWaitMs)); ASSERT_TRUE(thread_->Stop()); delete thread_; diff --git a/webrtc/system_wrappers/source/critical_section_unittest.cc b/webrtc/system_wrappers/source/critical_section_unittest.cc index 9b88e6b3f7..d876b131e4 100644 --- a/webrtc/system_wrappers/source/critical_section_unittest.cc +++ b/webrtc/system_wrappers/source/critical_section_unittest.cc @@ -129,7 +129,6 @@ TEST_F(CritSectTest, ThreadWakesTwice) NO_THREAD_SAFETY_ANALYSIS { EXPECT_EQ(count_before, count.Count()); crit_sect->Leave(); - thread->SetNotAlive(); // Tell thread to exit once run function finishes. SwitchProcess(); EXPECT_TRUE(WaitForCount(count_before + 1, &count)); EXPECT_TRUE(thread->Stop()); diff --git a/webrtc/system_wrappers/source/data_log.cc b/webrtc/system_wrappers/source/data_log.cc index fc267aeb59..bf6b7b3670 100644 --- a/webrtc/system_wrappers/source/data_log.cc +++ b/webrtc/system_wrappers/source/data_log.cc @@ -444,7 +444,6 @@ void DataLogImpl::Process() { void DataLogImpl::StopThread() { if (file_writer_thread_ != NULL) { - file_writer_thread_->SetNotAlive(); flush_event_->Set(); // Call Stop() repeatedly, waiting for the Flush() call in Process() to // finish. diff --git a/webrtc/system_wrappers/source/event_posix.cc b/webrtc/system_wrappers/source/event_posix.cc index 5a2be36de0..eeef8095d7 100644 --- a/webrtc/system_wrappers/source/event_posix.cc +++ b/webrtc/system_wrappers/source/event_posix.cc @@ -266,9 +266,6 @@ bool EventPosix::Process() { } bool EventPosix::StopTimer() { - if (timer_thread_) { - timer_thread_->SetNotAlive(); - } if (timer_event_) { timer_event_->Set(); } diff --git a/webrtc/system_wrappers/source/thread_posix.cc b/webrtc/system_wrappers/source/thread_posix.cc index 0ddf17cdac..c2a8b3875a 100644 --- a/webrtc/system_wrappers/source/thread_posix.cc +++ b/webrtc/system_wrappers/source/thread_posix.cc @@ -118,10 +118,6 @@ bool ThreadPosix::Start(unsigned int& thread_id) { return true; } -void ThreadPosix::SetNotAlive() { - DCHECK(thread_checker_.CalledOnValidThread()); -} - bool ThreadPosix::Stop() { DCHECK(thread_checker_.CalledOnValidThread()); if (!thread_id_) diff --git a/webrtc/system_wrappers/source/thread_posix.h b/webrtc/system_wrappers/source/thread_posix.h index cd42c33e2f..88c55af028 100644 --- a/webrtc/system_wrappers/source/thread_posix.h +++ b/webrtc/system_wrappers/source/thread_posix.h @@ -32,7 +32,6 @@ class ThreadPosix : public ThreadWrapper { ~ThreadPosix() override; // From ThreadWrapper. - void SetNotAlive() override; bool Start(unsigned int& id) override; bool Stop() override; diff --git a/webrtc/system_wrappers/source/thread_win.cc b/webrtc/system_wrappers/source/thread_win.cc index 0fbf88bc60..836a7f88c4 100644 --- a/webrtc/system_wrappers/source/thread_win.cc +++ b/webrtc/system_wrappers/source/thread_win.cc @@ -89,10 +89,6 @@ bool ThreadWindows::Start(unsigned int& id) { return true; } -void ThreadWindows::SetNotAlive() { - DCHECK(main_thread_.CalledOnValidThread()); -} - bool ThreadWindows::Stop() { DCHECK(main_thread_.CalledOnValidThread()); if (thread_) { diff --git a/webrtc/system_wrappers/source/thread_win.h b/webrtc/system_wrappers/source/thread_win.h index 2d8fa92260..c78c7dce8c 100644 --- a/webrtc/system_wrappers/source/thread_win.h +++ b/webrtc/system_wrappers/source/thread_win.h @@ -27,7 +27,6 @@ class ThreadWindows : public ThreadWrapper { bool Start(unsigned int& id) override; bool Stop() override; - void SetNotAlive() override; protected: void Run(); diff --git a/webrtc/system_wrappers/source/trace_impl.cc b/webrtc/system_wrappers/source/trace_impl.cc index d05b928a90..28de280a9d 100644 --- a/webrtc/system_wrappers/source/trace_impl.cc +++ b/webrtc/system_wrappers/source/trace_impl.cc @@ -103,7 +103,6 @@ bool TraceImpl::StopThread() { // messages? SleepMs(10); - thread_.SetNotAlive(); // Make sure the thread finishes as quickly as possible (instead of having // to wait for the timeout). event_.Set(); diff --git a/webrtc/test/channel_transport/udp_socket2_manager_win.cc b/webrtc/test/channel_transport/udp_socket2_manager_win.cc index 695c866dfa..a327822b8f 100644 --- a/webrtc/test/channel_transport/udp_socket2_manager_win.cc +++ b/webrtc/test/channel_transport/udp_socket2_manager_win.cc @@ -268,12 +268,6 @@ bool UdpSocket2ManagerWindows::StopWorkerThreads() _managerNumber, _numActiveSockets); - // Set worker threads to not alive so that they will stop calling - // UdpSocket2WorkerWindows::Run(). - for (WorkerList::iterator iter = _workerThreadsList.begin(); - iter != _workerThreadsList.end(); ++iter) { - (*iter)->SetNotAlive(); - } // Release all threads waiting for GetQueuedCompletionStatus(..). if(_ioCompletionHandle) { @@ -559,13 +553,6 @@ bool UdpSocket2WorkerWindows::Stop() return _pThread->Stop(); } -void UdpSocket2WorkerWindows::SetNotAlive() -{ - WEBRTC_TRACE(kTraceStateInfo, kTraceTransport, -1, - "SetNotAlive UdpSocket2WorkerWindows"); - _pThread->SetNotAlive(); -} - int32_t UdpSocket2WorkerWindows::Init() { if(!_init) diff --git a/webrtc/test/channel_transport/udp_socket2_manager_win.h b/webrtc/test/channel_transport/udp_socket2_manager_win.h index 42c45113d4..b00633133e 100644 --- a/webrtc/test/channel_transport/udp_socket2_manager_win.h +++ b/webrtc/test/channel_transport/udp_socket2_manager_win.h @@ -100,7 +100,6 @@ public: virtual bool Start(); virtual bool Stop(); virtual int32_t Init(); - virtual void SetNotAlive(); protected: static bool Run(ThreadObj obj); bool Process(); diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_win.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_win.cc index 98e37a4171..2967e7e277 100755 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_win.cc +++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_win.cc @@ -102,8 +102,6 @@ int ViEAutoTestWindowManager::CreateWindows(AutoTestRect window1Size, } int ViEAutoTestWindowManager::TerminateWindows() { - _eventThread.SetNotAlive(); - _terminate = true; if (_eventThread.Stop()) { _crit.Enter(); diff --git a/webrtc/video_engine/test/libvietest/helpers/vie_to_file_renderer.cc b/webrtc/video_engine/test/libvietest/helpers/vie_to_file_renderer.cc index 449ce7726a..7ec6db8858 100644 --- a/webrtc/video_engine/test/libvietest/helpers/vie_to_file_renderer.cc +++ b/webrtc/video_engine/test/libvietest/helpers/vie_to_file_renderer.cc @@ -72,7 +72,6 @@ bool ViEToFileRenderer::PrepareForRendering( void ViEToFileRenderer::StopRendering() { assert(output_file_ != NULL); if (thread_.get() != NULL) { - thread_->SetNotAlive(); // Signal that a frame is ready to be written to file. frame_render_event_->Set(); // Call Stop() repeatedly, waiting for ProcessRenderQueue() to finish. diff --git a/webrtc/video_engine/test/libvietest/testbed/tb_external_transport.cc b/webrtc/video_engine/test/libvietest/testbed/tb_external_transport.cc index 4698b1ce0b..e7018b954a 100644 --- a/webrtc/video_engine/test/libvietest/testbed/tb_external_transport.cc +++ b/webrtc/video_engine/test/libvietest/testbed/tb_external_transport.cc @@ -86,7 +86,6 @@ TbExternalTransport::TbExternalTransport( TbExternalTransport::~TbExternalTransport() { - _thread.SetNotAlive(); _event.Set(); if (_thread.Stop()) { diff --git a/webrtc/video_engine/vie_capturer.cc b/webrtc/video_engine/vie_capturer.cc index 1c71c36c0a..0a2de137ab 100644 --- a/webrtc/video_engine/vie_capturer.cc +++ b/webrtc/video_engine/vie_capturer.cc @@ -49,6 +49,7 @@ ViECapturer::ViECapturer(int capture_id, "ViECaptureThread")), capture_event_(*EventWrapper::Create()), deliver_event_(*EventWrapper::Create()), + stop_(false), effect_filter_(NULL), image_proc_module_(NULL), image_proc_module_ref_counter_(0), @@ -70,12 +71,8 @@ ViECapturer::~ViECapturer() { module_process_thread_.DeRegisterModule(overuse_detector_.get()); // Stop the thread. - deliver_cs_->Enter(); - capture_cs_->Enter(); - capture_thread_.SetNotAlive(); + stop_ = true; capture_event_.Set(); - capture_cs_->Leave(); - deliver_cs_->Leave(); // Stop the camera input. if (capture_module_) { @@ -454,6 +451,9 @@ bool ViECapturer::ViECaptureThreadFunction(void* obj) { bool ViECapturer::ViECaptureProcess() { int64_t capture_time = -1; if (capture_event_.Wait(kThreadWaitTimeMs) == kEventSignaled) { + if (stop_) + return false; + overuse_detector_->FrameProcessingStarted(); int64_t encode_start_time = -1; deliver_cs_->Enter(); diff --git a/webrtc/video_engine/vie_capturer.h b/webrtc/video_engine/vie_capturer.h index 0ed5d95937..401db79650 100644 --- a/webrtc/video_engine/vie_capturer.h +++ b/webrtc/video_engine/vie_capturer.h @@ -168,6 +168,8 @@ class ViECapturer EventWrapper& capture_event_; EventWrapper& deliver_event_; + bool stop_; + scoped_ptr captured_frame_; scoped_ptr deliver_frame_; diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc index 12d8ac2156..62cfd50c48 100644 --- a/webrtc/video_engine/vie_channel.cc +++ b/webrtc/video_engine/vie_channel.cc @@ -1703,7 +1703,6 @@ int32_t ViEChannel::StopDecodeThread() { return 0; } - decode_thread_->SetNotAlive(); if (decode_thread_->Stop()) { delete decode_thread_; } else { diff --git a/webrtc/voice_engine/test/android/android_test/jni/android_test.cc b/webrtc/voice_engine/test/android/android_test/jni/android_test.cc index 8de7c6ef58..b744d1d73d 100644 --- a/webrtc/voice_engine/test/android/android_test/jni/android_test.cc +++ b/webrtc/voice_engine/test/android/android_test/jni/android_test.cc @@ -185,7 +185,6 @@ ThreadTest::~ThreadTest() { if (_thread) { - _thread->SetNotAlive(); if (_thread->Stop()) { delete _thread; @@ -272,7 +271,6 @@ bool ThreadTest::Process() "sending instance started from thread"); #endif - _thread->SetNotAlive(); _thread->Stop(); //res = veData1.jvm->DetachCurrentThread(); diff --git a/webrtc/voice_engine/test/auto_test/fakes/fake_external_transport.cc b/webrtc/voice_engine/test/auto_test/fakes/fake_external_transport.cc index bd2b94e8c7..ae387fe761 100644 --- a/webrtc/voice_engine/test/auto_test/fakes/fake_external_transport.cc +++ b/webrtc/voice_engine/test/auto_test/fakes/fake_external_transport.cc @@ -38,7 +38,6 @@ FakeExternalTransport::FakeExternalTransport(webrtc::VoENetwork* ptr) FakeExternalTransport::~FakeExternalTransport() { if (thread_) { - thread_->SetNotAlive(); event_->Set(); if (thread_->Stop()) { delete thread_;