OSDN Git Service

LinGui: fix mbtree/b-pyramid dependency issue
authorjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Wed, 30 Sep 2009 17:34:41 +0000 (17:34 +0000)
committerjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Wed, 30 Sep 2009 17:34:41 +0000 (17:34 +0000)
make sure b-pyramid gets set to insensitive when mbtree is enabled

git-svn-id: svn://localhost/HandBrake/trunk@2858 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/audiohandler.c
gtk/src/callbacks.c
gtk/src/callbacks.h
gtk/src/preview.c
gtk/src/subtitlehandler.c
gtk/src/widgetdeps.c
gtk/src/x264handler.c

index 1769991..ea13c90 100644 (file)
@@ -347,7 +347,7 @@ audio_codec_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        }
        ghb_adjust_audio_rate_combos(ud);
        ghb_grey_combo_options (ud->builder);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        prev_acodec = acodec_code;
        asettings = get_selected_asettings(ud);
        if (asettings != NULL)
@@ -366,7 +366,7 @@ audio_track_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 
        g_debug("audio_track_changed_cb ()");
        ghb_adjust_audio_rate_combos(ud);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_grey_combo_options(ud->builder);
        asettings = get_selected_asettings(ud);
        if (asettings != NULL)
@@ -388,7 +388,7 @@ audio_mix_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 
        g_debug("audio_mix_changed_cb ()");
        ghb_adjust_audio_rate_combos(ud);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        asettings = get_selected_asettings(ud);
        if (asettings != NULL)
        {
@@ -404,7 +404,7 @@ audio_widget_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        GValue *asettings;
 
        g_debug("audio_widget_changed_cb ()");
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        asettings = get_selected_asettings(ud);
        if (asettings != NULL)
        {
@@ -430,7 +430,7 @@ drc_widget_changed_cb(GtkWidget *widget, gdouble val, signal_user_data_t *ud)
                drc = g_strdup_printf("%.1f", val);
        gtk_label_set_text(label, drc);
        g_free(drc);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        asettings = get_selected_asettings(ud);
        if (asettings != NULL)
        {
@@ -450,7 +450,7 @@ subtitle_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        const gchar *name = gtk_widget_get_name(widget);
        g_debug("subtitle_changed_cb () %s", name);
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_live_reset(ud);
 }
 
index ca9ac86..27c8793 100644 (file)
@@ -114,8 +114,7 @@ dep_check(signal_user_data_t *ud, const gchar *name, gboolean *out_hide)
                widget_name = ghb_value_string(ghb_array_get_nth(data, 0));
                widget = GHB_WIDGET(ud->builder, widget_name);
                dep_object = gtk_builder_get_object(ud->builder, name);
-               g_free(widget_name);
-               if (!GTK_WIDGET_SENSITIVE(widget))
+               if (widget != NULL && !GTK_WIDGET_SENSITIVE(widget))
                        continue;
                if (dep_object == NULL)
                {
@@ -138,7 +137,7 @@ dep_check(signal_user_data_t *ud, const gchar *name, gboolean *out_hide)
                        if (widget)
                                value = ghb_widget_string(widget);
                        else
-                               value = ghb_settings_get_string(ud->settings, name);
+                               value = ghb_settings_get_string(ud->settings, widget_name);
                        while (values && values[jj])
                        {
                                if (values[jj][0] == '>')
@@ -177,12 +176,16 @@ dep_check(signal_user_data_t *ud, const gchar *name, gboolean *out_hide)
                        g_strfreev (values);
                        g_free(value);
                }
+               g_free(widget_name);
        }
        return result;
 }
 
 void
-ghb_check_dependency(signal_user_data_t *ud, GtkWidget *widget)
+ghb_check_dependency(
+       signal_user_data_t *ud, 
+       GtkWidget *widget, 
+       const char *alt_name)
 {
        GObject *dep_object;
        const gchar *name;
@@ -191,11 +194,16 @@ ghb_check_dependency(signal_user_data_t *ud, GtkWidget *widget)
        gchar *dep_name;
        GType type;
 
-       type = GTK_WIDGET_TYPE(widget);
-       if (type == GTK_TYPE_COMBO_BOX || type == GTK_TYPE_COMBO_BOX_ENTRY)
-               if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) < 0) return;
+       if (widget != NULL)
+       {
+               type = GTK_WIDGET_TYPE(widget);
+               if (type == GTK_TYPE_COMBO_BOX || type == GTK_TYPE_COMBO_BOX_ENTRY)
+                       if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) < 0) return;
+               name = gtk_widget_get_name(widget);
+       }
+       else
+               name = alt_name;
 
-       name = gtk_widget_get_name(widget);
        g_debug("ghb_check_dependency () %s", name);
 
        if (dep_map == NULL) return;
