mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-22 05:27:20 +00:00
[client] audio: allow microphone recording to be toggled after dialog
This commit is contained in:
parent
146d9a2a53
commit
7e8849180d
@ -118,12 +118,16 @@ typedef struct
|
|||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
bool requested;
|
||||||
bool started;
|
bool started;
|
||||||
int volumeChannels;
|
int volumeChannels;
|
||||||
uint16_t volume[8];
|
uint16_t volume[8];
|
||||||
bool mute;
|
bool mute;
|
||||||
int stride;
|
int stride;
|
||||||
uint32_t time;
|
uint32_t time;
|
||||||
|
int lastChannels;
|
||||||
|
int lastSampleRate;
|
||||||
|
PSAudioFormat lastFormat;
|
||||||
MsgBoxHandle confirmHandle;
|
MsgBoxHandle confirmHandle;
|
||||||
int confirmChannels;
|
int confirmChannels;
|
||||||
int confirmSampleRate;
|
int confirmSampleRate;
|
||||||
@ -803,8 +807,10 @@ void audio_recordStart(int channels, int sampleRate, PSAudioFormat format)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastChannels = channels;
|
audio.record.requested = true;
|
||||||
lastSampleRate = sampleRate;
|
audio.record.lastChannels = channels;
|
||||||
|
audio.record.lastSampleRate = sampleRate;
|
||||||
|
audio.record.lastFormat = format;
|
||||||
|
|
||||||
if (audio.record.started)
|
if (audio.record.started)
|
||||||
realRecordStart(channels, sampleRate, format);
|
realRecordStart(channels, sampleRate, format);
|
||||||
@ -830,12 +836,8 @@ void audio_recordStart(int channels, int sampleRate, PSAudioFormat format)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_recordStop(void)
|
static void realRecordStop(void)
|
||||||
{
|
{
|
||||||
if (!audio.audioDev || !audio.record.started)
|
|
||||||
return;
|
|
||||||
|
|
||||||
DEBUG_INFO("Microphone recording stopped");
|
|
||||||
audio.audioDev->record.stop();
|
audio.audioDev->record.stop();
|
||||||
audio.record.started = false;
|
audio.record.started = false;
|
||||||
|
|
||||||
@ -843,6 +845,43 @@ void audio_recordStop(void)
|
|||||||
app_showRecord(false);
|
app_showRecord(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void audio_recordStop(void)
|
||||||
|
{
|
||||||
|
audio.record.requested = false;
|
||||||
|
if (!audio.audioDev || !audio.record.started)
|
||||||
|
return;
|
||||||
|
|
||||||
|
DEBUG_INFO("Microphone recording stopped");
|
||||||
|
realRecordStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
void audio_recordToggleKeybind(int sc, void * opaque)
|
||||||
|
{
|
||||||
|
if (!audio.audioDev)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!audio.record.requested)
|
||||||
|
{
|
||||||
|
app_alert(LG_ALERT_WARNING,
|
||||||
|
"No application is requesting microphone access.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (audio.record.started)
|
||||||
|
{
|
||||||
|
app_alert(LG_ALERT_INFO, "Microphone disabled");
|
||||||
|
DEBUG_INFO("Microphone recording stopped by user");
|
||||||
|
realRecordStop();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
app_alert(LG_ALERT_INFO, "Microphone enabled");
|
||||||
|
DEBUG_INFO("Microphone recording started by user");
|
||||||
|
realRecordStart(audio.record.lastChannels, audio.record.lastSampleRate,
|
||||||
|
audio.record.lastFormat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void audio_recordVolume(int channels, const uint16_t volume[])
|
void audio_recordVolume(int channels, const uint16_t volume[])
|
||||||
{
|
{
|
||||||
if (!audio.audioDev || !audio.audioDev->record.volume)
|
if (!audio.audioDev || !audio.audioDev->record.volume)
|
||||||
|
@ -36,6 +36,7 @@ void audio_playbackData(uint8_t * data, size_t size);
|
|||||||
|
|
||||||
bool audio_supportsRecord(void);
|
bool audio_supportsRecord(void);
|
||||||
void audio_recordStart(int channels, int sampleRate, PSAudioFormat format);
|
void audio_recordStart(int channels, int sampleRate, PSAudioFormat format);
|
||||||
|
void audio_recordToggleKeybind(int sc, void * opaque);
|
||||||
void audio_recordStop(void);
|
void audio_recordStop(void);
|
||||||
void audio_recordVolume(int channels, const uint16_t volume[]);
|
void audio_recordVolume(int channels, const uint16_t volume[]);
|
||||||
void audio_recordMute(bool mute);
|
void audio_recordMute(bool mute);
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
|
#include "audio.h"
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
#include "kb.h"
|
#include "kb.h"
|
||||||
|
|
||||||
@ -174,6 +175,13 @@ void keybind_spiceRegister(void)
|
|||||||
app_releaseKeybind(&handles[i]);
|
app_releaseKeybind(&handles[i]);
|
||||||
handleCount = 0;
|
handleCount = 0;
|
||||||
|
|
||||||
|
#if ENABLE_AUDIO
|
||||||
|
if (audio_supportsRecord())
|
||||||
|
{
|
||||||
|
app_registerKeybind(KEY_E, audio_recordToggleKeybind, NULL,
|
||||||
|
"Toggle audio recording");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* register OS based keybinds */
|
/* register OS based keybinds */
|
||||||
if (app_guestIsLinux())
|
if (app_guestIsLinux())
|
||||||
|
Loading…
Reference in New Issue
Block a user