OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 | 193 |
194 //Get X display handle for typing detection | 194 //Get X display handle for typing detection |
195 _XDisplay = XOpenDisplay(NULL); | 195 _XDisplay = XOpenDisplay(NULL); |
196 if (!_XDisplay) | 196 if (!_XDisplay) |
197 { | 197 { |
198 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, | 198 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, |
199 " failed to open X display, typing detection will not work"); | 199 " failed to open X display, typing detection will not work"); |
200 } | 200 } |
201 | 201 |
202 // RECORDING | 202 // RECORDING |
203 const char* threadName = "webrtc_audio_module_rec_thread"; | 203 _ptrThreadRec.reset(new rtc::PlatformThread( |
204 _ptrThreadRec = | 204 RecThreadFunc, this, "webrtc_audio_module_rec_thread")); |
205 PlatformThread::CreateThread(RecThreadFunc, this, threadName); | |
206 if (!_ptrThreadRec->Start()) | |
207 { | |
208 WEBRTC_TRACE(kTraceCritical, kTraceAudioDevice, _id, | |
209 " failed to start the rec audio thread"); | |
210 | 205 |
211 _ptrThreadRec.reset(); | 206 _ptrThreadRec->Start(); |
212 return -1; | 207 _ptrThreadRec->SetPriority(rtc::kRealtimePriority); |
213 } | |
214 | |
215 _ptrThreadRec->SetPriority(kRealtimePriority); | |
216 | 208 |
217 // PLAYOUT | 209 // PLAYOUT |
218 threadName = "webrtc_audio_module_play_thread"; | 210 _ptrThreadPlay.reset(new rtc::PlatformThread( |
219 _ptrThreadPlay = | 211 PlayThreadFunc, this, "webrtc_audio_module_play_thread")); |
220 PlatformThread::CreateThread(PlayThreadFunc, this, threadName); | 212 _ptrThreadPlay->Start(); |
221 if (!_ptrThreadPlay->Start()) | 213 _ptrThreadPlay->SetPriority(rtc::kRealtimePriority); |
222 { | |
223 WEBRTC_TRACE(kTraceCritical, kTraceAudioDevice, _id, | |
224 " failed to start the play audio thread"); | |
225 | |
226 _ptrThreadPlay.reset(); | |
227 return -1; | |
228 } | |
229 _ptrThreadPlay->SetPriority(kRealtimePriority); | |
230 | 214 |
231 _initialized = true; | 215 _initialized = true; |
232 | 216 |
233 return 0; | 217 return 0; |
234 } | 218 } |
235 | 219 |
236 int32_t AudioDeviceLinuxPulse::Terminate() | 220 int32_t AudioDeviceLinuxPulse::Terminate() |
237 { | 221 { |
238 RTC_DCHECK(thread_checker_.CalledOnValidThread()); | 222 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
239 if (!_initialized) | 223 if (!_initialized) |
240 { | 224 { |
241 return 0; | 225 return 0; |
242 } | 226 } |
243 | 227 |
244 _mixerManager.Close(); | 228 _mixerManager.Close(); |
245 | 229 |
246 // RECORDING | 230 // RECORDING |
247 if (_ptrThreadRec) | 231 if (_ptrThreadRec) |
248 { | 232 { |
249 PlatformThread* tmpThread = _ptrThreadRec.release(); | 233 rtc::PlatformThread* tmpThread = _ptrThreadRec.release(); |
250 | 234 |
251 _timeEventRec.Set(); | 235 _timeEventRec.Set(); |
252 tmpThread->Stop(); | 236 tmpThread->Stop(); |
253 delete tmpThread; | 237 delete tmpThread; |
254 } | 238 } |
255 | 239 |
256 // PLAYOUT | 240 // PLAYOUT |
257 if (_ptrThreadPlay) | 241 if (_ptrThreadPlay) |
258 { | 242 { |
259 PlatformThread* tmpThread = _ptrThreadPlay.release(); | 243 rtc::PlatformThread* tmpThread = _ptrThreadPlay.release(); |
260 | 244 |
261 _timeEventPlay.Set(); | 245 _timeEventPlay.Set(); |
262 tmpThread->Stop(); | 246 tmpThread->Stop(); |
263 delete tmpThread; | 247 delete tmpThread; |
264 } | 248 } |
265 | 249 |
266 // Terminate PulseAudio | 250 // Terminate PulseAudio |
267 if (TerminatePulseAudio() < 0) | 251 if (TerminatePulseAudio() < 0) |
268 { | 252 { |
269 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, | 253 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, |
(...skipping 2743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3013 | 2997 |
3014 // A bit change in keymap means a key is pressed | 2998 // A bit change in keymap means a key is pressed |
3015 for (i = 0; i < sizeof(szKey); i++) | 2999 for (i = 0; i < sizeof(szKey); i++) |
3016 state |= (szKey[i] ^ _oldKeyState[i]) & szKey[i]; | 3000 state |= (szKey[i] ^ _oldKeyState[i]) & szKey[i]; |
3017 | 3001 |
3018 // Save old state | 3002 // Save old state |
3019 memcpy((char*)_oldKeyState, (char*)szKey, sizeof(_oldKeyState)); | 3003 memcpy((char*)_oldKeyState, (char*)szKey, sizeof(_oldKeyState)); |
3020 return (state != 0); | 3004 return (state != 0); |
3021 } | 3005 } |
3022 } | 3006 } |
OLD | NEW |