polybar-dwm/include/adapters/alsa/mixer.hpp

50 lines
947 B
C++
Raw Normal View History

#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:
2016-12-14 14:04:10 +00:00
explicit mixer(string&& mixer_selem_name);
~mixer();
2016-12-15 02:30:41 +00:00
mixer(const mixer& o) = delete;
mixer& operator=(const mixer& o) = delete;
2016-12-14 14:04:10 +00:00
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:
2016-12-15 02:30:41 +00:00
std::mutex m_lock{};
2016-12-14 14:04:10 +00:00
snd_mixer_t* m_mixer{nullptr};
snd_mixer_elem_t* m_elem{nullptr};
2016-12-14 14:04:10 +00:00
string m_name;
};
}
POLYBAR_NS_END