@@ -1266,7 +1274,7 @@ container_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("container_changed_cb ()");
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        update_acodec_combo(ud);
        ghb_update_destination_extension(ud);
        ghb_clear_presets_selection(ud);
@@ -1406,7 +1414,7 @@ title_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        
        g_debug("title_changed_cb ()");
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
 
        titleindex = ghb_settings_combo_int(ud->settings, "title");
        ghb_update_ui_combo_box (ud, "AudioTrack", titleindex, FALSE);
@@ -1448,7 +1456,7 @@ G_MODULE_EXPORT void
 setting_widget_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        ghb_live_reset(ud);
 }
@@ -1457,7 +1465,7 @@ G_MODULE_EXPORT void
 chapter_markers_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        ghb_live_reset(ud);
        ghb_update_destination_extension(ud);
@@ -1467,7 +1475,7 @@ G_MODULE_EXPORT void
 vquality_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        ghb_live_reset(ud);
 
@@ -1491,7 +1499,7 @@ G_MODULE_EXPORT void
 http_opt_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        ghb_live_reset(ud);
        // AC3 is not allowed when Web optimized
@@ -1506,7 +1514,7 @@ vcodec_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        gint digits;
 
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        ghb_live_reset(ud);
        ghb_vquality_range(ud, &vqmin, &vqmax, &step, &page, &digits, &inverted);
@@ -1523,7 +1531,7 @@ target_size_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        const gchar *name = gtk_widget_get_name(widget);
        g_debug("target_size_changed_cb () %s", name);
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        ghb_live_reset(ud);
        if (ghb_settings_get_boolean(ud->settings, "vquality_type_target"))
