Drop  wl_display_set_compositor() special case
diff --git a/compositor.c b/compositor.c
index a805f8c..8bf6485 100644
--- a/compositor.c
+++ b/compositor.c
@@ -1376,7 +1376,13 @@
 
 	ec->wl_display = display;
 
-	wl_display_set_compositor(display, &ec->base, &compositor_interface); 
+	ec->base.base.interface = &wl_compositor_interface;
+	ec->base.base.implementation =
+		(void (**)(void)) &compositor_interface;
+
+	wl_display_add_object(display, &ec->base.base);
+	if (wl_display_add_global(display, &ec->base.base, NULL))
+		return -1;
 
 	ec->shell.base.interface = &wl_shell_interface;
 	ec->shell.base.implementation = (void (**)(void)) &shell_interface;