OSDN Git Service

LinGui: change how x264 options are handled
[handbrake-jp/handbrake-jp-git.git] / gtk / src / main.c
index 2d3e060..53b71d9 100644 (file)
@@ -429,13 +429,11 @@ typedef struct
        gchar *iconname;
 } icon_map_t;
 
-gboolean ghb_autostart;
 static gchar *dvd_device = NULL;
 static gchar *arg_preset = NULL;
 
 static GOptionEntry entries[] = 
 {
-       { "autostart", 'a', 0, G_OPTION_ARG_NONE, &ghb_autostart, "Automatically scan and start encoding", NULL },
        { "device", 'd', 0, G_OPTION_ARG_FILENAME, &dvd_device, "The device or file to encode", NULL },
        { "preset", 'p', 0, G_OPTION_ARG_STRING, &arg_preset, "The preset values to use for encoding", NULL },
        { NULL }
@@ -461,6 +459,12 @@ watch_volumes(signal_user_data_t *ud)
 }
 #endif
 
+// Hack to avoid a segfault in libavcodec
+extern int mm_flags;
+int mm_support();
+
+void x264_entry_changed_cb(GtkWidget *widget, signal_user_data_t *ud);
+
 int
 main (int argc, char *argv[])
 {
@@ -471,6 +475,7 @@ main (int argc, char *argv[])
        GError *error = NULL;
        GOptionContext *context;
 
+       mm_flags = mm_support();
 #ifdef ENABLE_NLS
        bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
        bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
@@ -495,7 +500,6 @@ main (int argc, char *argv[])
        gtk_icon_theme_append_search_path (theme, "./icons");
        
        ud = g_malloc(sizeof(signal_user_data_t));
-       ud->state = GHB_STATE_START;
        ud->debug = FALSE;
        g_log_set_handler (NULL, G_LOG_LEVEL_DEBUG, debug_log_handler, ud);
        ud->settings = ghb_settings_new();
@@ -513,6 +517,16 @@ main (int argc, char *argv[])
                ud->builder = create_builder_or_die (BUILDER_NAME, builder_file);
                g_free(builder_file);
        }
+
+       // Need to connect x264_options textview buffer to the changed signal
+       // since it can't be done automatically
+       GtkTextView *textview;
+       GtkTextBuffer *buffer;
+       textview = GTK_TEXT_VIEW(GHB_WIDGET (ud->builder, "x264_options"));
+       buffer = gtk_text_view_get_buffer (textview);
+       g_signal_connect(buffer, "changed", (GCallback)x264_entry_changed_cb, ud);
+
+       ghb_file_menu_add_dvd(ud);
        ghb_backend_init(ud->builder, 1, 0);
 
        g_debug("ud %p\n", ud);
@@ -552,6 +566,8 @@ main (int argc, char *argv[])
                if (preset == NULL)
                        preset = ghb_presets_get_name(0);
        }
+       // Parsing x264 options "" initializes x264 widgets to proper defaults
+       ghb_x264_parse_options(ud, "");
        ghb_select_preset(ud->builder, preset);
        ghb_prefs_to_ui(ud);
        // Grey out widgets that are dependent on a disabled feature
@@ -562,10 +578,6 @@ main (int argc, char *argv[])
                // Source overridden from command line option
                ghb_settings_set_string(ud->settings, "source", dvd_device);
        }
-       if (ghb_autostart)
-       {
-               ghb_hbfd(ud, TRUE);
-       }
        // Start timer for monitoring libhb status, 500ms
        g_timeout_add (500, ghb_timer_cb, (gpointer)ud);
        // Everything should be go-to-go.  Lets rock!