+struct x_source {
+ GSource source;
+
+ GPollFD pfd;
+};
+
+static GSourceFuncs x_source_funcs = {
+ x_source_prepare,
+ x_source_check,
+ event_read,
+ NULL
+};
+
+void xqueue_listen(void)
+{
+ GSource *source = g_source_new(&x_source_funcs, sizeof(struct x_source));
+ struct x_source *x_source = (struct x_source *)source;
+ GPollFD *pfd = &x_source->pfd;