Hi Dne Tue, 03 Jul 2012 21:58:38 +0100 "Adam D. Barratt" <a...@adam-barratt.org.uk> napsal(a):
> On Tue, 2012-07-03 at 09:46 +0200, Michal Čihař wrote: > > I'd like to upload colorhug-client 0.1.11-1 to unstable and get freeze > > exception for it. It's new upstream release which fixes few annoying > > bugs (most notably broken dark offsets calibration). The package > > contains tool for managing ColorHug device and there are no reverse > > dependencies. > > > > Not attaching the diff between versions as it is quite huge (mostly due > > to translation updates). > > We're not going to consider an exception without even an idea of the > diff, I'm afraid. Could you prepare a filtered version without the > translation noise? (e.g. "| filterdiff -x '*/*.po'") Okay, attaching filtered diff without translations. Sorry for not doing this at beginning. -- Michal Čihař | http://cihar.com | http://blog.cihar.com
diff --git a/NEWS b/NEWS index c0448c1..0e36bb9 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,24 @@ +Version 0.1.11 +~~~~~~~~~~~~~~ +Released: 2012-07-02 + +Notes: + - If you've used the set-dark-offsets command, you've probably + overwritten your dark cal with values that are 3000x too large. + - Just install this version of colorhug-client and re-execute + '$ colorhug set-dark-offsets' and save the new values. + +New Features: + - Show the calibration types when doing 'list-calibration' (Richard Hughes) + - Ask the user to cover the aperture before doing a dark cal (Richard Hughes) + +Bugfixes: + - Do not hardcode the type as 'all' when loading a CCMX (Richard Hughes) + - Recognise the INVALID_CALIBRATION error enum (Richard Hughes) + - Recognise the NO_WELCOME errata enum (Richard Hughes) + - Do not spin if enter is pressed at [Y/n] (Richard Hughes) + - Set the post-scale to unity for the dark offsets (Richard Hughes) + Version 0.1.10 ~~~~~~~~~~~~~~ Released: 2012-06-11 diff --git a/RELEASE b/RELEASE index 16b95d5..d339f0c 100644 --- a/RELEASE +++ b/RELEASE @@ -2,10 +2,10 @@ PackageKit Release Notes 1. Write NEWS entries in the same format as usual. -git shortlog COLORHUG_CLIENT_0_1_9.. | grep -i -v trivial | uniq | grep -v Merge > NEWS.new +git shortlog COLORHUG_CLIENT_0_1_10.. | grep -i -v trivial | uniq | grep -v Merge > NEWS.new -------------------------------------------------------------------------------- -Version 0.1.10 +Version 0.1.11 ~~~~~~~~~~~~~~ Released: 2012-xx-xx @@ -20,8 +20,8 @@ Bugfixes: tx pull --all git add po/*.po -git commit -a -m "Release version 0.1.10" -git tag -s COLORHUG_CLIENT_0_1_10 -m "==== Version 0.1.10 ====" +git commit -a -m "Release version 0.1.11" +git tag -s COLORHUG_CLIENT_0_1_11 -m "==== Version 0.1.11 ====" <wait> git push --tags git push @@ -45,7 +45,7 @@ tx push --source 8. Send an email to colorhug-users ================================================= -colorhug-client 0.1.10 released! +colorhug-client 0.1.11 released! This package includes the client tools which allows the user to upgrade the firmware on the sensor or to access the sensor from command line diff --git a/configure.ac b/configure.ac index a511c7a..e962eb4 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ(2.63) m4_define([ch_major_version], [0]) m4_define([ch_minor_version], [1]) -m4_define([ch_micro_version], [10]) +m4_define([ch_micro_version], [11]) m4_define([ch_version], [ch_major_version.ch_minor_version.ch_micro_version]) diff --git a/libcolorhug/ch-common.c b/libcolorhug/ch-common.c index eeeb5ec..3d629f3 100644 --- a/libcolorhug/ch-common.c +++ b/libcolorhug/ch-common.c @@ -108,6 +108,9 @@ ch_strerror (ChError error_enum) case CH_ERROR_SELF_TEST_COLOR_SELECT: str = "Self test failed: Color Select"; break; + case CH_ERROR_INVALID_CALIBRATION: + str = "Invalid calibration"; + break; default: str = "Unknown error, please report"; break; diff --git a/libcolorhug/ch-common.h b/libcolorhug/ch-common.h index 356e37e..4a06ac5 100644 --- a/libcolorhug/ch-common.h +++ b/libcolorhug/ch-common.h @@ -722,6 +722,7 @@ typedef enum { CH_ERROR_SELF_TEST_BLUE, CH_ERROR_SELF_TEST_COLOR_SELECT, CH_ERROR_SELF_TEST_MULTIPLIER, + CH_ERROR_INVALID_CALIBRATION, CH_ERROR_LAST } ChError; @@ -729,7 +730,7 @@ typedef enum { typedef enum { CH_PCB_ERRATA_NONE = 0, CH_PCB_ERRATA_SWAPPED_LEDS = 1 << 0, - CH_PCB_ERRATA_LAST = 1 << 1 + CH_PCB_ERRATA_NO_WELCOME = 1 << 1, } ChPcbErrata; /* prototypes */ diff --git a/libcolorhug/ch-device-queue.c b/libcolorhug/ch-device-queue.c index 2e0ba40..26e546f 100644 --- a/libcolorhug/ch-device-queue.c +++ b/libcolorhug/ch-device-queue.c @@ -1000,6 +1000,7 @@ ch_device_queue_set_calibration_ccmx (ChDeviceQueue *device_queue, const gchar *description; gboolean ret = TRUE; gdouble *calibration_tmp; + guint8 types = 0; guint i; g_return_val_if_fail (CD_IS_IT8 (ccmx), FALSE); @@ -1013,6 +1014,27 @@ ch_device_queue_set_calibration_ccmx (ChDeviceQueue *device_queue, goto out; } + /* get the supported display types */ + if (cd_it8_has_option (ccmx, "TYPE_FACTORY")) { + types = CH_CALIBRATION_TYPE_ALL; + } else { + if (cd_it8_has_option (ccmx, "TYPE_LCD")) + types += CH_CALIBRATION_TYPE_LCD; + if (cd_it8_has_option (ccmx, "TYPE_LED")) + types += CH_CALIBRATION_TYPE_LED; + if (cd_it8_has_option (ccmx, "TYPE_CRT")) + types += CH_CALIBRATION_TYPE_CRT; + if (cd_it8_has_option (ccmx, "TYPE_PROJECTOR")) + types += CH_CALIBRATION_TYPE_PROJECTOR; + } + + /* no types set in CCMX file */ + if (types == 0) { + ret = FALSE; + g_set_error_literal (error, 1, 0, "No TYPE_x in ccmx file"); + goto out; + } + /* get the description from the ccmx file */ description = cd_it8_get_title (ccmx); if (description == NULL) { @@ -1041,7 +1063,7 @@ ch_device_queue_set_calibration_ccmx (ChDeviceQueue *device_queue, device, calibration_index, calibration, - CH_CALIBRATION_TYPE_ALL, + types, description); out: return ret; diff --git a/po/de_DE.po b/po/de_DE.po index 1b14c06..fd58814 100644 diff --git a/po/lv.po b/po/lv.po index 396461b..c12331a 100644 diff --git a/po/nb.po b/po/nb.po index c7b30db..e6b66e4 100644 diff --git a/src/ch-flash-md.c b/src/ch-flash-md.c index fbd9d38..87f9c3a 100644 --- a/src/ch-flash-md.c +++ b/src/ch-flash-md.c @@ -163,7 +163,7 @@ ch_flash_md_start_element_cb (GMarkupParseContext *context, priv->pos = CH_FLASH_MD_POS_CHANGELOG; return; } - g_debug ("unknown start tag %s for updates", element_name); + g_debug ("unknown start tag %s for update", element_name); return; } if (priv->pos == CH_FLASH_MD_POS_CHANGELOG) { @@ -175,7 +175,7 @@ ch_flash_md_start_element_cb (GMarkupParseContext *context, priv->pos = CH_FLASH_MD_POS_WARNING; return; } - g_debug ("unknown start tag %s for updates", element_name); + g_debug ("unknown start tag %s for changelog", element_name); return; } g_debug ("unknown start pos value: %s", diff --git a/src/ch-main.c b/src/ch-main.c index 25a15a9..93e91ad 100644 --- a/src/ch-main.c +++ b/src/ch-main.c @@ -183,23 +183,27 @@ static gboolean ch_util_get_prompt (const gchar *question, gboolean defaultyes) { gboolean ret = FALSE; - gboolean valid = FALSE; gchar value; g_print ("%s %s ", question, defaultyes ? "[Y/n]" : "[N/y]"); - while (!valid) { + while (TRUE) { value = getchar (); if (value == 'y' || value == 'Y') { - valid = TRUE; ret = TRUE; + goto out; } if (value == 'n' || value == 'N') { - valid = TRUE; ret = FALSE; + goto out; + } + if (value == '\n') { + ret = defaultyes; + goto out; } } +out: return ret; } @@ -987,6 +991,24 @@ out: } /** + * ch_util_types_to_short_string: + **/ +static gchar * +ch_util_types_to_short_string (guint8 types) +{ + GString *str = g_string_new (""); + if ((types & CH_CALIBRATION_TYPE_LCD) > 0) + g_string_append (str, "L"); + if ((types & CH_CALIBRATION_TYPE_CRT) > 0) + g_string_append (str, "C"); + if ((types & CH_CALIBRATION_TYPE_PROJECTOR) > 0) + g_string_append (str, "P"); + if ((types & CH_CALIBRATION_TYPE_LED) > 0) + g_string_append (str, "E"); + return g_string_free (str, FALSE); +} + +/** * ch_util_list_calibration: **/ static gboolean @@ -994,9 +1016,11 @@ ch_util_list_calibration (ChUtilPrivate *priv, gchar **values, GError **error) { gboolean ret; gchar description[CH_CALIBRATION_DESCRIPTION_LEN]; + gchar *tmp; GError *error_local = NULL; GString *string; guint16 i; + guint8 types; string = g_string_new (""); for (i = 0; i < CH_CALIBRATION_MAX; i++) { @@ -1005,7 +1029,7 @@ ch_util_list_calibration (ChUtilPrivate *priv, gchar **values, GError **error) priv->device, i, NULL, - NULL, + &types, description); ret = ch_device_queue_process (priv->device_queue, CH_DEVICE_QUEUE_PROCESS_FLAGS_NONE, @@ -1013,8 +1037,10 @@ ch_util_list_calibration (ChUtilPrivate *priv, gchar **values, GError **error) &error_local); if (ret) { if (description[0] != '\0') { - g_string_append_printf (string, "%i\t%s\n", - i, description); + tmp = ch_util_types_to_short_string (types); + g_string_append_printf (string, "%i\t%s [%s]\n", + i, description, tmp); + g_free (tmp); } } else { g_debug ("ignoring error: %s", error_local->message); @@ -1403,6 +1429,8 @@ ch_util_get_pcb_errata (ChUtilPrivate *priv, gchar **values, GError **error) } if ((pcb_errata & CH_PCB_ERRATA_SWAPPED_LEDS) > 0) g_print ("Errata: swapped-leds\n"); + if ((pcb_errata & CH_PCB_ERRATA_NO_WELCOME) > 0) + g_print ("Errata: no-welcome\n"); out: return ret; } @@ -1429,6 +1457,10 @@ ch_util_set_pcb_errata (ChUtilPrivate *priv, gchar **values, GError **error) g_print ("Errata: swapped-leds\n"); pcb_errata += CH_PCB_ERRATA_SWAPPED_LEDS; } + if (g_strstr_len (values[0], -1, "no-welcome") != NULL) { + g_print ("Errata: no-welcome\n"); + pcb_errata += CH_PCB_ERRATA_NO_WELCOME; + } /* nothing known by this client version */ if (pcb_errata == CH_PCB_ERRATA_NONE) @@ -1556,22 +1588,38 @@ static gboolean ch_util_set_dark_offsets_auto (ChUtilPrivate *priv, GError **error) { gboolean ret; + gdouble post_scale_old = 0.0f; CdColorRGB value_old; + CdColorRGB value_zero; CdColorRGB value; + /* TRANSLATORS: wait for user to press the device into a desk... */ + ret = ch_util_get_prompt (_("Ensure the ColorHug aperture is blocked"), TRUE); + if (!ret) { + g_set_error_literal (error, 1, 0, + "user declined"); + goto out; + } + /* set dark offsets */ - cd_color_set_rgb (&value, 0.0f, 0.0f, 0.0f); + cd_color_set_rgb (&value_zero, 0.0f, 0.0f, 0.0f); /* get from HW */ ch_device_queue_get_dark_offsets (priv->device_queue, priv->device, &value_old); + ch_device_queue_get_post_scale (priv->device_queue, + priv->device, + &post_scale_old); ch_device_queue_set_dark_offsets (priv->device_queue, priv->device, - &value); + &value_zero); ch_device_queue_set_integral_time (priv->device_queue, priv->device, CH_INTEGRAL_TIME_VALUE_MAX); + ch_device_queue_set_post_scale (priv->device_queue, + priv->device, + 1); ch_device_queue_set_multiplier (priv->device_queue, priv->device, CH_FREQ_SCALE_100); @@ -1594,6 +1642,9 @@ ch_util_set_dark_offsets_auto (ChUtilPrivate *priv, GError **error) ch_device_queue_set_dark_offsets (priv->device_queue, priv->device, &value_old); + ch_device_queue_set_post_scale (priv->device_queue, + priv->device, + post_scale_old); ret = ch_device_queue_process (priv->device_queue, CH_DEVICE_QUEUE_PROCESS_FLAGS_NONE, NULL, @@ -1609,6 +1660,9 @@ ch_util_set_dark_offsets_auto (ChUtilPrivate *priv, GError **error) ch_device_queue_set_dark_offsets (priv->device_queue, priv->device, &value); + ch_device_queue_set_post_scale (priv->device_queue, + priv->device, + post_scale_old); ch_device_queue_write_eeprom (priv->device_queue, priv->device, CH_WRITE_EEPROM_MAGIC);
signature.asc
Description: PGP signature