#include <glib.h>
typedef struct _PipeWireSource
{
GSource base;
} PipeWireSource;
static gboolean
pipewire_loop_source_dispatch (GSource *source,
GSourceFunc callback,
gpointer user_data)
{
PipeWireSource *s = (PipeWireSource *) source;
int result;
if (result < 0)
g_warning (
"pipewire_loop_iterate failed: %s",
spa_strerror (result));
return TRUE;
}
static GSourceFuncs pipewire_source_funcs =
{
.dispatch = pipewire_loop_source_dispatch,
};
static void registry_event_global(void *data, uint32_t id,
uint32_t permissions, const char *type, uint32_t version,
{
printf("object: id:%u type:%s/%d\n", id, type, version);
}
.global = registry_event_global,
};
int main(int argc, char *argv[])
{
GMainLoop *main_loop;
PipeWireSource *source;
main_loop = g_main_loop_new (NULL, FALSE);
source = (PipeWireSource *) g_source_new (&pipewire_source_funcs,
sizeof (PipeWireSource));
source->loop = loop;
g_source_add_unix_fd (&source->base,
G_IO_IN | G_IO_ERR);
g_source_attach (&source->base, NULL);
g_source_unref (&source->base);
NULL ,
0 );
NULL ,
0 );
0 );
®istry_events, NULL);
g_main_loop_run(main_loop);
g_main_loop_unref(main_loop);
return 0;
}