@@ -1547,7 +1555,7 @@ start_chapter_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        end = ghb_settings_get_int(ud->settings, "end_chapter");
        if (start > end)
                ghb_ui_update(ud, "end_chapter", ghb_int_value(start));
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        if (ghb_settings_get_boolean(ud->settings, "chapters_in_destination"))
        {
                set_destination(ud);
@@ -1577,7 +1585,7 @@ end_chapter_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        end = ghb_settings_get_int(ud->settings, "end_chapter");
        if (start > end)
                ghb_ui_update(ud, "start_chapter", ghb_int_value(end));
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        if (ghb_settings_get_boolean(ud->settings, "chapters_in_destination"))
        {
                set_destination(ud);
@@ -1600,7 +1608,7 @@ scale_width_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("scale_width_changed_cb ()");
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        if (GTK_WIDGET_SENSITIVE(widget))
                ghb_set_scale (ud, GHB_PIC_KEEP_WIDTH);
@@ -1620,7 +1628,7 @@ scale_height_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("scale_height_changed_cb ()");
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        if (GTK_WIDGET_SENSITIVE(widget))
                ghb_set_scale (ud, GHB_PIC_KEEP_HEIGHT);
@@ -1643,7 +1651,7 @@ crop_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        
        g_debug("crop_changed_cb ()");
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        if (GTK_WIDGET_SENSITIVE(widget))
                ghb_set_scale (ud, 0);
@@ -1681,7 +1689,7 @@ display_width_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("display_width_changed_cb ()");
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        ghb_live_reset(ud);
        if (GTK_WIDGET_SENSITIVE(widget))
@@ -1695,7 +1703,7 @@ display_height_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("display_height_changed_cb ()");
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        ghb_live_reset(ud);
        if (GTK_WIDGET_SENSITIVE(widget))
@@ -1709,7 +1717,7 @@ par_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("par_changed_cb ()");
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        ghb_live_reset(ud);
        if (GTK_WIDGET_SENSITIVE(widget))
@@ -1723,7 +1731,7 @@ scale_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("scale_changed_cb ()");
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        ghb_live_reset(ud);
        if (GTK_WIDGET_SENSITIVE(widget))
@@ -1765,7 +1773,7 @@ show_crop_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("show_crop_changed_cb ()");
        ghb_widget_to_setting(ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_live_reset(ud);
        if (GTK_WIDGET_SENSITIVE(widget))
                ghb_set_scale (ud, 0);
@@ -3281,7 +3289,7 @@ pref_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("pref_changed_cb");
        ghb_widget_to_setting (ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        const gchar *name = gtk_widget_get_name(widget);
        ghb_pref_save(ud->settings, name);
 }
@@ -3291,7 +3299,7 @@ use_m4v_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("use_m4v_changed_cb");
        ghb_widget_to_setting (ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        const gchar *name = gtk_widget_get_name(widget);
        ghb_pref_save(ud->settings, name);
        ghb_update_destination_extension(ud);
@@ -3302,7 +3310,7 @@ show_status_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("show_status_cb");
        ghb_widget_to_setting (ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        const gchar *name = gtk_widget_get_name(widget);
        ghb_pref_save(ud->settings, name);
 
@@ -3318,7 +3326,7 @@ vqual_granularity_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
 {
        g_debug("vqual_granularity_changed_cb");
        ghb_widget_to_setting (ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
 
        const gchar *name = gtk_widget_get_name(widget);
        ghb_pref_save(ud->settings, name);
index 2ba5151..a124ab5 100644 (file)
@@ -51,7 +51,8 @@ void ghb_init_dep_map(void);
 void ghb_cancel_encode(signal_user_data_t *ud, const gchar *extra_msg);
 gboolean ghb_cancel_encode2(signal_user_data_t *ud, const gchar *extra_msg);
 GValue* ghb_start_next_job(signal_user_data_t *ud, gboolean find_first);
-void ghb_check_dependency(signal_user_data_t *ud, GtkWidget *widget);
+void ghb_check_dependency(
+       signal_user_data_t *ud, GtkWidget *widget, const gchar *alt_name);
 void ghb_do_scan( signal_user_data_t *ud, const gchar *filename, 
        gint titlenum, gboolean force);
 void ghb_log(gchar *log, ...);
index 8748fae..ee522f7 100644 (file)
@@ -850,7 +850,7 @@ preview_button_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
                                                        GTK_TOGGLE_BUTTON(xwidget)));
        }
        ghb_widget_to_setting (ud->settings, xwidget);
-       ghb_check_dependency(ud, xwidget);
+       ghb_check_dependency(ud, xwidget, NULL);
        const gchar *name = gtk_widget_get_name(xwidget);
        ghb_pref_save(ud->settings, name);
 }
@@ -914,7 +914,7 @@ fullscreen_clicked_cb(GtkWidget *toggle, signal_user_data_t *ud)
 
        g_debug("fullscreen_clicked_cb()");
        ghb_widget_to_setting (ud->settings, toggle);
-       ghb_check_dependency(ud, toggle);
+       ghb_check_dependency(ud, toggle, NULL);
        const gchar *name = gtk_widget_get_name(toggle);
        ghb_pref_save(ud->settings, name);
 
@@ -1051,7 +1051,7 @@ preview_duration_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        g_debug("preview_duration_changed_cb ()");
        ghb_live_reset(ud);
        ghb_widget_to_setting (ud->settings, widget);
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        const gchar *name = gtk_widget_get_name(widget);
        ghb_pref_save(ud->settings, name);
 }
index b781cfb..c5fc0b8 100644 (file)
@@ -777,7 +777,7 @@ subtitle_track_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        GValue *settings;
 
        g_debug("subtitle_track_changed_cb ()");
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_widget_to_setting(ud->settings, widget);
        settings = ghb_selected_subtitle_settings(ud);
        if (settings != NULL)
@@ -805,7 +805,7 @@ srt_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        GValue *settings;
 
        g_debug("srt_changed_cb ()");
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_widget_to_setting(ud->settings, widget);
        settings = ghb_selected_subtitle_settings(ud);
        if (settings != NULL)
@@ -823,7 +823,7 @@ srt_file_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        GValue *settings;
 
        g_debug("srt_changed_cb ()");
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_widget_to_setting(ud->settings, widget);
        settings = ghb_selected_subtitle_settings(ud);
        if (settings != NULL)
@@ -857,7 +857,7 @@ srt_lang_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        GValue *settings;
 
        g_debug("srt_lang_changed_cb ()");
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_widget_to_setting(ud->settings, widget);
        settings = ghb_selected_subtitle_settings(ud);
        if (settings != NULL)
index 4747f69..929ddb2 100644 (file)
@@ -72,6 +72,7 @@ static dependency_t dep_map[] =
        {"x264_subme", "x264_psy_trell", "<6", TRUE, FALSE},
        {"x264_cabac", "x264_psy_trell", "TRUE", FALSE, FALSE},
        {"x264_trellis", "x264_psy_trell", "0", TRUE, FALSE},
+       {"x264_mbtree", "x264_bpyramid", "TRUE", TRUE, FALSE},
        {"ChapterMarkers", "chapters_list", "TRUE", FALSE, FALSE},
        {"use_source_name", "chapters_in_destination", "TRUE", FALSE, FALSE},
        {"use_source_name", "title_no_in_destination", "TRUE", FALSE, FALSE},
index 0080927..a466412 100644 (file)
@@ -37,7 +37,7 @@ x264_widget_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
                x264_opt_update(ud, widget);
                ignore_options_update = FALSE;
        }
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
 }
 
@@ -53,7 +53,7 @@ x264_me_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
                x264_opt_update(ud, widget);
                ignore_options_update = FALSE;
        }
