summaryrefslogtreecommitdiffstats
path: root/gtk/src/hb-backend.c
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2011-04-16 01:17:13 +0000
committerjstebbins <[email protected]>2011-04-16 01:17:13 +0000
commit53655cbbc8f0cb49014ac9a5aade7acb76782d01 (patch)
treece6621ff9d73b5c4a5543bab8ef4cf45dcf359d3 /gtk/src/hb-backend.c
parentf7cf2757ca1839b131d153e1a50029c2ed10f8b1 (diff)
LinGui: Fix PAR overflow issues.
PAR values were saturating the max values allowed in PAR widget controls. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3932 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'gtk/src/hb-backend.c')
-rw-r--r--gtk/src/hb-backend.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c
index f453f98d3..2d17a7c32 100644
--- a/gtk/src/hb-backend.c
+++ b/gtk/src/hb-backend.c
@@ -3518,6 +3518,26 @@ picture_settings_deps(signal_user_data_t *ud)
}
void
+ghb_limit_rational( gint *num, gint *den, gint limit )
+{
+ if (*num < limit && *den < limit)
+ return;
+
+ if (*num > *den)
+ {
+ gdouble factor = (double)limit / *num;
+ *num = limit;
+ *den = factor * *den;
+ }
+ else
+ {
+ gdouble factor = (double)limit / *den;
+ *den = limit;
+ *num = factor * *num;
+ }
+}
+
+void
ghb_set_scale(signal_user_data_t *ud, gint mode)
{
hb_list_t * list;
@@ -3795,9 +3815,9 @@ ghb_set_scale(signal_user_data_t *ud, gint mode)
gint disp_width, dar_width, dar_height;
gchar *str;
- disp_width = (gdouble)(width * par_width / par_height) + 0.5;
+ disp_width = ((gdouble)par_width / par_height) * width + 0.5;
hb_reduce(&dar_width, &dar_height, disp_width, height);
-
+ ghb_limit_rational(&par_width, &par_height, 65535);
gint iaspect = dar_width * 9 / dar_height;
if (dar_width > 2 * dar_height)
{