Libgnome usage in gnome-games III

Finally – it’s done. I just did a commit to remove the very last bits of libgnome dependence in gnome-games.

Ldd now shows the following results:

On my ancient laptop I feel an improvement in startup time but I don’t have any numbers to back that up – yet. I should probably do that some day. But it will not be tonight because it’s 3:45 am and I’ve got a ton of papers to plow through tomorrow. Thank God for coffee 🙂

Libgnome usage in gnome-games II

Libgnome usage in gnome-games

I said I’d do a status report on this so without further ado:

Calls to libgnome from gnome-games
Libgnome calls from gnome-games before and now

We are not there yet but we are definitely making progress.

Much credit should be given to Christian Persch. Not only did he commit changes to make aisleriot libgnome-free moments after my last blog entry but he has also been very helpful answering a ton of questions from me. Thanks Christian!

FSCONS

I did not know this conference existed until I read about it on p.g.o. It is within a reasonable distance from where I live so I think I might go there saturday and sunday. I don’t know anyone else going so I will be there on my own. If you are there then do come talk (or have a beer if that’s going to be happening in the evening). I should be easy to recognize by a scar by my right eye.

Hackergotchi

I did a rather pathetic attempt to make a hackergotchi. My gimp skills are pretty basic and I could not get the drop shadow thing work. If anyone wants to help me fix that I’ll be grateful. The picture I used is not very good but it’s the best I got currently. I just got back from vacation in Doha, Qatar but this is a picture from the first day and I’m still rather pale. It’s also taken from above and combined with my receding hairline it creates the fun illusion that my forehead is almost as tall as the rest of my face. In reality that is not quite the case 🙂

It’s not the right size, I know. I thought that if anyone wanted to add drop shadow it might be easier while it’s still big. Hopefully Jeff will bear with me and resize it for me.

Libgnome usage in gnome-games

Inspired by Alexander Larssons post on reduing the number of libraries linked in nautilus I ran ldd on gnome-games:

blackjack: 82
gnect: 84
gnomine: 80
gtali: 80
same-gnome: 80
gnibbles: 84
gnotravex: 80
iagno: 84
sol: 84
glines: 80
gnobots2: 80
gnometris: 82
gnotski: 80
mahjongg: 80

Let’s see if we can improve that. Focusing a bit on libgnome I grep’ed trough the sources to see what we use. Using "grep -oh 'gnome_[a-z_]*' *.c" this is what I found. (output cleaned up to remove duplicates etc.) I’m not sure what to do about all of them but some like help and triggers should be fairly easy to get rid off. Perhaps the app and appbar parts should be replaced by using GtkUIManager or GtkBuilder.

For session management we could follow nautilus and drop the *_client_* stuff and use EggSMClient but I’d rather wait and hope for a solution in bug #79285. (imo we could just kill the thing for the games entirely. Saving game state over a session for a 5 minute game does not make sense to me and the current implementation doesn’t even really do that. It only restores the same puzzle/solitaire/whatnot you were playing, not the progress you had made in it. To me it just looks like a lot of complexity with no real value to the user. Or maybe I just don’t get the point…)

I’ll post updates as I make progress. Any comments/advice/suggestions are appreciated!

Aisleriot:
– gnome_client_set_restart_command
– gnome_help_display_on_screen
– gnome_program_init
– gnome_master_client

Blackjack:
– gnome_help_display_desktop_on_screen
– gnome_program_init

Glines:
– gnome_help_display
– gnome_client_get_id
– gnome_client_get_previous_id
– gnome_program_init
– gnome_master_client

Gnect:
– gnome_program_locate_file
– gnome_help_display
– gnome_app_new
– gnome_app_set_contents
– gnome_program_init

Gnibbles:
– gnome_help_display
– gnome_app_new
– gnome_app_set_contents
– gnome_appbar_new
– gnome_app_set_statusbar
– gnome_program_init
– gnome_program_locate_file

Gnobots2:
– gnome_program_locate_file
– gnome_help_display
– gnome_client_set_restart_command
– gnome_client_set_clone_command
– gnome_program_init
– gnome_master_client
– gnome_app_new
– gnome_app_set_contents
– gnome_triggers_do

Gnometris:
– gnome_user_dir_get
– gnome_program_locate_file
– gnome_app_new
– gnome_app_set_contents
– gnome_vfs_open
– gnome_vfs_get_file_info_from_handle
– gnome_vfs_read
– gnome_vfs_create
– gnome_vfs_write
– gnome_vfs_close
– gnome_help_display
– gnome_program_init

Gnomine:
– gnome_program_locate_file
– gnome_help_display
– gnome_client_set_restart_command
– gnome_client_set_clone_command
– gnome_program_init
– gnome_master_client
– gnome_app_new
– gnome_app_set_contents
– gnome_accelerators_sync

Gnotravex:
– gnome_program_init
– gnome_master_client
– gnome_client_set_restart_command
– gnome_client_set_clone_command
– gnome_help_display

Gnotski:
– gnome_program_init
– gnome_master_client
– gnome_client_set_restart_command
– gnome_client_set_clone_command
– gnome_help_display

Gtali:
– gnome_help_display
– gnome_app_new
– gnome_app_set_contents
– gnome_program_init

Iagno:
– gnome_program_locate_file
– gnome_app_new
– gnome_app_create_menus
– gnome_app_set_contents
– gnome_appbar_new
– gnome_app_set_statusbar
– gnome_app_install_menu_hints
– gnome_appbar_set_status
– gnome_appbar_pop
– gnome_appbar_push
– gnome_client_set_restart_command
– gnome_client_set_clone_command
– gnome_program_init
– gnome_master_client

Mahjongg:
– gnome_help_display
– gnome_program_init

Same-gnome:
– gnome_help_display
– gnome_program_init

libgames-support:
– gnome_accelerators_sync