diff --git a/src/backends/native/meta-virtual-input-device-native.c b/src/backends/native/meta-virtual-input-device-native.c index c5f34b569..d309ef81a 100644 --- a/src/backends/native/meta-virtual-input-device-native.c +++ b/src/backends/native/meta-virtual-input-device-native.c @@ -33,7 +33,6 @@ enum { PROP_0, - PROP_SEAT, PROP_SLOT_BASE, PROP_LAST @@ -54,7 +53,6 @@ struct _MetaVirtualInputDeviceNative { ClutterVirtualInputDevice parent; - MetaSeatNative *seat; guint slot_base; ImplState *impl_state; }; @@ -204,12 +202,22 @@ release_device_in_impl (GTask *task) return G_SOURCE_REMOVE; } +static MetaSeatNative* +meta_virtual_input_device_native_get_seat_native (MetaVirtualInputDeviceNative *virtual_native) +{ + ClutterSeat *seat = + clutter_virtual_input_device_get_seat (CLUTTER_VIRTUAL_INPUT_DEVICE (virtual_native)); + return META_SEAT_NATIVE (seat); +} + static gboolean notify_relative_motion_in_impl (GTask *task) { MetaVirtualInputDeviceNative *virtual_native = g_task_get_source_object (task); - MetaSeatImpl *seat = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat = seat_native->impl; MetaVirtualEventMotion *event = g_task_get_task_data (task); if (event->time_us == CLUTTER_CURRENT_TIME) @@ -236,6 +244,8 @@ meta_virtual_input_device_native_notify_relative_motion (ClutterVirtualInputDevi MetaVirtualEventMotion *event; MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GTask *task; g_return_if_fail (virtual_native->impl_state != NULL); @@ -247,7 +257,7 @@ meta_virtual_input_device_native_notify_relative_motion (ClutterVirtualInputDevi task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, event, g_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) notify_relative_motion_in_impl); g_object_unref (task); } @@ -257,7 +267,9 @@ notify_absolute_motion_in_impl (GTask *task) { MetaVirtualInputDeviceNative *virtual_native = g_task_get_source_object (task); - MetaSeatImpl *seat = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat = seat_native->impl; MetaVirtualEventMotion *event = g_task_get_task_data (task); if (event->time_us == CLUTTER_CURRENT_TIME) @@ -282,6 +294,8 @@ meta_virtual_input_device_native_notify_absolute_motion (ClutterVirtualInputDevi MetaVirtualEventMotion *event; MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GTask *task; g_return_if_fail (virtual_native->impl_state != NULL); @@ -293,7 +307,7 @@ meta_virtual_input_device_native_notify_absolute_motion (ClutterVirtualInputDevi task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, event, g_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) notify_absolute_motion_in_impl); g_object_unref (task); } @@ -303,7 +317,9 @@ notify_button_in_impl (GTask *task) { MetaVirtualInputDeviceNative *virtual_native = g_task_get_source_object (task); - MetaSeatImpl *seat = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat = seat_native->impl; MetaVirtualEventButton *event = g_task_get_task_data (task); int button_count; int evdev_button; @@ -356,6 +372,8 @@ meta_virtual_input_device_native_notify_button (ClutterVirtualInputDevice *virtu MetaVirtualEventButton *event; MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GTask *task; g_return_if_fail (virtual_native->impl_state != NULL); @@ -367,7 +385,7 @@ meta_virtual_input_device_native_notify_button (ClutterVirtualInputDevice *virtu task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, event, g_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) notify_button_in_impl); g_object_unref (task); } @@ -377,7 +395,9 @@ notify_key_in_impl (GTask *task) { MetaVirtualInputDeviceNative *virtual_native = g_task_get_source_object (task); - MetaSeatImpl *seat = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat = seat_native->impl; MetaVirtualEventKey *event = g_task_get_task_data (task); int key_count; @@ -426,6 +446,8 @@ meta_virtual_input_device_native_notify_key (ClutterVirtualInputDevice *virtual_ MetaVirtualEventKey *event; MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GTask *task; g_return_if_fail (virtual_native->impl_state != NULL); @@ -437,7 +459,7 @@ meta_virtual_input_device_native_notify_key (ClutterVirtualInputDevice *virtual_ task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, event, g_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) notify_key_in_impl); g_object_unref (task); } @@ -450,6 +472,8 @@ pick_keycode_for_keyval_in_current_group_in_impl (ClutterVirtualInputDevice *vir { MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); ClutterSeat *seat; ClutterKeymap *keymap; struct xkb_keymap *xkb_keymap; @@ -460,7 +484,7 @@ pick_keycode_for_keyval_in_current_group_in_impl (ClutterVirtualInputDevice *vir seat = clutter_virtual_input_device_get_seat (virtual_device); keymap = clutter_seat_get_keymap (seat); xkb_keymap = meta_keymap_native_get_keyboard_map_in_impl (META_KEYMAP_NATIVE (keymap)); - state = meta_seat_impl_get_xkb_state_in_impl (virtual_native->seat->impl); + state = meta_seat_impl_get_xkb_state_in_impl (seat_native->impl); layout = xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_EFFECTIVE); min_keycode = xkb_keymap_min_keycode (xkb_keymap); @@ -498,6 +522,8 @@ apply_level_modifiers_in_impl (ClutterVirtualInputDevice *virtual_device, { MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); guint keysym, keycode, evcode; if (level == 0) @@ -528,7 +554,7 @@ apply_level_modifiers_in_impl (ClutterVirtualInputDevice *virtual_device, key_state == CLUTTER_KEY_STATE_PRESSED ? "press" : "release", evcode, virtual_device); - meta_seat_impl_notify_key_in_impl (virtual_native->seat->impl, + meta_seat_impl_notify_key_in_impl (seat_native->impl, virtual_native->impl_state->device, time_us, evcode, @@ -543,7 +569,9 @@ notify_keyval_in_impl (GTask *task) g_task_get_source_object (task); ClutterVirtualInputDevice *virtual_device = CLUTTER_VIRTUAL_INPUT_DEVICE (virtual_native); - MetaSeatImpl *seat = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat = seat_native->impl; MetaVirtualEventKey *event = g_task_get_task_data (task); int key_count; guint keycode = 0, level = 0, evcode = 0; @@ -616,6 +644,8 @@ meta_virtual_input_device_native_notify_keyval (ClutterVirtualInputDevice *virtu MetaVirtualEventKey *event; MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GTask *task; g_return_if_fail (virtual_native->impl_state != NULL); @@ -627,7 +657,7 @@ meta_virtual_input_device_native_notify_keyval (ClutterVirtualInputDevice *virtu task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, event, g_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) notify_keyval_in_impl); g_object_unref (task); } @@ -666,7 +696,9 @@ notify_discrete_scroll_in_impl (GTask *task) { MetaVirtualInputDeviceNative *virtual_native = g_task_get_source_object (task); - MetaSeatImpl *seat = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat = seat_native->impl; MetaVirtualEventScroll *event = g_task_get_task_data (task); double discrete_dx = 0.0, discrete_dy = 0.0; @@ -695,6 +727,8 @@ meta_virtual_input_device_native_notify_discrete_scroll (ClutterVirtualInputDevi MetaVirtualEventScroll *event; MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GTask *task; g_return_if_fail (virtual_native->impl_state != NULL); @@ -706,7 +740,7 @@ meta_virtual_input_device_native_notify_discrete_scroll (ClutterVirtualInputDevi task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, event, g_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) notify_discrete_scroll_in_impl); g_object_unref (task); } @@ -716,7 +750,9 @@ notify_scroll_continuous_in_impl (GTask *task) { MetaVirtualInputDeviceNative *virtual_native = g_task_get_source_object (task); - MetaSeatImpl *seat = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat = seat_native->impl; MetaVirtualEventScroll *event = g_task_get_task_data (task); if (event->time_us == CLUTTER_CURRENT_TIME) @@ -756,6 +792,8 @@ meta_virtual_input_device_native_notify_scroll_continuous (ClutterVirtualInputDe MetaVirtualEventScroll *event; MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GTask *task; g_return_if_fail (virtual_native->impl_state != NULL); @@ -769,7 +807,7 @@ meta_virtual_input_device_native_notify_scroll_continuous (ClutterVirtualInputDe task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, event, g_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) notify_scroll_continuous_in_impl); g_object_unref (task); } @@ -779,7 +817,9 @@ notify_touch_down_in_impl (GTask *task) { MetaVirtualInputDeviceNative *virtual_native = g_task_get_source_object (task); - MetaSeatImpl *seat = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat = seat_native->impl; MetaVirtualEventTouch *event = g_task_get_task_data (task); MetaTouchState *touch_state; @@ -817,6 +857,8 @@ meta_virtual_input_device_native_notify_touch_down (ClutterVirtualInputDevice *v MetaVirtualEventTouch *event; MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GTask *task; g_return_if_fail (virtual_native->impl_state != NULL); @@ -829,7 +871,7 @@ meta_virtual_input_device_native_notify_touch_down (ClutterVirtualInputDevice *v task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, event, g_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) notify_touch_down_in_impl); g_object_unref (task); } @@ -839,7 +881,9 @@ notify_touch_motion_in_impl (GTask *task) { MetaVirtualInputDeviceNative *virtual_native = g_task_get_source_object (task); - MetaSeatImpl *seat = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat = seat_native->impl; MetaVirtualEventTouch *event = g_task_get_task_data (task); MetaTouchState *touch_state; @@ -877,6 +921,8 @@ meta_virtual_input_device_native_notify_touch_motion (ClutterVirtualInputDevice MetaVirtualEventTouch *event; MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GTask *task; g_return_if_fail (virtual_native->impl_state != NULL); @@ -889,7 +935,7 @@ meta_virtual_input_device_native_notify_touch_motion (ClutterVirtualInputDevice task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, event, g_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) notify_touch_motion_in_impl); g_object_unref (task); } @@ -899,7 +945,9 @@ notify_touch_up_in_impl (GTask *task) { MetaVirtualInputDeviceNative *virtual_native = g_task_get_source_object (task); - MetaSeatImpl *seat = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat = seat_native->impl; MetaVirtualEventTouch *event = g_task_get_task_data (task); MetaTouchState *touch_state; @@ -919,7 +967,7 @@ notify_touch_up_in_impl (GTask *task) touch_state->coords.x, touch_state->coords.y); - meta_seat_impl_release_touch_state_in_impl (virtual_native->seat->impl, + meta_seat_impl_release_touch_state_in_impl (seat_native->impl, touch_state->seat_slot); out: @@ -935,6 +983,8 @@ meta_virtual_input_device_native_notify_touch_up (ClutterVirtualInputDevice *vir MetaVirtualEventTouch *event; MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (virtual_device); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GTask *task; g_return_if_fail (virtual_native->impl_state != NULL); @@ -945,7 +995,7 @@ meta_virtual_input_device_native_notify_touch_up (ClutterVirtualInputDevice *vir task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, event, g_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) notify_touch_up_in_impl); g_object_unref (task); } @@ -961,9 +1011,6 @@ meta_virtual_input_device_native_get_property (GObject *object, switch (prop_id) { - case PROP_SEAT: - g_value_set_pointer (value, virtual_native->seat); - break; case PROP_SLOT_BASE: g_value_set_uint (value, virtual_native->slot_base); break; @@ -984,9 +1031,6 @@ meta_virtual_input_device_native_set_property (GObject *object, switch (prop_id) { - case PROP_SEAT: - virtual_native->seat = g_value_get_pointer (value); - break; case PROP_SLOT_BASE: virtual_native->slot_base = g_value_get_uint (value); break; @@ -1002,7 +1046,9 @@ create_device_in_impl (GTask *task) ImplState *impl_state = g_task_get_task_data (task); MetaVirtualInputDeviceNative *virtual_native = g_task_get_source_object (task); - MetaSeatImpl *seat_impl = virtual_native->seat->impl; + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); + MetaSeatImpl *seat_impl = seat_native->impl; ClutterVirtualInputDevice *virtual_device = CLUTTER_VIRTUAL_INPUT_DEVICE (virtual_native); ClutterInputDeviceType device_type = @@ -1026,6 +1072,8 @@ meta_virtual_input_device_native_constructed (GObject *object) CLUTTER_VIRTUAL_INPUT_DEVICE (object); MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (object); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); ClutterInputDeviceType device_type; g_autoptr (GTask) task = NULL; @@ -1039,7 +1087,7 @@ meta_virtual_input_device_native_constructed (GObject *object) task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, virtual_native->impl_state, NULL); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) create_device_in_impl); } @@ -1057,6 +1105,8 @@ meta_virtual_input_device_native_dispose (GObject *object) CLUTTER_VIRTUAL_INPUT_DEVICE (object); MetaVirtualInputDeviceNative *virtual_native = META_VIRTUAL_INPUT_DEVICE_NATIVE (object); + MetaSeatNative *seat_native = + meta_virtual_input_device_native_get_seat_native (virtual_native); GObjectClass *object_class = G_OBJECT_CLASS (meta_virtual_input_device_native_parent_class); @@ -1067,14 +1117,14 @@ meta_virtual_input_device_native_dispose (GObject *object) task = g_task_new (virtual_device, NULL, NULL, NULL); g_task_set_task_data (task, virtual_native->impl_state, (GDestroyNotify) impl_state_free); - meta_seat_impl_run_input_task (virtual_native->seat->impl, task, + meta_seat_impl_run_input_task (seat_native->impl, task, (GSourceFunc) release_device_in_impl); g_object_unref (task); virtual_native->impl_state = NULL; } - meta_seat_native_release_touch_slots (virtual_native->seat, + meta_seat_native_release_touch_slots (seat_native, virtual_native->slot_base); object_class->dispose (object); @@ -1108,10 +1158,6 @@ meta_virtual_input_device_native_class_init (MetaVirtualInputDeviceNativeClass * virtual_input_device_class->notify_touch_motion = meta_virtual_input_device_native_notify_touch_motion; virtual_input_device_class->notify_touch_up = meta_virtual_input_device_native_notify_touch_up; - obj_props[PROP_SEAT] = g_param_spec_pointer ("seat", NULL, NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS | - G_PARAM_CONSTRUCT_ONLY); obj_props[PROP_SLOT_BASE] = g_param_spec_uint ("slot-base", NULL, NULL, 0, G_MAXUINT, 0, G_PARAM_READWRITE |