From 7e1646c382bbd6dc21a167bf7f0e45afa5ea217e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Tue, 4 Dec 2012 10:50:30 +0200 Subject: [PATCH 01/15] uru4000: fix race condition on waiting power up irq It can come before we finish reading the status register on some cases. Arm the irq handler early, and fix the state machine to handle early irq properly. https://bugs.freedesktop.org/show_bug.cgi?id=57834 --- libfprint/drivers/uru4000.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/libfprint/drivers/uru4000.c b/libfprint/drivers/uru4000.c index 541245a2..07e26a4f 100644 --- a/libfprint/drivers/uru4000.c +++ b/libfprint/drivers/uru4000.c @@ -994,16 +994,19 @@ static void init_scanpwr_irq_cb(struct fp_img_dev *dev, int status, uint16_t type, void *user_data) { struct fpi_ssm *ssm = user_data; + struct uru4k_dev *urudev = dev->priv; if (status) fpi_ssm_mark_aborted(ssm, status); else if (type != IRQDATA_SCANPWR_ON) fp_dbg("ignoring interrupt"); - else if (ssm->cur_state != INIT_AWAIT_SCAN_POWER) - fp_err("ignoring scanpwr interrupt due to being in wrong state %d", - ssm->cur_state); - else + else if (ssm->cur_state != INIT_AWAIT_SCAN_POWER) { + fp_dbg("early scanpwr interrupt"); + urudev->scanpwr_irq_timeouts = -1; + } else { + fp_dbg("late scanpwr interrupt"); fpi_ssm_next_state(ssm); + } } static void init_scanpwr_timeout(void *user_data) @@ -1053,14 +1056,21 @@ static void init_run_state(struct fpi_ssm *ssm) fpi_ssm_next_state(ssm); break; case INIT_POWERUP: ; + if (!IRQ_HANDLER_IS_RUNNING(urudev)) { + fpi_ssm_mark_aborted(ssm, -EIO); + break; + } + urudev->irq_cb_data = ssm; + urudev->irq_cb = init_scanpwr_irq_cb; + struct fpi_ssm *powerupsm = fpi_ssm_new(dev->dev, powerup_run_state, POWERUP_NUM_STATES); powerupsm->priv = dev; fpi_ssm_start_subsm(ssm, powerupsm); break; case INIT_AWAIT_SCAN_POWER: - if (!IRQ_HANDLER_IS_RUNNING(urudev)) { - fpi_ssm_mark_aborted(ssm, -EIO); + if (urudev->scanpwr_irq_timeouts < 0) { + fpi_ssm_next_state(ssm); break; } @@ -1073,13 +1083,12 @@ static void init_run_state(struct fpi_ssm *ssm) fpi_ssm_mark_aborted(ssm, -ETIME); break; } - - urudev->irq_cb_data = ssm; - urudev->irq_cb = init_scanpwr_irq_cb; break; case INIT_DONE: - fpi_timeout_cancel(urudev->scanpwr_irq_timeout); - urudev->scanpwr_irq_timeout = NULL; + if (urudev->scanpwr_irq_timeout) { + fpi_timeout_cancel(urudev->scanpwr_irq_timeout); + urudev->scanpwr_irq_timeout = NULL; + } urudev->irq_cb_data = NULL; urudev->irq_cb = NULL; fpi_ssm_next_state(ssm); From 8a87ba448c62eb14fa51d70ce870dd10b67ba76b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Mon, 3 Dec 2012 09:51:27 +0200 Subject: [PATCH 02/15] uru4000: fix cancelling of imaging from error callback Call error callback before resetting img_transfer to NULL. This variable is internally used to detect if we are still in imaging loop and the call to execute_state_change() needs to be postponed. Since this is the final thing imaging_complete() we can't reset img_transfer until just before this call. https://bugs.freedesktop.org/show_bug.cgi?id=57829 --- libfprint/drivers/uru4000.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libfprint/drivers/uru4000.c b/libfprint/drivers/uru4000.c index 07e26a4f..ccaa87f8 100644 --- a/libfprint/drivers/uru4000.c +++ b/libfprint/drivers/uru4000.c @@ -789,15 +789,18 @@ static void imaging_complete(struct fpi_ssm *ssm) int r = ssm->error; fpi_ssm_free(ssm); + /* Report error before exiting imaging loop - the error handler + * can request state change, which needs to be postponed to end of + * this function. */ + if (r) + fpi_imgdev_session_error(dev, r); + g_free(urudev->img_data); urudev->img_data = NULL; libusb_free_transfer(urudev->img_transfer); urudev->img_transfer = NULL; - if (r) - fpi_imgdev_session_error(dev, r); - r = execute_state_change(dev); if (r) fpi_imgdev_session_error(dev, r); From 7751fcb375f81796473074763625e7e948417b4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Mon, 3 Dec 2012 09:59:30 +0200 Subject: [PATCH 03/15] AUTHORS: Update https://bugs.freedesktop.org/show_bug.cgi?id=57829 --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index 6ce0375d..2b9f2676 100644 --- a/AUTHORS +++ b/AUTHORS @@ -8,3 +8,4 @@ Copyright (C) 2007-2008,2012 Vasily Khoruzhick Copyright (C) 2007 Jan-Michael Brummer Copyright (C) 2007 Anthony Bretaudeau Copyright (C) 2010 Hugo Grostabussiat +Copyright (C) 2012 Timo Teräs From 0b2d33c712d6917ed71068188788a258a4dce61e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Mon, 3 Dec 2012 09:57:25 +0200 Subject: [PATCH 04/15] imgdev: fix cancelling of enrollment from stage_completed callback Re-check device state after fpi_drvcb_enroll_stage_completed(). If enrollment was cancelled after non-completing stage, we must not restart acquire as it would confuse the internal state machine. https://bugs.freedesktop.org/show_bug.cgi?id=57829 --- libfprint/imgdev.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libfprint/imgdev.c b/libfprint/imgdev.c index 14e41ae7..1ed3f6dd 100644 --- a/libfprint/imgdev.c +++ b/libfprint/imgdev.c @@ -145,7 +145,10 @@ void fpi_imgdev_report_finger_status(struct fp_img_dev *imgdev, case IMG_ACTION_ENROLL: fp_dbg("reporting enroll result"); fpi_drvcb_enroll_stage_completed(imgdev->dev, r, data, img); - if (r > 0 && r != FP_ENROLL_COMPLETE && r != FP_ENROLL_FAIL) { + /* the callback can cancel enrollment, so recheck current + * action and the status to see if retry is needed */ + if (imgdev->action == IMG_ACTION_ENROLL && + r > 0 && r != FP_ENROLL_COMPLETE && r != FP_ENROLL_FAIL) { imgdev->action_result = 0; imgdev->action_state = IMG_ACQUIRE_STATE_AWAIT_FINGER_ON; dev_change_state(imgdev, IMG_ACQUIRE_STATE_AWAIT_FINGER_ON); From 02509e10731b503b88ce0896ba6bb4c6c9e38679 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Mon, 7 Jan 2013 12:36:45 +0100 Subject: [PATCH 05/15] build: udev rules must be created when building from git https://bugs.freedesktop.org/show_bug.cgi?id=59076 --- configure.ac | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/configure.ac b/configure.ac index 3c779f40..67372567 100644 --- a/configure.ac +++ b/configure.ac @@ -173,6 +173,10 @@ AC_ARG_ENABLE(udev-rules, [ENABLE_UDEV_RULES=yes]) dnl Default value AM_CONDITIONAL(ENABLE_UDEV_RULES, test x$ENABLE_UDEV_RULES = "xyes") +if test $ENABLE_UDEV_RULES = no && test -d .git/ ; then + AC_MSG_ERROR(--disable-udev-rules can only be used when building from tarballs) +fi + AC_ARG_WITH(udev-rules-dir, AS_HELP_STRING([--with-udev-rules-dir=DIR],[Installation path for udev rules @<:@auto@:>@]), [ac_with_udev_rules_dir=$withval], From 43eca622cd49b58c87157e1ff1a2fcfdfba0934e Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Sun, 13 Jan 2013 16:42:13 +0300 Subject: [PATCH 06/15] configure.ac: Use AC_CONFIG_HEADERS AM_CONFIG_HEADER is obsolete, use AC_CONFIG_HEADERS instead of it. https://bugs.freedesktop.org/show_bug.cgi?id=59320 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 67372567..978ef0dd 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ AC_INIT([libfprint], [0.5.0]) AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz check-news]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([libfprint/core.c]) -AM_CONFIG_HEADER([config.h]) +AC_CONFIG_HEADERS([config.h]) # Enable silent build when available (Automake 1.11) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) From 3b3679c900f6739f7067f8d720e15d548bb39be9 Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Sun, 13 Jan 2013 16:43:38 +0300 Subject: [PATCH 07/15] upeke2: Add support for 147e:2020 ID https://bugs.freedesktop.org/show_bug.cgi?id=59320 --- libfprint/drivers/upeke2.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libfprint/drivers/upeke2.c b/libfprint/drivers/upeke2.c index ed8f43d1..a7db54d2 100644 --- a/libfprint/drivers/upeke2.c +++ b/libfprint/drivers/upeke2.c @@ -46,6 +46,11 @@ #define MSG_READ_BUF_SIZE 0x40 #define MAX_DATA_IN_READ_BUF (MSG_READ_BUF_SIZE - 9) +enum { + UPEKE2_2016, + UPEKE2_2020, +}; + struct upeke2_dev { gboolean enroll_passed; gboolean first_verify_iteration; @@ -848,8 +853,10 @@ static struct fpi_ssm *deinitsm_new(struct fp_dev *dev) static int discover(struct libusb_device_descriptor *dsc, uint32_t *devtype) { - /* Revision 2 is what we're interested in */ - if (dsc->bcdDevice == 2) + if (dsc->idProduct == 0x2016 && dsc->bcdDevice == 2) + return 1; + + if (dsc->idProduct == 0x2020 && dsc->bcdDevice == 1) return 1; return 0; @@ -1453,7 +1460,8 @@ static int verify_stop(struct fp_dev *dev, gboolean iterating) } static const struct usb_id id_table[] = { - { .vendor = 0x147e, .product = 0x2016 }, + { .vendor = 0x147e, .product = 0x2016, .driver_data = UPEKE2_2016 }, + { .vendor = 0x147e, .product = 0x2020, .driver_data = UPEKE2_2020 }, { 0, 0, 0, }, /* terminating entry */ }; From 7eafca7babe40bc7dddd27ce9051b13b90ada021 Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Thu, 24 Jan 2013 12:05:36 +0300 Subject: [PATCH 08/15] build: glib-2.28 or newer is a requirement We're using g_slist_free_full which was introduced in glib-2.28 https://bugs.freedesktop.org/show_bug.cgi?id=59790 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 978ef0dd..b2ec4a79 100644 --- a/configure.ac +++ b/configure.ac @@ -156,7 +156,7 @@ PKG_CHECK_MODULES(CRYPTO, nss) AC_SUBST(CRYPTO_CFLAGS) AC_SUBST(CRYPTO_LIBS) -PKG_CHECK_MODULES(GLIB, "glib-2.0") +PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.28]) AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) From 0e843ad6b36e370f9b7150a285a901075657cc8d Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Mon, 18 Feb 2013 12:58:28 +0300 Subject: [PATCH 09/15] build: fix autoreconf warnings Replace AC_LANG_PROGRAM with AC_LANG_SOURCE and INCLUDES with AM_CFLAGS to fix autoreconf warnings https://bugs.freedesktop.org/show_bug.cgi?id=62748 --- configure.ac | 2 +- examples/Makefile.am | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index b2ec4a79..deb2b90b 100644 --- a/configure.ac +++ b/configure.ac @@ -264,7 +264,7 @@ fi # Restore gnu89 inline semantics on gcc 4.3 and newer saved_cflags="$CFLAGS" CFLAGS="$CFLAGS -fgnu89-inline" -AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]), inline_cflags="-fgnu89-inline", inline_cflags="") +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], inline_cflags="-fgnu89-inline", inline_cflags="") CFLAGS="$saved_cflags" AC_DEFINE([API_EXPORTED], [__attribute__((visibility("default")))], [Default visibility]) diff --git a/examples/Makefile.am b/examples/Makefile.am index b045ddb0..8aa486c5 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -1,4 +1,4 @@ -INCLUDES = -I$(top_srcdir) +AM_CFLAGS = -I$(top_srcdir) noinst_PROGRAMS = verify_live enroll verify img_capture cpp-test verify_live_SOURCES = verify_live.c From 1acd647b29c50b73d147ccb8c3530198ba44db70 Mon Sep 17 00:00:00 2001 From: Jeremy Bicha Date: Sat, 20 Apr 2013 11:33:17 -0400 Subject: [PATCH 10/15] build: Fix underlinking against glib https://bugs.freedesktop.org/show_bug.cgi?id=63755 --- libfprint/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libfprint/Makefile.am b/libfprint/Makefile.am index 7a167825..4dee3011 100644 --- a/libfprint/Makefile.am +++ b/libfprint/Makefile.am @@ -88,7 +88,7 @@ libfprint_la_LIBADD = -lm $(LIBUSB_LIBS) $(GLIB_LIBS) $(CRYPTO_LIBS) fprint_list_udev_rules_SOURCES = fprint-list-udev-rules.c fprint_list_udev_rules_CFLAGS = -fvisibility=hidden -I$(srcdir)/nbis/include $(LIBUSB_CFLAGS) $(GLIB_CFLAGS) $(IMAGEMAGICK_CFLAGS) $(CRYPTO_CFLAGS) $(AM_CFLAGS) -fprint_list_udev_rules_LDADD = $(builddir)/libfprint.la +fprint_list_udev_rules_LDADD = $(builddir)/libfprint.la $(GLIB_LIBS) udev_rules_DATA = 60-fprint-autosuspend.rules From 6d65bfcf809d9b9be08027472ab1884c709d65c0 Mon Sep 17 00:00:00 2001 From: Patrick Marlier Date: Tue, 4 Dec 2012 09:06:06 +0100 Subject: [PATCH 11/15] lib: g_malloc never fails Or rather, it never returns errors and aborts instead if memory cannot be allocated, so remove code that handled failures. https://bugs.freedesktop.org/show_bug.cgi?id=57869 --- libfprint/drivers/aes1660.c | 9 --------- libfprint/drivers/aes2550.c | 4 ---- libfprint/drivers/aes2660.c | 9 --------- libfprint/drivers/aesx660.c | 4 ---- 4 files changed, 26 deletions(-) diff --git a/libfprint/drivers/aes1660.c b/libfprint/drivers/aes1660.c index e647ea56..250ca52d 100644 --- a/libfprint/drivers/aes1660.c +++ b/libfprint/drivers/aes1660.c @@ -48,16 +48,7 @@ static int dev_init(struct fp_img_dev *dev, unsigned long driver_data) } dev->priv = aesdev = g_malloc0(sizeof(struct aesX660_dev)); - if (!aesdev) - return -ENOMEM; - aesdev->buffer = g_malloc0(AES1660_FRAME_SIZE + AESX660_HEADER_SIZE); - if (!aesdev->buffer) { - g_free(aesdev); - dev->priv = NULL; - return -ENOMEM; - } - aesdev->h_scale_factor = SCALE_FACTOR; aesdev->init_seqs[0] = aes1660_init_1; aesdev->init_seqs_len[0] = array_n_elements(aes1660_init_1); diff --git a/libfprint/drivers/aes2550.c b/libfprint/drivers/aes2550.c index 96ce5900..dcfbc824 100644 --- a/libfprint/drivers/aes2550.c +++ b/libfprint/drivers/aes2550.c @@ -215,10 +215,6 @@ static int process_strip_data(struct fpi_ssm *ssm, unsigned char *data) fp_dbg("Bogus frame len: %.4x\n", len); } stripdata = g_malloc(FRAME_WIDTH * FRAME_HEIGHT / 2); /* 4 bits per pixel */ - if (!stripdata) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); - return -ENOMEM; - } memcpy(stripdata, data + 33, FRAME_WIDTH * FRAME_HEIGHT / 2); aesdev->strips = g_slist_prepend(aesdev->strips, stripdata); aesdev->strips_len++; diff --git a/libfprint/drivers/aes2660.c b/libfprint/drivers/aes2660.c index bc1dd007..4be7475d 100644 --- a/libfprint/drivers/aes2660.c +++ b/libfprint/drivers/aes2660.c @@ -47,16 +47,7 @@ static int dev_init(struct fp_img_dev *dev, unsigned long driver_data) } dev->priv = aesdev = g_malloc0(sizeof(struct aesX660_dev)); - if (!aesdev) - return -ENOMEM; - aesdev->buffer = g_malloc0(AES2660_FRAME_SIZE + AESX660_HEADER_SIZE); - if (!aesdev->buffer) { - g_free(aesdev); - dev->priv = NULL; - return -ENOMEM; - } - /* No scaling for AES2660 */ aesdev->h_scale_factor = 1; aesdev->init_seqs[0] = aes2660_init_1; diff --git a/libfprint/drivers/aesx660.c b/libfprint/drivers/aesx660.c index ff4f50c5..d030d0e7 100644 --- a/libfprint/drivers/aesx660.c +++ b/libfprint/drivers/aesx660.c @@ -278,10 +278,6 @@ static int process_stripe_data(struct fpi_ssm *ssm, unsigned char *data) struct aesX660_dev *aesdev = dev->priv; stripdata = g_malloc(aesdev->frame_width * FRAME_HEIGHT / 2); /* 4 bits per pixel */ - if (!stripdata) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); - return 1; - } fp_dbg("Processing frame %.2x %.2x", data[AESX660_IMAGE_OK_OFFSET], data[AESX660_LAST_FRAME_OFFSET]); From f3dd55815ec1ef357e343ae1a810c6728d3ffd9a Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Wed, 26 Jun 2013 14:21:33 +0200 Subject: [PATCH 12/15] lib: Use g_malloc0 instead of g_malloc+memset --- libfprint/data.c | 3 +-- libfprint/img.c | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/libfprint/data.c b/libfprint/data.c index 3371a0c2..bfbf8fb5 100644 --- a/libfprint/data.c +++ b/libfprint/data.c @@ -97,9 +97,8 @@ static const char *finger_num_to_str(enum fp_finger finger) static struct fp_print_data *print_data_new(uint16_t driver_id, uint32_t devtype, enum fp_print_data_type type, size_t length) { - struct fp_print_data *data = g_malloc(sizeof(*data) + length); + struct fp_print_data *data = g_malloc0(sizeof(*data) + length); fp_dbg("length=%zd driver=%02x devtype=%04x", length, driver_id, devtype); - memset(data, 0, sizeof(*data)); data->driver_id = driver_id; data->devtype = devtype; data->type = type; diff --git a/libfprint/img.c b/libfprint/img.c index 64a6240b..b1d32edc 100644 --- a/libfprint/img.c +++ b/libfprint/img.c @@ -47,8 +47,7 @@ struct fp_img *fpi_img_new(size_t length) { - struct fp_img *img = g_malloc(sizeof(*img) + length); - memset(img, 0, sizeof(*img)); + struct fp_img *img = g_malloc0(sizeof(*img) + length); fp_dbg("length=%zd", length); img->length = length; return img; From a6339a30ef8abea6c4dc90acbc04c49c07906abe Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Thu, 25 Jul 2013 12:27:53 +0200 Subject: [PATCH 13/15] Fix udev rules printing The blacklisted devices weren't correctly checked for past the first item, as we weren't using the right index to get the product ID from the ID table. --- libfprint/fprint-list-udev-rules.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libfprint/fprint-list-udev-rules.c b/libfprint/fprint-list-udev-rules.c index 791a4575..d26ff14b 100644 --- a/libfprint/fprint-list-udev-rules.c +++ b/libfprint/fprint-list-udev-rules.c @@ -52,7 +52,7 @@ static void print_driver (struct fp_driver *driver) blacklist = 0; for (j = 0; blacklist_id_table[j].vendor != 0; j++) { if (driver->id_table[i].vendor == blacklist_id_table[j].vendor && - driver->id_table[j].product == blacklist_id_table[j].product) { + driver->id_table[i].product == blacklist_id_table[j].product) { blacklist = 1; break; } From c14ebd8b636574cbe74aa05db0d0c1f6da9e2410 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Thu, 25 Jul 2013 12:29:53 +0200 Subject: [PATCH 14/15] Add MS keyboard to the suspend blacklist 045e:00bb isn't a stand-alone fingerprint reader, but a keyboard with a reader integrated. https://bugs.freedesktop.org/show_bug.cgi?id=66659 --- libfprint/fprint-list-udev-rules.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libfprint/fprint-list-udev-rules.c b/libfprint/fprint-list-udev-rules.c index d26ff14b..71c0b598 100644 --- a/libfprint/fprint-list-udev-rules.c +++ b/libfprint/fprint-list-udev-rules.c @@ -30,6 +30,8 @@ static const struct usb_id whitelist_id_table[] = { static const struct usb_id blacklist_id_table[] = { { .vendor = 0x0483, .product = 0x2016 }, + /* https://bugs.freedesktop.org/show_bug.cgi?id=66659 */ + { .vendor = 0x045e, .product = 0x00bb }, { 0, 0, 0 }, }; From 9e2f8b5e754bf57fe0379428e7a382dacda165fe Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Sun, 11 Aug 2013 17:53:21 +0200 Subject: [PATCH 15/15] 0.5.1 --- NEWS | 11 +++++++++++ configure.ac | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index fc99c1a5..c9d2b9ce 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,17 @@ This file lists notable changes in each release. For the full history of all changes, see ChangeLog. +2013-08-11: v0.5.1 release + +* Drivers + - Add support for 147e:2020 to upeke2 driver + - Fix possible race condition, and cancellation in uru4000 driver + +* Udev rules: + - Add Microsoft keyboard to the suspend blacklist + +* Plenty of build fixes + 2012-12-03: v0.5.0 release * Drivers: diff --git a/configure.ac b/configure.ac index deb2b90b..d4536f69 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([libfprint], [0.5.0]) +AC_INIT([libfprint], [0.5.1]) AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz check-news]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([libfprint/core.c])