Dear all,

Do you have some feedback on this second iteration?
Do you think it could be merged?

Best Regards,

Fabrice


Le lun. 3 janv. 2022 à 08:33, Fabrice Fontaine
<fontaine.fabr...@gmail.com> a écrit :
>
> Support glibmm 2.68 which has been released one year ago and is the
> first stable release in the glibmm-2.68 ABI series:
> https://gitlab.gnome.org/GNOME/glibmm/-/blob/2.68.2/NEWS
>
> As TimeVal is not available with glibmm 2.68, use DateTime which is
> available since version 2.26
>
> Signed-off-by: Fabrice Fontaine <fontaine.fabr...@gmail.com>
> ---
>  README                                             |  2 +-
>  bindings/cxx/classes.cpp                           | 13 ++++++-------
>  bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp |  4 ++--
>  bindings/cxx/libsigrokcxx.pc.in                    |  2 +-
>  configure.ac                                       |  7 ++++++-
>  5 files changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/README b/README
> index 768c8ca2..2515f059 100644
> --- a/README
> +++ b/README
> @@ -63,7 +63,7 @@ Requirements for the C++ bindings:
>   - doxygen (required for building the bindings, not only for C++ API docs!)
>   - graphviz (optional, only needed for the C++ API docs)
>   - Python (2 or 3) executable (development files are not needed)
> - - glibmm-2.4 (>= 2.32.0)
> + - glibmm-2.4 (>= 2.32.0) or glibmm-2.68 (>= 2.68.0)
>
>  Requirements for the Python bindings:
>
> diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp
> index f9f79273..de600d03 100644
> --- a/bindings/cxx/classes.cpp
> +++ b/bindings/cxx/classes.cpp
> @@ -287,12 +287,12 @@ shared_ptr<UserDevice> Context::create_user_device(
>                 default_delete<UserDevice>{}};
>  }
>
> -shared_ptr<Packet> Context::create_header_packet(Glib::TimeVal start_time)
> +shared_ptr<Packet> Context::create_header_packet(Glib::DateTime start_time)
>  {
>         auto header = g_new(struct sr_datafeed_header, 1);
>         header->feed_version = 1;
> -       header->starttime.tv_sec = start_time.tv_sec;
> -       header->starttime.tv_usec = start_time.tv_usec;
> +       header->starttime.tv_sec = start_time.to_unix();
> +       header->starttime.tv_usec = start_time.get_microsecond();
>         auto packet = g_new(struct sr_datafeed_packet, 1);
>         packet->type = SR_DF_HEADER;
>         packet->payload = header;
> @@ -1154,11 +1154,10 @@ int Header::feed_version() const
>         return _structure->feed_version;
>  }
>
> -Glib::TimeVal Header::start_time() const
> +Glib::DateTime Header::start_time() const
>  {
> -       return Glib::TimeVal(
> -               _structure->starttime.tv_sec,
> -               _structure->starttime.tv_usec);
> +       Glib::DateTime time = 
> Glib::DateTime::create_now_utc(_structure->starttime.tv_sec);
> +       return time.add_seconds(_structure->starttime.tv_usec / 1.0e6);
>  }
>
>  Meta::Meta(const struct sr_datafeed_meta *structure) :
> diff --git a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp 
> b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
> index 97e54e17..d090c379 100644
> --- a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
> +++ b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
> @@ -274,7 +274,7 @@ public:
>         std::shared_ptr<UserDevice> create_user_device(
>                 std::string vendor, std::string model, std::string version);
>         /** Create a header packet. */
> -       std::shared_ptr<Packet> create_header_packet(Glib::TimeVal 
> start_time);
> +       std::shared_ptr<Packet> create_header_packet(Glib::DateTime 
> start_time);
>         /** Create a meta packet. */
>         std::shared_ptr<Packet> create_meta_packet(
>                 std::map<const ConfigKey *, Glib::VariantBase> config);
> @@ -711,7 +711,7 @@ public:
>         /* Feed version number. */
>         int feed_version() const;
>         /* Start time of this session. */
> -       Glib::TimeVal start_time() const;
> +       Glib::DateTime start_time() const;
>  private:
>         explicit Header(const struct sr_datafeed_header *structure);
>         ~Header();
> diff --git a/bindings/cxx/libsigrokcxx.pc.in b/bindings/cxx/libsigrokcxx.pc.in
> index 10a92f2d..7d2723fc 100644
> --- a/bindings/cxx/libsigrokcxx.pc.in
> +++ b/bindings/cxx/libsigrokcxx.pc.in
> @@ -6,7 +6,7 @@ includedir=@includedir@
>  Name: libsigrokcxx
>  Description: C++ bindings for libsigrok
>  URL: http://www.sigrok.org
> -Requires: libsigrok glibmm-2.4
> +Requires: libsigrok @SR_GLIBMM_REQUIRES@
>  Version: @SR_PACKAGE_VERSION@
>  Libs: -L${libdir} -lsigrokcxx
>  Libs.private: -lm
> diff --git a/configure.ac b/configure.ac
> index 424b0002..d70575b7 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -407,9 +407,14 @@ AS_IF([test "x$HAVE_CXX11" != x1],
>         [SR_APPEND([sr_cxx_missing], [', '], ['C++11'])])
>
>  # The C++ bindings need glibmm.
> -SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [glibmm-2.4 >= 2.32.0])
> +SR_GLIBMM_REQUIRES=glibmm-2.4
> +SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [$SR_GLIBMM_REQUIRES >= 2.32.0])
> +AS_IF([test "x$sr_have_glibmm" != xyes],
> +       [SR_GLIBMM_REQUIRES=glibmm-2.68
> +       SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [$SR_GLIBMM_REQUIRES >= 
> 2.68.0])])
>  AS_IF([test "x$sr_have_glibmm" != xyes],
>         [SR_APPEND([sr_cxx_missing], [', '], [glibmm])])
> +AC_SUBST(SR_GLIBMM_REQUIRES)
>
>  # The C++ bindings use Doxygen to parse libsigrok symbols.
>  AC_CHECK_PROG([HAVE_DOXYGEN], [doxygen], [yes], [no])
> --
> 2.34.1
>


_______________________________________________
sigrok-devel mailing list
sigrok-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sigrok-devel

Reply via email to