you can now stop the wav player with the X key
This commit is contained in:
parent
b372e0428d
commit
ffbc4a13d4
@ -6,9 +6,14 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#define _POSIX_C_SOURCE 600L /* for fileno(3) */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sys/select.h>
|
||||
|
||||
#include "ecoute.h"
|
||||
|
||||
/*==------------------------------------------------------------------==*/
|
||||
@ -79,6 +84,42 @@ foo = 42;
|
||||
return foo;
|
||||
}
|
||||
/*==------------------------------------------------------------------==*/
|
||||
/*
|
||||
* detection de la frappe d'une touche clavier -- remember kbhit() ?
|
||||
*/
|
||||
int is_a_key_hitted(void)
|
||||
{
|
||||
int fd,retv;
|
||||
fd_set in_fds;
|
||||
struct timeval tv;
|
||||
|
||||
fd = fileno(stdin);
|
||||
#if DEBUG_LEVEL
|
||||
fprintf(stderr, "%s: fileno -> %d\n", __func__, fd);
|
||||
#endif
|
||||
|
||||
FD_ZERO(&in_fds); FD_SET(fd, &in_fds);
|
||||
tv.tv_sec = tv.tv_usec = 0;
|
||||
|
||||
retv = select(1, &in_fds, NULL, NULL, &tv);
|
||||
#if DEBUG_LEVEL
|
||||
fprintf(stderr, "%s: select -> %d\n", __func__, retv);
|
||||
#endif
|
||||
|
||||
if (-1 == retv) {
|
||||
perror("select()");
|
||||
}
|
||||
else if (0 == retv) {
|
||||
/* no key hit */
|
||||
}
|
||||
else {
|
||||
/* got a keypress */
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
/*==------------------------------------------------------------------==*/
|
||||
void termine_ecran(void)
|
||||
{
|
||||
endwin(); exit(0);
|
||||
|
@ -20,7 +20,7 @@ ao_sample_format format;
|
||||
ao_device * device;
|
||||
char chaine[120];
|
||||
short * samples;
|
||||
int lu;
|
||||
int lu, key;
|
||||
long total_lu;
|
||||
|
||||
#if DEBUG_LEVEL
|
||||
@ -103,7 +103,13 @@ while ( (lu=sf_read_short(sndf, samples, T_BUFFER)) > 0 )
|
||||
wrefresh(popup);
|
||||
|
||||
/* HERE WE HAVE TO DETECT A 'STOP LISTEN' FUNCTION. */
|
||||
|
||||
if (is_a_key_hitted()) {
|
||||
key = getch();
|
||||
fprintf(stderr, "%s key pressed 0x%X\n", __func__, key);
|
||||
if ('X' == key) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user