- if (dcpu16_acct_add(vm, DCPU16_ACCT_EV_WRITE, display_fn, display)) {
- fprintf(stderr, "failed to register display update callback\n");
- return 0;
+#ifdef HAVE_LIBPNG
+ if (strcmp(renderer, "png") == 0) {
+ if (renderer_arg == NULL)
+ renderer_arg = display_filename_default_;
+ renderer_data = (void *)renderer_arg;
+ }
+#endif /* HAVE_LIBPNG */
+
+#ifdef HAVE_LIBVNCSERVER
+ if (strcmp(renderer, "vnc") == 0) {
+ int argc = 1;
+ char *argv[] = { "vm-dcpu16", NULL };
+
+ renderer_data = lem1802_vnc_init_data(argc, argv, hw);
+
+ /* FIXME: keep refs to vnc displays around somewhere, in global list maybe.. */
+ /* keyboards will want to attach to them as well.. */
+
+ if (renderer_data == NULL) {
+ fprintf(stderr, "failed to initialize vnc\n");
+ lem1802_del(&hw);
+ return 0;
+ }