Move example compositor to subdirectory
diff --git a/.gitignore b/.gitignore
index bebff81..435df93 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,6 @@
 *.o
 *.so
 *.pc
-compositor
 *.jpg
 *~
 aclocal.m4
diff --git a/Makefile b/Makefile
index 0746855..199914d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,9 @@
 include config.mk
 
-subdirs = clients spec data
+subdirs = compositor clients spec data
 libs = libwayland-server.so libwayland-client.so
 
-all : $(libs) compositor subdirs-all scanner
+all : $(libs) subdirs-all scanner
 
 headers =					\
 	wayland-util.h				\
@@ -44,16 +44,6 @@
 $(libs) :
 	gcc -shared $^ $(LDLIBS)  -o $@
 
-compositor :					\
-	compositor.o				\
-	compositor-drm.o			\
-	compositor-x11.o			\
-	screenshooter.o				\
-	drm.o
-
-compositor : CFLAGS += $(COMPOSITOR_CFLAGS)
-compositor : LDLIBS += ./libwayland-server.so $(COMPOSITOR_LIBS) -rdynamic -lrt -lEGL -lm
-
 scanner :					\
 	scanner.o				\
 	wayland-util.o
@@ -71,7 +61,7 @@
 	install 70-wayland.rules ${udev_rules_dir}
 
 clean : subdirs-clean
-	rm -f compositor scanner *.o *.so .*.deps
+	rm -f scanner *.o *.so .*.deps
 	rm -f wayland-protocol.c \
 		wayland-server-protocol.h wayland-client-protocol.h
 
diff --git a/TODO b/TODO
index 6048887..448a1b2 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,17 @@
 Core wayland protocol
 
+ - surface.set_grab_mode(GRAB_OWNER_EVENTS vs GRAB_SURFACE_EVENTS), to
+   make menus work right: click and drag in a menubar grabs the
+   pointer to the menubar (which we need for detecting motion into
+   another menu item), but we need events for the popup menu surface
+   as well.
+
+ - input_device.attach() should use a timestamp so the server can
+   discard late requests (sending a request to set the pointer image
+   in response to a motion event, the pointer leaves and then reenters
+   the surface, before the server receives the reqest -> the server
+   must discard it).
+
  - The message format has to include information about number of fds
    in the message so we can skip a message correctly.  Or we should
    just give up on trying to recover from unknown messages.
diff --git a/compositor/Makefile b/compositor/Makefile
new file mode 100644
index 0000000..5e67825
--- /dev/null
+++ b/compositor/Makefile
@@ -0,0 +1,18 @@
+include ../config.mk
+
+CFLAGS += $(COMPOSITOR_CFLAGS)
+LDLIBS += -L.. -lwayland-server $(COMPOSITOR_LIBS) -rdynamic -lrt -lEGL -lm
+
+all : compositor
+
+compositor :					\
+	compositor.o				\
+	compositor-drm.o			\
+	compositor-x11.o			\
+	screenshooter.o				\
+	drm.o
+
+clean :
+	rm -f compositor *.o .*.deps
+
+install :
\ No newline at end of file
diff --git a/compositor-drm.c b/compositor/compositor-drm.c
similarity index 100%
rename from compositor-drm.c
rename to compositor/compositor-drm.c
diff --git a/compositor-x11.c b/compositor/compositor-x11.c
similarity index 100%
rename from compositor-x11.c
rename to compositor/compositor-x11.c
diff --git a/compositor.c b/compositor/compositor.c
similarity index 100%
rename from compositor.c
rename to compositor/compositor.c
diff --git a/compositor.h b/compositor/compositor.h
similarity index 100%
rename from compositor.h
rename to compositor/compositor.h
diff --git a/drm.c b/compositor/drm.c
similarity index 100%
rename from drm.c
rename to compositor/drm.c
diff --git a/screenshooter.c b/compositor/screenshooter.c
similarity index 100%
rename from screenshooter.c
rename to compositor/screenshooter.c