fixes
authorwellu <wellu@wellu.org>
Tue, 30 Sep 2008 14:29:06 +0000 (14:29 +0000)
committerwellu <wellu@wellu.org>
Tue, 30 Sep 2008 14:29:06 +0000 (14:29 +0000)
git-svn-id: file:///svnroot/speedometer/trunk@39 df364472-da61-43ef-8a67-511c89aa921b

Makefile
appdata.h
callbacks.c
main.c
ui.c
ui.h

index 5d7214d..dbdf2dc 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
-PKGS     = gtk+-2.0 liblocation gconf-2.0
+PKGS     = gtk+-2.0 liblocation gconf-2.0 libosso
 CC       = gcc
 LINK     = gcc
-CFLAGS   = -g -Wall -pedantic -std=gnu99
+CFLAGS   = -g -Wall -O0 -pedantic -std=gnu99
 INCPATH  = `pkg-config --cflags $(PKGS)`
 LIBS     = `pkg-config --libs $(PKGS)`
 
index 45184d5..4cbf34c 100644 (file)
--- a/appdata.h
+++ b/appdata.h
@@ -19,6 +19,7 @@
 #ifndef APPDATA_H_
 #define APPDATA_H_
 
+#include <libosso.h>
 #include <hildon/hildon-program.h>
 #include <hildon/hildon-window.h>
 
@@ -26,11 +27,10 @@ typedef struct _AppData {
     HildonProgram *program;
     HildonWindow *window;
 
-       GtkWidget* graphix[10];         // contains all the graphics
-       GtkWidget* big_digits[3];       // big digits that are shown as speed
-       GtkWidget* small_digits[2];     // small digits that are shown on the screen
        guint unit;                                     // unit used in conversion
 
+       osso_context_t* osso_ctx;       // libosso
+
 } AppData;
 
 #endif /* APPDATA_H_ */
