r1788 - trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src

mickey at sita.openmoko.org mickey at sita.openmoko.org
Tue Apr 17 18:53:37 CEST 2007


Author: mickey
Date: 2007-04-17 18:53:36 +0200 (Tue, 17 Apr 2007)
New Revision: 1788

Modified:
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.c
Log:
openmoko-panel-mainmenu: make AUX/POWER button menu appear if button is held >= 1 seconds instead of always waiting for releaseing
NOTE: Thanks LaF0rge for spotting my bogus UI :D


Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.c
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.c	2007-04-17 14:55:55 UTC (rev 1787)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.c	2007-04-17 16:53:36 UTC (rev 1788)
@@ -32,7 +32,7 @@
 #include <linux/input.h>
 
 #undef DEBUG_THIS_FILE
-//#define DEBUG_THIS_FILE 1
+//#define DEBUG_THIS_FILE
 
 //FIXME find out through sysfs
 #ifndef DEBUG_THIS_FILE
@@ -50,8 +50,8 @@
 GPollFD aux_fd;
 GPollFD power_fd;
 
-GTimer* aux_timer = 0;
-GTimer* power_timer = 0;
+int aux_timer = -1;
+int power_timer = -1;
 
 GtkWidget* aux_menu = 0;
 GtkWidget* power_menu = 0;
@@ -81,12 +81,10 @@
     aux_fd.events = G_IO_IN | G_IO_HUP | G_IO_ERR;
     aux_fd.revents = 0;
     g_source_add_poll( button_watcher, &aux_fd );
-    aux_timer = g_timer_new();
     power_fd.fd = powerfd;
     power_fd.events = G_IO_IN | G_IO_HUP | G_IO_ERR;
     power_fd.revents = 0;
     g_source_add_poll( button_watcher, &power_fd );
-    power_timer = g_timer_new();
     g_source_attach( button_watcher, NULL );
     return TRUE;
 }
@@ -94,39 +92,40 @@
 
 gboolean panel_mainmenu_input_prepare( GSource* source, gint* timeout )
 {
-    g_debug( "prepare" );
     return FALSE;
 }
 
 
 gboolean panel_mainmenu_input_check( GSource* source )
 {
-    g_debug( "check" );
     return ( ( aux_fd.revents & G_IO_IN ) || ( power_fd.revents & G_IO_IN ) );
 }
 
 
 gboolean panel_mainmenu_input_dispatch( GSource* source, GSourceFunc callback, gpointer data )
 {
-    g_debug( "dispatch" );
     if ( aux_fd.revents & G_IO_IN )
     {
         struct input_event event;
         int size = read( aux_fd.fd, &event, sizeof( struct input_event ) );
         g_debug( "read %d bytes from aux_fd %d", size, aux_fd.fd );
         g_debug( "input event = ( %0x, %0x, %0x )", event.type, event.code, event.value );
-        //g_timeout_add( 1 * 1000, (GSourceFunc) panel_mainmenu_input_timeout, NULL);
         if ( event.type == 1 && event.code == AUX_BUTTON_KEYCODE )
         {
             if ( event.value == 1 ) /* pressed */
             {
-                g_debug( "resetting aux timer" );
-                g_timer_reset( aux_timer );
+                g_debug( "triggering aux timer" );
+                aux_timer = g_timeout_add( 1 * 1000, (GSourceFunc) panel_mainmenu_aux_timeout, (gpointer)1 );
             }
             else if ( event.value == 0 ) /* released */
             {
-                g_debug( "triggering aux function" );
-                panel_mainmenu_aux_timeout( g_timer_elapsed( aux_timer, NULL ) );
+                g_debug( "resetting aux timer" );
+                if ( aux_timer != -1 )
+                {
+                    g_source_remove( aux_timer );
+                    panel_mainmenu_aux_timeout( 0 );
+                }
+                aux_timer = -1;
             }
         }
     }
@@ -136,18 +135,22 @@
         int size = read( power_fd.fd, &event, sizeof( struct input_event ) );
         g_debug( "read %d bytes from power_fd %d", size, power_fd.fd );
         g_debug( "input event = ( %0x, %0x, %0x )", event.type, event.code, event.value );
-        //g_timeout_add( 1 * 1000, (GSourceFunc) panel_mainmenu_power_timeout, NULL);
         if ( event.type == 1 && event.code == POWER_BUTTON_KEYCODE )
         {
             if ( event.value == 1 ) /* pressed */
             {
-                g_debug( "resetting power timer" );
-                g_timer_reset( power_timer );
+                g_debug( "triggering power timer" );
+                power_timer = g_timeout_add( 1 * 1000, (GSourceFunc) panel_mainmenu_power_timeout, (gpointer)1 );
             }
             else if ( event.value == 0 ) /* released */
             {
-                g_debug( "triggering power function" );
-                panel_mainmenu_power_timeout( g_timer_elapsed( power_timer, NULL ) );
+                g_debug( "resetting power timer" );
+                if ( power_timer != -1 )
+                {
+                    g_source_remove( power_timer );
+                    panel_mainmenu_power_timeout( 0 );
+                }
+                power_timer = -1;
             }
         }
     }
@@ -157,6 +160,7 @@
 gboolean panel_mainmenu_aux_timeout( guint timeout )
 {
     g_debug( "aux pressed for %d", timeout );
+    aux_timer = -1;
     if ( timeout < 1 )
     {
         // make dialer interface show up
@@ -216,6 +220,7 @@
 gboolean panel_mainmenu_power_timeout( guint timeout )
 {
     g_debug( "power pressed for %d", timeout );
+    power_timer = -1;
     if ( timeout < 1 )
     {
         // close current application





More information about the commitlog mailing list