Moved poll handling to the generic part of the server objects.
Fixed busy waiting on POLLERR events.
Merged struct client into struct thread.

diff --git a/server/change.c b/server/change.c
index 50f193e..8347651 100644
--- a/server/change.c
+++ b/server/change.c
@@ -27,24 +27,26 @@
 
 static const struct object_ops change_ops =
 {
-    sizeof(struct change),
-    change_dump,
-    add_queue,
-    remove_queue,
-    change_signaled,
-    no_satisfied,
-    no_read_fd,
-    no_write_fd,
-    no_flush,
-    no_get_file_info,
-    no_destroy
+    sizeof(struct change),    /* size */
+    change_dump,              /* dump */
+    add_queue,                /* add_queue */
+    remove_queue,             /* remove_queue */
+    change_signaled,          /* signaled */
+    no_satisfied,             /* satisfied */
+    NULL,                     /* get_poll_events */
+    NULL,                     /* poll_event */
+    no_read_fd,               /* get_read_fd */
+    no_write_fd,              /* get_write_fd */
+    no_flush,                 /* flush */
+    no_get_file_info,         /* get_file_info */
+    no_destroy                /* destroy */
 };
 
 
 static struct change *create_change_notification( int subtree, int filter )
 {
     struct change *change;
-    if ((change = alloc_object( &change_ops )))
+    if ((change = alloc_object( &change_ops, -1 )))
     {
         change->subtree = subtree;
         change->filter  = filter;