diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2009-02-06 14:20:00 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2009-02-06 14:20:00 +0000 |
commit | bad18cd0bb7f667b3fb995f25418fd98a405818c (patch) | |
tree | b26d515d7fb9b5818ccb3a5688e7833b51ca326b | |
parent | 6917b494cad8c70b33f6567ab57a7053775da21f (diff) | |
download | navit-bad18cd0bb7f667b3fb995f25418fd98a405818c.tar.gz |
Add:Core:Initial support for preventing going to suspend
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@2021 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r-- | navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c | 20 | ||||
-rw-r--r-- | navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp | 10 | ||||
-rw-r--r-- | navit/gui.c | 7 | ||||
-rw-r--r-- | navit/gui.h | 1 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal.c | 10 | ||||
-rw-r--r-- | navit/navit.c | 17 | ||||
-rw-r--r-- | navit/window.h | 1 |
7 files changed, 51 insertions, 15 deletions
diff --git a/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c b/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c index c55e8cd0b..c67158a3a 100644 --- a/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c +++ b/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c @@ -22,6 +22,7 @@ #include <gtk/gtk.h> #include <gdk/gdkkeysyms.h> #include <stdlib.h> +#include <signal.h> #if !defined(GDK_Book) || !defined(GDK_Calendar) #include <X11/XF86keysym.h> #endif @@ -81,6 +82,7 @@ struct graphics_priv { struct callback_list *cbl; struct font_freetype_methods freetype_methods; struct navit *nav; + int pid; }; @@ -819,9 +821,18 @@ graphics_gtk_drawing_area_fullscreen(struct window *w, int on) return 1; } +static void +graphics_gtk_drawing_area_disable_suspend(struct window *w) +{ + struct graphics_priv *gr=w->priv; + if (gr->pid) + kill(gr->pid, SIGWINCH); +} + static void * get_data(struct graphics_priv *this, char *type) { + FILE *f; if (!strcmp(type,"gtk_widget")) return this->widget; if (!strcmp(type,"window")) { @@ -839,7 +850,16 @@ get_data(struct graphics_priv *this, char *type) g_signal_connect(G_OBJECT(this->widget), "key-press-event", G_CALLBACK(keypress), this); g_signal_connect(G_OBJECT(this->win), "delete_event", G_CALLBACK(delete), this->nav); this->window.fullscreen=graphics_gtk_drawing_area_fullscreen; + this->window.disable_suspend=graphics_gtk_drawing_area_disable_suspend; this->window.priv=this; +#if !defined(_WIN32) && !defined(__CEGCC__) + f=popen("pidof /usr/bin/ipaq-sleep","r"); + if (f) { + fscanf(f,"%d",&this->pid); + dbg(1,"ipaq_sleep pid=%d\n", this->pid); + pclose(f); + } +#endif return &this->window; } return NULL; diff --git a/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp b/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp index 472f65851..e0c91bb7f 100644 --- a/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp +++ b/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp @@ -892,6 +892,15 @@ fullscreen(struct window *win, int on) return 1; } +static void +disable_suspend(struct window *win) +{ +#ifdef HAVE_QPE + struct graphics_priv *this_=(struct graphics_priv *)win->priv; + this_->app->setTempScreenSaverMode(QPEApplication::DisableLightOff); +#endif +} + //############################################################################################################## //# Description: //# Comment: @@ -910,6 +919,7 @@ static void * get_data(struct graphics_priv *this_, char *type) this_->widget->showMaximized(); win->priv=this_; win->fullscreen=fullscreen; + win->disable_suspend=disable_suspend; return win; } diff --git a/navit/gui.c b/navit/gui.c index 28b2132cd..3f4b9316d 100644 --- a/navit/gui.c +++ b/navit/gui.c @@ -129,6 +129,13 @@ gui_set_graphics(struct gui *this_, struct graphics *gra) return this_->meth.set_graphics(this_->priv, gra); } +void +gui_disable_suspend(struct gui *this_) +{ + if (this_->meth.disable_suspend) + this_->meth.disable_suspend(this_->priv); +} + int gui_has_main_loop(struct gui *this_) { diff --git a/navit/gui.h b/navit/gui.h index 7787158cc..d0158a784 100644 --- a/navit/gui.h +++ b/navit/gui.h @@ -36,6 +36,7 @@ struct gui_methods { int (*run_main_loop)(struct gui_priv *priv); struct datawindow_priv *(*datawindow_new)(struct gui_priv *priv, char *name, struct callback *click, struct callback *close, struct datawindow_methods *meth); int (*add_bookmark)(struct gui_priv *priv, struct pcoord *c, char *description); + void (*disable_suspend)(struct gui_priv *priv); }; diff --git a/navit/gui/internal/gui_internal.c b/navit/gui/internal/gui_internal.c index 6c070b915..07d3081ec 100644 --- a/navit/gui/internal/gui_internal.c +++ b/navit/gui/internal/gui_internal.c @@ -3388,6 +3388,12 @@ static int gui_internal_set_graphics(struct gui_priv *this, struct graphics *gra return 0; } +static int gui_internal_disable_suspend(struct gui_priv *this) +{ + if (this->win->disable_suspend) + this->win->disable_suspend(this->win); +} + //############################################################################################################## //# Description: //# Comment: @@ -3397,6 +3403,10 @@ struct gui_methods gui_internal_methods = { NULL, NULL, gui_internal_set_graphics, + NULL, + NULL, + NULL, + gui_internal_disable_suspend, }; static void diff --git a/navit/navit.c b/navit/navit.c index 41d59851d..08467d561 100644 --- a/navit/navit.c +++ b/navit/navit.c @@ -108,7 +108,6 @@ struct navit { GList *windows_items; struct navit_vehicle *vehicle; struct callback_list *attr_cbl; - int pid; struct callback *nav_speech_cb, *roadbook_callback, *popup_callback, *route_cb; struct datawindow *roadbook_window; struct map *bookmark; @@ -598,7 +597,6 @@ navit_new(struct attr *parent, struct attr **attrs) struct coord_geo g; enum projection pro=projection_mg; int zoom = 256; - FILE *f; g.lat=53.13; g.lng=11.70; @@ -607,15 +605,6 @@ navit_new(struct attr *parent, struct attr **attrs) this_->attr_cbl=callback_list_new(); main_add_navit(this_); -#if !defined(_WIN32) && !defined(__CEGCC__) - f=popen("pidof /usr/bin/ipaq-sleep","r"); - if (f) { - fscanf(f,"%d",&this_->pid); - dbg(1,"ipaq_sleep pid=%d\n", this_->pid); - pclose(f); - } -#endif - this_->bookmarks_hash=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); this_->orientation=-1; @@ -1900,10 +1889,8 @@ navit_vehicle_update(struct navit *this_, struct navit_vehicle *nv) } callback_list_call_attr_0(this_->attr_cbl, attr_position); navit_textfile_debug_log(this_, "type=trackpoint_tracked"); -#ifndef _WIN32 - if (this_->pid && nv->speed > 2) - kill(this_->pid, SIGWINCH); -#endif + if (this_->gui && nv->speed > 2) + gui_disable_suspend(this_->gui); transform(this_->trans, pro, &nv->coord, &cursor_pnt, 1, 0, 0, NULL); if (this_->button_pressed != 1 && nv->follow_curr <= nv->follow && diff --git a/navit/window.h b/navit/window.h index 398caf4b0..34254a606 100644 --- a/navit/window.h +++ b/navit/window.h @@ -1,4 +1,5 @@ struct window { void *priv; int (*fullscreen)(struct window *win, int on); + void (*disable_suspend)(struct window *win); }; |