EXI_DeviceMic: Make data members of CEXIMic private
Given they were only made public so that the callback could access class state, we can simply make the callback a private static function of CEXIMic, which allows access to members from the callback function without making all of said members public.
This commit is contained in:
parent
fcae27981a
commit
9e068ad2c4
|
@ -40,14 +40,14 @@ static void state_callback(cubeb_stream* stream, void* user_data, cubeb_state st
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static long data_callback(cubeb_stream* stream, void* user_data, const void* inputbuffer,
|
long CEXIMic::DataCallback(cubeb_stream* stream, void* user_data, const void* input_buffer,
|
||||||
void* /*outputbuffer*/, long nframes)
|
void* /*output_buffer*/, long nframes)
|
||||||
{
|
{
|
||||||
CEXIMic* mic = static_cast<CEXIMic*>(user_data);
|
CEXIMic* mic = static_cast<CEXIMic*>(user_data);
|
||||||
|
|
||||||
std::lock_guard<std::mutex> lk(mic->ring_lock);
|
std::lock_guard<std::mutex> lk(mic->ring_lock);
|
||||||
|
|
||||||
const s16* buff_in = static_cast<const s16*>(inputbuffer);
|
const s16* buff_in = static_cast<const s16*>(input_buffer);
|
||||||
for (long i = 0; i < nframes; i++)
|
for (long i = 0; i < nframes; i++)
|
||||||
{
|
{
|
||||||
mic->stream_buffer[mic->stream_wpos] = buff_in[i];
|
mic->stream_buffer[mic->stream_wpos] = buff_in[i];
|
||||||
|
@ -87,7 +87,7 @@ void CEXIMic::StreamStart()
|
||||||
|
|
||||||
if (cubeb_stream_init(m_cubeb_ctx.get(), &m_cubeb_stream, "Dolphin Emulated GameCube Microphone",
|
if (cubeb_stream_init(m_cubeb_ctx.get(), &m_cubeb_stream, "Dolphin Emulated GameCube Microphone",
|
||||||
nullptr, ¶ms, nullptr, nullptr,
|
nullptr, ¶ms, nullptr, nullptr,
|
||||||
std::max<u32>(buff_size_samples, minimum_latency), data_callback,
|
std::max<u32>(buff_size_samples, minimum_latency), DataCallback,
|
||||||
state_callback, this) != CUBEB_OK)
|
state_callback, this) != CUBEB_OK)
|
||||||
{
|
{
|
||||||
ERROR_LOG(EXPANSIONINTERFACE, "Error initializing cubeb stream");
|
ERROR_LOG(EXPANSIONINTERFACE, "Error initializing cubeb stream");
|
||||||
|
|
|
@ -60,6 +60,18 @@ private:
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static long DataCallback(cubeb_stream* stream, void* user_data, const void* input_buffer,
|
||||||
|
void* output_buffer, long nframes);
|
||||||
|
|
||||||
|
void TransferByte(u8& byte) override;
|
||||||
|
|
||||||
|
void StreamLog(const char* msg);
|
||||||
|
void StreamInit();
|
||||||
|
void StreamTerminate();
|
||||||
|
void StreamStart();
|
||||||
|
void StreamStop();
|
||||||
|
void StreamReadOne();
|
||||||
|
|
||||||
// 64 is the max size, can be 16 or 32 as well
|
// 64 is the max size, can be 16 or 32 as well
|
||||||
int ring_pos;
|
int ring_pos;
|
||||||
u8 ring_buffer[64 * sample_size];
|
u8 ring_buffer[64 * sample_size];
|
||||||
|
@ -73,14 +85,6 @@ private:
|
||||||
std::shared_ptr<cubeb> m_cubeb_ctx = nullptr;
|
std::shared_ptr<cubeb> m_cubeb_ctx = nullptr;
|
||||||
cubeb_stream* m_cubeb_stream = nullptr;
|
cubeb_stream* m_cubeb_stream = nullptr;
|
||||||
|
|
||||||
void StreamLog(const char* msg);
|
|
||||||
void StreamInit();
|
|
||||||
void StreamTerminate();
|
|
||||||
void StreamStart();
|
|
||||||
void StreamStop();
|
|
||||||
void StreamReadOne();
|
|
||||||
|
|
||||||
public:
|
|
||||||
UStatus status;
|
UStatus status;
|
||||||
|
|
||||||
std::mutex ring_lock;
|
std::mutex ring_lock;
|
||||||
|
@ -97,8 +101,5 @@ public:
|
||||||
int stream_wpos;
|
int stream_wpos;
|
||||||
int stream_rpos;
|
int stream_rpos;
|
||||||
int samples_avail;
|
int samples_avail;
|
||||||
|
|
||||||
protected:
|
|
||||||
void TransferByte(u8& byte) override;
|
|
||||||
};
|
};
|
||||||
} // namespace ExpansionInterface
|
} // namespace ExpansionInterface
|
||||||
|
|
Loading…
Reference in New Issue