0001-Support-glibmm-2.68.patch 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. From 31ad5ec50ec0c9cc7a92f009925c5f58aecdcce1 Mon Sep 17 00:00:00 2001
  2. From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
  3. Date: Thu, 30 Dec 2021 14:58:11 +0100
  4. Subject: [PATCH] Support glibmm 2.68
  5. Support glibmm 2.68 which has been released one year ago and is the
  6. first stable release in the glibmm-2.68 ABI series:
  7. https://gitlab.gnome.org/GNOME/glibmm/-/blob/2.68.2/NEWS
  8. As TimeVal is not available with glibmm 2.68, use DateTime which is
  9. available since version 2.26
  10. Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
  11. [Upstream status:
  12. https://sourceforge.net/p/sigrok/mailman/message/37410614]
  13. ---
  14. README | 2 +-
  15. bindings/cxx/classes.cpp | 13 ++++++-------
  16. bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp | 4 ++--
  17. bindings/cxx/libsigrokcxx.pc.in | 2 +-
  18. configure.ac | 7 ++++++-
  19. 5 files changed, 16 insertions(+), 12 deletions(-)
  20. diff --git a/README b/README
  21. index 768c8ca2..2515f059 100644
  22. --- a/README
  23. +++ b/README
  24. @@ -63,7 +63,7 @@ Requirements for the C++ bindings:
  25. - doxygen (required for building the bindings, not only for C++ API docs!)
  26. - graphviz (optional, only needed for the C++ API docs)
  27. - Python (2 or 3) executable (development files are not needed)
  28. - - glibmm-2.4 (>= 2.32.0)
  29. + - glibmm-2.4 (>= 2.32.0) or glibmm-2.68 (>= 2.68.0)
  30. Requirements for the Python bindings:
  31. diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp
  32. index f9f79273..de600d03 100644
  33. --- a/bindings/cxx/classes.cpp
  34. +++ b/bindings/cxx/classes.cpp
  35. @@ -287,12 +287,12 @@ shared_ptr<UserDevice> Context::create_user_device(
  36. default_delete<UserDevice>{}};
  37. }
  38. -shared_ptr<Packet> Context::create_header_packet(Glib::TimeVal start_time)
  39. +shared_ptr<Packet> Context::create_header_packet(Glib::DateTime start_time)
  40. {
  41. auto header = g_new(struct sr_datafeed_header, 1);
  42. header->feed_version = 1;
  43. - header->starttime.tv_sec = start_time.tv_sec;
  44. - header->starttime.tv_usec = start_time.tv_usec;
  45. + header->starttime.tv_sec = start_time.to_unix();
  46. + header->starttime.tv_usec = start_time.get_microsecond();
  47. auto packet = g_new(struct sr_datafeed_packet, 1);
  48. packet->type = SR_DF_HEADER;
  49. packet->payload = header;
  50. @@ -1154,11 +1154,10 @@ int Header::feed_version() const
  51. return _structure->feed_version;
  52. }
  53. -Glib::TimeVal Header::start_time() const
  54. +Glib::DateTime Header::start_time() const
  55. {
  56. - return Glib::TimeVal(
  57. - _structure->starttime.tv_sec,
  58. - _structure->starttime.tv_usec);
  59. + Glib::DateTime time = Glib::DateTime::create_now_utc(_structure->starttime.tv_sec);
  60. + return time.add_seconds(_structure->starttime.tv_usec / 1.0e6);
  61. }
  62. Meta::Meta(const struct sr_datafeed_meta *structure) :
  63. diff --git a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
  64. index 97e54e17..d090c379 100644
  65. --- a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
  66. +++ b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
  67. @@ -274,7 +274,7 @@ public:
  68. std::shared_ptr<UserDevice> create_user_device(
  69. std::string vendor, std::string model, std::string version);
  70. /** Create a header packet. */
  71. - std::shared_ptr<Packet> create_header_packet(Glib::TimeVal start_time);
  72. + std::shared_ptr<Packet> create_header_packet(Glib::DateTime start_time);
  73. /** Create a meta packet. */
  74. std::shared_ptr<Packet> create_meta_packet(
  75. std::map<const ConfigKey *, Glib::VariantBase> config);
  76. @@ -711,7 +711,7 @@ public:
  77. /* Feed version number. */
  78. int feed_version() const;
  79. /* Start time of this session. */
  80. - Glib::TimeVal start_time() const;
  81. + Glib::DateTime start_time() const;
  82. private:
  83. explicit Header(const struct sr_datafeed_header *structure);
  84. ~Header();
  85. diff --git a/bindings/cxx/libsigrokcxx.pc.in b/bindings/cxx/libsigrokcxx.pc.in
  86. index 10a92f2d..7d2723fc 100644
  87. --- a/bindings/cxx/libsigrokcxx.pc.in
  88. +++ b/bindings/cxx/libsigrokcxx.pc.in
  89. @@ -6,7 +6,7 @@ includedir=@includedir@
  90. Name: libsigrokcxx
  91. Description: C++ bindings for libsigrok
  92. URL: http://www.sigrok.org
  93. -Requires: libsigrok glibmm-2.4
  94. +Requires: libsigrok @SR_GLIBMM_REQUIRES@
  95. Version: @SR_PACKAGE_VERSION@
  96. Libs: -L${libdir} -lsigrokcxx
  97. Libs.private: -lm
  98. diff --git a/configure.ac b/configure.ac
  99. index 424b0002..d70575b7 100644
  100. --- a/configure.ac
  101. +++ b/configure.ac
  102. @@ -407,9 +407,14 @@ AS_IF([test "x$HAVE_CXX11" != x1],
  103. [SR_APPEND([sr_cxx_missing], [', '], ['C++11'])])
  104. # The C++ bindings need glibmm.
  105. -SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [glibmm-2.4 >= 2.32.0])
  106. +SR_GLIBMM_REQUIRES=glibmm-2.4
  107. +SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [$SR_GLIBMM_REQUIRES >= 2.32.0])
  108. +AS_IF([test "x$sr_have_glibmm" != xyes],
  109. + [SR_GLIBMM_REQUIRES=glibmm-2.68
  110. + SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [$SR_GLIBMM_REQUIRES >= 2.68.0])])
  111. AS_IF([test "x$sr_have_glibmm" != xyes],
  112. [SR_APPEND([sr_cxx_missing], [', '], [glibmm])])
  113. +AC_SUBST(SR_GLIBMM_REQUIRES)
  114. # The C++ bindings use Doxygen to parse libsigrok symbols.
  115. AC_CHECK_PROG([HAVE_DOXYGEN], [doxygen], [yes], [no])
  116. --
  117. 2.34.1