[virt-tools-list] [PATCH virt-viewer] Unregister events and callbacks on dispose
Marc-André Lureau
mlureau at redhat.com
Thu Jul 25 14:02:43 UTC 2013
looks good, ack
----- Mensaje original -----
> Without these libvirtd reports an error on virt-viewer shutdown:
> virNetSocketReadWire:1377 : End of file while reading data: Input/output
> error
> ---
> src/virt-viewer.c | 31 +++++++++++++++++++------------
> 1 file changed, 19 insertions(+), 12 deletions(-)
>
> diff --git a/src/virt-viewer.c b/src/virt-viewer.c
> index 207c9ca..b98c252 100644
> --- a/src/virt-viewer.c
> +++ b/src/virt-viewer.c
> @@ -67,6 +67,7 @@ static gboolean virt_viewer_initial_connect(VirtViewerApp
> *self, GError **error)
> static gboolean virt_viewer_open_connection(VirtViewerApp *self, int *fd);
> static void virt_viewer_deactivated(VirtViewerApp *self, gboolean
> connect_error);
> static gboolean virt_viewer_start(VirtViewerApp *self);
> +static void virt_viewer_dispose (GObject *object);
>
> static void
> virt_viewer_get_property (GObject *object, guint property_id,
> @@ -89,18 +90,6 @@ virt_viewer_set_property (GObject *object, guint
> property_id,
> }
>
> static void
> -virt_viewer_dispose (GObject *object)
> -{
> - VirtViewer *self = VIRT_VIEWER(object);
> - VirtViewerPrivate *priv = self->priv;
> - if (priv->dom)
> - virDomainFree(priv->dom);
> - if (priv->conn)
> - virConnectClose(priv->conn);
> - G_OBJECT_CLASS(virt_viewer_parent_class)->dispose (object);
> -}
> -
> -static void
> virt_viewer_class_init (VirtViewerClass *klass)
> {
> GObjectClass *object_class = G_OBJECT_CLASS (klass);
> @@ -513,6 +502,24 @@ virt_viewer_conn_event(virConnectPtr conn G_GNUC_UNUSED,
> virt_viewer_app_start_reconnect_poll(app);
> }
>
> +static void
> +virt_viewer_dispose (GObject *object)
> +{
> + VirtViewer *self = VIRT_VIEWER(object);
> + VirtViewerPrivate *priv = self->priv;
> +
> + if (priv->withEvents)
> + virConnectDomainEventDeregister(priv->conn,
> + virt_viewer_domain_event);
> + virConnectUnregisterCloseCallback(priv->conn,
> + virt_viewer_conn_event);
> + if (priv->dom)
> + virDomainFree(priv->dom);
> + if (priv->conn)
> + virConnectClose(priv->conn);
> + G_OBJECT_CLASS(virt_viewer_parent_class)->dispose (object);
> +}
> +
> static int virt_viewer_connect(VirtViewerApp *app);
>
> static gboolean
> --
> 1.8.1.5
>
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
>
More information about the virt-tools-list
mailing list