-       ghb_check_dependency(ud, widget);
+       ghb_check_dependency(ud, widget, NULL);
        ghb_clear_presets_selection(ud);
        widget = GHB_WIDGET(ud->builder, "x264_merange");
        me = ghb_settings_combo_int(ud->settings, "x264_me");
@@ -121,6 +121,8 @@ x264_focus_out_cb(GtkWidget *widget, GdkEventFocus *event,
 enum
 {
        X264_OPT_NONE,
+       X264_OPT_BOOL_NONE,
+       X264_OPT_INT_NONE,
        X264_OPT_DEBLOCK,
        X264_OPT_PSY,
        X264_OPT_INT,
@@ -184,7 +186,7 @@ struct x264_opt_map_s x264_opt_map[] =
        {x264_me_syns, "x264_me", "hex", X264_OPT_COMBO},
        {x264_merange_syns, "x264_merange", "16", X264_OPT_INT},
        {x264_subme_syns, "x264_subme", "7", X264_OPT_COMBO},
-       {x264_aqmode_syns, "x264_aqmode", "1", X264_OPT_NONE},
+       {x264_aqmode_syns, "x264_aqmode", "1", X264_OPT_INT_NONE},
        {x264_analyse_syns, "x264_analyse", "some", X264_OPT_COMBO},
        {x264_8x8dct_syns, "x264_8x8dct", "1", X264_OPT_BOOL},
        {x264_deblock_syns, "x264_deblock_alpha", "0,0", X264_OPT_DEBLOCK},
@@ -195,7 +197,7 @@ struct x264_opt_map_s x264_opt_map[] =
        {x264_cabac_syns, "x264_cabac", "1", X264_OPT_BOOL},
        {x264_psy_syns, "x264_psy_rd", "1,0", X264_OPT_PSY},
        {x264_psy_syns, "x264_psy_trell", "1,0", X264_OPT_PSY},
-       {x264_mbtree_syns, "x264_mbtree", "1", X264_OPT_NONE},
+       {x264_mbtree_syns, "x264_mbtree", "1", X264_OPT_BOOL_NONE},
 };
 #define X264_OPT_MAP_SIZE (sizeof(x264_opt_map)/sizeof(struct x264_opt_map_s))
 
@@ -223,6 +225,17 @@ x264_update_int(signal_user_data_t *ud, const gchar *name, const gchar *val)
        ghb_ui_update(ud, name, ghb_int64_value(ival));
 }
 
+static void
+x264_update_int_setting(signal_user_data_t *ud, const gchar *name, const gchar *val)
+{
+       gint ival;
+
+       if (val == NULL) return;
+       ival = g_strtod (val, NULL);
+       ghb_settings_set_value(ud->settings, name, ghb_int64_value(ival));
+       ghb_check_dependency(ud, NULL, name);
+}
+
 static gchar *true_str[] =
 {
        "true",
@@ -253,6 +266,17 @@ x264_update_bool(signal_user_data_t *ud, const gchar *name, const gchar *val)
 }
 
 static void
+x264_update_bool_setting(signal_user_data_t *ud, const gchar *name, const gchar *val)
+{
+       if (val == NULL)
+               ghb_settings_set_value(ud->settings, name, ghb_boolean_value(1));
+       else
+               ghb_settings_set_value(ud->settings, name, ghb_boolean_value(str_is_true(val)));
+
+       ghb_check_dependency(ud, NULL, name);
+}
+
+static void
 x264_update_combo(signal_user_data_t *ud, const gchar *name, const gchar *val)
 {
        GtkTreeModel *store;
@@ -422,6 +446,12 @@ ghb_x264_parse_options(signal_user_data_t *ud, const gchar *options)
                                        x264_opt_map[jj+1].found = TRUE;
                                        x264_update_psy(ud, val);
                                        break;
+                               case X264_OPT_BOOL_NONE:
+                                       x264_update_bool_setting(ud, x264_opt_map[jj].name, val);
+                                       break;
+                               case X264_OPT_INT_NONE:
+                                       x264_update_int_setting(ud, x264_opt_map[jj].name, val);
+                                       break;
                                }
                                break;
                        }
@@ -451,6 +481,12 @@ ghb_x264_parse_options(signal_user_data_t *ud, const gchar *options)
                        case X264_OPT_PSY:
                                x264_update_psy(ud, val);
                                break;
+                       case X264_OPT_BOOL_NONE:
+                               x264_update_bool_setting(ud, x264_opt_map[jj].name, val);
+                               break;
+                       case X264_OPT_INT_NONE:
+                               x264_update_int_setting(ud, x264_opt_map[jj].name, val);
+                               break;
                        }
                        x264_opt_map[jj].found = TRUE;
                        g_free(val);