Beginnings of support for window stations and desktops.

diff --git a/server/thread.c b/server/thread.c
index 2d7a61b..9d69bf1 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -137,6 +137,7 @@
     thread->priority        = THREAD_PRIORITY_NORMAL;
     thread->affinity        = 1;
     thread->suspend         = 0;
+    thread->desktop         = 0;
     thread->creation_time   = time(NULL);
     thread->exit_time       = 0;
 
@@ -213,6 +214,7 @@
     free_msg_queue( thread );
     cleanup_clipboard_thread(thread);
     destroy_thread_windows( thread );
+    close_thread_desktop( thread );
     for (i = 0; i < MAX_INFLIGHT_FDS; i++)
     {
         if (thread->inflight[i].client != -1)
@@ -226,6 +228,7 @@
     thread->request_fd = NULL;
     thread->reply_fd = NULL;
     thread->wait_fd = NULL;
+    thread->desktop = 0;
 
     if (thread == booting_thread)  /* killing booting thread */
     {
@@ -831,6 +834,7 @@
     if ((thread = create_thread( request_fd, current->process )))
     {
         if (req->suspend) thread->suspend++;
+        thread->desktop = current->desktop;
         reply->tid = get_thread_id( thread );
         if ((reply->handle = alloc_handle( current->process, thread,
                                            THREAD_ALL_ACCESS, req->inherit )))