diff options
author | John Stebbins <[email protected]> | 2017-03-09 12:39:47 -0700 |
---|---|---|
committer | John Stebbins <[email protected]> | 2017-03-09 12:40:36 -0700 |
commit | 6c8979904ca729d086b7ccebd6b4f5cabd31149d (patch) | |
tree | 697f8bd8db4c198413284dc550befa57cbe5d09e | |
parent | 27c5b91e916e51c0d44dc0fd111feca43a4ea481 (diff) |
LinGui: fix video preset slider updates
Fixes https://github.com/HandBrake/HandBrake/issues/621
-rw-r--r-- | gtk/src/ghb.m4 | 2 | ||||
-rw-r--r-- | gtk/src/videohandler.c | 58 |
2 files changed, 30 insertions, 30 deletions
diff --git a/gtk/src/ghb.m4 b/gtk/src/ghb.m4 index 2c3e09c89..5895743dc 100644 --- a/gtk/src/ghb.m4 +++ b/gtk/src/ghb.m4 @@ -3790,7 +3790,7 @@ settings will result in better quality or smaller files.</property> <property name="value_pos">right</property> <property name="hexpand">True</property> <signal name="format-value" handler="format_video_preset_cb" swapped="no"/> - <signal name="value-changed" handler="video_setting_changed_cb" swapped="no"/> + <signal name="value-changed" handler="video_preset_slider_changed_cb" swapped="no"/> </object> <packing> <property name="top_attach">0</property> diff --git a/gtk/src/videohandler.c b/gtk/src/videohandler.c index 13cbc0e7a..8fc441a17 100644 --- a/gtk/src/videohandler.c +++ b/gtk/src/videohandler.c @@ -115,6 +115,35 @@ vcodec_changed_cb(GtkWidget *widget, signal_user_data_t *ud) char *video_option_tooltip = NULL; +G_MODULE_EXPORT void +video_preset_slider_changed_cb(GtkWidget *widget, signal_user_data_t *ud) +{ + ghb_widget_to_setting(ud->settings, widget); + + int presetIndex = ghb_dict_get_int(ud->settings, "VideoPresetSlider"); + const char * const *video_presets; + const char *preset = "medium"; + int count; + + int encoder = ghb_get_video_encoder(ud->settings); + video_presets = hb_video_encoder_get_presets(encoder); + if (video_presets != NULL) + { + for (count = 0; video_presets[count]; count++); + if (presetIndex < count) + { + preset = video_presets[presetIndex]; + } + } + + ghb_set_video_preset(ud->settings, encoder, preset); + GhbValue *gval = ghb_dict_get_value(ud->settings, "VideoPresetSlider"); + ghb_ui_settings_update(ud, ud->settings, "VideoPresetSlider", gval); + + ghb_check_dependency(ud, widget, NULL); + ghb_clear_presets_selection(ud); +} + void ghb_video_setting_changed(GtkWidget *widget, signal_user_data_t *ud) { @@ -127,35 +156,6 @@ ghb_video_setting_changed(GtkWidget *widget, signal_user_data_t *ud) ghb_widget_to_setting(ud->settings, widget); int encoder = ghb_get_video_encoder(ud->settings); - const char * const * video_presets; - - video_presets = hb_video_encoder_get_presets(encoder); - if (video_presets != NULL) - { - const char *preset; - - // Try to set same preset value - preset = ghb_dict_get_string(ud->settings, "VideoPreset"); - if (!ghb_set_video_preset(ud->settings, encoder, preset)) - { - int presetIndex, count = 0; - - // Try to set same preset index - presetIndex = ghb_dict_get_int(ud->settings, "VideoPresetSlider"); - while (video_presets[count]) count++; - if (presetIndex < count) - { - preset = video_presets[presetIndex]; - ghb_dict_set_string(ud->settings, "VideoPreset", preset); - } - else - { - // Try to set same preset "medium" preset - ghb_set_video_preset(ud->settings, encoder, "medium"); - } - } - } - if (!ghb_dict_get_bool(ud->settings, "x264UseAdvancedOptions") && (encoder & HB_VCODEC_X264_MASK)) { |