X-Git-Url: http://git.squeep.com/?p=dcpu16;a=blobdiff_plain;f=vm-dcpu16.c;fp=vm-dcpu16.c;h=a6dc67dac2ca2f2212eac09ffe2836e46e913fc1;hp=b8a35327b0721bc75961fa86a3746ac227b7a3e5;hb=94be117719b907e351bb2bf1096f6195daecd2aa;hpb=8b552fe61db48874f043bccfb589e5444509444c diff --git a/vm-dcpu16.c b/vm-dcpu16.c index b8a3532..a6dc67d 100644 --- a/vm-dcpu16.c +++ b/vm-dcpu16.c @@ -564,18 +564,19 @@ COMMAND_IMPL(display) { return 0; } - lem1802_vnc_associate(hw, s->screen); + if (dcpu16_hw_ctl(hw, "associate_rfbScreen", s->screen, NULL)) { + fprintf(stderr, "failed to configure display/vnc"); + dcpu16_hw_del(&hw); + return 0; + } s->attached_display = hw; rfbScreen_start(s->screen); renderer_data = s->screen; } #endif /* HAVE_LIBVNCSERVER */ - if (lem1802_renderer_set(hw, renderer, renderer_data)) { - fprintf(stderr, "failed to set back-end renderer for display\n"); - dcpu16_hw_del(&hw); - return 0; - } + dcpu16_hw_ctl(hw, "renderer", (char *)renderer, NULL); + dcpu16_hw_ctl(hw, "renderer_data", renderer_data, NULL); if (dcpu16_hw_attach(vm, hw)) { fprintf(stderr, "failed to attach new display\n"); @@ -586,6 +587,11 @@ COMMAND_IMPL(display) { return 0; } COMMAND_HELP(display) { + struct renderer_ { + char *name; + char *args; + int (*renderer)(void *, void *, size_t, size_t); + } *r; char *name, *args; void *iter; @@ -596,6 +602,16 @@ COMMAND_HELP(display) { ); fprintf(f, "Supported renderers:\n"); + + if (dcpu16_hw_module_lem1802.ctl(NULL, "get_renderers", NULL, &r)) { + fprintf(stderr, "error fetching list of renderers\n"); + return; + } + + while (r->name) { + fprintf(f, "name:%s args:%s\n", r->name, r->args); + } + iter = NULL; while ( (lem1802_renderers_iter(&iter, &name, &args)) ) { fprintf(f, "\t%s %s\n", name, args); @@ -624,7 +640,11 @@ COMMAND_IMPL(keyboard) { dcpu16_hw_del(&hw); return 0; } - keyboard_vnc_associate(hw, s->screen); + if (dcpu16_hw_ctl(hw, "associate_rfbScreen", s->screen, NULL)) { + fprintf(stderr, "failed to configure keyboard/vnc\n"); + dcpu16_hw_del(&hw); + return 0; + } s->attached_keyboard = hw; if (dcpu16_hw_attach(vm, hw)) {