Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libsidplayfp for openSUSE:Factory checked in at 2026-08-30 19:08:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libsidplayfp (Old) and /work/SRC/openSUSE:Factory/.libsidplayfp.new.1265 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libsidplayfp" Sun Aug 30 19:08:42 2026 rev:32 rq:1374700 version:3.1.1 Changes: -------- --- /work/SRC/openSUSE:Factory/libsidplayfp/libsidplayfp.changes 2026-08-11 17:15:52.742850900 +0200 +++ /work/SRC/openSUSE:Factory/.libsidplayfp.new.1265/libsidplayfp.changes 2026-08-30 19:08:52.662420239 +0200 @@ -1,0 +2,6 @@ +Sun Aug 30 14:58:56 UTC 2026 - Илья Индиго <[email protected]> + +- Updated to 3.1.1 + * https://github.com/libsidplayfp/libsidplayfp/releases/tag/v3.1.1 + +------------------------------------------------------------------- Old: ---- libsidplayfp-3.1.0.tar.gz New: ---- libsidplayfp-3.1.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libsidplayfp.spec ++++++ --- /var/tmp/diff_new_pack.Xsje4Z/_old 2026-08-30 19:08:53.326443213 +0200 +++ /var/tmp/diff_new_pack.Xsje4Z/_new 2026-08-30 19:08:53.330443351 +0200 @@ -19,7 +19,7 @@ %define soname 7 %define stilview_soname 0 Name: libsidplayfp -Version: 3.1.0 +Version: 3.1.1 Release: 0 Summary: A library to play Commodore 64 music License: GPL-2.0-or-later ++++++ libsidplayfp-3.1.0.tar.gz -> libsidplayfp-3.1.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsidplayfp-3.1.0/NEWS.md new/libsidplayfp-3.1.1/NEWS.md --- old/libsidplayfp-3.1.0/NEWS.md 2026-08-10 16:31:25.000000000 +0200 +++ new/libsidplayfp-3.1.1/NEWS.md 2026-08-30 16:56:45.000000000 +0200 @@ -1,3 +1,9 @@ +3.1.1 2026-08-30 +* USBSID-Pico: Fix issue in reset and delay routine +* Fixed serial port for test sdr-icr-test2-0_7f + + + 3.1.0 2026-08-10 * Improved BSD support in configure script * Cleaned up shadow warnings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsidplayfp-3.1.0/README.md new/libsidplayfp-3.1.1/README.md --- old/libsidplayfp-3.1.0/README.md 2026-08-10 16:31:25.000000000 +0200 +++ new/libsidplayfp-3.1.1/README.md 2026-08-30 16:56:45.000000000 +0200 @@ -86,6 +86,6 @@ # 3rd party software -* hashlib +* hashlib 1.1.2 https://github.com/Cra3z/hashlib distributed under MIT license diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsidplayfp-3.1.0/configure new/libsidplayfp-3.1.1/configure --- old/libsidplayfp-3.1.0/configure 2026-08-10 16:31:31.000000000 +0200 +++ new/libsidplayfp-3.1.1/configure 2026-08-30 16:56:52.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for libsidplayfp 3.1.0. +# Generated by GNU Autoconf 2.71 for libsidplayfp 3.1.1. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, @@ -618,8 +618,8 @@ # Identity of this package. PACKAGE_NAME='libsidplayfp' PACKAGE_TARNAME='libsidplayfp' -PACKAGE_VERSION='3.1.0' -PACKAGE_STRING='libsidplayfp 3.1.0' +PACKAGE_VERSION='3.1.1' +PACKAGE_STRING='libsidplayfp 3.1.1' PACKAGE_BUGREPORT='' PACKAGE_URL='https://github.com/libsidplayfp/libsidplayfp/' @@ -1430,7 +1430,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libsidplayfp 3.1.0 to adapt to many kinds of systems. +\`configure' configures libsidplayfp 3.1.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1501,7 +1501,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libsidplayfp 3.1.0:";; + short | recursive ) echo "Configuration of libsidplayfp 3.1.1:";; esac cat <<\_ACEOF @@ -1641,7 +1641,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libsidplayfp configure 3.1.0 +libsidplayfp configure 3.1.1 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2457,7 +2457,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libsidplayfp $as_me 3.1.0, which was +It was created by libsidplayfp $as_me 3.1.1, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3947,7 +3947,7 @@ # Define the identity of the package. PACKAGE='libsidplayfp' - VERSION='3.1.0' + VERSION='3.1.1' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -4053,7 +4053,7 @@ LIB_MAJOR=3 LIB_MINOR=1 -LIB_LEVEL=0 +LIB_LEVEL=1 @@ -22012,7 +22012,7 @@ # If any interfaces have been removed or changed since the last public release, then set age to 0. LIBSIDPLAYCUR=15 -LIBSIDPLAYREV=0 +LIBSIDPLAYREV=1 LIBSIDPLAYAGE=8 LIBSIDPLAYVERSION=$LIBSIDPLAYCUR:$LIBSIDPLAYREV:$LIBSIDPLAYAGE @@ -24571,7 +24571,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libsidplayfp $as_me 3.1.0, which was +This file was extended by libsidplayfp $as_me 3.1.1, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24640,7 +24640,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -libsidplayfp config.status 3.1.0 +libsidplayfp config.status 3.1.1 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsidplayfp-3.1.0/configure.ac new/libsidplayfp-3.1.1/configure.ac --- old/libsidplayfp-3.1.0/configure.ac 2026-08-10 16:31:25.000000000 +0200 +++ new/libsidplayfp-3.1.1/configure.ac 2026-08-30 16:56:45.000000000 +0200 @@ -1,6 +1,6 @@ m4_define([lib_major], [3]) m4_define([lib_minor], [1]) -m4_define([lib_level], [0]) +m4_define([lib_level], [1]) m4_define([lib_version], [lib_major.lib_minor.lib_level]) AC_PREREQ([2.62]) @@ -106,7 +106,7 @@ # If any interfaces have been removed or changed since the last public release, then set age to 0. LIBSIDPLAYCUR=15 -LIBSIDPLAYREV=0 +LIBSIDPLAYREV=1 LIBSIDPLAYAGE=8 LIBSIDPLAYVERSION=$LIBSIDPLAYCUR:$LIBSIDPLAYREV:$LIBSIDPLAYAGE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsidplayfp-3.1.0/src/builders/usbsid-builder/driver/src/USBSID.cpp new/libsidplayfp-3.1.1/src/builders/usbsid-builder/driver/src/USBSID.cpp --- old/libsidplayfp-3.1.0/src/builders/usbsid-builder/driver/src/USBSID.cpp 2026-08-10 16:31:27.000000000 +0200 +++ new/libsidplayfp-3.1.1/src/builders/usbsid-builder/driver/src/USBSID.cpp 2026-08-30 16:56:48.000000000 +0200 @@ -855,6 +855,8 @@ void USBSID_Class::USBSID_ResetRingBuffer(void) { us_ringbuffer.ring_read = us_ringbuffer.ring_write = 0; + buffer_pos = 1; + flush_buffer = 0; return; } @@ -965,8 +967,45 @@ void USBSID_Class::USBSID_FlushBuffer(void) { - if (threaded && flush_buffer == 1 - && ((withcycles == 1) + if (!threaded || flush_buffer != 1) { + flush_buffer = 0; + return; + } + + /* The flush is a deadline, so whatever is still waiting in the ring belongs + * in this packet. + * + * Without this the ring is only ever drained by USBSID_Thread(), which stops + * while fewer than diff_size bytes are waiting, and a packet only goes out + * once it reaches 61 bytes on withcycles. A write therefore waits behind up to + * 15 + (diff_size / 4) writes, and what that costs is a time that moves with + * how fast the caller happens to be writing: about 2 ms during a volume + * register digi at ten thousand writes a second, and a quarter of a second + * once the sample ends and an ordinary tune writes its registers once a + * frame. Ghostbusters.sid is both in turn, and the notes after its speech + * arrived up to 229 ms late. No value of diff_size fixes that, because the + * 15 writes sitting in the packet are not diff_size's to give back. + * + * The fill is worked out here rather than with USBSID_RingDiff(), which + * returns the free space instead of the fill once ring_read has passed + * ring_write. + * + * The loop always consumes a whole record or exits, so it cannot spin. The + * thread's own drain loop and diff_size are deliberately left alone: leaving + * that loop is the only thing that reaches libusb_handle_events(), and a + * drain condition that cannot be satisfied hangs playback outright. */ + const int rec = (withcycles == 1) ? 4 : 2; + const int cap = (withcycles == 1) ? 61 : 63; + int waiting = (us_ringbuffer.ring_write - us_ringbuffer.ring_read + + ring_size) % ring_size; + while (waiting >= rec && (buffer_pos + rec) <= cap) { + for (int i = 0; i < rec; i++) { + thread_buffer[buffer_pos++] = USBSID_RingGet(); + } + waiting -= rec; + } + + if (((withcycles == 1) ? (buffer_pos >= 5) : (buffer_pos >= 3))) { thread_buffer[0] = (withcycles == 1) @@ -1158,7 +1197,7 @@ * automatically around libusb_claim_interface / libusb_release_interface. */ rc = libusb_set_auto_detach_kernel_driver(devh, 1); if (rc == LIBUSB_ERROR_NOT_SUPPORTED) { - /* Not supported on this platform (Windows/older libusb) — ignore */ + /* Not supported on this platform (Windows/older libusb) - ignore */ rc = 0; } else if (rc < 0) { USBERR(stderr, "[USBSID] Error setting auto detach kernel driver: %d %s: %s\r\n", rc, libusb_error_name(rc), libusb_strerror(rc)); @@ -1181,12 +1220,12 @@ int start_if = 0; int end_if = 2; - for (int if_num = start_if; if_num < end_if; if_num++) { - if (libusb_kernel_driver_active(devh, if_num)) { - rc = libusb_detach_kernel_driver(devh, if_num); - USBERR(stderr, "[USBSID] Error, in libusb_detach_kernel_driver: %d, %s: %s\n", rc, libusb_error_name(rc), libusb_strerror(rc)); - } - rc = libusb_release_interface(devh, if_num); + libusb_release_interface(devh, 0); + libusb_release_interface(devh, 1); + + rc = libusb_attach_kernel_driver(devh, 0); + if (rc < 0 && rc != LIBUSB_ERROR_NOT_FOUND) { + fprintf(stderr, "Attach error on interface 0: %s\n", libusb_error_name(rc)); } #endif libusb_close(devh); @@ -1241,7 +1280,7 @@ end_if = 2; #endif for (int if_num = start_if; if_num < end_if; if_num++) { - if (libusb_kernel_driver_active(devh, if_num)) { + if (libusb_kernel_driver_active(devh, if_num) == 1) { libusb_detach_kernel_driver(devh, if_num); } rc = libusb_claim_interface(devh, if_num); @@ -1497,7 +1536,7 @@ if (ctx) { libusb_exit(ctx); } - ctx = NULL; + ctx = NULL; rc = -1; devh = NULL; USBDBG(stdout, "[USBSID] Closed USB device\r\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsidplayfp-3.1.0/src/builders/usbsid-builder/driver/src/USBSID.h new/libsidplayfp-3.1.1/src/builders/usbsid-builder/driver/src/USBSID.h --- old/libsidplayfp-3.1.0/src/builders/usbsid-builder/driver/src/USBSID.h 2026-08-10 16:31:27.000000000 +0200 +++ new/libsidplayfp-3.1.1/src/builders/usbsid-builder/driver/src/USBSID.h 2026-08-30 16:56:48.000000000 +0200 @@ -381,7 +381,6 @@ pthread_t us_ptid; /* Ringbuffer */ - void USBSID_ResetRingBuffer(void); void USBSID_InitRingBuffer(int buffer_size, int differ_size); void USBSID_InitRingBuffer(void); void USBSID_DeInitRingBuffer(void); @@ -462,6 +461,7 @@ void USBSID_Flush(void); /* Set flush buffer flag to 1 and flushes the buffer */ void USBSID_SetBufferSize(int size); /* Set the buffer size for storing writes */ void USBSID_SetDiffSize(int size); /* Set the minimum size difference between head & tail */ + void USBSID_ResetRingBuffer(void); /* Resets the ringbuffer to default state */ void USBSID_RestartRingBuffer(void); /* Restart the ringbuffer */ /* Thread utils */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsidplayfp-3.1.0/src/builders/usbsid-builder/usbsid-emu.cpp new/libsidplayfp-3.1.1/src/builders/usbsid-builder/usbsid-emu.cpp --- old/libsidplayfp-3.1.0/src/builders/usbsid-builder/usbsid-emu.cpp 2026-08-10 16:31:25.000000000 +0200 +++ new/libsidplayfp-3.1.1/src/builders/usbsid-builder/usbsid-emu.cpp 2026-08-30 16:56:45.000000000 +0200 @@ -70,6 +70,8 @@ m_delayClk = 0; if (sidno == 0) { + m_sid.USBSID_ResetRingBuffer(); + m_sid.USBSID_ResetAllRegisters(); m_sid.USBSID_Reset(); m_sid.USBSID_UnMute(); } @@ -80,8 +82,8 @@ event_clock_t USBSID::delay() { - event_clock_t cycles = eventScheduler->getTime(EVENT_CLOCK_PHI1) - m_delayClk; - // event_clock_t cycles = eventScheduler->getTime(EVENT_CLOCK_PHI1) - (m_delayClk - 1); + event_clock_t cycles = (eventScheduler->getTime(EVENT_CLOCK_PHI1) - m_delayClk); + cycles = ((cycles > 0) ? (cycles - 1) : cycles); m_delayClk += cycles; while (cycles > 0xffff) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsidplayfp-3.1.0/src/c64/CIA/SerialPort.cpp new/libsidplayfp-3.1.1/src/c64/CIA/SerialPort.cpp --- old/libsidplayfp-3.1.0/src/c64/CIA/SerialPort.cpp 2026-08-10 16:31:25.000000000 +0200 +++ new/libsidplayfp-3.1.1/src/c64/CIA/SerialPort.cpp 2026-08-30 16:56:45.000000000 +0200 @@ -59,6 +59,15 @@ void SerialPort::switchSerialDirection(bool input) { syncCntHistory(); +/* + https://sourceforge.net/p/vice-emu/code/45957/ + https://github.com/piciji/denise/commit/f8f02f5cb54fae93435a3d8669e56d75c4f538c8 +*/ + if ((count > 1 && count < 15) || (count == 15 && !(cntHistory & 0x4))) + { + eventScheduler.cancel(*this); + eventScheduler.schedule(*this, 2); + } if (input) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsidplayfp-3.1.0/src/libs/hashlib/README.md new/libsidplayfp-3.1.1/src/libs/hashlib/README.md --- old/libsidplayfp-3.1.0/src/libs/hashlib/README.md 2026-08-10 16:31:25.000000000 +0200 +++ new/libsidplayfp-3.1.1/src/libs/hashlib/README.md 2026-08-30 16:56:45.000000000 +0200 @@ -62,7 +62,7 @@ | Option | Default | Description | |--------|---------|------------------------| -| HASHLIB_TESTS | ON | enable tests | +| HASHLIB_TESTS | ON for top-level builds, OFF for subprojects | enable tests | | HASHLIB_BUILD_SINGLE_HEADER | OFF | generate single header | | HASHLIB_BUILD_MODULE | OFF | generate C++20 module | @@ -78,6 +78,20 @@ cmake -S . -B <your-build-dir> -DHASHLIB_BUILD_MODULE=ON ``` +### using CPM +Yan can use [CPM](https://github.com/cpm-cmake/CPM.cmake) to fetch and configure `hashlib` automatically from your `CMakeLists.txt`: +```cmake +CPMAddPackage( + NAME hashlib + GITHUB_REPOSITORY Cra3z/hashlib + GIT_TAG v1.1.2 + OPTIONS + "HASHLIB_TESTS OFF" +) + +target_link_libraries(<your-target> PRIVATE hashlib::hashlib) +``` + ### using conan package manager You can also install hashlib by [conan package manager](https://github.com/conan-io). ```shell diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsidplayfp-3.1.0/src/libs/hashlib/config.hpp new/libsidplayfp-3.1.1/src/libs/hashlib/config.hpp --- old/libsidplayfp-3.1.0/src/libs/hashlib/config.hpp 2026-08-10 16:31:25.000000000 +0200 +++ new/libsidplayfp-3.1.1/src/libs/hashlib/config.hpp 2026-08-30 16:56:45.000000000 +0200 @@ -7,7 +7,7 @@ #endif #endif -#define HASHLIB_VERSION "1.1.1" +#define HASHLIB_VERSION "1.1.2" #ifdef _MSVC_LANG #define HASHLIB_CXX_STANDARD _MSVC_LANG @@ -86,4 +86,4 @@ #endif #else #define HASHLIB_NODISCARD -#endif \ No newline at end of file +#endif
