summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-02-06 14:20:00 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-02-06 14:20:00 +0000
commitbad18cd0bb7f667b3fb995f25418fd98a405818c (patch)
treeb26d515d7fb9b5818ccb3a5688e7833b51ca326b
parent6917b494cad8c70b33f6567ab57a7053775da21f (diff)
downloadnavit-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.c20
-rw-r--r--navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp10
-rw-r--r--navit/gui.c7
-rw-r--r--navit/gui.h1
-rw-r--r--navit/gui/internal/gui_internal.c10
-rw-r--r--navit/navit.c17
-rw-r--r--navit/window.h1
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);
};