diff --git a/gui/ocarina.c b/gui/ocarina.c index 38619290..43ad4200 100644 --- a/gui/ocarina.c +++ b/gui/ocarina.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -16,6 +17,12 @@ #define OCARINA_FLAGS (G_APPLICATION_FLAGS_NONE) +#ifndef CONFIG_DEBUG +const static gchar *OCARINA_NAME = "org.gtk.ocarina"; +#else +const static gchar *OCARINA_NAME = "org.gtk.ocarina-debug"; +#endif + struct core_init_data init_data = { &collection_ops, &history_ops, @@ -24,6 +31,9 @@ struct core_init_data init_data = { &audio_ops, }; +static int startup_argc; +static char **startup_argv; + static gchar *find_file_path(const gchar *file) { gchar *path = g_strjoin("/", "share", "ocarina", file, NULL); @@ -41,27 +51,13 @@ static void __ocarina_activate(GApplication *application, gpointer data) GTK_WINDOW(gui_builder_widget("o_window"))); } -static void __ocarina_shutdown(GApplication *application, gpointer data) -{ - idle_cancel(); -} - -int main(int argc, char **argv) +static void __ocarina_startup(GApplication *application, gpointer data) { gchar *ui = find_file_path("ocarina6.glade"); gchar *icon = find_file_path("ocarina.png"); - GtkApplication *ocarina; - int ret; -#ifndef CONFIG_DEBUG - ocarina = gtk_application_new("org.gtk.ocarina", OCARINA_FLAGS); -#else - ocarina = gtk_application_new("org.gtk.ocarina-debug", OCARINA_FLAGS); -#endif - - gtk_init(&argc, &argv); gui_builder_init(ui); - core_init(&argc, &argv, &init_data); + core_init(&startup_argc, &startup_argv, &init_data); gui_settings_init(); gui_view_init(); gui_window_init(icon); @@ -70,11 +66,29 @@ int main(int argc, char **argv) gui_playlist_init(); gui_audio_init(); - g_free(ui); - g_free(icon); + gui_idle_enable(); gui_sidebar_select_first(); + g_free(ui); + g_free(icon); +} + +static void __ocarina_shutdown(GApplication *application, gpointer data) +{ + idle_cancel(); +} + +int main(int argc, char **argv) +{ + GtkApplication *ocarina; + int ret; + + startup_argc = argc; + startup_argv = argv; + ocarina = gtk_application_new(OCARINA_NAME, OCARINA_FLAGS); + g_signal_connect(G_APPLICATION(ocarina), "activate", (GCallback)__ocarina_activate, NULL); + g_signal_connect(G_APPLICATION(ocarina), "startup", (GCallback)__ocarina_startup, NULL); g_signal_connect(G_APPLICATION(ocarina), "shutdown", (GCallback)__ocarina_shutdown, NULL); ret = g_application_run(G_APPLICATION(ocarina), argc, argv);