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

Reply via email to