server: Infrastructure for having a thread own the desktop window.
diff --git a/server/class.c b/server/class.c
index d483aef..0019e25 100644
--- a/server/class.c
+++ b/server/class.c
@@ -54,8 +54,6 @@
     char            extra_bytes[1];  /* extra bytes storage */
 };
 
-static struct window_class *desktop_class;
-
 static struct window_class *create_class( struct process *process, int extra_bytes, int local )
 {
     struct window_class *class;
@@ -75,24 +73,6 @@
     return class;
 }
 
-static struct window_class *get_desktop_class(void)
-{
-    if (!desktop_class)
-    {
-        if (!(desktop_class = mem_alloc( sizeof(*desktop_class) - 1 ))) return NULL;
-        desktop_class->process        = NULL;
-        desktop_class->count          = 0;
-        desktop_class->local          = 0;
-        desktop_class->nb_extra_bytes = 0;
-        desktop_class->atom           = DESKTOP_ATOM;
-        desktop_class->instance       = NULL;
-        desktop_class->style          = CS_DBLCLKS;
-        desktop_class->win_extra      = 0;
-        desktop_class->client_ptr     = NULL;
-    }
-    return desktop_class;
-}
-
 static void destroy_class( struct window_class *class )
 {
     list_remove( &class->entry );
@@ -121,7 +101,6 @@
         if (class->atom != atom) continue;
         if (!instance || !class->local || class->instance == instance) return class;
     }
-    if (atom == DESKTOP_ATOM) return get_desktop_class();
     return NULL;
 }
 
@@ -144,6 +123,11 @@
     class->count--;
 }
 
+int is_desktop_class( struct window_class *class )
+{
+    return (class->atom == DESKTOP_ATOM && !class->local);
+}
+
 atom_t get_class_atom( struct window_class *class )
 {
     return class->atom;
@@ -160,9 +144,6 @@
     struct window_class *class;
     struct winstation *winstation;
 
-    if (!req->local && req->atom == DESKTOP_ATOM)
-        return;  /* silently ignore attempts to create the desktop class */
-
     class = find_class( current->process, req->atom, req->instance );
     if (class && !class->local == !req->local)
     {
@@ -210,7 +191,7 @@
     else
     {
         reply->client_ptr = class->client_ptr;
-        if (class != desktop_class) destroy_class( class );
+        destroy_class( class );
     }
 }