Diff of /trunk/src/main.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 283 by harbaum, Thu May 27 19:13:18 2010 UTC revision 288 by harbaum, Mon Jun 7 19:19:50 2010 UTC
# Line 504  static gboolean on_cachelist_focus_out(G Line 504  static gboolean on_cachelist_focus_out(G
504    return FALSE;    return FALSE;
505  }  }
506    
507    gboolean on_main_focus_change(GtkWidget *widget, GdkEventFocus *event,
508                                    gpointer user_data) {
509      appdata_t *appdata = (appdata_t*)user_data;
510      g_assert(appdata->gps_state);
511    
512      printf("main/cachelist focus-%s event\n", event->in?"in":"out");
513    
514      /* disconnect from gps if map looses focus */
515      /* this is to save energy if maep runs in background */
516    
517      if(event->in) {
518        /* request all GPS information required for map display */
519        gps_register_callback(appdata->gps_state,
520              LATLON_CHANGED | TRACK_CHANGED | HERR_CHANGED | SATELLITE_CHANGED,
521              main_gps_cb, appdata);
522      } else
523        gps_unregister_callback(appdata->gps_state, main_gps_cb);
524    
525      return FALSE;
526    }
527    
528  static GtkWidget *cachelist_create(appdata_t *appdata, gpx_t *gpx,  static GtkWidget *cachelist_create(appdata_t *appdata, gpx_t *gpx,
529                                     cache_t *sel_cache) {                                     cache_t *sel_cache) {
530    GtkCellRenderer *renderer;    GtkCellRenderer *renderer;
# Line 695  static GtkWidget *cachelist_create(appda Line 716  static GtkWidget *cachelist_create(appda
716    g_signal_connect(G_OBJECT(view), "focus-out-event",    g_signal_connect(G_OBJECT(view), "focus-out-event",
717                     G_CALLBACK(on_cachelist_focus_out), container);                     G_CALLBACK(on_cachelist_focus_out), container);
718    
719      /* make sure window can control gps */
720      g_signal_connect(G_OBJECT(appdata->window), "focus-in-event",
721                       G_CALLBACK(on_main_focus_change), appdata);
722    
723      g_signal_connect(G_OBJECT(appdata->window), "focus-out-event",
724                       G_CALLBACK(on_main_focus_change), appdata);
725    
726  #ifndef USE_PANNABLE_AREA  #ifndef USE_PANNABLE_AREA
727    g_signal_connect(gtk_scrolled_window_get_vadjustment(    g_signal_connect(gtk_scrolled_window_get_vadjustment(
728                 GTK_SCROLLED_WINDOW(container)),                 GTK_SCROLLED_WINDOW(container)),
# Line 2114  void menu_create(appdata_t *appdata) { Line 2142  void menu_create(appdata_t *appdata) {
2142  /********************* end of menu **********************/  /********************* end of menu **********************/
2143    
2144  void cleanup(appdata_t *appdata) {  void cleanup(appdata_t *appdata) {
   gps_unregister_callback(appdata->gps_state, main_gps_cb);  
   
2145    gconf_save_state(appdata);    gconf_save_state(appdata);
2146    
2147    gpx_free_all(appdata->gpx);    gpx_free_all(appdata->gpx);
# Line 2573  int main(int argc, char *argv[]) { Line 2599  int main(int argc, char *argv[]) {
2599    appdata.gps_state = gps_init();    appdata.gps_state = gps_init();
2600    gps_change_state(&appdata);    gps_change_state(&appdata);
2601    
2602    /* register the gps callback for the main screen (map has its own) */    /* make sure window can control gps */
2603    gps_register_callback(appdata.gps_state,    g_signal_connect(G_OBJECT(appdata.window), "focus-in-event",
2604      LATLON_CHANGED | TRACK_CHANGED | HERR_CHANGED | SATELLITE_CHANGED,                     G_CALLBACK(on_main_focus_change), &appdata);
2605      main_gps_cb, &appdata);  
2606      g_signal_connect(G_OBJECT(appdata.window), "focus-out-event",
2607                       G_CALLBACK(on_main_focus_change), &appdata);
2608    
2609    
2610    appdata.cur_view = gpxlist_create_view_and_model(&appdata, NULL);    appdata.cur_view = gpxlist_create_view_and_model(&appdata, NULL);
2611  #ifndef USE_STACKABLE_WINDOW  #ifndef USE_STACKABLE_WINDOW

Legend:
Removed from v.283  
changed lines
  Added in v.288