index 0a245fe..f8e29ff 100644 (file)
@@ -86,7 +86,6 @@ gboolean top_event_box_button_press(GtkWidget* widget, GdkEventButton* event, gp
 
        if(x > 750) {
                g_print("Exiting..\n");
-               stop_gps(appdata);
                g_signal_emit_by_name(appdata->window, "delete_event");
        }
        return TRUE;
diff --git a/main.c b/main.c
index 782db74..3bd45f4 100644 (file)
--- a/main.c
+++ b/main.c
 #include <hildon/hildon-window.h>
 #include <stdlib.h>
 #include <gtk/gtk.h>
+#include <libosso.h>
 
 #include "callbacks.h"
 #include "appdata.h"
 #include "ui.h"
 #include "util.h"
 
-int main(int argc, char** argv) {
+#define PROGNAME "org.wellu.speedometer"
 
-       AppData *appdata = g_new0(AppData, 1);
+static AppData *appdata;
 
-       gtk_init(&argc, &argv);
+/* Requests delay from screen blanking
+ * Should be called at least once in every 60 seconds
+ * we're not bothered about errors here as dbus calls
+ * either succeed or not. Worst case would be dimmed
+ * screen anyway.
+ */
+static gboolean delay_display_blanking(gpointer data) {
+       g_print("Requesting not to blank the screen in the next 60 secs.\n");
+       osso_display_blanking_pause(data);
+       return TRUE;
+}
 
+void init_app() {
+       appdata = g_new0(AppData, 1);
        appdata->program = HILDON_PROGRAM(hildon_program_get_instance());
        appdata->window = HILDON_WINDOW(hildon_window_new());
        hildon_program_add_window(appdata->program, appdata->window);
 
+       appdata->osso_ctx = osso_initialize(PROGNAME, "1.0", FALSE, NULL);
+
+       delay_display_blanking(appdata->osso_ctx);
+       g_timeout_add(55000, (GSourceFunc) delay_display_blanking, appdata->osso_ctx);
+}
+
+void deinit_app() {
+       osso_deinitialize(appdata->osso_ctx);
+       stop_gps(appdata);
+}
+
+int main(int argc, char** argv) {
+       gtk_init(&argc, &argv);
+
+       init_app();
+
        // loads images from the disk to the image array
        load_graphix(appdata);
 
        // set display to 000
-       load_initial_pixbufs(appdata);
+       set_digits_to_zero(appdata);
 
-       // create ui structure
+       // inits the ui placement
        create_ui(appdata);
 
-       // set the window fullscreen
-       gtk_window_fullscreen(GTK_WINDOW(appdata->window));
-
-       gtk_widget_show_all(GTK_WIDGET(appdata->window));
-
        g_thread_init(NULL);
 
        show_cardware_dialog();
 
-       //g_idle_add(randomize, appdata);
-
        start_gps(appdata);
 
        gtk_main();
 
+       // here we cleanup things
+       deinit_app();
+
        return EXIT_SUCCESS;
 }
 
diff --git a/ui.c b/ui.c
index ca760f8..aec5446 100644 (file)
--- a/ui.c
+++ b/ui.c
 #include "ui.h"
 #include "callbacks.h"
 
+static GtkWidget* graphix[10];         // contains all the graphics
+static GtkWidget* big_digits[3];       // big digits that are shown as speed
+static GtkWidget* small_digits[2];     // small digits that are shown on the screen
+
 #define IMAGE_PATH "/usr/share/speedometer/%d.png"
 
 static void set_widget_bg_black(GtkWidget* widget) {
@@ -40,7 +44,7 @@ void load_graphix(AppData *appdata) {
        while(i < 10) {
                char* path = g_malloc(30);
                g_sprintf(path, IMAGE_PATH, i);
-               appdata->graphix[i] = gtk_image_new_from_file(path);
+               graphix[i] = gtk_image_new_from_file(path);
                g_print(path);
                g_print("\n");
                g_free(path);
@@ -48,31 +52,31 @@ void load_graphix(AppData *appdata) {
        }
 }
 
-void load_initial_pixbufs(AppData* appdata) {
+void set_digits_to_zero(AppData* appdata) {
        g_assert(appdata);
 
-       GdkPixbuf* zero = gtk_image_get_pixbuf(GTK_IMAGE(appdata->graphix[0]));
+       GdkPixbuf* zero = gtk_image_get_pixbuf(GTK_IMAGE(graphix[0]));
 
-       appdata->big_digits[0] = GTK_WIDGET(gtk_image_new_from_pixbuf(zero));
-       appdata->big_digits[1] = GTK_WIDGET(gtk_image_new_from_pixbuf(zero));
-       appdata->big_digits[2] = GTK_WIDGET(gtk_image_new_from_pixbuf(zero));
+       big_digits[0] = GTK_WIDGET(gtk_image_new_from_pixbuf(zero));
+       big_digits[1] = GTK_WIDGET(gtk_image_new_from_pixbuf(zero));
+       big_digits[2] = GTK_WIDGET(gtk_image_new_from_pixbuf(zero));
 }
 
 void set_nth_digit(AppData* appdata, guint n, guint value) {
-       g_assert(appdata);
+
        g_assert(value < 10);
        g_assert(n < 3);
 
-       GtkWidget* image = appdata->big_digits[n];
-       GdkPixbuf* buf = gtk_image_get_pixbuf(GTK_IMAGE(appdata->graphix[value]));
+       GtkWidget* image = big_digits[n];
+       GdkPixbuf* buf = gtk_image_get_pixbuf(GTK_IMAGE(graphix[value]));
        gtk_image_set_from_pixbuf(GTK_IMAGE(image), buf);
 }
 
 void repaint_all_digits(AppData* appdata) {
-       g_assert(appdata);
-       gtk_widget_queue_draw(GTK_WIDGET(appdata->big_digits[0]));
-       gtk_widget_queue_draw(GTK_WIDGET(appdata->big_digits[1]));
-       gtk_widget_queue_draw(GTK_WIDGET(appdata->big_digits[2]));
+
+       gtk_widget_queue_draw(GTK_WIDGET(big_digits[0]));
+       gtk_widget_queue_draw(GTK_WIDGET(big_digits[1]));
+       gtk_widget_queue_draw(GTK_WIDGET(big_digits[2]));
 }
 
 void create_ui(AppData* appdata) {
@@ -110,9 +114,9 @@ void create_ui(AppData* appdata) {
                appdata->window);
 
        // add three digits to the hbox
-       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(appdata->big_digits[0]), FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(appdata->big_digits[1]), FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(appdata->big_digits[2]), FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(big_digits[0]), FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(big_digits[1]), FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(big_digits[2]), FALSE, FALSE, 0);
 
        gtk_box_pack_start_defaults(GTK_BOX(vbox), top_e); // add event box on top
        gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox); // numbers to the middle
@@ -125,5 +129,7 @@ void create_ui(AppData* appdata) {
        set_widget_bg_black(bottom_e);
        set_widget_bg_black(top_e);
 
+       gtk_window_fullscreen(GTK_WINDOW(appdata->window));
+       gtk_widget_show_all(GTK_WIDGET(appdata->window));
 }
 
diff --git a/ui.h b/ui.h
index 9d9fbcb..9997de0 100644 (file)
--- a/ui.h
+++ b/ui.h
@@ -23,7 +23,7 @@
 
 void load_graphix(AppData *appdata);
 
-void load_initial_pixbufs(AppData* appdata);
+void set_digits_to_zero(AppData* appdata);
 
 void set_nth_digit(AppData* appdata, guint n, guint value);