commit b51f29205d25317760546232ab8c9d28396e682e Author: phantomjinx <p.g.richard...@phantomjinx.co.uk> Date: Wed Sep 8 22:44:29 2010 +0100
Enable splash screen for gtkpod using same system as anjuta * main.c * No need to do gdk_threads_enter/leave here. * gtkpod.c * Set up splash screen image * Surround gp_init with gdk_threads_enter/leave to avoid race condition with splash screen icons/Makefile.am | 5 +++++ icons/gtkpod-splash.png | Bin 0 -> 29735 bytes src/anjuta-app.c | 2 +- src/gtkpod.c | 30 +++++++++++++++++++++++------- src/main.c | 9 +++------ 5 files changed, 32 insertions(+), 14 deletions(-) --- diff --git a/icons/Makefile.am b/icons/Makefile.am index 8809515..4e6088e 100644 --- a/icons/Makefile.am +++ b/icons/Makefile.am @@ -1,5 +1,10 @@ SUBDIRS = 16x16 22x22 24x24 32x32 48x48 64x64 scalable hicolor +appicondir = $(pkgdatadir)/icons +appicon_DATA = gtkpod-splash.png + +EXTRA_DIST = $(appicon_DATA) + gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor install-data-hook: update-icon-cache diff --git a/icons/gtkpod-splash.png b/icons/gtkpod-splash.png new file mode 100644 index 0000000..8580acb Binary files /dev/null and b/icons/gtkpod-splash.png differ diff --git a/src/anjuta-app.c b/src/anjuta-app.c index 71e862d..04383c4 100644 --- a/src/anjuta-app.c +++ b/src/anjuta-app.c @@ -535,7 +535,7 @@ anjuta_app_new(void) { AnjutaApp *app; app = ANJUTA_APP (g_object_new (ANJUTA_TYPE_APP, - "title", "GtkPod", + "title", "gtkpod", NULL)); return GTK_WIDGET (app); } diff --git a/src/gtkpod.c b/src/gtkpod.c index 726d852..01bb64b 100644 --- a/src/gtkpod.c +++ b/src/gtkpod.c @@ -62,6 +62,7 @@ void gtkpod_init(int argc, char *argv[]) { gchar *ui_file = NULL; gchar *remembered_plugins = NULL; gchar *session_dir = NULL; + gchar *splash = NULL; /* Initialise important directories */ init_directories(argv); @@ -79,22 +80,38 @@ void gtkpod_init(int argc, char *argv[]) { app = ANJUTA_APP(anjuta_app_new()); gtkpod_app = GTKPOD_APP(app); + /* Show some progress as the app is initialised */ + status = anjuta_shell_get_status(ANJUTA_SHELL(app), NULL); + anjuta_status_progress_add_ticks(status, 1); + + splash = g_build_filename(get_icon_dir(), "gtkpod-splash.png", NULL); + + if (g_file_test(splash, G_FILE_TEST_IS_REGULAR)) + anjuta_status_set_splash (status, splash, 100); + else { + g_warning("Cannot find splash file %s", splash); + anjuta_status_disable_splash(status, TRUE); + } + + g_free(splash); + /* Set the glade xml file of the app */ glade_xml_file = g_build_filename(get_glade_dir(), "gtkpod.glade", NULL); gtkpod_app_set_glade_xml(glade_xml_file); g_free(glade_xml_file); - /* initialise gtkpod library items dependent on path of executable*/ + /* + * initialise gtkpod library items. Needs to be safety threaded due + * to splash screen. + */ + gdk_threads_enter(); gp_init(argc, argv); + gdk_threads_leave(); /* Add blocking widgets from the framework */ add_blocked_widget(app->toolbar); add_blocked_widget(app->view_menu); - /* Show some progress as the app is initialised */ - status = anjuta_shell_get_status(ANJUTA_SHELL(app), NULL); - anjuta_status_progress_add_ticks(status, 1); - /* Set up shutdown signals */ g_object_set_data(G_OBJECT(app), "__proper_shutdown", "1"); g_signal_connect(G_OBJECT(app), "delete_event", G_CALLBACK( @@ -172,9 +189,8 @@ void gtkpod_init(int argc, char *argv[]) { anjuta_status_progress_tick(status, NULL, _("Loaded Session...")); anjuta_status_disable_splash(status, TRUE); - g_set_application_name(_("GtkPod")); gtk_window_set_default_icon_name("gtkpod"); - gtk_window_set_auto_startup_notification(FALSE); + gtk_window_set_auto_startup_notification(TRUE); gtk_window_set_role(GTK_WINDOW(app), "gtkpod-app"); gtk_widget_show(GTK_WIDGET(app)); diff --git a/src/main.c b/src/main.c index ddcbcf8..ad3c373 100644 --- a/src/main.c +++ b/src/main.c @@ -34,6 +34,7 @@ #include <time.h> #include <libintl.h> #include "gtkpod.h" +#include <glib/gi18n-lib.h> int main (int argc, char *argv[]) @@ -52,18 +53,14 @@ main (int argc, char *argv[]) gdk_threads_init (); #endif - gdk_threads_enter (); - gtk_init (&argc, &argv); + g_set_application_name(_("gtkpod")); + gtk_window_set_auto_startup_notification(FALSE); srand(time(NULL)); gtkpod_init (argc, argv); - gtk_main (); - gdk_threads_leave (); - - /* all the cleanup is already done in gtkpod_main_shutdown () in misc.c */ return 0; } ------------------------------------------------------------------------------ This SF.net Dev2Dev email is sponsored by: Show off your parallel programming skills. Enter the Intel(R) Threading Challenge 2010. http://p.sf.net/sfu/intel-thread-sfd _______________________________________________ gtkpod-cvs2 mailing list gtkpod-cvs2@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2