That sounds really good, but I haven't had the time yet to delve deeply into the implementation to verify those issues. And I think the same applies to others...
Anyway, I'll comment on the things I can now:
void enableStereoRecording(bool isStereo);
unsigned int getChannelCount() const;
Why this asymmetry? If there will ever be support for more than 2 channels, it would make sense to specify that right ahead instead of deprecating enableStereoRecording() later. You could also store the channel count instead of a bool.
And no function in SFML starts with "enable", you should use "set".
Regarding setDevice() during playing: you know my opinion regarding implicit fallbacks and other error-hiding mechanisms. Unfortunately, this is a problem inherent to SFML's lack of a defined error handling strategy. However, I would really like to discuss this problem at the root and not implement differently-behaved patches throughout the library, only to change every single one of them again later.
Sorry for the long absence. I know it's bad to first be pushy and then don't get back at all myself, but I started a new job and had some pretty big things going on in my personal life, so I literally had no time at all.
I will split the code into seperate pull request. One for stereo recording and one for the pure virtual function call exeption. The other change is not wanted as I understand it, eventhough I still think it would make setDevice() a lot more useable and friendly to use!
As for your comment. I think it's highly unlikely that we will support more that recording 2 channels, because OpenAL doesn't, but I can change the interface to this:void setChannelCount(unsigned int channelCount);
unsigned int getChannelCount() const;
But what should I do if the user sets a channelCount > 2 ? Fallback to 2? Return an error?
I will try to send the pull requests soonTM
As for your comment. I think it's highly unlikely that we will support more that recording 2 channels, because OpenAL doesn't, but I can change the interface to this:void setChannelCount(unsigned int channelCount);
unsigned int getChannelCount() const;
But what should I do if the user sets a channelCount > 2 ? Fallback to 2? Return an error?
I find that using an unsigned int is a bit misleading for something that only has two possible values.
Like:
void setStereoSoundEnabled(bool enabled);
bool isStereoSoundEnabled() const;
Or:
enum class RecordingMode
{
MONO,
STEREO
};
void setRecordingMode(RecordingMode recording_mode);
RecordingMode getRecordingMode();