SourceForge.net LogoLinuxFund.org Logo
Home Press Mailing List Documentation Screenshots People SourceForge Downloads

Film Gimp Initialization

This shows the order of function calls, and what calls what, as Film Gimp initializes. This is intended to aid programmers trying to familiarize themselves with the Film Gimp code.

app/main.c:main
 gtk_set_locale
 setlocale
 gtk_init
 g_set_message_handler
 app/install.c:install_verify
  install_callback <app/main.c:init>
   app/app_procs.c:gimp_init
    app/app_procs.c:app_init
     gtk_rc_parse
     app/app_procs.c:make_initialization_status_window
     app/app_procs.c:splash_text_draw
     app/procedural_db.c:procedural_db_init
     app/internal_procs.c:internal_procs_init [PDB procs that are core]
      app/procedural_db.c:procedural_db_register
      ...
     app/procedural_db.c:procedural_db_register(&quit_proc);
     app/gimprc.c:parse_gimprc
     app/app_procs.c:splash_logo_draw
     app/fileops.c:file_ops_pre_init
      app/procedural_db.c:procedural_db_register
      ...
     app/xcf.c:xcf_init
     app/gimpbrushlist.c:brushes_init
     app/patterns.c:patterns_init
     app/palette.c:palettes_init
     app/gradient.c:gradients_init
     app/plug_in.c:plug_in_init
      plug-ins/gimpwire.c:WireBufferInit
      app/procedural_db.c:procedural_db_register [progress and message box]
      plug-ins/gimpprotocol.c:gp_init
      plug-ins/gimpwire.c:wire_register
       ...
      plug-ins/gimpwire.c:wire_set_writer(plug_in_write);
      plug-ins/gimpwire.c:wire_set_reader(plug_in_read);
      plug-ins/gimpwire.c:wire_set_flusher(plug_in_flush);

      [Searching plug-ins in path...]
      app/datafiles.c:datafiles_read_directories


plug_in_callback is where plug-ins get called when picked from a menu.

After the plug-in launches it runs gimp_loop(), a message handling loop. That receives a GP_CONFIG message and then GP_PROC_RUN message from Film Gimp to configure and run the plug-in's operation. After responding to GP_PROC_RUN by calling gimp_proc_run (msg.data); the plug-in does a gimpquit() and exists. Extensions (such as programming languages, e.g., Script-Fu) remain resident and have a somewhat different mechanism.

gimp_proc_run 
 (* PLUG_IN_INFO.run_proc) [Function pointer to run(), the action code in the plug-in]
  gimp_drawable_get [Will ask Film Gimp main for display info via wire]
   gimp_drawable_width
    gimp_run_procedure("gimp_drawable_width"...)
     gp_proc_run_write [Send wire message to Film Gimp]
      wire_write_msg


Questions to rower@movieeditor.com
Created January 21, 2003; updated February 1, 2003