summaryrefslogtreecommitdiffstats
path: root/abs/extra/handbrake
diff options
context:
space:
mode:
Diffstat (limited to 'abs/extra/handbrake')
-rw-r--r--abs/extra/handbrake/PKGBUILD46
-rw-r--r--abs/extra/handbrake/gtk2.20_fixes.patch248
-rw-r--r--abs/extra/handbrake/handbrake.install15
3 files changed, 309 insertions, 0 deletions
diff --git a/abs/extra/handbrake/PKGBUILD b/abs/extra/handbrake/PKGBUILD
new file mode 100644
index 0000000..7946bd5
--- /dev/null
+++ b/abs/extra/handbrake/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 84760 2010-07-04 06:05:09Z eric $
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Sebastien Piccand <sebcactus gmail com>
+
+pkgbase=handbrake
+pkgname=('handbrake' 'handbrake-cli')
+pkgver=0.9.4
+pkgrel=3
+arch=('i686' 'x86_64')
+url="http://handbrake.fr/"
+license=('GPL')
+depends=('bzip2' 'hal' 'libnotify' 'libwebkit')
+makedepends=('intltool' 'python' 'yasm')
+source=(http://saintdevelopment.com/mirror/${pkgname}/HandBrake-${pkgver}.tar.bz2
+ gtk2.20_fixes.patch)
+md5sums=('69f88b2e602550615da75947f914d7e6' 'e0296baaed129dceaf0d29c8284dc9fe')
+sha1sums=('91329a83315b7eae0b2b3731a8bf0f2de2a6eb4d' '17b39144d9883b1f63d9b9ff2f6770b35bbdb16a')
+
+build() {
+ cd "${srcdir}/HandBrake-${pkgver}"
+
+ #this patch is cherry picked from svn. remove it when updating to a new version
+ patch -Np0 -i ${srcdir}/gtk2.20_fixes.patch
+
+ ./configure --prefix=/usr --force
+ cd build
+ make
+}
+
+package_handbrake() {
+ pkgdesc="Multiplatform, multithreaded DVD to MPEG-4/H264/Theora converter"
+ install=${pkgname}.install
+
+ cd "${srcdir}/HandBrake-${pkgver}/build"
+ make DESTDIR="${pkgdir}" install
+ rm "${pkgdir}/usr/bin/HandBrakeCLI"
+}
+
+package_handbrake-cli() {
+ pkgdesc="Multiplatform, multithreaded DVD to MPEG-4/H264/Theora converter (CLI version)"
+ depends=('bzip2' 'gcc-libs' 'zlib')
+ conflict=('handbrake<=0.9.4-2')
+
+ cd "${srcdir}/HandBrake-${pkgver}/build"
+ install -D -m 755 HandBrakeCLI "${pkgdir}/usr/bin/HandBrakeCLI"
+}
diff --git a/abs/extra/handbrake/gtk2.20_fixes.patch b/abs/extra/handbrake/gtk2.20_fixes.patch
new file mode 100644
index 0000000..63b0947
--- /dev/null
+++ b/abs/extra/handbrake/gtk2.20_fixes.patch
@@ -0,0 +1,248 @@
+Index: gtk/src/settings.c
+===================================================================
+--- gtk/src/settings.c (revision 3134)
++++ gtk/src/settings.c (revision 3135)
+@@ -179,17 +179,14 @@
+ // Map widget names to setting keys
+ // Widgets that map to settings have names
+ // of this format: s_<setting key>
+-static const gchar*
+-get_setting_key(GtkWidget *widget)
++const gchar*
++ghb_get_setting_key(GtkWidget *widget)
+ {
+ const gchar *name;
+
+ g_debug("get_setting_key ()\n");
+ if (widget == NULL) return NULL;
+- if (GTK_IS_ACTION(widget))
+- name = gtk_action_get_name(GTK_ACTION(widget));
+- else
+- name = gtk_widget_get_name(widget);
++ name = gtk_buildable_get_name(GTK_BUILDABLE(widget));
+
+ if (name == NULL)
+ {
+@@ -214,10 +211,7 @@
+ }
+
+ type = GTK_WIDGET_TYPE(widget);
+- if (GTK_IS_ACTION(widget))
+- name = gtk_action_get_name(GTK_ACTION(widget));
+- else
+- name = gtk_widget_get_name(widget);
++ name = ghb_get_setting_key(widget);
+ g_debug("ghb_widget_value widget (%s)\n", name);
+ if (type == GTK_TYPE_ENTRY)
+ {
+@@ -442,7 +436,7 @@
+ if (widget == NULL) return;
+ g_debug("ghb_widget_to_setting");
+ // Find corresponding setting
+- key = get_setting_key(widget);
++ key = ghb_get_setting_key(widget);
+ if (key == NULL) return;
+ value = ghb_widget_value(widget);
+ if (value != NULL)
+Index: gtk/src/settings.h
+===================================================================
+--- gtk/src/settings.h (revision 3134)
++++ gtk/src/settings.h (revision 3135)
+@@ -108,5 +108,6 @@
+ void ghb_widget_to_setting(GValue *settings, GtkWidget *widget);
+ int ghb_ui_update(
+ signal_user_data_t *ud, const gchar *name, const GValue *value);
++const gchar* ghb_get_setting_key(GtkWidget *widget);
+
+ #endif // _SETTINGS_H_
+Index: gtk/src/preview.c
+===================================================================
+--- gtk/src/preview.c (revision 3134)
++++ gtk/src/preview.c (revision 3135)
+@@ -877,7 +877,7 @@
+ ghb_widget_to_setting (ud->settings, xwidget);
+ ghb_preview_set_visible(ud);
+ ghb_check_dependency(ud, xwidget, NULL);
+- const gchar *name = gtk_widget_get_name(xwidget);
++ const gchar *name = ghb_get_setting_key(xwidget);
+ ghb_pref_save(ud->settings, name);
+ }
+
+@@ -934,7 +934,7 @@
+ g_debug("fullscreen_clicked_cb()");
+ ghb_widget_to_setting (ud->settings, toggle);
+ ghb_check_dependency(ud, toggle, NULL);
+- const gchar *name = gtk_widget_get_name(toggle);
++ const gchar *name = ghb_get_setting_key(toggle);
+ ghb_pref_save(ud->settings, name);
+
+ window = GTK_WINDOW(GHB_WIDGET (ud->builder, "preview_window"));
+@@ -1030,7 +1030,7 @@
+ ghb_live_reset(ud);
+ ghb_widget_to_setting (ud->settings, widget);
+ ghb_check_dependency(ud, widget, NULL);
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+ ghb_pref_save(ud->settings, name);
+ }
+
+Index: gtk/src/audiohandler.c
+===================================================================
+--- gtk/src/audiohandler.c (revision 3134)
++++ gtk/src/audiohandler.c (revision 3135)
+@@ -478,7 +478,7 @@
+ G_MODULE_EXPORT void
+ subtitle_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
+ {
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+ g_debug("subtitle_changed_cb () %s", name);
+ ghb_widget_to_setting(ud->settings, widget);
+ ghb_check_dependency(ud, widget, NULL);
+Index: gtk/src/x264handler.c
+===================================================================
+--- gtk/src/x264handler.c (revision 3134)
++++ gtk/src/x264handler.c (revision 3135)
+@@ -523,7 +523,7 @@
+ x264_opt_update(signal_user_data_t *ud, GtkWidget *widget)
+ {
+ gint jj;
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+ gchar **opt_syns = NULL;
+ const gchar *def_val = NULL;
+ gint type;
+Index: gtk/src/callbacks.c
+===================================================================
+--- gtk/src/callbacks.c (revision 3134)
++++ gtk/src/callbacks.c (revision 3135)
+@@ -199,7 +199,7 @@
+ 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);
++ name = ghb_get_setting_key(widget);
+ }
+ else
+ name = alt_name;
+@@ -1054,7 +1054,7 @@
+ gchar *sourcename;
+
+ sourcename = ghb_settings_get_string(ud->settings, "source");
+- filename = gtk_action_get_name(action);
++ filename = gtk_buildable_get_name(GTK_BUILDABLE(action));
+ ghb_do_scan(ud, filename, 0, TRUE);
+ if (strcmp(sourcename, filename) != 0)
+ {
+@@ -1694,7 +1694,7 @@
+ G_MODULE_EXPORT void
+ target_size_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
+ {
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+ g_debug("target_size_changed_cb () %s", name);
+ ghb_widget_to_setting(ud->settings, widget);
+ ghb_check_dependency(ud, widget, NULL);
+@@ -1713,7 +1713,7 @@
+ start_point_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
+ {
+ gint start, end;
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+
+ g_debug("start_point_changed_cb () %s", name);
+ ghb_widget_to_setting(ud->settings, widget);
+@@ -1765,7 +1765,7 @@
+ end_point_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
+ {
+ gint start, end;
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+
+ g_debug("end_point_changed_cb () %s", name);
+ ghb_widget_to_setting(ud->settings, widget);
+@@ -3588,7 +3588,7 @@
+ g_debug("pref_changed_cb");
+ ghb_widget_to_setting (ud->settings, widget);
+ ghb_check_dependency(ud, widget, NULL);
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+ ghb_pref_save(ud->settings, name);
+ }
+
+@@ -3598,7 +3598,7 @@
+ g_debug("use_m4v_changed_cb");
+ ghb_widget_to_setting (ud->settings, widget);
+ ghb_check_dependency(ud, widget, NULL);
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+ ghb_pref_save(ud->settings, name);
+ ghb_update_destination_extension(ud);
+ }
+@@ -3609,7 +3609,7 @@
+ g_debug("show_status_cb");
+ ghb_widget_to_setting (ud->settings, widget);
+ ghb_check_dependency(ud, widget, NULL);
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+ ghb_pref_save(ud->settings, name);
+
+ GtkStatusIcon *si;
+@@ -3626,7 +3626,7 @@
+ ghb_widget_to_setting (ud->settings, widget);
+ ghb_check_dependency(ud, widget, NULL);
+
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+ ghb_pref_save(ud->settings, name);
+
+ gdouble vqmin, vqmax, step, page;
+@@ -3643,7 +3643,7 @@
+ {
+ g_debug("tweaks_changed_cb");
+ ghb_widget_to_setting (ud->settings, widget);
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+ ghb_pref_save(ud->settings, name);
+ }
+
+@@ -3652,7 +3652,7 @@
+ {
+ g_debug("hbfd_feature_changed_cb");
+ ghb_widget_to_setting (ud->settings, widget);
+- const gchar *name = gtk_widget_get_name(widget);
++ const gchar *name = ghb_get_setting_key(widget);
+ ghb_pref_save(ud->settings, name);
+
+ gboolean hbfd = ghb_settings_get_boolean(ud->settings, "hbfd_feature");
+@@ -4559,7 +4559,7 @@
+ GtkResponseType response;
+ gchar *tweak = NULL;
+
+- name = gtk_widget_get_name(widget);
++ name = ghb_get_setting_key(widget);
+ if (g_str_has_prefix(name, "tweak_"))
+ {
+ tweak_name = g_strdup(name);
+Index: gtk/src/main.c
+===================================================================
+--- gtk/src/main.c (revision 3134)
++++ gtk/src/main.c (revision 3135)
+@@ -152,7 +152,7 @@
+ g_return_if_fail(handler_name != NULL);
+ g_return_if_fail(signal_name != NULL);
+
+- //const gchar *name = gtk_widget_get_name((GtkWidget*)object);
++ //const gchar *name = ghb_get_setting_key((GtkWidget*)object);
+ //g_message("\n\nname %s", name);
+ g_debug("handler_name %s", handler_name);
+ g_debug("signal_name %s", signal_name);
+@@ -192,7 +192,7 @@
+ font_desc = pango_font_description_from_string(font);
+ if (font_desc == NULL) exit(1);
+ gtk_widget_modify_font(widget, font_desc);
+- name = gtk_widget_get_name(widget);
++ name = ghb_get_setting_key(widget);
+ g_debug("changing font for widget %s\n", name);
+ if (GTK_IS_CONTAINER(widget))
+ {
diff --git a/abs/extra/handbrake/handbrake.install b/abs/extra/handbrake/handbrake.install
new file mode 100644
index 0000000..9a06fb3
--- /dev/null
+++ b/abs/extra/handbrake/handbrake.install
@@ -0,0 +1,15 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+
+ if [ "$(vercmp $2 0.9.4-3)" -lt 0 ]; then
+ echo "==> The handbrake CLI binary is now in a separate package: handbrake-cli"
+ fi
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}