Android: Remove GetThreadInfo()
This CL is part of merging the helper functions for audio and non-audio JNI code. The GetThreadInfo() function is unrelated to JNI and I would prefer not to keep it in a JNI helper file. Also, GetThreadInfo() is a very small function and inlining it makes it simpler and more transparent IMO, as well as removing a lot of unnecessary std::string creations. Bug: webrtc:8689 Change-Id: I7d238fee826d310c0f5343d18b92d0dff864fd6a Reviewed-on: https://webrtc-review.googlesource.com/36302 Reviewed-by: Henrik Andreassson <henrika@webrtc.org> Commit-Queue: Henrik Andreassson <henrika@webrtc.org> Cr-Commit-Position: refs/heads/master@{#21466}
This commit is contained in:

committed by
Commit Bot

parent
0942b36af1
commit
9185bde7ee
@ -18,6 +18,7 @@
|
|||||||
#include "modules/utility/include/helpers_android.h"
|
#include "modules/utility/include/helpers_android.h"
|
||||||
#include "rtc_base/arraysize.h"
|
#include "rtc_base/arraysize.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
#include "rtc_base/platform_thread.h"
|
||||||
|
|
||||||
#define TAG "AudioManager"
|
#define TAG "AudioManager"
|
||||||
#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
|
#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
|
||||||
@ -40,11 +41,11 @@ AudioManager::JavaAudioManager::JavaAudioManager(
|
|||||||
is_device_blacklisted_for_open_sles_usage_(
|
is_device_blacklisted_for_open_sles_usage_(
|
||||||
native_reg->GetMethodId("isDeviceBlacklistedForOpenSLESUsage",
|
native_reg->GetMethodId("isDeviceBlacklistedForOpenSLESUsage",
|
||||||
"()Z")) {
|
"()Z")) {
|
||||||
ALOGD("JavaAudioManager::ctor%s", GetThreadInfo().c_str());
|
ALOGD("JavaAudioManager::ctor @[tid=%d]", rtc::CurrentThreadId());
|
||||||
}
|
}
|
||||||
|
|
||||||
AudioManager::JavaAudioManager::~JavaAudioManager() {
|
AudioManager::JavaAudioManager::~JavaAudioManager() {
|
||||||
ALOGD("JavaAudioManager::dtor%s", GetThreadInfo().c_str());
|
ALOGD("JavaAudioManager::dtor[tid=%d]", rtc::CurrentThreadId());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AudioManager::JavaAudioManager::Init() {
|
bool AudioManager::JavaAudioManager::Init() {
|
||||||
@ -75,7 +76,7 @@ AudioManager::AudioManager()
|
|||||||
low_latency_playout_(false),
|
low_latency_playout_(false),
|
||||||
low_latency_record_(false),
|
low_latency_record_(false),
|
||||||
delay_estimate_in_milliseconds_(0) {
|
delay_estimate_in_milliseconds_(0) {
|
||||||
ALOGD("ctor%s", GetThreadInfo().c_str());
|
ALOGD("ctor[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_CHECK(j_environment_);
|
RTC_CHECK(j_environment_);
|
||||||
JNINativeMethod native_methods[] = {
|
JNINativeMethod native_methods[] = {
|
||||||
{"nativeCacheAudioParameters", "(IIIZZZZZZIIJ)V",
|
{"nativeCacheAudioParameters", "(IIIZZZZZZIIJ)V",
|
||||||
@ -90,14 +91,14 @@ AudioManager::AudioManager()
|
|||||||
}
|
}
|
||||||
|
|
||||||
AudioManager::~AudioManager() {
|
AudioManager::~AudioManager() {
|
||||||
ALOGD("~dtor%s", GetThreadInfo().c_str());
|
ALOGD("~dtor[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioManager::SetActiveAudioLayer(
|
void AudioManager::SetActiveAudioLayer(
|
||||||
AudioDeviceModule::AudioLayer audio_layer) {
|
AudioDeviceModule::AudioLayer audio_layer) {
|
||||||
ALOGD("SetActiveAudioLayer(%d)%s", audio_layer, GetThreadInfo().c_str());
|
ALOGD("SetActiveAudioLayer(%d)[tid=%d]", audio_layer, rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
RTC_DCHECK(!initialized_);
|
RTC_DCHECK(!initialized_);
|
||||||
// Store the currently utilized audio layer.
|
// Store the currently utilized audio layer.
|
||||||
@ -114,7 +115,7 @@ void AudioManager::SetActiveAudioLayer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
SLObjectItf AudioManager::GetOpenSLEngine() {
|
SLObjectItf AudioManager::GetOpenSLEngine() {
|
||||||
ALOGD("GetOpenSLEngine%s", GetThreadInfo().c_str());
|
ALOGD("GetOpenSLEngine[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
// Only allow usage of OpenSL ES if such an audio layer has been specified.
|
// Only allow usage of OpenSL ES if such an audio layer has been specified.
|
||||||
if (audio_layer_ != AudioDeviceModule::kAndroidOpenSLESAudio &&
|
if (audio_layer_ != AudioDeviceModule::kAndroidOpenSLESAudio &&
|
||||||
@ -153,7 +154,7 @@ SLObjectItf AudioManager::GetOpenSLEngine() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool AudioManager::Init() {
|
bool AudioManager::Init() {
|
||||||
ALOGD("Init%s", GetThreadInfo().c_str());
|
ALOGD("Init[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
RTC_DCHECK(!initialized_);
|
RTC_DCHECK(!initialized_);
|
||||||
RTC_DCHECK_NE(audio_layer_, AudioDeviceModule::kPlatformDefaultAudio);
|
RTC_DCHECK_NE(audio_layer_, AudioDeviceModule::kPlatformDefaultAudio);
|
||||||
@ -166,7 +167,7 @@ bool AudioManager::Init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool AudioManager::Close() {
|
bool AudioManager::Close() {
|
||||||
ALOGD("Close%s", GetThreadInfo().c_str());
|
ALOGD("Close[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
if (!initialized_)
|
if (!initialized_)
|
||||||
return true;
|
return true;
|
||||||
@ -271,7 +272,7 @@ void AudioManager::OnCacheAudioParameters(JNIEnv* env,
|
|||||||
jboolean pro_audio,
|
jboolean pro_audio,
|
||||||
jint output_buffer_size,
|
jint output_buffer_size,
|
||||||
jint input_buffer_size) {
|
jint input_buffer_size) {
|
||||||
ALOGD("OnCacheAudioParameters%s", GetThreadInfo().c_str());
|
ALOGD("OnCacheAudioParameters[tid=%d]", rtc::CurrentThreadId());
|
||||||
ALOGD("hardware_aec: %d", hardware_aec);
|
ALOGD("hardware_aec: %d", hardware_aec);
|
||||||
ALOGD("hardware_agc: %d", hardware_agc);
|
ALOGD("hardware_agc: %d", hardware_agc);
|
||||||
ALOGD("hardware_ns: %d", hardware_ns);
|
ALOGD("hardware_ns: %d", hardware_ns);
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "rtc_base/arraysize.h"
|
#include "rtc_base/arraysize.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/format_macros.h"
|
#include "rtc_base/format_macros.h"
|
||||||
|
#include "rtc_base/platform_thread.h"
|
||||||
|
|
||||||
#define TAG "AudioRecordJni"
|
#define TAG "AudioRecordJni"
|
||||||
#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
|
#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
|
||||||
@ -78,7 +79,7 @@ AudioRecordJni::AudioRecordJni(AudioManager* audio_manager)
|
|||||||
initialized_(false),
|
initialized_(false),
|
||||||
recording_(false),
|
recording_(false),
|
||||||
audio_device_buffer_(nullptr) {
|
audio_device_buffer_(nullptr) {
|
||||||
ALOGD("ctor%s", GetThreadInfo().c_str());
|
ALOGD("ctor[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(audio_parameters_.is_valid());
|
RTC_DCHECK(audio_parameters_.is_valid());
|
||||||
RTC_CHECK(j_environment_);
|
RTC_CHECK(j_environment_);
|
||||||
JNINativeMethod native_methods[] = {
|
JNINativeMethod native_methods[] = {
|
||||||
@ -100,26 +101,26 @@ AudioRecordJni::AudioRecordJni(AudioManager* audio_manager)
|
|||||||
}
|
}
|
||||||
|
|
||||||
AudioRecordJni::~AudioRecordJni() {
|
AudioRecordJni::~AudioRecordJni() {
|
||||||
ALOGD("~dtor%s", GetThreadInfo().c_str());
|
ALOGD("~dtor[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
Terminate();
|
Terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioRecordJni::Init() {
|
int32_t AudioRecordJni::Init() {
|
||||||
ALOGD("Init%s", GetThreadInfo().c_str());
|
ALOGD("Init[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioRecordJni::Terminate() {
|
int32_t AudioRecordJni::Terminate() {
|
||||||
ALOGD("Terminate%s", GetThreadInfo().c_str());
|
ALOGD("Terminate[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
StopRecording();
|
StopRecording();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioRecordJni::InitRecording() {
|
int32_t AudioRecordJni::InitRecording() {
|
||||||
ALOGD("InitRecording%s", GetThreadInfo().c_str());
|
ALOGD("InitRecording[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
RTC_DCHECK(!initialized_);
|
RTC_DCHECK(!initialized_);
|
||||||
RTC_DCHECK(!recording_);
|
RTC_DCHECK(!recording_);
|
||||||
@ -141,7 +142,7 @@ int32_t AudioRecordJni::InitRecording() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioRecordJni::StartRecording() {
|
int32_t AudioRecordJni::StartRecording() {
|
||||||
ALOGD("StartRecording%s", GetThreadInfo().c_str());
|
ALOGD("StartRecording[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
RTC_DCHECK(initialized_);
|
RTC_DCHECK(initialized_);
|
||||||
RTC_DCHECK(!recording_);
|
RTC_DCHECK(!recording_);
|
||||||
@ -154,7 +155,7 @@ int32_t AudioRecordJni::StartRecording() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioRecordJni::StopRecording() {
|
int32_t AudioRecordJni::StopRecording() {
|
||||||
ALOGD("StopRecording%s", GetThreadInfo().c_str());
|
ALOGD("StopRecording[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
if (!initialized_ || !recording_) {
|
if (!initialized_ || !recording_) {
|
||||||
return 0;
|
return 0;
|
||||||
@ -190,7 +191,7 @@ void AudioRecordJni::AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioRecordJni::EnableBuiltInAEC(bool enable) {
|
int32_t AudioRecordJni::EnableBuiltInAEC(bool enable) {
|
||||||
ALOGD("EnableBuiltInAEC%s", GetThreadInfo().c_str());
|
ALOGD("EnableBuiltInAEC[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
return j_audio_record_->EnableBuiltInAEC(enable) ? 0 : -1;
|
return j_audio_record_->EnableBuiltInAEC(enable) ? 0 : -1;
|
||||||
}
|
}
|
||||||
@ -202,7 +203,7 @@ int32_t AudioRecordJni::EnableBuiltInAGC(bool enable) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioRecordJni::EnableBuiltInNS(bool enable) {
|
int32_t AudioRecordJni::EnableBuiltInNS(bool enable) {
|
||||||
ALOGD("EnableBuiltInNS%s", GetThreadInfo().c_str());
|
ALOGD("EnableBuiltInNS[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
return j_audio_record_->EnableBuiltInNS(enable) ? 0 : -1;
|
return j_audio_record_->EnableBuiltInNS(enable) ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "rtc_base/arraysize.h"
|
#include "rtc_base/arraysize.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/format_macros.h"
|
#include "rtc_base/format_macros.h"
|
||||||
|
#include "rtc_base/platform_thread.h"
|
||||||
|
|
||||||
#define TAG "AudioTrackJni"
|
#define TAG "AudioTrackJni"
|
||||||
#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
|
#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
|
||||||
@ -77,7 +78,7 @@ AudioTrackJni::AudioTrackJni(AudioManager* audio_manager)
|
|||||||
initialized_(false),
|
initialized_(false),
|
||||||
playing_(false),
|
playing_(false),
|
||||||
audio_device_buffer_(nullptr) {
|
audio_device_buffer_(nullptr) {
|
||||||
ALOGD("ctor%s", GetThreadInfo().c_str());
|
ALOGD("ctor[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(audio_parameters_.is_valid());
|
RTC_DCHECK(audio_parameters_.is_valid());
|
||||||
RTC_CHECK(j_environment_);
|
RTC_CHECK(j_environment_);
|
||||||
JNINativeMethod native_methods[] = {
|
JNINativeMethod native_methods[] = {
|
||||||
@ -99,26 +100,26 @@ AudioTrackJni::AudioTrackJni(AudioManager* audio_manager)
|
|||||||
}
|
}
|
||||||
|
|
||||||
AudioTrackJni::~AudioTrackJni() {
|
AudioTrackJni::~AudioTrackJni() {
|
||||||
ALOGD("~dtor%s", GetThreadInfo().c_str());
|
ALOGD("~dtor[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
Terminate();
|
Terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioTrackJni::Init() {
|
int32_t AudioTrackJni::Init() {
|
||||||
ALOGD("Init%s", GetThreadInfo().c_str());
|
ALOGD("Init[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioTrackJni::Terminate() {
|
int32_t AudioTrackJni::Terminate() {
|
||||||
ALOGD("Terminate%s", GetThreadInfo().c_str());
|
ALOGD("Terminate[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
StopPlayout();
|
StopPlayout();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioTrackJni::InitPlayout() {
|
int32_t AudioTrackJni::InitPlayout() {
|
||||||
ALOGD("InitPlayout%s", GetThreadInfo().c_str());
|
ALOGD("InitPlayout[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
RTC_DCHECK(!initialized_);
|
RTC_DCHECK(!initialized_);
|
||||||
RTC_DCHECK(!playing_);
|
RTC_DCHECK(!playing_);
|
||||||
@ -132,7 +133,7 @@ int32_t AudioTrackJni::InitPlayout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioTrackJni::StartPlayout() {
|
int32_t AudioTrackJni::StartPlayout() {
|
||||||
ALOGD("StartPlayout%s", GetThreadInfo().c_str());
|
ALOGD("StartPlayout[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
RTC_DCHECK(initialized_);
|
RTC_DCHECK(initialized_);
|
||||||
RTC_DCHECK(!playing_);
|
RTC_DCHECK(!playing_);
|
||||||
@ -145,7 +146,7 @@ int32_t AudioTrackJni::StartPlayout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioTrackJni::StopPlayout() {
|
int32_t AudioTrackJni::StopPlayout() {
|
||||||
ALOGD("StopPlayout%s", GetThreadInfo().c_str());
|
ALOGD("StopPlayout[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
if (!initialized_ || !playing_) {
|
if (!initialized_ || !playing_) {
|
||||||
return 0;
|
return 0;
|
||||||
@ -170,27 +171,27 @@ int AudioTrackJni::SpeakerVolumeIsAvailable(bool& available) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int AudioTrackJni::SetSpeakerVolume(uint32_t volume) {
|
int AudioTrackJni::SetSpeakerVolume(uint32_t volume) {
|
||||||
ALOGD("SetSpeakerVolume(%d)%s", volume, GetThreadInfo().c_str());
|
ALOGD("SetSpeakerVolume(%d)[tid=%d]", volume, rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
return j_audio_track_->SetStreamVolume(volume) ? 0 : -1;
|
return j_audio_track_->SetStreamVolume(volume) ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AudioTrackJni::MaxSpeakerVolume(uint32_t& max_volume) const {
|
int AudioTrackJni::MaxSpeakerVolume(uint32_t& max_volume) const {
|
||||||
ALOGD("MaxSpeakerVolume%s", GetThreadInfo().c_str());
|
ALOGD("MaxSpeakerVolume[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
max_volume = j_audio_track_->GetStreamMaxVolume();
|
max_volume = j_audio_track_->GetStreamMaxVolume();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AudioTrackJni::MinSpeakerVolume(uint32_t& min_volume) const {
|
int AudioTrackJni::MinSpeakerVolume(uint32_t& min_volume) const {
|
||||||
ALOGD("MaxSpeakerVolume%s", GetThreadInfo().c_str());
|
ALOGD("MaxSpeakerVolume[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
min_volume = 0;
|
min_volume = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AudioTrackJni::SpeakerVolume(uint32_t& volume) const {
|
int AudioTrackJni::SpeakerVolume(uint32_t& volume) const {
|
||||||
ALOGD("SpeakerVolume%s", GetThreadInfo().c_str());
|
ALOGD("SpeakerVolume[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
volume = j_audio_track_->GetStreamVolume();
|
volume = j_audio_track_->GetStreamVolume();
|
||||||
return 0;
|
return 0;
|
||||||
@ -198,7 +199,7 @@ int AudioTrackJni::SpeakerVolume(uint32_t& volume) const {
|
|||||||
|
|
||||||
// TODO(henrika): possibly add stereo support.
|
// TODO(henrika): possibly add stereo support.
|
||||||
void AudioTrackJni::AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) {
|
void AudioTrackJni::AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) {
|
||||||
ALOGD("AttachAudioBuffer%s", GetThreadInfo().c_str());
|
ALOGD("AttachAudioBuffer[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
audio_device_buffer_ = audioBuffer;
|
audio_device_buffer_ = audioBuffer;
|
||||||
const int sample_rate_hz = audio_parameters_.sample_rate();
|
const int sample_rate_hz = audio_parameters_.sample_rate();
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "rtc_base/arraysize.h"
|
#include "rtc_base/arraysize.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/format_macros.h"
|
#include "rtc_base/format_macros.h"
|
||||||
|
#include "rtc_base/platform_thread.h"
|
||||||
#include "rtc_base/timeutils.h"
|
#include "rtc_base/timeutils.h"
|
||||||
|
|
||||||
#define TAG "OpenSLESPlayer"
|
#define TAG "OpenSLESPlayer"
|
||||||
@ -51,7 +52,7 @@ OpenSLESPlayer::OpenSLESPlayer(AudioManager* audio_manager)
|
|||||||
simple_buffer_queue_(nullptr),
|
simple_buffer_queue_(nullptr),
|
||||||
volume_(nullptr),
|
volume_(nullptr),
|
||||||
last_play_time_(0) {
|
last_play_time_(0) {
|
||||||
ALOGD("ctor%s", GetThreadInfo().c_str());
|
ALOGD("ctor[tid=%d]", rtc::CurrentThreadId());
|
||||||
// Use native audio output parameters provided by the audio manager and
|
// Use native audio output parameters provided by the audio manager and
|
||||||
// define the PCM format structure.
|
// define the PCM format structure.
|
||||||
pcm_format_ = CreatePCMConfiguration(audio_parameters_.channels(),
|
pcm_format_ = CreatePCMConfiguration(audio_parameters_.channels(),
|
||||||
@ -63,7 +64,7 @@ OpenSLESPlayer::OpenSLESPlayer(AudioManager* audio_manager)
|
|||||||
}
|
}
|
||||||
|
|
||||||
OpenSLESPlayer::~OpenSLESPlayer() {
|
OpenSLESPlayer::~OpenSLESPlayer() {
|
||||||
ALOGD("dtor%s", GetThreadInfo().c_str());
|
ALOGD("dtor[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
Terminate();
|
Terminate();
|
||||||
DestroyAudioPlayer();
|
DestroyAudioPlayer();
|
||||||
@ -77,7 +78,7 @@ OpenSLESPlayer::~OpenSLESPlayer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int OpenSLESPlayer::Init() {
|
int OpenSLESPlayer::Init() {
|
||||||
ALOGD("Init%s", GetThreadInfo().c_str());
|
ALOGD("Init[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
if (audio_parameters_.channels() == 2) {
|
if (audio_parameters_.channels() == 2) {
|
||||||
// TODO(henrika): FineAudioBuffer needs more work to support stereo.
|
// TODO(henrika): FineAudioBuffer needs more work to support stereo.
|
||||||
@ -88,14 +89,14 @@ int OpenSLESPlayer::Init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int OpenSLESPlayer::Terminate() {
|
int OpenSLESPlayer::Terminate() {
|
||||||
ALOGD("Terminate%s", GetThreadInfo().c_str());
|
ALOGD("Terminate[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
StopPlayout();
|
StopPlayout();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int OpenSLESPlayer::InitPlayout() {
|
int OpenSLESPlayer::InitPlayout() {
|
||||||
ALOGD("InitPlayout%s", GetThreadInfo().c_str());
|
ALOGD("InitPlayout[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
RTC_DCHECK(!initialized_);
|
RTC_DCHECK(!initialized_);
|
||||||
RTC_DCHECK(!playing_);
|
RTC_DCHECK(!playing_);
|
||||||
@ -110,7 +111,7 @@ int OpenSLESPlayer::InitPlayout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int OpenSLESPlayer::StartPlayout() {
|
int OpenSLESPlayer::StartPlayout() {
|
||||||
ALOGD("StartPlayout%s", GetThreadInfo().c_str());
|
ALOGD("StartPlayout[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
RTC_DCHECK(initialized_);
|
RTC_DCHECK(initialized_);
|
||||||
RTC_DCHECK(!playing_);
|
RTC_DCHECK(!playing_);
|
||||||
@ -138,7 +139,7 @@ int OpenSLESPlayer::StartPlayout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int OpenSLESPlayer::StopPlayout() {
|
int OpenSLESPlayer::StopPlayout() {
|
||||||
ALOGD("StopPlayout%s", GetThreadInfo().c_str());
|
ALOGD("StopPlayout[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
if (!initialized_ || !playing_) {
|
if (!initialized_ || !playing_) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "rtc_base/arraysize.h"
|
#include "rtc_base/arraysize.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/format_macros.h"
|
#include "rtc_base/format_macros.h"
|
||||||
|
#include "rtc_base/platform_thread.h"
|
||||||
#include "rtc_base/timeutils.h"
|
#include "rtc_base/timeutils.h"
|
||||||
|
|
||||||
#define TAG "OpenSLESRecorder"
|
#define TAG "OpenSLESRecorder"
|
||||||
@ -51,7 +52,7 @@ OpenSLESRecorder::OpenSLESRecorder(AudioManager* audio_manager)
|
|||||||
simple_buffer_queue_(nullptr),
|
simple_buffer_queue_(nullptr),
|
||||||
buffer_index_(0),
|
buffer_index_(0),
|
||||||
last_rec_time_(0) {
|
last_rec_time_(0) {
|
||||||
ALOGD("ctor%s", GetThreadInfo().c_str());
|
ALOGD("ctor[tid=%d]", rtc::CurrentThreadId());
|
||||||
// Detach from this thread since we want to use the checker to verify calls
|
// Detach from this thread since we want to use the checker to verify calls
|
||||||
// from the internal audio thread.
|
// from the internal audio thread.
|
||||||
thread_checker_opensles_.DetachFromThread();
|
thread_checker_opensles_.DetachFromThread();
|
||||||
@ -63,7 +64,7 @@ OpenSLESRecorder::OpenSLESRecorder(AudioManager* audio_manager)
|
|||||||
}
|
}
|
||||||
|
|
||||||
OpenSLESRecorder::~OpenSLESRecorder() {
|
OpenSLESRecorder::~OpenSLESRecorder() {
|
||||||
ALOGD("dtor%s", GetThreadInfo().c_str());
|
ALOGD("dtor[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
Terminate();
|
Terminate();
|
||||||
DestroyAudioRecorder();
|
DestroyAudioRecorder();
|
||||||
@ -74,7 +75,7 @@ OpenSLESRecorder::~OpenSLESRecorder() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int OpenSLESRecorder::Init() {
|
int OpenSLESRecorder::Init() {
|
||||||
ALOGD("Init%s", GetThreadInfo().c_str());
|
ALOGD("Init[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
if (audio_parameters_.channels() == 2) {
|
if (audio_parameters_.channels() == 2) {
|
||||||
// TODO(henrika): FineAudioBuffer needs more work to support stereo.
|
// TODO(henrika): FineAudioBuffer needs more work to support stereo.
|
||||||
@ -85,14 +86,14 @@ int OpenSLESRecorder::Init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int OpenSLESRecorder::Terminate() {
|
int OpenSLESRecorder::Terminate() {
|
||||||
ALOGD("Terminate%s", GetThreadInfo().c_str());
|
ALOGD("Terminate[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
StopRecording();
|
StopRecording();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int OpenSLESRecorder::InitRecording() {
|
int OpenSLESRecorder::InitRecording() {
|
||||||
ALOGD("InitRecording%s", GetThreadInfo().c_str());
|
ALOGD("InitRecording[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
RTC_DCHECK(!initialized_);
|
RTC_DCHECK(!initialized_);
|
||||||
RTC_DCHECK(!recording_);
|
RTC_DCHECK(!recording_);
|
||||||
@ -107,7 +108,7 @@ int OpenSLESRecorder::InitRecording() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int OpenSLESRecorder::StartRecording() {
|
int OpenSLESRecorder::StartRecording() {
|
||||||
ALOGD("StartRecording%s", GetThreadInfo().c_str());
|
ALOGD("StartRecording[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
RTC_DCHECK(initialized_);
|
RTC_DCHECK(initialized_);
|
||||||
RTC_DCHECK(!recording_);
|
RTC_DCHECK(!recording_);
|
||||||
@ -144,7 +145,7 @@ int OpenSLESRecorder::StartRecording() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int OpenSLESRecorder::StopRecording() {
|
int OpenSLESRecorder::StopRecording() {
|
||||||
ALOGD("StopRecording%s", GetThreadInfo().c_str());
|
ALOGD("StopRecording[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
if (!initialized_ || !recording_) {
|
if (!initialized_ || !recording_) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -45,12 +45,6 @@ jobject NewGlobalRef(JNIEnv* jni, jobject o);
|
|||||||
|
|
||||||
void DeleteGlobalRef(JNIEnv* jni, jobject o);
|
void DeleteGlobalRef(JNIEnv* jni, jobject o);
|
||||||
|
|
||||||
// Return thread ID as a string.
|
|
||||||
std::string GetThreadId();
|
|
||||||
|
|
||||||
// Return thread ID as string suitable for debug logging.
|
|
||||||
std::string GetThreadInfo();
|
|
||||||
|
|
||||||
// Attach thread to JVM if necessary and detach at scope end if originally
|
// Attach thread to JVM if necessary and detach at scope end if originally
|
||||||
// attached.
|
// attached.
|
||||||
class AttachThreadScoped {
|
class AttachThreadScoped {
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "modules/utility/include/helpers_android.h"
|
#include "modules/utility/include/helpers_android.h"
|
||||||
#include "rtc_base/checks.h"
|
|
||||||
|
|
||||||
#include <android/log.h>
|
#include <android/log.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -17,6 +16,9 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "rtc_base/checks.h"
|
||||||
|
#include "rtc_base/platform_thread.h"
|
||||||
|
|
||||||
#define TAG "HelpersAndroid"
|
#define TAG "HelpersAndroid"
|
||||||
#define ALOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
|
#define ALOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
|
||||||
|
|
||||||
@ -82,19 +84,6 @@ void DeleteGlobalRef(JNIEnv* jni, jobject o) {
|
|||||||
CHECK_EXCEPTION(jni) << "Error during DeleteGlobalRef";
|
CHECK_EXCEPTION(jni) << "Error during DeleteGlobalRef";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetThreadId() {
|
|
||||||
char buf[21]; // Big enough to hold a kuint64max plus terminating NULL.
|
|
||||||
int thread_id = gettid();
|
|
||||||
RTC_CHECK_LT(snprintf(buf, sizeof(buf), "%i", thread_id),
|
|
||||||
static_cast<int>(sizeof(buf)))
|
|
||||||
<< "Thread id is bigger than uint64??";
|
|
||||||
return std::string(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string GetThreadInfo() {
|
|
||||||
return "@[tid=" + GetThreadId() + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
AttachThreadScoped::AttachThreadScoped(JavaVM* jvm)
|
AttachThreadScoped::AttachThreadScoped(JavaVM* jvm)
|
||||||
: attached_(false), jvm_(jvm), env_(NULL) {
|
: attached_(false), jvm_(jvm), env_(NULL) {
|
||||||
env_ = GetEnv(jvm);
|
env_ = GetEnv(jvm);
|
||||||
@ -102,7 +91,7 @@ AttachThreadScoped::AttachThreadScoped(JavaVM* jvm)
|
|||||||
// Adding debug log here so we can track down potential leaks and figure
|
// Adding debug log here so we can track down potential leaks and figure
|
||||||
// out why we sometimes see "Native thread exiting without having called
|
// out why we sometimes see "Native thread exiting without having called
|
||||||
// DetachCurrentThread" in logcat outputs.
|
// DetachCurrentThread" in logcat outputs.
|
||||||
ALOGD("Attaching thread to JVM%s", GetThreadInfo().c_str());
|
ALOGD("Attaching thread to JVM[tid=%d]", rtc::CurrentThreadId());
|
||||||
jint res = jvm->AttachCurrentThread(&env_, NULL);
|
jint res = jvm->AttachCurrentThread(&env_, NULL);
|
||||||
attached_ = (res == JNI_OK);
|
attached_ = (res == JNI_OK);
|
||||||
RTC_CHECK(attached_) << "AttachCurrentThread failed: " << res;
|
RTC_CHECK(attached_) << "AttachCurrentThread failed: " << res;
|
||||||
@ -111,7 +100,7 @@ AttachThreadScoped::AttachThreadScoped(JavaVM* jvm)
|
|||||||
|
|
||||||
AttachThreadScoped::~AttachThreadScoped() {
|
AttachThreadScoped::~AttachThreadScoped() {
|
||||||
if (attached_) {
|
if (attached_) {
|
||||||
ALOGD("Detaching thread from JVM%s", GetThreadInfo().c_str());
|
ALOGD("Detaching thread from JVM[tid=%d]", rtc::CurrentThreadId());
|
||||||
jint res = jvm_->DetachCurrentThread();
|
jint res = jvm_->DetachCurrentThread();
|
||||||
RTC_CHECK(res == JNI_OK) << "DetachCurrentThread failed: " << res;
|
RTC_CHECK(res == JNI_OK) << "DetachCurrentThread failed: " << res;
|
||||||
RTC_CHECK(!GetEnv(jvm_));
|
RTC_CHECK(!GetEnv(jvm_));
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "modules/utility/include/jvm_android.h"
|
#include "modules/utility/include/jvm_android.h"
|
||||||
|
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
#include "rtc_base/platform_thread.h"
|
||||||
|
|
||||||
#define TAG "JVM"
|
#define TAG "JVM"
|
||||||
#define ALOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
|
#define ALOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
|
||||||
@ -72,7 +73,7 @@ jclass LookUpClass(const char* name) {
|
|||||||
// AttachCurrentThreadIfNeeded implementation.
|
// AttachCurrentThreadIfNeeded implementation.
|
||||||
AttachCurrentThreadIfNeeded::AttachCurrentThreadIfNeeded()
|
AttachCurrentThreadIfNeeded::AttachCurrentThreadIfNeeded()
|
||||||
: attached_(false) {
|
: attached_(false) {
|
||||||
ALOGD("AttachCurrentThreadIfNeeded::ctor%s", GetThreadInfo().c_str());
|
ALOGD("AttachCurrentThreadIfNeeded::ctor[tid=%d]", rtc::CurrentThreadId());
|
||||||
JavaVM* jvm = JVM::GetInstance()->jvm();
|
JavaVM* jvm = JVM::GetInstance()->jvm();
|
||||||
RTC_CHECK(jvm);
|
RTC_CHECK(jvm);
|
||||||
JNIEnv* jni = GetEnv(jvm);
|
JNIEnv* jni = GetEnv(jvm);
|
||||||
@ -85,7 +86,7 @@ AttachCurrentThreadIfNeeded::AttachCurrentThreadIfNeeded()
|
|||||||
}
|
}
|
||||||
|
|
||||||
AttachCurrentThreadIfNeeded::~AttachCurrentThreadIfNeeded() {
|
AttachCurrentThreadIfNeeded::~AttachCurrentThreadIfNeeded() {
|
||||||
ALOGD("AttachCurrentThreadIfNeeded::dtor%s", GetThreadInfo().c_str());
|
ALOGD("AttachCurrentThreadIfNeeded::dtor[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
if (attached_) {
|
if (attached_) {
|
||||||
ALOGD("Detaching thread from JVM");
|
ALOGD("Detaching thread from JVM");
|
||||||
@ -97,11 +98,11 @@ AttachCurrentThreadIfNeeded::~AttachCurrentThreadIfNeeded() {
|
|||||||
// GlobalRef implementation.
|
// GlobalRef implementation.
|
||||||
GlobalRef::GlobalRef(JNIEnv* jni, jobject object)
|
GlobalRef::GlobalRef(JNIEnv* jni, jobject object)
|
||||||
: jni_(jni), j_object_(NewGlobalRef(jni, object)) {
|
: jni_(jni), j_object_(NewGlobalRef(jni, object)) {
|
||||||
ALOGD("GlobalRef::ctor%s", GetThreadInfo().c_str());
|
ALOGD("GlobalRef::ctor[tid=%d]", rtc::CurrentThreadId());
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalRef::~GlobalRef() {
|
GlobalRef::~GlobalRef() {
|
||||||
ALOGD("GlobalRef::dtor%s", GetThreadInfo().c_str());
|
ALOGD("GlobalRef::dtor[tid=%d]", rtc::CurrentThreadId());
|
||||||
DeleteGlobalRef(jni_, j_object_);
|
DeleteGlobalRef(jni_, j_object_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,18 +135,18 @@ void GlobalRef::CallVoidMethod(jmethodID methodID, ...) {
|
|||||||
// NativeRegistration implementation.
|
// NativeRegistration implementation.
|
||||||
NativeRegistration::NativeRegistration(JNIEnv* jni, jclass clazz)
|
NativeRegistration::NativeRegistration(JNIEnv* jni, jclass clazz)
|
||||||
: JavaClass(jni, clazz), jni_(jni) {
|
: JavaClass(jni, clazz), jni_(jni) {
|
||||||
ALOGD("NativeRegistration::ctor%s", GetThreadInfo().c_str());
|
ALOGD("NativeRegistration::ctor[tid=%d]", rtc::CurrentThreadId());
|
||||||
}
|
}
|
||||||
|
|
||||||
NativeRegistration::~NativeRegistration() {
|
NativeRegistration::~NativeRegistration() {
|
||||||
ALOGD("NativeRegistration::dtor%s", GetThreadInfo().c_str());
|
ALOGD("NativeRegistration::dtor[tid=%d]", rtc::CurrentThreadId());
|
||||||
jni_->UnregisterNatives(j_class_);
|
jni_->UnregisterNatives(j_class_);
|
||||||
CHECK_EXCEPTION(jni_) << "Error during UnregisterNatives";
|
CHECK_EXCEPTION(jni_) << "Error during UnregisterNatives";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<GlobalRef> NativeRegistration::NewObject(
|
std::unique_ptr<GlobalRef> NativeRegistration::NewObject(
|
||||||
const char* name, const char* signature, ...) {
|
const char* name, const char* signature, ...) {
|
||||||
ALOGD("NativeRegistration::NewObject%s", GetThreadInfo().c_str());
|
ALOGD("NativeRegistration::NewObject[tid=%d]", rtc::CurrentThreadId());
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, signature);
|
va_start(args, signature);
|
||||||
jobject obj = jni_->NewObjectV(j_class_,
|
jobject obj = jni_->NewObjectV(j_class_,
|
||||||
@ -185,11 +186,11 @@ jint JavaClass::CallStaticIntMethod(jmethodID methodID, ...) {
|
|||||||
|
|
||||||
// JNIEnvironment implementation.
|
// JNIEnvironment implementation.
|
||||||
JNIEnvironment::JNIEnvironment(JNIEnv* jni) : jni_(jni) {
|
JNIEnvironment::JNIEnvironment(JNIEnv* jni) : jni_(jni) {
|
||||||
ALOGD("JNIEnvironment::ctor%s", GetThreadInfo().c_str());
|
ALOGD("JNIEnvironment::ctor[tid=%d]", rtc::CurrentThreadId());
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEnvironment::~JNIEnvironment() {
|
JNIEnvironment::~JNIEnvironment() {
|
||||||
ALOGD("JNIEnvironment::dtor%s", GetThreadInfo().c_str());
|
ALOGD("JNIEnvironment::dtor[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,7 +219,7 @@ std::string JNIEnvironment::JavaToStdString(const jstring& j_string) {
|
|||||||
|
|
||||||
// static
|
// static
|
||||||
void JVM::Initialize(JavaVM* jvm) {
|
void JVM::Initialize(JavaVM* jvm) {
|
||||||
ALOGD("JVM::Initialize%s", GetThreadInfo().c_str());
|
ALOGD("JVM::Initialize[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_CHECK(!g_jvm);
|
RTC_CHECK(!g_jvm);
|
||||||
g_jvm = new JVM(jvm);
|
g_jvm = new JVM(jvm);
|
||||||
}
|
}
|
||||||
@ -236,7 +237,7 @@ void JVM::Initialize(JavaVM* jvm, jobject context) {
|
|||||||
|
|
||||||
// static
|
// static
|
||||||
void JVM::Uninitialize() {
|
void JVM::Uninitialize() {
|
||||||
ALOGD("JVM::Uninitialize%s", GetThreadInfo().c_str());
|
ALOGD("JVM::Uninitialize[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(g_jvm);
|
RTC_DCHECK(g_jvm);
|
||||||
delete g_jvm;
|
delete g_jvm;
|
||||||
g_jvm = nullptr;
|
g_jvm = nullptr;
|
||||||
@ -249,19 +250,19 @@ JVM* JVM::GetInstance() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JVM::JVM(JavaVM* jvm) : jvm_(jvm) {
|
JVM::JVM(JavaVM* jvm) : jvm_(jvm) {
|
||||||
ALOGD("JVM::JVM%s", GetThreadInfo().c_str());
|
ALOGD("JVM::JVM[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_CHECK(jni()) << "AttachCurrentThread() must be called on this thread.";
|
RTC_CHECK(jni()) << "AttachCurrentThread() must be called on this thread.";
|
||||||
LoadClasses(jni());
|
LoadClasses(jni());
|
||||||
}
|
}
|
||||||
|
|
||||||
JVM::~JVM() {
|
JVM::~JVM() {
|
||||||
ALOGD("JVM::~JVM%s", GetThreadInfo().c_str());
|
ALOGD("JVM::~JVM[tid=%d]", rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
FreeClassReferences(jni());
|
FreeClassReferences(jni());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<JNIEnvironment> JVM::environment() {
|
std::unique_ptr<JNIEnvironment> JVM::environment() {
|
||||||
ALOGD("JVM::environment%s", GetThreadInfo().c_str());
|
ALOGD("JVM::environment[tid=%d]", rtc::CurrentThreadId());
|
||||||
// The JNIEnv is used for thread-local storage. For this reason, we cannot
|
// The JNIEnv is used for thread-local storage. For this reason, we cannot
|
||||||
// share a JNIEnv between threads. If a piece of code has no other way to get
|
// share a JNIEnv between threads. If a piece of code has no other way to get
|
||||||
// its JNIEnv, we should share the JavaVM, and use GetEnv to discover the
|
// its JNIEnv, we should share the JavaVM, and use GetEnv to discover the
|
||||||
@ -276,7 +277,7 @@ std::unique_ptr<JNIEnvironment> JVM::environment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JavaClass JVM::GetClass(const char* name) {
|
JavaClass JVM::GetClass(const char* name) {
|
||||||
ALOGD("JVM::GetClass(%s)%s", name, GetThreadInfo().c_str());
|
ALOGD("JVM::GetClass(%s)[tid=%d]", name, rtc::CurrentThreadId());
|
||||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
return JavaClass(jni(), LookUpClass(name));
|
return JavaClass(jni(), LookUpClass(name));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user