]> git.seodisparate.com - MeterForPulseAudio/commitdiff
Fixes using pulseaudio API
authorStephen Seo <seo.disparate@gmail.com>
Sun, 17 Jun 2018 03:13:09 +0000 (12:13 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Sun, 17 Jun 2018 03:13:09 +0000 (12:13 +0900)
Possibly remove Mutex since non-threaded PA mainloop is used.

src/MfPA/Meter.cpp
src/MfPA/Meter.hpp

index d802e253269b7f2e256b5b73294c91e7713cd937..520e11086441a96798ba1ac026e346db4a8bb632 100644 (file)
@@ -10,12 +10,16 @@ MfPA::Meter::Meter(const char* sinkOrSourceName, bool isSink) :
 currentState(WAITING),
 isMonitoringSink(isSink),
 sinkOrSourceName(sinkOrSourceName),
+mainLoop(nullptr),
+context(nullptr),
 stream(nullptr),
 runFlag(true)
 {
     setenv("PULSE_PROP_application.name", "Meter for PulseAudio", 1);
     setenv("PULSE_PROP_application.icon_name", "multimedia-volume-control", 1);
 
+    mainLoop = pa_mainloop_new();
+    pa_context_new(pa_mainloop_get_api(mainLoop), "Meter for PulseAudio");
     pa_context_set_state_callback(
         context,
         MfPA::Meter::get_context_callback,
@@ -30,6 +34,17 @@ MfPA::Meter::~Meter()
         pa_stream_disconnect(stream);
         pa_stream_unref(stream);
     }
+
+    if(context)
+    {
+        pa_context_disconnect(context);
+        pa_context_unref(context);
+    }
+
+    if(mainLoop)
+    {
+        pa_mainloop_free(mainLoop);
+    }
 }
 
 void MfPA::Meter::get_context_callback(pa_context* c, void* userdata)
@@ -231,6 +246,7 @@ void MfPA::Meter::startMainLoop()
 
 void MfPA::Meter::update(float dt)
 {
+    pa_mainloop_iterate(mainLoop, 0, nullptr);
     if(currentState == TERMINATED || currentState == FAILED)
     {
         runFlag = false;
index 5c71152054d881eac308f8424e7819c25dae3bfc..ce89a059bb566d1b3922542653fefd1157ee2289 100644 (file)
@@ -60,6 +60,7 @@ private:
     bool isMonitoringSink;
     const char* sinkOrSourceName;
 
+    pa_mainloop* mainLoop;
     pa_context* context;
     pa_stream* stream;