From: Uwe Hermann Date: Fri, 22 Nov 2013 14:02:12 +0000 (+0100) Subject: Make struct sr_session opaque. X-Git-Tag: libsigrok-0.3.0~540 X-Git-Url: https://sigrok.org/gitweb/?a=commitdiff_plain;h=e2b238210187e40ad434f659e68d604ed5f523d4;hp=f57924179d08dee9d24099233ffbee2123613a22;p=libsigrok.git Make struct sr_session opaque. The fields of this structure should not be used directly by frontends (and none of the current ones do). Thus, make the struct opaque and hide its contents from the API. --- diff --git a/libsigrok-internal.h b/libsigrok-internal.h index c418c4e1..f742e127 100644 --- a/libsigrok-internal.h +++ b/libsigrok-internal.h @@ -131,6 +131,35 @@ SR_PRIV int sr_source_add(int fd, int events, int timeout, /*--- session.c -------------------------------------------------------------*/ +struct sr_session { + /** List of struct sr_dev pointers. */ + GSList *devs; + /** List of struct datafeed_callback pointers. */ + GSList *datafeed_callbacks; + GTimeVal starttime; + gboolean running; + + unsigned int num_sources; + + /* + * Both "sources" and "pollfds" are of the same size and contain pairs + * of descriptor and callback function. We can not embed the GPollFD + * into the source struct since we want to be able to pass the array + * of all poll descriptors to g_poll(). + */ + struct source *sources; + GPollFD *pollfds; + int source_timeout; + + /* + * These are our synchronization primitives for stopping the session in + * an async fashion. We need to make sure the session is stopped from + * within the session thread itself. + */ + GMutex stop_mutex; + gboolean abort_session; +}; + SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi, const struct sr_datafeed_packet *packet); SR_PRIV int sr_session_stop_sync(void); diff --git a/libsigrok.h b/libsigrok.h index 910e5245..f0f6d0cc 100644 --- a/libsigrok.h +++ b/libsigrok.h @@ -851,34 +851,11 @@ struct sr_dev_driver { void *priv; }; -struct sr_session { - /** List of struct sr_dev pointers. */ - GSList *devs; - /** List of struct datafeed_callback pointers. */ - GSList *datafeed_callbacks; - GTimeVal starttime; - gboolean running; - - unsigned int num_sources; - - /* - * Both "sources" and "pollfds" are of the same size and contain pairs - * of descriptor and callback function. We can not embed the GPollFD - * into the source struct since we want to be able to pass the array - * of all poll descriptors to g_poll(). - */ - struct source *sources; - GPollFD *pollfds; - int source_timeout; - - /* - * These are our synchronization primitives for stopping the session in - * an async fashion. We need to make sure the session is stopped from - * within the session thread itself. - */ - GMutex stop_mutex; - gboolean abort_session; -}; +/** + * Opaque data structure representing a libsigrok session. None of the fields + * of this structure are meant to be accessed directly. + */ +struct sr_session; #include "proto.h" #include "version.h"