commit b51f29205d25317760546232ab8c9d28396e682e
Author: phantomjinx <[email protected]>
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2