*
* This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory.
+ *
+ * TODO:
+ *
+ * - Enable SSL
+ * - Manage SetOptions/ResetOptions commands
*/
#include "qemu/osdep.h"
#include "qom/object_interfaces.h"
#include "io/channel-socket.h"
#include "ui/input.h"
+#include "qom/object.h"
#include "ui/vnc_keysym.h" /* use name2keysym from VNC as we use X11 values */
#include "qemu/cutils.h"
#include "qapi/qmp/qerror.h"
#include "input-barrier.h"
#define TYPE_INPUT_BARRIER "input-barrier"
-#define INPUT_BARRIER(obj) \
- OBJECT_CHECK(InputBarrier, (obj), TYPE_INPUT_BARRIER)
-#define INPUT_BARRIER_GET_CLASS(obj) \
- OBJECT_GET_CLASS(InputBarrierClass, (obj), TYPE_INPUT_BARRIER)
-#define INPUT_BARRIER_CLASS(klass) \
- OBJECT_CLASS_CHECK(InputBarrierClass, (klass), TYPE_INPUT_BARRIER)
+OBJECT_DECLARE_SIMPLE_TYPE(InputBarrier,
+ INPUT_BARRIER)
-typedef struct InputBarrier InputBarrier;
-typedef struct InputBarrierClass InputBarrierClass;
#define MAX_HELLO_LENGTH 1024
char buffer[MAX_HELLO_LENGTH];
};
-struct InputBarrierClass {
- ObjectClass parent_class;
-};
static const char *cmd_names[] = {
[barrierCmdCNoop] = "CNOP",
break;
default:
write_cmd(p, barrierCmdEUnknown, avail);
- break;;
+ break;
}
len = MAX_HELLO_LENGTH - avail - sizeof(int);
{
InputBarrier *ib = INPUT_BARRIER(obj);
+ /* always use generic keymaps */
+ if (keyboard_layout && !kbd_layout) {
+ /* We use X11 key id, so use VNC name2keysym */
+ kbd_layout = init_keyboard_layout(name2keysym, keyboard_layout,
+ &error_fatal);
+ }
+
ib->saddr.type = SOCKET_ADDRESS_TYPE_INET;
ib->saddr.u.inet.host = g_strdup("localhost");
ib->saddr.u.inet.port = g_strdup("24800");
ib->y_origin = 0;
ib->width = 1920;
ib->height = 1080;
-
- object_property_add_str(obj, "name",
- input_barrier_get_name,
- input_barrier_set_name, NULL);
- object_property_add_str(obj, "server",
- input_barrier_get_server,
- input_barrier_set_server, NULL);
- object_property_add_str(obj, "port",
- input_barrier_get_port,
- input_barrier_set_port, NULL);
- object_property_add_str(obj, "x-origin",
- input_barrier_get_x_origin,
- input_barrier_set_x_origin, NULL);
- object_property_add_str(obj, "y-origin",
- input_barrier_get_y_origin,
- input_barrier_set_y_origin, NULL);
- object_property_add_str(obj, "width",
- input_barrier_get_width,
- input_barrier_set_width, NULL);
- object_property_add_str(obj, "height",
- input_barrier_get_height,
- input_barrier_set_height, NULL);
}
static void input_barrier_class_init(ObjectClass *oc, void *data)
ucc->complete = input_barrier_complete;
- /* always use generic keymaps */
- if (keyboard_layout) {
- /* We use X11 key id, so use VNC name2keysym */
- kbd_layout = init_keyboard_layout(name2keysym, keyboard_layout,
- &error_fatal);
- }
+ object_class_property_add_str(oc, "name",
+ input_barrier_get_name,
+ input_barrier_set_name);
+ object_class_property_add_str(oc, "server",
+ input_barrier_get_server,
+ input_barrier_set_server);
+ object_class_property_add_str(oc, "port",
+ input_barrier_get_port,
+ input_barrier_set_port);
+ object_class_property_add_str(oc, "x-origin",
+ input_barrier_get_x_origin,
+ input_barrier_set_x_origin);
+ object_class_property_add_str(oc, "y-origin",
+ input_barrier_get_y_origin,
+ input_barrier_set_y_origin);
+ object_class_property_add_str(oc, "width",
+ input_barrier_get_width,
+ input_barrier_set_width);
+ object_class_property_add_str(oc, "height",
+ input_barrier_get_height,
+ input_barrier_set_height);
}
static const TypeInfo input_barrier_info = {
.name = TYPE_INPUT_BARRIER,
.parent = TYPE_OBJECT,
- .class_size = sizeof(InputBarrierClass),
.class_init = input_barrier_class_init,
.instance_size = sizeof(InputBarrier),
.instance_init = input_barrier_instance_init,