diff --git a/src/device.c b/src/device.c
index 26552a1..198c2b5 100644
--- a/src/device.c
+++ b/src/device.c
@@ -41,8 +41,6 @@ static void fprint_device_claim(FprintDevice *rdev,
DBusGMethodInvocation *context);
static void fprint_device_release(FprintDevice *rdev,
DBusGMethodInvocation *context);
-static void fprint_device_unload_print_data(FprintDevice *rdev,
- guint32 print_id, DBusGMethodInvocation *context);
static void fprint_device_verify_start(FprintDevice *rdev,
guint32 print_id, DBusGMethodInvocation *context);
static void fprint_device_verify_stop(FprintDevice *rdev,
@@ -55,8 +53,6 @@ static gboolean fprint_device_set_storage_type(FprintDevice *rdev,
gint type);
static void fprint_device_list_enrolled_fingers(FprintDevice *rdev,
DBusGMethodInvocation *context);
-static void fprint_device_load_print_data(FprintDevice *rdev,
- guint32 finger_num, DBusGMethodInvocation *context);
#include "device-dbus-glue.h"
@@ -69,10 +65,6 @@ struct session_data {
/* method invocation for async ReleaseDevice() */
DBusGMethodInvocation *context_release_device;
-
- /* a list of loaded prints */
- GSList *loaded_prints;
-
};
struct loaded_print {
@@ -327,8 +319,6 @@ fprint_device_set_username (FprintDevice *rdev,
{
FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
GError *error = NULL;
- struct session_data *session = priv->session;
- GSList *elem = session->loaded_prints;
if (_fprint_device_check_claimed(rdev, context, &error) == FALSE) {
dbus_g_method_return_error (context, error);
@@ -345,31 +335,9 @@ fprint_device_set_username (FprintDevice *rdev,
return;
}
- /* We already have a username, check if the one we're
- * setting is the same */
- if (g_str_equal (username, priv->username) != FALSE) {
- dbus_g_method_return (context);
- return;
- }
-
g_free (priv->username);
priv->username = g_strdup (username);
- /* Any fingerprints to unload? */
- if (!elem) {
- dbus_g_method_return (context);
- return;
- }
-
- /* Empty the fingerprints, as we have a different user */
- do {
- struct loaded_print *print = elem->data;
-
- session->loaded_prints = g_slist_delete_link(session->loaded_prints,
- elem);
- g_slice_free(struct loaded_print, print);
- } while ((elem = g_slist_next(elem)) != NULL);
-
dbus_g_method_return (context);
}
@@ -494,7 +462,6 @@ static void fprint_device_release(FprintDevice *rdev,
{
FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
struct session_data *session = priv->session;
- GSList *elem = session->loaded_prints;
GError *error = NULL;
if (_fprint_device_check_claimed(rdev, context, &error) == FALSE) {
@@ -511,61 +478,10 @@ static void fprint_device_release(FprintDevice *rdev,
return;
}
- /* Unload any loaded prints */
- if (elem) {
- do
- g_slice_free(struct loaded_print, elem->data);
- while ((elem = g_slist_next(elem)) != NULL);
- g_slist_free(session->loaded_prints);
- }
-
session->context_release_device = context;
fp_async_dev_close(priv->dev, dev_close_cb, rdev);
}
-static void fprint_device_unload_print_data(FprintDevice *rdev,
- guint32 print_id, DBusGMethodInvocation *context)
-{
- FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
- struct session_data *session = priv->session;
- GSList *elem = session->loaded_prints;
- GError *error = NULL;
-
- if (_fprint_device_check_claimed(rdev, context, &error) == FALSE) {
- dbus_g_method_return_error (context, error);
- return;
- }
-
- if (_fprint_device_check_polkit_for_action (rdev, context, "net.reactivated.fprint.device.verify", &error) == FALSE) {
- dbus_g_method_return_error (context, error);
- return;
- }
-
- g_message("unload print data %d for device %d", print_id, priv->id);
- if (!elem) {
- g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_NO_SUCH_LOADED_PRINT,
- "No such loaded print %d", print_id);
- dbus_g_method_return_error(context, error);
- return;
- }
-
- do {
- struct loaded_print *print = elem->data;
- if (print->id != print_id)
- continue;
-
- session->loaded_prints = g_slist_delete_link(session->loaded_prints,
- elem);
- g_slice_free(struct loaded_print, print);
- dbus_g_method_return(context);
- return;
- } while ((elem = g_slist_next(elem)) != NULL);
-
- g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_NO_SUCH_LOADED_PRINT,
- "No such loaded print %d", print_id);
- dbus_g_method_return_error(context, error);
-}
-
static void verify_cb(struct fp_dev *dev, int r, struct fp_img *img,
void *user_data)
{
@@ -577,11 +493,9 @@ static void verify_cb(struct fp_dev *dev, int r, struct fp_img *img,
}
static void fprint_device_verify_start(FprintDevice *rdev,
- guint32 print_id, DBusGMethodInvocation *context)
+ guint32 finger_num, DBusGMethodInvocation *context)
{
FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
- struct session_data *session = priv->session;
- GSList *elem = session->loaded_prints;
struct fp_print_data *data = NULL;
GError *error = NULL;
int r;
@@ -596,32 +510,22 @@ static void fprint_device_verify_start(FprintDevice *rdev,
return;
}
- g_message("start verification device %d print %d", priv->id, print_id);
- if (!elem) {
+ g_message("start verification device %d finger %d", priv->id, finger_num);
+
+ r = storages[priv->storage_type].print_data_load(priv->dev, (enum fp_finger)finger_num,
+ &data, priv->username);
+
+ if (r < 0 || !data) {
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_NO_SUCH_LOADED_PRINT,
- "No such loaded print %d", print_id);
+ "No such print %d", finger_num);
dbus_g_method_return_error(context, error);
return;
}
- do {
- struct loaded_print *print = elem->data;
- if (print->id == print_id) {
- data = print->data;
- break;
- }
- } while ((elem = g_slist_next(elem)) != NULL);
-
- if (!data) {
- g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_NO_SUCH_LOADED_PRINT,
- "No such loaded print %d", print_id);
- dbus_g_method_return_error(context, error);
- return;
- }
-
- /* FIXME check freeing/copying of data */
+ /* FIXME fp_async_verify_start should copy the fp_print_data */
r = fp_async_verify_start(priv->dev, data, verify_cb, rdev);
if (r < 0) {
+ fp_print_data_free (data);
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_VERIFY_START,
"Verify start failed with error %d", r);
dbus_g_method_return_error(context, error);
@@ -796,44 +700,3 @@ static void fprint_device_list_enrolled_fingers(FprintDevice *rdev,
dbus_g_method_return(context, ret);
}
-static void fprint_device_load_print_data(FprintDevice *rdev,
- guint32 finger_num, DBusGMethodInvocation *context)
-{
- FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
- struct session_data *session = priv->session;
- struct loaded_print *lprint;
- struct fp_print_data *data;
- GError *error = NULL;
- int r;
-
- if (_fprint_device_check_claimed(rdev, context, &error) == FALSE) {
- dbus_g_method_return_error (context, error);
- return;
- }
-
- if (_fprint_device_check_polkit_for_action (rdev, context, "net.reactivated.fprint.device.verify", &error) == FALSE) {
- dbus_g_method_return_error (context, error);
- return;
- }
-
- r = storages[priv->storage_type].print_data_load(priv->dev, (enum fp_finger)finger_num,
- &data, priv->username);
-
- if (r < 0) {
- g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_PRINT_LOAD,
- "Print load failed with error %d", r);
- dbus_g_method_return_error(context, error);
- return;
- }
-
- lprint = g_slice_new(struct loaded_print);
- lprint->data = data;
- lprint->id = ++last_id;
- session->loaded_prints = g_slist_prepend(session->loaded_prints, lprint);
-
- g_message("load print data finger %d for device %d = %d",
- finger_num, priv->id, lprint->id);
-
- dbus_g_method_return(context, lprint->id);
-}
-
diff --git a/src/device.xml b/src/device.xml
index f7d1656..887065d 100644
--- a/src/device.xml
+++ b/src/device.xml
@@ -17,18 +17,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/verify.c b/tests/verify.c
index c2ff4db..f222690 100644
--- a/tests/verify.c
+++ b/tests/verify.c
@@ -152,7 +152,6 @@ static guint32 find_finger(DBusGProxy *dev)
GArray *fingers;
guint i;
int fingernum;
- guint32 print_id;
if (!net_reactivated_Fprint_Device_list_enrolled_fingers(dev, &fingers, &error))
g_error("ListEnrolledFingers failed: %s", error->message);
@@ -172,10 +171,8 @@ static guint32 find_finger(DBusGProxy *dev)
g_array_free(fingers, TRUE);
g_print("Verifying: %s\n", fingerstr(fingernum));
- if (!net_reactivated_Fprint_Device_load_print_data(dev, fingernum, &print_id, &error))
- g_error("LoadPrintData failed: %s", error->message);
- return print_id;
+ return fingernum;
}
static void verify_result(GObject *object, int result, void *user_data)
@@ -186,7 +183,7 @@ static void verify_result(GObject *object, int result, void *user_data)
*verify_completed = TRUE;
}
-static void do_verify(DBusGProxy *dev, guint32 print_id)
+static void do_verify(DBusGProxy *dev, guint32 finger_num)
{
GError *error;
gboolean verify_completed = FALSE;
@@ -195,7 +192,7 @@ static void do_verify(DBusGProxy *dev, guint32 print_id)
dbus_g_proxy_connect_signal(dev, "VerifyStatus", G_CALLBACK(verify_result),
&verify_completed, NULL);
- if (!net_reactivated_Fprint_Device_verify_start(dev, print_id, &error))
+ if (!net_reactivated_Fprint_Device_verify_start(dev, finger_num, &error))
g_error("VerifyStart failed: %s", error->message);
while (!verify_completed)
@@ -207,13 +204,6 @@ static void do_verify(DBusGProxy *dev, guint32 print_id)
g_error("VerifyStop failed: %s", error->message);
}
-static void unload_print(DBusGProxy *dev, guint32 print_id)
-{
- GError *error = NULL;
- if (!net_reactivated_Fprint_Device_unload_print_data(dev, print_id, &error))
- g_error("UnloadPrint failed: %s", error->message);
-}
-
static void release_device(DBusGProxy *dev)
{
GError *error = NULL;
@@ -225,16 +215,15 @@ int main(int argc, char **argv)
{
GMainLoop *loop;
DBusGProxy *dev;
- guint32 print_id;
+ guint32 finger_num;
g_type_init();
loop = g_main_loop_new(NULL, FALSE);
create_manager();
dev = open_device();
- print_id = find_finger(dev);
- do_verify(dev, print_id);
- unload_print(dev, print_id);
+ finger_num = find_finger(dev);
+ do_verify(dev, finger_num);
release_device(dev);
return 0;
}