While libpulse provides different event loop implementations, these bindings focus on the GLib comaptibility only. +
While libpulse provides different event loop implementations, these bindings focus on the GLib comaptibility only. Therefore, all asynchronous functions need to be executed inside a running GLib Main Loop. For now, this loop has to run on GLib’s default main context. Custom loop contexts are currently not supported.
@@ -40,8 +40,32 @@ first parameter, usually just the error message as string, ornil
w
may either be just a boolean, for operations that don’t return data, or the actual queried data.
All numeric indices (such as sink or source indices) are adjusted to be 1-based in typical Lua fashion.
-This means that when comparing the output of calls like Context:get_sinks to the output of tools like pactl
,
+This means that when comparing the output of calls like Context:get_sinks to the output of tools like pactl
,
indices will be off by one.
local lgi = require("lgi")
+local pulseaudio = require("lua_libpulse_glib")
+local ppretty = require("pl.pretty")
+
+local pa = pulseaudio.new()
+local ctx = pa:context()
+
+local loop = lgi.GLib.MainLoop.new()
+
+ctx:connect(nil, function(state)
+ if state == 4 then
+ print("Connection is ready")
+
+ ctx:get_sinks(function(sinks)
+ ppretty.dump(sinks)
+ loop:quit()
+ end)
+ end
+end)
+
+loop:run()
+
+