[Spice-devel] [spice-gtk v2 08/13] usb-redir: change signal prototype of win-usb-dev
Yuri Benditovich
yuri.benditovich at daynix.com
Tue Mar 19 05:56:03 UTC 2019
Changing signal definition from (boxed-boxed) to (pointer,int).
There is no need for additional referencing of GUdevDevice
object before signal callback. Second parameter (action) is
FALSE for device removal and TRUE for device addition.
Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com>
---
src/spice-marshal.txt | 1 +
src/usb-device-manager.c | 8 ++++----
src/win-usb-dev.c | 18 +++++++++---------
src/win-usb-dev.h | 2 +-
4 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/src/spice-marshal.txt b/src/spice-marshal.txt
index cf35790..46be405 100644
--- a/src/spice-marshal.txt
+++ b/src/spice-marshal.txt
@@ -5,6 +5,7 @@ VOID:UINT,UINT,UINT,UINT
VOID:INT,INT,INT,INT,POINTER
VOID:INT,INT,INT,INT,INT,POINTER
VOID:POINTER,INT
+VOID:POINTER,BOOLEAN
BOOLEAN:POINTER,UINT
BOOLEAN:UINT
VOID:UINT,POINTER,UINT
diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c
index c5e662c..c99d359 100644
--- a/src/usb-device-manager.c
+++ b/src/usb-device-manager.c
@@ -153,8 +153,8 @@ static void channel_event(SpiceChannel *channel, SpiceChannelEvent event,
gpointer user_data);
#ifdef G_OS_WIN32
static void spice_usb_device_manager_uevent_cb(GUdevClient *client,
- const gchar *action,
GUdevDevice *udevice,
+ gboolean add,
gpointer user_data);
static void spice_usb_device_manager_add_udev(SpiceUsbDeviceManager *self,
GUdevDevice *udev);
@@ -1070,15 +1070,15 @@ static void spice_usb_device_manager_remove_udev(SpiceUsbDeviceManager *self,
}
static void spice_usb_device_manager_uevent_cb(GUdevClient *client,
- const gchar *action,
GUdevDevice *udevice,
+ gboolean add,
gpointer user_data)
{
SpiceUsbDeviceManager *self = SPICE_USB_DEVICE_MANAGER(user_data);
- if (g_str_equal(action, "add"))
+ if (add)
spice_usb_device_manager_add_udev(self, udevice);
- else if (g_str_equal (action, "remove"))
+ else
spice_usb_device_manager_remove_udev(self, udevice);
}
#else
diff --git a/src/win-usb-dev.c b/src/win-usb-dev.c
index 50db4e5..bb11e8b 100644
--- a/src/win-usb-dev.c
+++ b/src/win-usb-dev.c
@@ -249,7 +249,7 @@ static void g_udev_client_initable_iface_init(GInitableIface *iface)
static void report_one_device(gpointer data, gpointer self)
{
- g_signal_emit(self, signals[UEVENT_SIGNAL], 0, "add", data);
+ g_signal_emit(self, signals[UEVENT_SIGNAL], 0, data, TRUE);
}
void g_udev_client_report_devices(GUdevClient *self)
@@ -342,11 +342,11 @@ static void g_udev_client_class_init(GUdevClientClass *klass)
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET(GUdevClientClass, uevent),
NULL, NULL,
- g_cclosure_user_marshal_VOID__BOXED_BOXED,
+ g_cclosure_user_marshal_VOID__POINTER_BOOLEAN,
G_TYPE_NONE,
2,
- G_TYPE_STRING,
- G_UDEV_TYPE_DEVICE);
+ G_TYPE_POINTER,
+ G_TYPE_BOOLEAN);
/**
* GUdevClient::redirecting:
@@ -408,15 +408,15 @@ static gint gudev_devices_differ(gconstpointer a, gconstpointer b)
static void notify_dev_state_change(GUdevClient *self,
GList *old_list,
GList *new_list,
- const gchar *action)
+ gboolean add)
{
GList *dev;
for (dev = g_list_first(old_list); dev != NULL; dev = g_list_next(dev)) {
if (g_list_find_custom(new_list, dev->data, gudev_devices_differ) == NULL) {
/* Found a device that changed its state */
- g_udev_device_print(dev->data, action);
- g_signal_emit(self, signals[UEVENT_SIGNAL], 0, action, dev->data);
+ g_udev_device_print(dev->data, add ? "add" : "remove");
+ g_signal_emit(self, signals[UEVENT_SIGNAL], 0, dev->data, add);
}
}
}
@@ -445,10 +445,10 @@ static void handle_dev_change(GUdevClient *self)
g_udev_device_print_list(priv->udev_list, "handle_dev_change: previous list:");
/* Unregister devices that are not present anymore */
- notify_dev_state_change(self, priv->udev_list, now_devs, "remove");
+ notify_dev_state_change(self, priv->udev_list, now_devs, FALSE);
/* Register newly inserted devices */
- notify_dev_state_change(self, now_devs, priv->udev_list, "add");
+ notify_dev_state_change(self, now_devs, priv->udev_list, TRUE);
/* keep most recent info: free previous list, and keep current list */
g_udev_client_free_device_list(&priv->udev_list);
diff --git a/src/win-usb-dev.h b/src/win-usb-dev.h
index bca8285..64ebd67 100644
--- a/src/win-usb-dev.h
+++ b/src/win-usb-dev.h
@@ -75,7 +75,7 @@ struct _GUdevClientClass
GObjectClass parent_class;
/* signals */
- void (*uevent)(GUdevClient *client, const gchar *action, GUdevDevice *device);
+ void (*uevent)(GUdevClient *client, GUdevDevice *device, gboolean add);
};
GType g_udev_client_get_type(void) G_GNUC_CONST;
--
2.17.1
More information about the Spice-devel
mailing list