Index: uspace/lib/display/src/disp_srv.c
===================================================================
--- uspace/lib/display/src/disp_srv.c	(revision b3c185b62f0fa507e9d72bce104161ccdb4b3d57)
+++ uspace/lib/display/src/disp_srv.c	(revision e422ff67bc3bc55a2253d0ddb4c3e0ac0c052b65)
@@ -40,4 +40,5 @@
 #include <io/log.h>
 #include <ipc/display.h>
+#include <mem.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -169,4 +170,19 @@
 		}
 	}
+
+	/* Hang up callback session */
+	if (srv->client_sess != NULL) {
+		async_hangup(srv->client_sess);
+		srv->client_sess = NULL;
+	}
+}
+
+/** Initialize display server structure
+ *
+ * @param srv Display server structure to initialize
+ */
+void display_srv_initialize(display_srv_t *srv)
+{
+	memset(srv, 0, sizeof(*srv));
 }
 
Index: uspace/lib/display/src/display.c
===================================================================
--- uspace/lib/display/src/display.c	(revision b3c185b62f0fa507e9d72bce104161ccdb4b3d57)
+++ uspace/lib/display/src/display.c	(revision e422ff67bc3bc55a2253d0ddb4c3e0ac0c052b65)
@@ -29,4 +29,5 @@
 #include <async.h>
 #include <display.h>
+#include <display/event.h>
 #include <errno.h>
 #include <fibril_synch.h>
@@ -57,4 +58,6 @@
 		return ENOMEM;
 
+	fibril_mutex_initialize(&display->lock);
+	fibril_condvar_initialize(&display->cv);
 	list_initialize(&display->windows);
 
