+#define SPI_REGISTRY_TYPE (spi_registry_get_type ())
+#define SPI_REGISTRY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SPI_REGISTRY_TYPE, SpiRegistry))
+#define SPI_REGISTRY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SPI_REGISTRY_TYPE, SpiRegistryClass))
+#define SPI_IS_REGISTRY(o) (G_TYPE_CHECK__INSTANCE_TYPE ((o), SPI_REGISTRY_TYPE))
+#define SPI_IS_REGISTRY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SPI_REGISTRY_TYPE))
+
+struct _SpiRegistry {
+ GObject parent;
+
+ GList *object_listeners;
+ GList *window_listeners;
+ GList *toolkit_listeners;
+ GQueue *deferred_event_queue;
+ gboolean is_queueing;
+ guint exit_notify_timeout;
+ guint queue_handler_id;
+ char *focus_object_bus;
+ char *focus_object_path;
+ SpiDEController *de_controller;
+ SpiDesktop *desktop;
+ DRouteData droute;
+};