printers: Improve memory management of backend list
This commit is contained in:
parent
5b086c44e8
commit
797c36dc0a
1 changed files with 7 additions and 21 deletions
|
@ -1767,8 +1767,8 @@ typedef struct
|
||||||
{
|
{
|
||||||
gchar *printer_name;
|
gchar *printer_name;
|
||||||
gchar *device_uri;
|
gchar *device_uri;
|
||||||
GCancellable *cancellable;
|
|
||||||
GList *backend_list;
|
GList *backend_list;
|
||||||
|
GCancellable *cancellable;
|
||||||
GDACallback callback;
|
GDACallback callback;
|
||||||
gpointer user_data;
|
gpointer user_data;
|
||||||
} GDAData;
|
} GDAData;
|
||||||
|
@ -1793,6 +1793,7 @@ gda_data_free (GDAData *data)
|
||||||
{
|
{
|
||||||
g_free (data->printer_name);
|
g_free (data->printer_name);
|
||||||
g_free (data->device_uri);
|
g_free (data->device_uri);
|
||||||
|
g_list_free_full(data->backend_list, g_free);
|
||||||
g_clear_object (&data->cancellable);
|
g_clear_object (&data->cancellable);
|
||||||
g_free (data);
|
g_free (data);
|
||||||
}
|
}
|
||||||
|
@ -2100,7 +2101,6 @@ get_device_attributes_async_dbus_cb (GObject *source_object,
|
||||||
g_autoptr(GVariant) output = NULL;
|
g_autoptr(GVariant) output = NULL;
|
||||||
g_autoptr(GDAData) data = user_data;
|
g_autoptr(GDAData) data = user_data;
|
||||||
g_autoptr(GError) error = NULL;
|
g_autoptr(GError) error = NULL;
|
||||||
GList *tmp;
|
|
||||||
gchar *device_id = NULL;
|
gchar *device_id = NULL;
|
||||||
gchar *device_make_and_model = NULL;
|
gchar *device_make_and_model = NULL;
|
||||||
|
|
||||||
|
@ -2206,9 +2206,7 @@ get_device_attributes_async_dbus_cb (GObject *source_object,
|
||||||
exclude_scheme_builder = create_other_backends_array ();
|
exclude_scheme_builder = create_other_backends_array ();
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = data->backend_list;
|
data->backend_list = g_list_delete_link (data->backend_list, data->backend_list);
|
||||||
data->backend_list = g_list_remove_link (data->backend_list, tmp);
|
|
||||||
g_list_free_full (tmp, g_free);
|
|
||||||
|
|
||||||
g_dbus_connection_call (G_DBUS_CONNECTION (g_object_ref (source_object)),
|
g_dbus_connection_call (G_DBUS_CONNECTION (g_object_ref (source_object)),
|
||||||
MECHANISM_BUS,
|
MECHANISM_BUS,
|
||||||
|
@ -2238,12 +2236,6 @@ get_device_attributes_async_dbus_cb (GObject *source_object,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data->backend_list)
|
|
||||||
{
|
|
||||||
g_list_free_full (data->backend_list, g_free);
|
|
||||||
data->backend_list = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
data->callback (device_id,
|
data->callback (device_id,
|
||||||
device_make_and_model,
|
device_make_and_model,
|
||||||
data->device_uri,
|
data->device_uri,
|
||||||
|
@ -2259,7 +2251,6 @@ get_device_attributes_async_scb (GHashTable *result,
|
||||||
IPPAttribute *attr;
|
IPPAttribute *attr;
|
||||||
g_autoptr(GDAData) data = user_data;
|
g_autoptr(GDAData) data = user_data;
|
||||||
g_autoptr(GError) error = NULL;
|
g_autoptr(GError) error = NULL;
|
||||||
GList *tmp;
|
|
||||||
|
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
|
@ -2295,9 +2286,7 @@ get_device_attributes_async_scb (GHashTable *result,
|
||||||
g_variant_builder_init (&include_scheme_builder, G_VARIANT_TYPE ("as"));
|
g_variant_builder_init (&include_scheme_builder, G_VARIANT_TYPE ("as"));
|
||||||
g_variant_builder_add (&include_scheme_builder, "s", data->backend_list->data);
|
g_variant_builder_add (&include_scheme_builder, "s", data->backend_list->data);
|
||||||
|
|
||||||
tmp = data->backend_list;
|
data->backend_list = g_list_delete_link (data->backend_list, data->backend_list);
|
||||||
data->backend_list = g_list_remove_link (data->backend_list, tmp);
|
|
||||||
g_list_free_full (tmp, g_free);
|
|
||||||
|
|
||||||
g_dbus_connection_call (g_object_ref (bus),
|
g_dbus_connection_call (g_object_ref (bus),
|
||||||
MECHANISM_BUS,
|
MECHANISM_BUS,
|
||||||
|
@ -3169,10 +3158,10 @@ printer_add_option_async (const gchar *printer_name,
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
GList *backend_list;
|
||||||
GCancellable *cancellable;
|
GCancellable *cancellable;
|
||||||
GCDCallback callback;
|
GCDCallback callback;
|
||||||
gpointer user_data;
|
gpointer user_data;
|
||||||
GList *backend_list;
|
|
||||||
} GCDData;
|
} GCDData;
|
||||||
|
|
||||||
static GCDData *
|
static GCDData *
|
||||||
|
@ -3342,7 +3331,7 @@ get_cups_devices_async_dbus_cb (GObject *source_object,
|
||||||
exclude_scheme_builder = create_other_backends_array ();
|
exclude_scheme_builder = create_other_backends_array ();
|
||||||
}
|
}
|
||||||
|
|
||||||
data->backend_list = g_list_remove_link (data->backend_list, data->backend_list);
|
data->backend_list = g_list_delete_link (data->backend_list, data->backend_list);
|
||||||
|
|
||||||
g_dbus_connection_call (G_DBUS_CONNECTION (g_object_ref (source_object)),
|
g_dbus_connection_call (G_DBUS_CONNECTION (g_object_ref (source_object)),
|
||||||
MECHANISM_BUS,
|
MECHANISM_BUS,
|
||||||
|
@ -3376,9 +3365,6 @@ get_cups_devices_async_dbus_cb (GObject *source_object,
|
||||||
TRUE,
|
TRUE,
|
||||||
TRUE,
|
TRUE,
|
||||||
data->user_data);
|
data->user_data);
|
||||||
|
|
||||||
g_list_free_full (data->backend_list, g_free);
|
|
||||||
data->backend_list = NULL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3416,7 +3402,7 @@ get_cups_devices_async (GCancellable *cancellable,
|
||||||
g_variant_builder_init (&include_scheme_builder, G_VARIANT_TYPE ("as"));
|
g_variant_builder_init (&include_scheme_builder, G_VARIANT_TYPE ("as"));
|
||||||
g_variant_builder_add (&include_scheme_builder, "s", backend_name);
|
g_variant_builder_add (&include_scheme_builder, "s", backend_name);
|
||||||
|
|
||||||
backend_list = g_list_remove_link (backend_list, backend_list);
|
backend_list = g_list_delete_link (backend_list, backend_list);
|
||||||
|
|
||||||
g_dbus_connection_call (bus,
|
g_dbus_connection_call (bus,
|
||||||
MECHANISM_BUS,
|
MECHANISM_BUS,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue