r2203 - in trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu: . src
mickey at sita.openmoko.org
mickey at sita.openmoko.org
Sat Jun 9 18:12:13 CEST 2007
Author: mickey
Date: 2007-06-09 18:12:05 +0200 (Sat, 09 Jun 2007)
New Revision: 2203
Modified:
trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/configure.ac
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.h
Log:
openmoko-panel-mainmenu: play sounds using pulseaudio
Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/configure.ac
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/configure.ac 2007-06-09 13:22:48 UTC (rev 2202)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/configure.ac 2007-06-09 16:12:05 UTC (rev 2203)
@@ -17,12 +17,12 @@
AC_MSG_ERROR([matchbox-lib required]))
PKG_CHECK_MODULES(LIBSN, libstartup-notification-1.0, ,
AC_MSG_ERROR([*** Required Startup Notification library not installed ***]))
+PKG_CHECK_MODULES(LIBPULSE, libpulse,,
+ AC_MSG_ERROR([*** Required pulseaudio client library not installed ***]))
-#AC_SUBST(SN_LIBS)
-#AC_SUBST(SN_CFLAGS)
-LIBS="$LIBS $OPENMOKO_LIBS $LIBMB_LIBS $LIBSN_LIBS"
-CFLAGS="$CFLAGS $OPENMOKO_CFLAGS $LIBMB_CFLAGS $LIBSN_CFLAGS"
+LIBS="$LIBS $OPENMOKO_LIBS $LIBMB_LIBS $LIBSN_LIBS $LIBPULSE_LIBS"
+CFLAGS="$CFLAGS $OPENMOKO_CFLAGS $LIBMB_CFLAGS $LIBSN_CFLAGS $LIBPULSE_CFLAGS"
# output stuff
AC_OUTPUT([
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-06-09 13:22:48 UTC (rev 2202)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.c 2007-06-09 16:12:05 UTC (rev 2203)
@@ -29,6 +29,8 @@
#include <X11/Xlib.h>
#include <X11/Xatom.h>
+#include <pulse/pulseaudio.h>
+
#include <fcntl.h>
#include <string.h>
#include <errno.h>
@@ -38,8 +40,8 @@
#include <sys/stat.h>
#include <linux/input.h>
-#undef DEBUG_THIS_FILE
-//#define DEBUG_THIS_FILE
+//#undef DEBUG_THIS_FILE
+#define DEBUG_THIS_FILE
//FIXME find out through sysfs
#ifndef DEBUG_THIS_FILE
@@ -80,6 +82,8 @@
} PowerState;
PowerState power_state = NORMAL;
+static pa_context* pac;
+
/* Borrowed from libwnck */
static Window get_window_property( Window xwindow, Atom atom )
{
@@ -149,7 +153,7 @@
g_source_add_poll( button_watcher, &power_fd );
g_source_attach( button_watcher, NULL );
- if ( getenv( "MOKO_POWERSAVE" ) )
+ if ( getenv( "MOKO_POWERSAVE" ) == NULL )
{
int tsfd = open( TOUCHSCREEN_EVENT_PATH, O_RDONLY );
@@ -163,6 +167,7 @@
panel_mainmenu_powersave_reset();
panel_mainmenu_set_display( 100 );
+ panel_mainmenu_sound_init();
}
else
g_debug( "MOKO_POWERSAVE set. Not enabling power management." );
@@ -369,7 +374,7 @@
if ( event.value == 1 ) /* pressed */
{
g_debug( "stylus pressed" );
- panel_mainmenu_play_stylus_click();
+ panel_mainmenu_sound_play( "touchscreen" );
}
else if ( event.value == 0 ) /* released */
{
@@ -439,10 +444,46 @@
return FALSE;
}
-void panel_mainmenu_play_stylus_click()
+void panel_mainmenu_sound_state_cb( pa_context* pac, void* userdata )
{
- g_debug( "mainmenu play stylus click" );
- //TODO add function to libmokoui that talks alsa
- //yes, this is hardcoded... it's just a proof of concept
- system( "/usr/bin/aplay /usr/share/openmoko/touchscreen_click.wav &" );
+ if ( pa_context_get_state( pac ) == PA_CONTEXT_READY )
+ {
+ panel_mainmenu_sound_play( "startup" );
+ }
}
+
+void panel_mainmenu_sound_init()
+{
+ pa_threaded_mainloop* mainloop = pa_threaded_mainloop_new();
+
+ if ( !mainloop )
+ {
+ printf( "couldn't create mainloop: %s", strerror( errno ) );
+ return;
+ }
+
+ pa_mainloop_api* mapi = pa_threaded_mainloop_get_api( mainloop );
+
+ pac = pa_context_new( mapi, "test client" );
+ if ( !pac )
+ {
+ printf( "couldn't create pa_context: %s", strerror( errno ) );
+ return;
+ }
+
+ pa_context_set_state_callback( pac, panel_mainmenu_sound_state_cb, NULL );
+ pa_context_connect( pac, NULL, 0, NULL );
+ pa_threaded_mainloop_start( mainloop );
+}
+
+void panel_mainmenu_sound_play( const gchar* samplename )
+{
+ pa_context_play_sample( pac,
+ "startup", // Name of my sample
+ NULL, // Use default sink
+ PA_VOLUME_NORM, // Full volume
+ NULL, // Don't need a callback
+ NULL
+ );
+
+}
Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.h
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.h 2007-06-09 13:22:48 UTC (rev 2202)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.h 2007-06-09 16:12:05 UTC (rev 2203)
@@ -37,7 +37,8 @@
gboolean panel_mainmenu_powersave_timeout2( guint timeout );
gboolean panel_mainmenu_powersave_timeout3( guint timeout );
+void panel_mainmenu_sound_init();
void panel_mainmenu_set_display( int brightness );
-void panel_mainmenu_play_stylus_click();
+void panel_mainmenu_sound_play( const gchar* samplename );
#endif
More information about the commitlog
mailing list