]> sigrok.org Git - sigrok-cli.git/blobdiff - anykey.c
Fix output module enumeration + code cleanup.
[sigrok-cli.git] / anykey.c
index 70e2248a0df20e72a4b0047f17e1aaf7ed2f93e4..4126518e8a0801dc3700bdc3c0e86582668b47fd 100644 (file)
--- a/anykey.c
+++ b/anykey.c
@@ -17,6 +17,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "sigrok-cli.h"
 #include <stdio.h>
 #ifdef _WIN32
 #include <windows.h>
@@ -26,8 +27,6 @@
 #include <unistd.h>
 #include <string.h>
 #include <glib.h>
-#include <libsigrok/libsigrok.h>
-#include "sigrok-cli.h"
 
 #ifdef _WIN32
 static HANDLE stdin_handle;
@@ -38,17 +37,19 @@ static struct termios term_orig;
 
 static int received_anykey(int fd, int revents, void *cb_data)
 {
+       struct sr_session *session;
        (void)fd;
        (void)revents;
-       (void)cb_data;
 
-       sr_session_stop();
+       session = cb_data;
+       sr_session_source_remove(session, STDIN_FILENO);
+       sr_session_stop(session);
 
        return TRUE;
 }
 
 /* Turn off buffering on stdin. */
-void add_anykey(void)
+void add_anykey(struct sr_session *session)
 {
 #ifdef _WIN32
        stdin_handle = GetStdHandle(STD_INPUT_HANDLE);
@@ -67,7 +68,8 @@ void add_anykey(void)
        tcsetattr(STDIN_FILENO, TCSADRAIN, &term);
 #endif
 
-       sr_session_source_add(STDIN_FILENO, G_IO_IN, -1, received_anykey, NULL);
+       sr_session_source_add(session, STDIN_FILENO, G_IO_IN, -1,
+                       received_anykey, session);
 
        g_message("Press any key to stop acquisition.");
 }