[gnome-control-center] Printers: Use system-config-printer's GetBestDrivers method
- From: Marek KaÅÃk <mkasik src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] Printers: Use system-config-printer's GetBestDrivers method
- Date: Tue, 2 Aug 2011 12:21:05 +0000 (UTC)
commit 8951bc41a719b7496a65c03a2a3fafcbb1eb5ccb
Author: Marek Kasik <mkasik redhat com>
Date: Tue Aug 2 14:20:29 2011 +0200
Printers: Use system-config-printer's GetBestDrivers method
If available, use DBus method GetBestDriver which determines the best PPD file
for the given printer. This method is available in system-config-printer
since version 1.3.5 (#654742).
panels/printers/pp-new-printer-dialog.c | 16 +-
panels/printers/pp-utils.c | 580 ++++++++++++++++++-------------
panels/printers/pp-utils.h | 7 +-
3 files changed, 345 insertions(+), 258 deletions(-)
---
diff --git a/panels/printers/pp-new-printer-dialog.c b/panels/printers/pp-new-printer-dialog.c
index e3fbe93..957e630 100644
--- a/panels/printers/pp-new-printer-dialog.c
+++ b/panels/printers/pp-new-printer-dialog.c
@@ -1388,12 +1388,9 @@ new_printer_add_button_cb (GtkButton *button,
else if (pp->devices[device_id].device_id)
{
/* Try whether CUPS has a driver for the new printer */
- ppd_name = get_ppd_name (pp->devices[device_id].device_class,
- pp->devices[device_id].device_id,
- pp->devices[device_id].device_info,
- pp->devices[device_id].device_make_and_model,
- pp->devices[device_id].device_uri,
- pp->devices[device_id].device_location);
+ ppd_name = get_ppd_name (pp->devices[device_id].device_id,
+ pp->devices[device_id].device_make_and_model,
+ pp->devices[device_id].device_uri);
if (ppd_name == NULL || ppd_name->ppd_match_level < PPD_EXACT_MATCH)
{
@@ -1442,12 +1439,9 @@ new_printer_add_button_cb (GtkButton *button,
}
/* Search CUPS for driver */
- ppd_name = get_ppd_name (pp->devices[device_id].device_class,
- pp->devices[device_id].device_id,
- pp->devices[device_id].device_info,
+ ppd_name = get_ppd_name (pp->devices[device_id].device_id,
pp->devices[device_id].device_make_and_model,
- pp->devices[device_id].device_uri,
- pp->devices[device_id].device_location);
+ pp->devices[device_id].device_uri);
g_free (device_ids);
}
diff --git a/panels/printers/pp-utils.c b/panels/printers/pp-utils.c
index 6c64202..66c3343 100644
--- a/panels/printers/pp-utils.c
+++ b/panels/printers/pp-utils.c
@@ -32,6 +32,10 @@
#define MECHANISM_BUS "org.opensuse.CupsPkHelper.Mechanism"
+#define SCP_BUS "org.fedoraproject.Config.Printing"
+#define SCP_PATH "/org/fedoraproject/Config/Printing"
+#define SCP_IFACE "org.fedoraproject.Config.Printing"
+
DBusGProxy *
get_dbus_proxy (const gchar *name,
const gchar *path,
@@ -798,169 +802,183 @@ append_best_ppds (GList *list,
* for device described by given parameters.
*/
PPDName *
-get_ppd_name (gchar *device_class,
- gchar *device_id,
- gchar *device_info,
+get_ppd_name (gchar *device_id,
gchar *device_make_and_model,
- gchar *device_uri,
- gchar *device_location)
+ gchar *device_uri)
{
- ipp_attribute_t *attr = NULL;
- const gchar *hp_equivalents[] = {"hp", "hewlett packard", NULL};
- const gchar *kyocera_equivalents[] = {"kyocera", "kyocera mita", NULL};
- const gchar *toshiba_equivalents[] = {"toshiba", "toshiba tec corp.", NULL};
- const gchar *lexmark_equivalents[] = {"lexmark", "lexmark international", NULL};
- gboolean ppd_exact_match_found = FALSE;
- PPDItem *item;
- PPDName *result = NULL;
- http_t *http = NULL;
- ipp_t *request = NULL;
- ipp_t *response = NULL;
- GList *tmp_list;
- GList *tmp_list2;
- GList *mdls = NULL;
- GList *list = NULL;
- gchar *mfg_normalized = NULL;
- gchar *mdl_normalized = NULL;
- gchar *eq_normalized = NULL;
- gchar *mfg = NULL;
- gchar *mdl = NULL;
- gchar *tmp = NULL;
- gchar *ppd_device_id;
- gchar *ppd_make_and_model;
- gchar *ppd_name;
- gchar *ppd_product;
- gchar **equivalents = NULL;
- gint i;
-
- mfg = get_tag_value (device_id, "mfg");
- if (!mfg)
- mfg = get_tag_value (device_id, "manufacturer");
-
- mdl = get_tag_value (device_id, "mdl");
- if (!mdl)
- mdl = get_tag_value (device_id, "model");
-
- mfg_normalized = normalize (mfg);
- mdl_normalized = normalize (mdl);
-
- if (mfg_normalized && mfg)
- {
- if (g_str_has_prefix (mfg_normalized, "hewlett") ||
- g_str_has_prefix (mfg_normalized, "hp"))
- equivalents = strvdup (hp_equivalents);
-
- if (g_str_has_prefix (mfg_normalized, "kyocera"))
- equivalents = strvdup (kyocera_equivalents);
-
- if (g_str_has_prefix (mfg_normalized, "toshiba"))
- equivalents = strvdup (toshiba_equivalents);
-
- if (g_str_has_prefix (mfg_normalized, "lexmark"))
- equivalents = strvdup (lexmark_equivalents);
+ GDBusProxy *proxy;
+ GVariant *input;
+ GVariant *output;
+ GVariant *array;
+ GVariant *tuple;
+ PPDName *result = NULL;
+ GError *error = NULL;
+ gchar *name, *match;
+ gint i, j;
+ static const char * const match_levels[] = {
+ "exact-cmd",
+ "exact",
+ "close",
+ "generic",
+ "none"};
+
+ proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_NONE,
+ NULL,
+ SCP_BUS,
+ SCP_PATH,
+ SCP_IFACE,
+ NULL,
+ &error);
- if (equivalents == NULL)
+ if (proxy)
+ {
+ input = g_variant_new ("(sss)",
+ device_id ? device_id : "",
+ device_make_and_model ? device_make_and_model : "",
+ device_uri ? device_uri : "");
+
+ output = g_dbus_proxy_call_sync (proxy,
+ "GetBestDrivers",
+ input,
+ G_DBUS_CALL_FLAGS_NONE,
+ 60000,
+ NULL,
+ &error);
+
+ if (output && g_variant_n_children (output) >= 1)
{
- equivalents = g_new0 (gchar *, 2);
- equivalents[0] = g_strdup (mfg);
+ array = g_variant_get_child_value (output, 0);
+ if (array)
+ for (j = 0; j < G_N_ELEMENTS (match_levels) && result == NULL; j++)
+ for (i = 0; i < g_variant_n_children (array) && result == NULL; i++)
+ {
+ tuple = g_variant_get_child_value (array, i);
+ if (tuple && g_variant_n_children (tuple) == 2)
+ {
+ name = g_strdup (g_variant_get_string (
+ g_variant_get_child_value (tuple, 0),
+ NULL));
+ match = g_strdup (g_variant_get_string (
+ g_variant_get_child_value (tuple, 1),
+ NULL));
+
+ if (g_strcmp0 (match, match_levels[j]) == 0)
+ {
+ result = g_new0 (PPDName, 1);
+ result->ppd_name = g_strdup (name);
+
+ if (g_strcmp0 (match, "exact-cmd") == 0)
+ result->ppd_match_level = PPD_EXACT_CMD_MATCH;
+ else if (g_strcmp0 (match, "exact") == 0)
+ result->ppd_match_level = PPD_EXACT_MATCH;
+ else if (g_strcmp0 (match, "close") == 0)
+ result->ppd_match_level = PPD_CLOSE_MATCH;
+ else if (g_strcmp0 (match, "generic") == 0)
+ result->ppd_match_level = PPD_GENERIC_MATCH;
+ else if (g_strcmp0 (match, "none") == 0)
+ result->ppd_match_level = PPD_NO_MATCH;
+ }
+
+ g_free (match);
+ g_free (name);
+ }
+ }
}
- }
- http = httpConnectEncrypt (cupsServer (),
- ippPort (),
- cupsEncryption ());
+ if (output)
+ g_variant_unref (output);
+ g_variant_unref (input);
+ g_object_unref (proxy);
+ }
- /* Find usable drivers for given device */
- if (http)
+ if (proxy == NULL ||
+ (error &&
+ error->domain == G_DBUS_ERROR &&
+ (error->code == G_DBUS_ERROR_SERVICE_UNKNOWN ||
+ error->code == G_DBUS_ERROR_UNKNOWN_METHOD)))
{
- /* Try exact match according to device-id */
- if (device_id)
- {
- request = ippNewRequest (CUPS_GET_PPDS);
- ippAddString (request, IPP_TAG_OPERATION, IPP_TAG_TEXT,
- "ppd-device-id", NULL, device_id);
- response = cupsDoRequest (http, request, "/");
-
- if (response &&
- response->request.status.status_code <= IPP_OK_CONFLICT)
- {
- for (attr = response->attrs; attr != NULL; attr = attr->next)
- {
- while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
- attr = attr->next;
+ ipp_attribute_t *attr = NULL;
+ const gchar *hp_equivalents[] = {"hp", "hewlett packard", NULL};
+ const gchar *kyocera_equivalents[] = {"kyocera", "kyocera mita", NULL};
+ const gchar *toshiba_equivalents[] = {"toshiba", "toshiba tec corp.", NULL};
+ const gchar *lexmark_equivalents[] = {"lexmark", "lexmark international", NULL};
+ gboolean ppd_exact_match_found = FALSE;
+ PPDItem *item;
+ http_t *http = NULL;
+ ipp_t *request = NULL;
+ ipp_t *response = NULL;
+ GList *tmp_list;
+ GList *tmp_list2;
+ GList *mdls = NULL;
+ GList *list = NULL;
+ gchar *mfg_normalized = NULL;
+ gchar *mdl_normalized = NULL;
+ gchar *eq_normalized = NULL;
+ gchar *mfg = NULL;
+ gchar *mdl = NULL;
+ gchar *tmp = NULL;
+ gchar *ppd_device_id;
+ gchar *ppd_make_and_model;
+ gchar *ppd_name;
+ gchar *ppd_product;
+ gchar **equivalents = NULL;
+ gint i;
+
+ g_warning ("You should install system-config-printer which provides \
+DBus method \"GetBestDrivers\". Using fallback solution for now.");
+
+ mfg = get_tag_value (device_id, "mfg");
+ if (!mfg)
+ mfg = get_tag_value (device_id, "manufacturer");
+
+ mdl = get_tag_value (device_id, "mdl");
+ if (!mdl)
+ mdl = get_tag_value (device_id, "model");
+
+ mfg_normalized = normalize (mfg);
+ mdl_normalized = normalize (mdl);
- if (attr == NULL)
- break;
+ if (mfg_normalized && mfg)
+ {
+ if (g_str_has_prefix (mfg_normalized, "hewlett") ||
+ g_str_has_prefix (mfg_normalized, "hp"))
+ equivalents = strvdup (hp_equivalents);
- ppd_device_id = NULL;
- ppd_make_and_model = NULL;
- ppd_name = NULL;
- ppd_product = NULL;
+ if (g_str_has_prefix (mfg_normalized, "kyocera"))
+ equivalents = strvdup (kyocera_equivalents);
- while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER)
- {
- if (g_strcmp0 (attr->name, "ppd-device-id") == 0 &&
- attr->value_tag == IPP_TAG_TEXT)
- ppd_device_id = attr->values[0].string.text;
- else if (g_strcmp0 (attr->name, "ppd-make-and-model") == 0 &&
- attr->value_tag == IPP_TAG_TEXT)
- ppd_make_and_model = attr->values[0].string.text;
- else if (g_strcmp0 (attr->name, "ppd-name") == 0 &&
- attr->value_tag == IPP_TAG_NAME)
- ppd_name = attr->values[0].string.text;
- else if (g_strcmp0 (attr->name, "ppd-product") == 0 &&
- attr->value_tag == IPP_TAG_TEXT)
- ppd_product = attr->values[0].string.text;
-
- attr = attr->next;
- }
+ if (g_str_has_prefix (mfg_normalized, "toshiba"))
+ equivalents = strvdup (toshiba_equivalents);
- if (ppd_device_id && ppd_name)
- {
- item = g_new0 (PPDItem, 1);
- item->ppd_name = g_strdup (ppd_name);
- item->ppd_device_id = g_strdup (ppd_device_id);
- item->ppd_make_and_model = g_strdup (ppd_make_and_model);
- item->ppd_product = g_strdup (ppd_product);
-
- tmp = get_tag_value (ppd_device_id, "mfg");
- if (!tmp)
- tmp = get_tag_value (ppd_device_id, "manufacturer");
- item->mfg = normalize (tmp);
- g_free (tmp);
-
- tmp = get_tag_value (ppd_device_id, "mdl");
- if (!tmp)
- tmp = get_tag_value (ppd_device_id, "model");
- item->mdl = normalize (tmp);
- g_free (tmp);
-
- item->match_level = PPD_EXACT_CMD_MATCH;
- ppd_exact_match_found = TRUE;
- list = g_list_append (list, item);
- }
+ if (g_str_has_prefix (mfg_normalized, "lexmark"))
+ equivalents = strvdup (lexmark_equivalents);
- if (attr == NULL)
- break;
- }
+ if (equivalents == NULL)
+ {
+ equivalents = g_new0 (gchar *, 2);
+ equivalents[0] = g_strdup (mfg);
}
-
- if (response)
- ippDelete(response);
}
- /* Try match according to manufacturer and model fields */
- if (!ppd_exact_match_found && mfg_normalized && mdl_normalized)
- {
- request = ippNewRequest (CUPS_GET_PPDS);
- response = cupsDoRequest (http, request, "/");
+ http = httpConnectEncrypt (cupsServer (),
+ ippPort (),
+ cupsEncryption ());
- if (response &&
- response->request.status.status_code <= IPP_OK_CONFLICT)
+ /* Find usable drivers for given device */
+ if (http)
+ {
+ /* Try exact match according to device-id */
+ if (device_id)
{
- for (i = 0; equivalents && equivalents[i]; i++)
+ request = ippNewRequest (CUPS_GET_PPDS);
+ ippAddString (request, IPP_TAG_OPERATION, IPP_TAG_TEXT,
+ "ppd-device-id", NULL, device_id);
+ response = cupsDoRequest (http, request, "/");
+
+ if (response &&
+ response->request.status.status_code <= IPP_OK_CONFLICT)
{
- eq_normalized = normalize (equivalents[i]);
for (attr = response->attrs; attr != NULL; attr = attr->next)
{
while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
@@ -1012,136 +1030,214 @@ get_ppd_name (gchar *device_class,
item->mdl = normalize (tmp);
g_free (tmp);
- if (item->mdl && item->mfg &&
- g_ascii_strcasecmp (item->mdl, mdl_normalized) == 0 &&
- g_ascii_strcasecmp (item->mfg, eq_normalized) == 0)
- {
- item->match_level = PPD_EXACT_MATCH;
- ppd_exact_match_found = TRUE;
- }
-
- if (item->match_level == PPD_EXACT_MATCH)
- list = g_list_append (list, item);
- else if (item->mfg &&
- g_ascii_strcasecmp (item->mfg, eq_normalized) == 0)
- mdls = g_list_append (mdls, item);
- else
- {
- ppd_item_free (item);
- g_free (item);
- }
+ item->match_level = PPD_EXACT_CMD_MATCH;
+ ppd_exact_match_found = TRUE;
+ list = g_list_append (list, item);
}
if (attr == NULL)
break;
}
-
- g_free (eq_normalized);
}
+
+ if (response)
+ ippDelete(response);
}
- if (response)
- ippDelete(response);
- }
+ /* Try match according to manufacturer and model fields */
+ if (!ppd_exact_match_found && mfg_normalized && mdl_normalized)
+ {
+ request = ippNewRequest (CUPS_GET_PPDS);
+ response = cupsDoRequest (http, request, "/");
- httpClose (http);
- }
+ if (response &&
+ response->request.status.status_code <= IPP_OK_CONFLICT)
+ {
+ for (i = 0; equivalents && equivalents[i]; i++)
+ {
+ eq_normalized = normalize (equivalents[i]);
+ for (attr = response->attrs; attr != NULL; attr = attr->next)
+ {
+ while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
+ attr = attr->next;
- if (list == NULL)
- list = append_best_ppds (list, mdls, mdl);
+ if (attr == NULL)
+ break;
- /* Find out driver types for all listed drivers and set their preference values */
- for (tmp_list = list; tmp_list; tmp_list = tmp_list->next)
- {
- item = (PPDItem *) tmp_list->data;
- if (item)
- {
- item->driver_type = get_driver_type (item->ppd_name,
- item->ppd_device_id,
- item->ppd_make_and_model,
- item->ppd_product,
- item->match_level);
- item->preference_value = get_driver_preference (item);
- }
- }
+ ppd_device_id = NULL;
+ ppd_make_and_model = NULL;
+ ppd_name = NULL;
+ ppd_product = NULL;
- /* Sort driver list according to preference value */
- list = g_list_sort (list, preference_value_cmp);
+ while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER)
+ {
+ if (g_strcmp0 (attr->name, "ppd-device-id") == 0 &&
+ attr->value_tag == IPP_TAG_TEXT)
+ ppd_device_id = attr->values[0].string.text;
+ else if (g_strcmp0 (attr->name, "ppd-make-and-model") == 0 &&
+ attr->value_tag == IPP_TAG_TEXT)
+ ppd_make_and_model = attr->values[0].string.text;
+ else if (g_strcmp0 (attr->name, "ppd-name") == 0 &&
+ attr->value_tag == IPP_TAG_NAME)
+ ppd_name = attr->values[0].string.text;
+ else if (g_strcmp0 (attr->name, "ppd-product") == 0 &&
+ attr->value_tag == IPP_TAG_TEXT)
+ ppd_product = attr->values[0].string.text;
+
+ attr = attr->next;
+ }
- /* Split blacklisted drivers to tmp_list */
- for (tmp_list = list; tmp_list; tmp_list = tmp_list->next)
- {
- item = (PPDItem *) tmp_list->data;
- if (item && item->preference_value >= 2000)
- break;
- }
+ if (ppd_device_id && ppd_name)
+ {
+ item = g_new0 (PPDItem, 1);
+ item->ppd_name = g_strdup (ppd_name);
+ item->ppd_device_id = g_strdup (ppd_device_id);
+ item->ppd_make_and_model = g_strdup (ppd_make_and_model);
+ item->ppd_product = g_strdup (ppd_product);
+
+ tmp = get_tag_value (ppd_device_id, "mfg");
+ if (!tmp)
+ tmp = get_tag_value (ppd_device_id, "manufacturer");
+ item->mfg = normalize (tmp);
+ g_free (tmp);
+
+ tmp = get_tag_value (ppd_device_id, "mdl");
+ if (!tmp)
+ tmp = get_tag_value (ppd_device_id, "model");
+ item->mdl = normalize (tmp);
+ g_free (tmp);
+
+ if (item->mdl && item->mfg &&
+ g_ascii_strcasecmp (item->mdl, mdl_normalized) == 0 &&
+ g_ascii_strcasecmp (item->mfg, eq_normalized) == 0)
+ {
+ item->match_level = PPD_EXACT_MATCH;
+ ppd_exact_match_found = TRUE;
+ }
+
+ if (item->match_level == PPD_EXACT_MATCH)
+ list = g_list_append (list, item);
+ else if (item->mfg &&
+ g_ascii_strcasecmp (item->mfg, eq_normalized) == 0)
+ mdls = g_list_append (mdls, item);
+ else
+ {
+ ppd_item_free (item);
+ g_free (item);
+ }
+ }
- /* Free tmp_list */
- if (tmp_list)
- {
- if (tmp_list->prev)
- tmp_list->prev->next = NULL;
- else
- list = NULL;
+ if (attr == NULL)
+ break;
+ }
- tmp_list->prev = NULL;
- for (tmp_list2 = tmp_list; tmp_list2; tmp_list2 = tmp_list2->next)
- {
- item = (PPDItem *) tmp_list2->data;
- ppd_item_free (item);
- g_free (item);
+ g_free (eq_normalized);
+ }
+ }
+
+ if (response)
+ ippDelete(response);
+ }
+
+ httpClose (http);
}
- g_list_free (tmp_list);
- }
+ if (list == NULL)
+ list = append_best_ppds (list, mdls, mdl);
- /* Free driver list and set the best one */
- if (list)
- {
- item = (PPDItem *) list->data;
- if (item)
+ /* Find out driver types for all listed drivers and set their preference values */
+ for (tmp_list = list; tmp_list; tmp_list = tmp_list->next)
{
- result = g_new0 (PPDName, 1);
- result->ppd_name = g_strdup (item->ppd_name);
- result->ppd_match_level = item->match_level;
- switch (item->match_level)
+ item = (PPDItem *) tmp_list->data;
+ if (item)
{
- case PPD_GENERIC_MATCH:
- case PPD_CLOSE_MATCH:
- g_warning ("Found PPD does not match given device exactly!");
- break;
- default:
- break;
+ item->driver_type = get_driver_type (item->ppd_name,
+ item->ppd_device_id,
+ item->ppd_make_and_model,
+ item->ppd_product,
+ item->match_level);
+ item->preference_value = get_driver_preference (item);
}
}
+ /* Sort driver list according to preference value */
+ list = g_list_sort (list, preference_value_cmp);
+
+ /* Split blacklisted drivers to tmp_list */
for (tmp_list = list; tmp_list; tmp_list = tmp_list->next)
{
item = (PPDItem *) tmp_list->data;
- ppd_item_free (item);
- g_free (item);
+ if (item && item->preference_value >= 2000)
+ break;
}
- g_list_free (list);
- }
+ /* Free tmp_list */
+ if (tmp_list)
+ {
+ if (tmp_list->prev)
+ tmp_list->prev->next = NULL;
+ else
+ list = NULL;
- if (mdls)
- {
- for (tmp_list = mdls; tmp_list; tmp_list = tmp_list->next)
+ tmp_list->prev = NULL;
+ for (tmp_list2 = tmp_list; tmp_list2; tmp_list2 = tmp_list2->next)
+ {
+ item = (PPDItem *) tmp_list2->data;
+ ppd_item_free (item);
+ g_free (item);
+ }
+
+ g_list_free (tmp_list);
+ }
+
+ /* Free driver list and set the best one */
+ if (list)
{
- item = (PPDItem *) tmp_list->data;
- ppd_item_free (item);
- g_free (item);
+ item = (PPDItem *) list->data;
+ if (item)
+ {
+ result = g_new0 (PPDName, 1);
+ result->ppd_name = g_strdup (item->ppd_name);
+ result->ppd_match_level = item->match_level;
+ switch (item->match_level)
+ {
+ case PPD_GENERIC_MATCH:
+ case PPD_CLOSE_MATCH:
+ g_warning ("Found PPD does not match given device exactly!");
+ break;
+ default:
+ break;
+ }
+ }
+
+ for (tmp_list = list; tmp_list; tmp_list = tmp_list->next)
+ {
+ item = (PPDItem *) tmp_list->data;
+ ppd_item_free (item);
+ g_free (item);
+ }
+
+ g_list_free (list);
}
- g_list_free (mdls);
- }
- g_free (mfg);
- g_free (mdl);
- g_free (mfg_normalized);
- g_free (mdl_normalized);
- if (equivalents)
- g_strfreev (equivalents);
+ if (mdls)
+ {
+ for (tmp_list = mdls; tmp_list; tmp_list = tmp_list->next)
+ {
+ item = (PPDItem *) tmp_list->data;
+ ppd_item_free (item);
+ g_free (item);
+ }
+ g_list_free (mdls);
+ }
+
+ g_free (mfg);
+ g_free (mdl);
+ g_free (mfg_normalized);
+ g_free (mdl_normalized);
+ if (equivalents)
+ g_strfreev (equivalents);
+ }
return result;
}
diff --git a/panels/printers/pp-utils.h b/panels/printers/pp-utils.h
index 512065a..c95202f 100644
--- a/panels/printers/pp-utils.h
+++ b/panels/printers/pp-utils.h
@@ -52,12 +52,9 @@ DBusGProxy *get_dbus_proxy (const gchar *name,
gchar *get_tag_value (const gchar *tag_string,
const gchar *tag_name);
-PPDName *get_ppd_name (gchar *device_class,
- gchar *device_id,
- gchar *device_info,
+PPDName *get_ppd_name (gchar *device_id,
gchar *device_make_and_model,
- gchar *device_uri,
- gchar *device_location);
+ gchar *device_uri);
char *get_dest_attr (const char *dest_name,
const char *attr);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]