]> sigrok.org Git - libsigrok.git/blobdiff - session.c
Use GET_REPORT request for device to host transfer.
[libsigrok.git] / session.c
index 266207259ca3c82e9c42c76208af3ae8afb88880..4fa5dafea6ac48722dc6752cd5ae38519ce210fd 100644 (file)
--- a/session.c
+++ b/session.c
 #include "libsigrok.h"
 #include "libsigrok-internal.h"
 
-/* Message logging helpers with driver-specific prefix string. */
-#define DRIVER_LOG_DOMAIN "session: "
-#define sr_log(l, s, args...) sr_log(l, DRIVER_LOG_DOMAIN s, ## args)
-#define sr_spew(s, args...) sr_spew(DRIVER_LOG_DOMAIN s, ## args)
-#define sr_dbg(s, args...) sr_dbg(DRIVER_LOG_DOMAIN s, ## args)
-#define sr_info(s, args...) sr_info(DRIVER_LOG_DOMAIN s, ## args)
-#define sr_warn(s, args...) sr_warn(DRIVER_LOG_DOMAIN s, ## args)
-#define sr_err(s, args...) sr_err(DRIVER_LOG_DOMAIN s, ## args)
+/* Message logging helpers with subsystem-specific prefix string. */
+#define LOG_PREFIX "session: "
+#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args)
+#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args)
+#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args)
+#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args)
+#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args)
+#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args)
 
 /**
  * @file
@@ -260,8 +260,11 @@ static int sr_session_run_poll(void)
                         * just once per main event loop.
                         */
                        g_mutex_lock(&session->stop_mutex);
-                       if (session->abort_session)
+                       if (session->abort_session) {
                                sr_session_stop_sync();
+                               /* But once is enough. */
+                               session->abort_session = FALSE;
+                       }
                        g_mutex_unlock(&session->stop_mutex);
                }
        }
@@ -377,15 +380,6 @@ SR_PRIV int sr_session_stop_sync(void)
                }
        }
 
-       /*
-        * Some sources may not be necessarily associated with a device.
-        * Those sources may still be present even after stopping all devices.
-        * We need to make sure all sources are removed, or we risk running the
-        * session in an infinite loop.
-        */
-       while (session->num_sources)
-               sr_session_source_remove(session->sources[0].poll_object);
-
        return SR_OK;
 }