Index: uspace/srv/hid/rfb/main.c
===================================================================
--- uspace/srv/hid/rfb/main.c	(revision 0b63dc2113d59db4ebb4bb8aa8ed9adeb8235809)
+++ uspace/srv/hid/rfb/main.c	(revision e1f2079eea6e0ce553d66ced5b7ca0b64e0b4929)
@@ -27,4 +27,5 @@
  */
 
+#include <ddev/info.h>
 #include <ddev_srv.h>
 #include <errno.h>
@@ -46,4 +47,7 @@
 #define NAME "rfb"
 
+static errno_t rfb_ddev_get_gc(void *, sysarg_t *, sysarg_t *);
+static errno_t rfb_ddev_get_info(void *, ddev_info_t *);
+
 static errno_t rfb_gc_set_color(void *, gfx_color_t *);
 static errno_t rfb_gc_fill_rect(void *, gfx_rect_t *);
@@ -55,4 +59,6 @@
 
 static ddev_ops_t rfb_ddev_ops = {
+	.get_gc = rfb_ddev_get_gc,
+	.get_info = rfb_ddev_get_info
 };
 
@@ -103,4 +109,25 @@
 	rfb->damage_rect.width = new_rect.p1.x - new_rect.p0.x;
 	rfb->damage_rect.height = new_rect.p1.y - new_rect.p1.y;
+}
+
+static errno_t rfb_ddev_get_gc(void *arg, sysarg_t *arg2, sysarg_t *arg3)
+{
+	*arg2 = 0;
+	*arg3 = 42;
+	return EOK;
+}
+
+static errno_t rfb_ddev_get_info(void *arg, ddev_info_t *info)
+{
+	rfb_t *rfb = (rfb_t *) arg;
+
+	ddev_info_init(info);
+
+	info->rect.p0.x = 0;
+	info->rect.p0.y = 0;
+	info->rect.p1.x = rfb->width;
+	info->rect.p1.y = rfb->height;
+
+	return EOK;
 }
 
@@ -284,4 +311,5 @@
 static void client_connection(ipc_call_t *icall, void *arg)
 {
+	rfb_t *rfb = (rfb_t *) arg;
 	ddev_srv_t srv;
 	sysarg_t svc_id;
@@ -295,10 +323,10 @@
 		ddev_srv_initialize(&srv);
 		srv.ops = &rfb_ddev_ops;
-		srv.arg = arg;
+		srv.arg = (void *) rfb;
 
 		/* Handle connection */
 		ddev_conn(icall, &srv);
 	} else {
-		rc = gfx_context_new(&rfb_gc_ops, arg, &gc);
+		rc = gfx_context_new(&rfb_gc_ops, (void *) rfb, &gc);
 		if (rc != EOK) {
 			async_answer_0(icall, ENOMEM);
