#include "linux-exts.h"
#include "vm.h"
-#include <linux/vmalloc.h>
/*
DEBUG("palacios: allocating %u bytes for %u by %u by %u buffer\n",
mem, desired_spec->width, desired_spec->height, desired_spec->bytes_per_pixel);
- gc->data = vmalloc(mem);
+ gc->data = palacios_valloc(mem);
if (!(gc->data)) {
ERROR("palacios: unable to allocate memory for frame buffer\n");
return;
}
if (gc->data) {
- vfree(gc->data);
+ palacios_vfree(gc->data);
gc->data=0;
}
}
static int palacios_graphics_console_mouse(struct v3_guest * guest,
struct palacios_graphics_console *cons,
- uint8_t x, uint8_t y, uint8_t buttons)
+ uint8_t sx, uint8_t dx,
+ uint8_t sy, uint8_t dy,
+ uint8_t buttons)
{
- /*
+
struct v3_mouse_event e;
- e.data[0]=x;
- e.data[1]=y;
- e.data[2]=buttons; // These three are completely wrong, of course - ignoring mouse for now
- */
- // mouse delivery is broken, so don't do it.
- // v3_deliver_mouse_event(guest->v3_ctx,&e);
+
+ e.sx=sx;
+ e.dx=dx;
+ e.sy=sy;
+ e.dy=dy;
+ e.buttons=buttons;
+
+ v3_deliver_mouse_event(guest->v3_ctx,&e);
return 0;
}
list_del(&(gc->gcons_node));
if (gc->data)
- vfree(gc->data);
+ palacios_vfree(gc->data);
palacios_free(gc);
}
}
if ((inp.data_type == V3_FB_MOUSE) || (inp.data_type == V3_FB_BOTH)) {
- rc |= palacios_graphics_console_mouse(guest, cons, inp.mouse_data[0],
- inp.mouse_data[1], inp.mouse_data[2]);
+ rc |= palacios_graphics_console_mouse(guest, cons, inp.sx, inp.dx, inp.sy, inp.dy, inp.buttons);
//DEBUG("palacios: mouse delivered to palacios\n");
}
list_del(&(graphics_cons->gcons_node));
+ remove_guest_ctrl(guest, V3_VM_FB_INPUT);
+ remove_guest_ctrl(guest, V3_VM_FB_QUERY);
+
if (graphics_cons->data) {
- vfree(graphics_cons->data);
+ palacios_vfree(graphics_cons->data);
}
+
palacios_free(graphics_cons);
return 0;