polybar-dwm/include/adapters/alsa/mixer.hpp
2016-12-14 15:04:10 +01:00

47 lines
861 B
C++

#pragma once
#include <mutex>
#include "common.hpp"
// fwd
struct _snd_mixer;
struct _snd_mixer_elem;
struct _snd_mixer_selem_id;
typedef struct _snd_mixer snd_mixer_t;
typedef struct _snd_mixer_elem snd_mixer_elem_t;
typedef struct _snd_mixer_selem_id snd_mixer_selem_id_t;
POLYBAR_NS
namespace alsa {
class mixer {
public:
explicit mixer(string&& mixer_selem_name);
~mixer();
const string& get_name();
bool wait(int timeout = -1);
int process_events();
int get_volume();
int get_normalized_volume();
void set_volume(float percentage);
void set_normalized_volume(float percentage);
void set_mute(bool mode);
void toggle_mute();
bool is_muted();
private:
std::mutex m_lock;
snd_mixer_t* m_mixer{nullptr};
snd_mixer_elem_t* m_elem{nullptr};
string m_name;
};
}
POLYBAR_NS_END