[gtk/seat-model: 2/3] Port all users to gdk_display_get_seats
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/seat-model: 2/3] Port all users to gdk_display_get_seats
- Date: Sun, 6 Sep 2020 13:43:35 +0000 (UTC)
commit 4032ef15097ab025dc01208de4b3888c9fb8d985
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Sep 5 23:43:18 2020 -0400
Port all users to gdk_display_get_seats
gdk/gdksurface.c | 17 ++++++++++-------
gdk/wayland/gdkdevice-wayland.c | 23 ++++++++++++-----------
gdk/wayland/gdkdisplay-wayland.c | 14 +++++++-------
gdk/x11/gdkdisplay-x11.c | 21 ++++++++-------------
gtk/gtkpopover.c | 14 ++++++++------
gtk/gtkwindow.c | 14 ++++++++------
gtk/inspector/general.c | 30 ++++++++++++++++++------------
testsuite/gdk/seat.c | 20 ++++++++++----------
8 files changed, 81 insertions(+), 72 deletions(-)
---
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c
index 3a03292251..4c8bf7c9c1 100644
--- a/gdk/gdksurface.c
+++ b/gdk/gdksurface.c
@@ -1790,7 +1790,7 @@ gdk_surface_get_cursor (GdkSurface *surface)
*/
void
gdk_surface_set_cursor (GdkSurface *surface,
- GdkCursor *cursor)
+ GdkCursor *cursor)
{
g_return_if_fail (GDK_IS_SURFACE (surface));
@@ -1803,30 +1803,33 @@ gdk_surface_set_cursor (GdkSurface *surface,
if (!GDK_SURFACE_DESTROYED (surface))
{
GdkDevice *device;
- GList *seats, *s;
+ GListModel *seats;
+ guint i, n;
if (cursor)
surface->cursor = g_object_ref (cursor);
- seats = gdk_display_list_seats (surface->display);
+ seats = gdk_display_get_seats (surface->display);
- for (s = seats; s; s = s->next)
+ for (i = 0, n = g_list_model_get_n_items (seats); i < n; i++)
{
+ GdkSeat *seat;
GList *devices, *d;
- device = gdk_seat_get_pointer (s->data);
+ seat = g_list_model_get_item (seats, i);
+ device = gdk_seat_get_pointer (seat);
gdk_surface_set_cursor_internal (surface, device, surface->cursor);
- devices = gdk_seat_get_devices (s->data, GDK_SEAT_CAPABILITY_TABLET_STYLUS);
+ devices = gdk_seat_get_devices (seat, GDK_SEAT_CAPABILITY_TABLET_STYLUS);
for (d = devices; d; d = d->next)
{
device = d->data;
gdk_surface_set_cursor_internal (surface, device, surface->cursor);
}
g_list_free (devices);
+ g_object_unref (seat);
}
- g_list_free (seats);
g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_CURSOR]);
}
}
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index fbbceacb65..0664202a60 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -4819,22 +4819,23 @@ _gdk_wayland_display_remove_seat (GdkWaylandDisplay *display_wayland,
guint32 id)
{
GdkDisplay *display = GDK_DISPLAY (display_wayland);
- GList *l, *seats;
+ GListModel *seats;
+ guint i, n;
+ gboolean removed = FALSE;
- seats = gdk_display_list_seats (display);
-
- for (l = seats; l != NULL; l = l->next)
+ seats = gdk_display_get_seats (display);
+ for (i = 0, n = g_list_model_get_n_items (seats); i < n && !removed; i++)
{
- GdkWaylandSeat *seat = l->data;
+ GdkWaylandSeat *seat = g_list_model_get_item (seats, i);
- if (seat->id != id)
- continue;
+ if (seat->id == id)
+ {
+ gdk_display_remove_seat (display, GDK_SEAT (seat));
+ removed = TRUE;
+ }
- gdk_display_remove_seat (display, GDK_SEAT (seat));
- break;
+ g_object_unref (seat);
}
-
- g_list_free (seats);
}
uint32_t
diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c
index 461e0f0110..f599b745b5 100644
--- a/gdk/wayland/gdkdisplay-wayland.c
+++ b/gdk/wayland/gdkdisplay-wayland.c
@@ -2213,20 +2213,20 @@ transform_to_string (int transform)
static void
update_scale (GdkDisplay *display)
{
- GList *seats;
- GList *l;
+ GListModel *seats;
+ guint i, n;
g_list_foreach (gdk_wayland_display_get_toplevel_surfaces (display),
(GFunc)gdk_wayland_surface_update_scale,
NULL);
- seats = gdk_display_list_seats (display);
- for (l = seats; l; l = l->next)
- {
- GdkSeat *seat = l->data;
+ seats = gdk_display_get_seats (display);
+ for (i = 0, n = g_list_model_get_n_items (seats); i < n; i++)
+ {
+ GdkSeat *seat = g_list_model_get_item (seats, i);
gdk_wayland_seat_update_cursor_scale (GDK_WAYLAND_SEAT (seat));
+ g_object_unref (seat);
}
- g_list_free (seats);
}
static void
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index 378f591f8a..a42ceba1df 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -2796,34 +2796,29 @@ gdk_x11_display_get_keymap (GdkDisplay *display)
static GdkSeat *
gdk_x11_display_get_default_seat (GdkDisplay *display)
{
- GList *seats, *l;
+ GListModel *seats;
+ guint i, n;
int device_id;
gboolean result = FALSE;
- seats = gdk_display_list_seats (display);
+ seats = gdk_display_get_seats (display);
gdk_x11_display_error_trap_push (display);
result = XIGetClientPointer (GDK_DISPLAY_XDISPLAY (display),
None, &device_id);
gdk_x11_display_error_trap_pop_ignored (display);
- for (l = seats; l; l = l->next)
+ for (i = 0, n = g_list_model_get_n_items (seats); i < n; i++)
{
- GdkDevice *pointer;
+ GdkSeat *seat = g_list_model_get_item (seats, i);
+ GdkDevice *pointer = gdk_seat_get_pointer (seat);
- pointer = gdk_seat_get_pointer (l->data);
+ g_object_unref (seat);
if (gdk_x11_device_get_id (pointer) == device_id || !result)
- {
- GdkSeat *seat = l->data;
- g_list_free (seats);
-
- return seat;
- }
+ return seat;
}
- g_list_free (seats);
-
return NULL;
}
diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c
index 5130d68ede..e12c95ca65 100644
--- a/gtk/gtkpopover.c
+++ b/gtk/gtkpopover.c
@@ -608,16 +608,20 @@ close_menu (GtkPopover *popover)
static gboolean
gtk_popover_has_mnemonic_modifier_pressed (GtkPopover *popover)
{
- GList *seats, *s;
+ GListModel *seats;
+ guint i, n;
gboolean retval = FALSE;
- seats = gdk_display_list_seats (gtk_widget_get_display (GTK_WIDGET (popover)));
+ seats = gdk_display_get_seats (gtk_widget_get_display (GTK_WIDGET (popover)));
- for (s = seats; s; s = s->next)
+ for (i = 0, n = g_list_model_get_n_items (seats); i < n; i++)
{
- GdkDevice *dev = gdk_seat_get_keyboard (s->data);
+ GdkSeat *seat = g_list_model_get_item (seats, i);
+ GdkDevice *dev = gdk_seat_get_keyboard (seat);
GdkModifierType mask;
+ g_object_unref (seat);
+
mask = gdk_device_get_modifier_state (dev);
if ((mask & gtk_accelerator_get_default_mod_mask ()) == GDK_ALT_MASK)
{
@@ -626,8 +630,6 @@ gtk_popover_has_mnemonic_modifier_pressed (GtkPopover *popover)
}
}
- g_list_free (seats);
-
return retval;
}
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 40673a037c..570aee0668 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -4792,16 +4792,20 @@ gtk_window_real_activate_focus (GtkWindow *window)
static gboolean
gtk_window_has_mnemonic_modifier_pressed (GtkWindow *window)
{
- GList *seats, *s;
+ GListModel *seats;
+ guint i, n;
gboolean retval = FALSE;
- seats = gdk_display_list_seats (gtk_widget_get_display (GTK_WIDGET (window)));
+ seats = gdk_display_get_seats (gtk_widget_get_display (GTK_WIDGET (window)));
- for (s = seats; s; s = s->next)
+ for (i = 0, n = g_list_model_get_n_items (seats); i < n; i++)
{
- GdkDevice *dev = gdk_seat_get_keyboard (s->data);
+ GdkSeat *seat = g_list_model_get_item (seats, i);
+ GdkDevice *dev = gdk_seat_get_keyboard (seat);
GdkModifierType mask;
+ g_object_unref (seat);
+
mask = gdk_device_get_modifier_state (dev);
if ((mask & gtk_accelerator_get_default_mod_mask ()) == GDK_ALT_MASK)
{
@@ -4810,8 +4814,6 @@ gtk_window_has_mnemonic_modifier_pressed (GtkWindow *window)
}
}
- g_list_free (seats);
-
return retval;
}
diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c
index ab368e2f8d..a5b7c769b3 100644
--- a/gtk/inspector/general.c
+++ b/gtk/inspector/general.c
@@ -828,18 +828,20 @@ static void
populate_seats (GtkInspectorGeneral *gen)
{
GtkWidget *child;
- GList *list, *l;
- int i;
+ GListModel *seats;
+ guint i, n;
while ((child = gtk_widget_get_first_child (gen->device_box)))
gtk_list_box_remove (GTK_LIST_BOX (gen->device_box), child);
- list = gdk_display_list_seats (gen->display);
-
- for (l = list, i = 0; l; l = l->next, i++)
- add_seat (gen, GDK_SEAT (l->data), i);
+ seats = gdk_display_get_seats (gen->display);
- g_list_free (list);
+ for (i = 0, n = g_list_model_get_n_items (seats); i < n; i++)
+ {
+ GdkSeat *seat = g_list_model_get_item (seats, i);
+ add_seat (gen, seat, i);
+ g_object_unref (seat);
+ }
}
static void
@@ -935,17 +937,21 @@ static void
gtk_inspector_general_dispose (GObject *object)
{
GtkInspectorGeneral *gen = GTK_INSPECTOR_GENERAL (object);
- GList *list, *l;
+ GListModel *seats;
+ guint i, n;
g_clear_pointer (&gen->swin, gtk_widget_unparent);
g_signal_handlers_disconnect_by_func (gen->display, G_CALLBACK (seat_added), gen);
g_signal_handlers_disconnect_by_func (gen->display, G_CALLBACK (seat_removed), gen);
- list = gdk_display_list_seats (gen->display);
- for (l = list; l; l = l->next)
- disconnect_seat (gen, GDK_SEAT (l->data));
- g_list_free (list);
+ seats = gdk_display_get_seats (gen->display);
+ for (i = 0, n = g_list_model_get_n_items (seats); i < n; i++)
+ {
+ GdkSeat *seat = g_list_model_get_item (seats, i);
+ disconnect_seat (gen, seat);
+ g_object_unref (seat);
+ }
G_OBJECT_CLASS (gtk_inspector_general_parent_class)->dispose (object);
}
diff --git a/testsuite/gdk/seat.c b/testsuite/gdk/seat.c
index bd98236132..91cb25cb67 100644
--- a/testsuite/gdk/seat.c
+++ b/testsuite/gdk/seat.c
@@ -1,11 +1,12 @@
#include <gtk/gtk.h>
static void
-test_list_seats (void)
+test_get_seats (void)
{
GdkDisplay *display;
GdkSeat *seat0, *seat;
- GList *list, *l;
+ GListModel *seats;
+ guint i, n;
gboolean found_default;
display = gdk_display_get_default ();
@@ -14,25 +15,24 @@ test_list_seats (void)
g_assert_true (GDK_IS_SEAT (seat0));
found_default = FALSE;
- list = gdk_display_list_seats (display);
-
- for (l = list; l; l = l->next)
+ seats = gdk_display_get_seats (display);
+ for (i = 0, n = g_list_model_get_n_items (seats); i < n; i++)
{
- seat = l->data;
+ seat = g_list_model_get_item (seats, i);
g_assert_true (GDK_IS_SEAT (seat));
g_assert (gdk_seat_get_display (seat) == display);
if (seat == seat0)
found_default = TRUE;
+
+ g_object_unref (seat);
}
if (seat0 != NULL)
g_assert_true (found_default);
else
- g_assert_true (list == NULL);
-
- g_list_free (list);
+ g_assert_true (n == 0);
}
static void
@@ -118,7 +118,7 @@ main (int argc, char *argv[])
gtk_init ();
- g_test_add_func ("/seat/list", test_list_seats);
+ g_test_add_func ("/seat/list", test_get_seats);
g_test_add_func ("/seat/default", test_default_seat);
return g_test_run ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]