On Thu, 2015-10-29 at 17:27 +0200, Dmitry Fleytman wrote: > From: Kirill Moizik <kmoizik@xxxxxxxxxx> > > This commit introduces redirecting property of GUdevClient > > This property indicates when a redirection operation > is in progress on a device. It's set back to FALSE > once the device is fully redirected to the guest. > > Signed-off-by: Kirill Moizik <kmoizik@xxxxxxxxxx> > Signed-off-by: Dmitry Fleytman <dfleytma@xxxxxxxxxx> > --- > src/win-usb-dev.c | 61 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 61 insertions(+) > > diff --git a/src/win-usb-dev.c b/src/win-usb-dev.c > index 1e4b2d6..60bc434 100644 > --- a/src/win-usb-dev.c > +++ b/src/win-usb-dev.c > @@ -32,11 +32,17 @@ > #define G_UDEV_CLIENT_GET_PRIVATE(obj) \ > (G_TYPE_INSTANCE_GET_PRIVATE((obj), G_UDEV_TYPE_CLIENT, > GUdevClientPrivate)) > > +enum { > + PROP_0, > + PROP_REDIRECTING > +}; > + > struct _GUdevClientPrivate { > libusb_context *ctx; > gssize udev_list_size; > GList *udev_list; > HWND hwnd; > + gboolean redirecting; > }; > > #define G_UDEV_CLIENT_WINCLASS_NAME TEXT("G_UDEV_CLIENT") > @@ -272,11 +278,52 @@ static void g_udev_client_finalize(GObject *gobject) > G_OBJECT_CLASS(g_udev_client_parent_class)->finalize(gobject); > } > > +static void g_udev_client_get_property(GObject *gobject, > + guint prop_id, > + GValue *value, > + GParamSpec *pspec) > +{ > + GUdevClient *self = G_UDEV_CLIENT(gobject); > + GUdevClientPrivate *priv = self->priv; > + > + switch (prop_id) { > + case PROP_REDIRECTING: > + g_value_set_boolean(value, priv->redirecting); > + break; > + default: > + G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec); > + break; > + } > +} > + > +static void handle_dev_change(GUdevClient *self); It seems this bit was accidentally included? I don't see it used anywhere within this patch. > + > +static void g_udev_client_set_property(GObject *gobject, > + guint prop_id, > + const GValue *value, > + GParamSpec *pspec) > +{ > + GUdevClient *self = G_UDEV_CLIENT(gobject); > + GUdevClientPrivate *priv = self->priv; > + > + switch (prop_id) { > + case PROP_REDIRECTING: > + priv->redirecting = g_value_get_boolean(value); > + break; > + default: > + G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec); > + break; > + } > +} > + > static void g_udev_client_class_init(GUdevClientClass *klass) > { > GObjectClass *gobject_class = G_OBJECT_CLASS(klass); > + GParamSpec *pspec; > > gobject_class->finalize = g_udev_client_finalize; > + gobject_class->get_property = g_udev_client_get_property; > + gobject_class->set_property = g_udev_client_set_property; > > signals[UEVENT_SIGNAL] = > g_signal_new("uevent", > @@ -290,6 +337,20 @@ static void g_udev_client_class_init(GUdevClientClass > *klass) > G_TYPE_STRING, > G_UDEV_TYPE_DEVICE); > > + /** > + * GUdevClient::redirecting: > + * > + * This property indicates when a redirection operation > + * is in progress on a device. It's set back to FALSE > + * once the device is fully redirected to the guest. > + */ > + pspec = g_param_spec_boolean("redirecting", "Redirecting", > + "USB redirection operation is in progress", > + FALSE, > + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); > + > + g_object_class_install_property(gobject_class, PROP_REDIRECTING, pspec); > + > g_type_class_add_private(klass, sizeof(GUdevClientPrivate)); > } > Aside from the extra declaration above, the code looks fine. I can't yet tell wh ether this property makes sense until I get farther into the patchset and see how it is used. Reviewed-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel